Extracted from smug's pr.
{
[Dependency] private readonly AmbientSoundTreeSystem _treeSys = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
+ [Dependency] private readonly SharedTransformSystem _xformSystem = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
_targetTime = _gameTiming.CurTime+TimeSpan.FromSeconds(_cooldown);
- var player = _playerManager.LocalPlayer?.ControlledEntity;
+ var player = _playerManager.LocalEntity;
if (!EntityManager.TryGetComponent(player, out TransformComponent? xform))
{
ClearSounds();
public readonly Dictionary<string, List<(float Importance, AmbientSoundComponent)>> SourceDict = new();
public readonly Vector2 MapPos;
public readonly TransformComponent Player;
- public readonly EntityQuery<TransformComponent> Query;
+ public readonly SharedTransformSystem TransformSystem;
- public QueryState(Vector2 mapPos, TransformComponent player, EntityQuery<TransformComponent> query)
+ public QueryState(Vector2 mapPos, TransformComponent player, SharedTransformSystem transformSystem)
{
MapPos = mapPos;
Player = player;
- Query = query;
+ TransformSystem = transformSystem;
}
}
var delta = xform.ParentUid == state.Player.ParentUid
? xform.LocalPosition - state.Player.LocalPosition
- : xform.WorldPosition - state.MapPos;
+ : state.TransformSystem.GetWorldPosition(xform) - state.MapPos;
var range = delta.Length();
if (range >= ambientComp.Range)
{
var query = GetEntityQuery<TransformComponent>();
var metaQuery = GetEntityQuery<MetaDataComponent>();
- var mapPos = playerXform.MapPosition;
+ var mapPos = _xformSystem.GetMapCoordinates(playerXform);
// Remove out-of-range ambiences
foreach (var (comp, sound) in _playingSounds)
xform.MapID == playerXform.MapID &&
!metaQuery.GetComponent(entity).EntityPaused)
{
+ // TODO: This is just trydistance for coordinates.
var distance = (xform.ParentUid == playerXform.ParentUid)
? xform.LocalPosition - playerXform.LocalPosition
- : xform.WorldPosition - mapPos.Position;
+ : _xformSystem.GetWorldPosition(xform) - mapPos.Position;
if (distance.LengthSquared() < comp.Range * comp.Range)
continue;
return;
var pos = mapPos.Position;
- var state = new QueryState(pos, playerXform, query);
+ var state = new QueryState(pos, playerXform, _xformSystem);
var worldAabb = new Box2(pos - MaxAmbientVector, pos + MaxAmbientVector);
_treeSys.QueryAabb(ref state, Callback, mapPos.MapId, worldAabb);
await server.WaitAssertion(() =>
{
var mapId = testMap.MapId;
- var grid = mapManager.CreateGrid(mapId);
+ var grid = mapManager.CreateGridEntity(mapId);
var coord = new EntityCoordinates(grid.Owner, 0, 0);
var protoIds = protoManager.EnumeratePrototypes<EntityPrototype>()
var entityMan = server.ResolveDependency<IEntityManager>();
var mapManager = server.ResolveDependency<IMapManager>();
var prototypeMan = server.ResolveDependency<IPrototypeManager>();
+ var mapSystem = entityMan.System<SharedMapSystem>();
await server.WaitPost(() =>
{
.Where(p => !p.Components.ContainsKey("MapGrid")) // This will smash stuff otherwise.
.Select(p => p.ID)
.ToList();
+
foreach (var protoId in protoIds)
{
var mapId = mapManager.CreateMap();
- var grid = mapManager.CreateGrid(mapId);
+ var grid = mapManager.CreateGridEntity(mapId);
// TODO: Fix this better in engine.
- grid.SetTile(Vector2i.Zero, new Tile(1));
+ mapSystem.SetTile(grid.Owner, grid.Comp, Vector2i.Zero, new Tile(1));
var coord = new EntityCoordinates(grid.Owner, 0, 0);
entityMan.SpawnEntity(protoId, coord);
}
{
var query = entityMan.AllEntityQueryEnumerator<TComp>();
while (query.MoveNext(out var uid, out var meta))
+ {
yield return (uid, meta);
+ }
}
var entityMetas = Query<MetaDataComponent>(entityMan).ToList();
{
var query = entityMan.AllEntityQueryEnumerator<TComp>();
while (query.MoveNext(out var uid, out var meta))
+ {
yield return (uid, meta);
- };
+ }
+ }
var entityMetas = Query<MetaDataComponent>(entityMan).ToList();
foreach (var (uid, meta) in entityMetas)
foreach (var protoId in protoIds)
{
var mapId = mapManager.CreateMap();
- var grid = mapManager.CreateGrid(mapId);
+ var grid = mapManager.CreateGridEntity(mapId);
var ent = sEntMan.SpawnEntity(protoId, new EntityCoordinates(grid.Owner, 0.5f, 0.5f));
foreach (var (_, component) in sEntMan.GetNetComponents(ent))
{
- sEntMan.Dirty(component);
+ sEntMan.Dirty(ent, component);
}
}
});
{
var query = entityMan.AllEntityQueryEnumerator<TComp>();
while (query.MoveNext(out var uid, out var meta))
+ {
yield return (uid, meta);
+ }
}
var entityMetas = Query<MetaDataComponent>(sEntMan).ToList();
var entityManager = server.ResolveDependency<IEntityManager>();
var componentFactory = server.ResolveDependency<IComponentFactory>();
var tileDefinitionManager = server.ResolveDependency<ITileDefinitionManager>();
+ var mapSystem = entityManager.System<SharedMapSystem>();
var logmill = server.ResolveDependency<ILogManager>().GetSawmill("EntityTest");
- MapGridComponent grid = default;
+ Entity<MapGridComponent> grid = default!;
await server.WaitPost(() =>
{
mapManager.AddUninitializedMap(mapId);
- grid = mapManager.CreateGrid(mapId);
+ grid = mapManager.CreateGridEntity(mapId);
var tileDefinition = tileDefinitionManager["Plating"];
var tile = new Tile(tileDefinition.TileId);
- var coordinates = grid.ToCoordinates();
+ var coordinates = new EntityCoordinates(grid.Owner, Vector2.Zero);
- grid.SetTile(coordinates, tile);
+ mapSystem.SetTile(grid.Owner, grid.Comp!, coordinates, tile);
mapManager.DoMapInitialize(mapId);
});
{
Assert.Multiple(() =>
{
- var testLocation = grid.ToCoordinates();
+ var testLocation = new EntityCoordinates(grid.Owner, Vector2.Zero);
foreach (var type in componentFactory.AllRegisteredTypes)
{
continue;
}
- component.Owner = entity;
logmill.Debug($"Adding component: {name}");
Assert.DoesNotThrow(() =>
var entManager = server.ResolveDependency<IEntityManager>();
var mapManager = server.ResolveDependency<IMapManager>();
var dockingSystem = entManager.System<DockingSystem>();
+ var mapSystem = entManager.System<SharedMapSystem>();
var xformSystem = entManager.System<SharedTransformSystem>();
var mapId = map.MapId;
await server.WaitAssertion(() =>
{
entManager.DeleteEntity(map.GridUid);
- var grid1 = mapManager.CreateGrid(mapId);
- var grid2 = mapManager.CreateGrid(mapId);
+ var grid1 = mapManager.CreateGridEntity(mapId);
+ var grid2 = mapManager.CreateGridEntity(mapId);
var grid1Ent = grid1.Owner;
var grid2Ent = grid2.Owner;
var grid2Offset = new Vector2(50f, 50f);
new(new Vector2i(0, 2), new Tile(1)),
};
- grid1.SetTiles(tiles1);
+ mapSystem.SetTiles(grid1.Owner, grid1.Comp, tiles1);
var dock1 = entManager.SpawnEntity("AirlockShuttle", new EntityCoordinates(grid1Ent, dock1Pos));
var dock1Xform = entManager.GetComponent<TransformComponent>(dock1);
dock1Xform.LocalRotation = dock1Angle;
new(new Vector2i(1, 2), new Tile(1)),
};
- grid2.SetTiles(tiles2);
+ mapSystem.SetTiles(grid2.Owner, grid2.Comp, tiles2);
var dock2 = entManager.SpawnEntity("AirlockShuttle", new EntityCoordinates(grid2Ent, dock2Pos));
var dock2Xform = entManager.GetComponent<TransformComponent>(dock2);
dock2Xform.LocalRotation = dock2Angle;
var otherMap = await pair.CreateTestMap();
var entManager = server.ResolveDependency<IEntityManager>();
- var mapManager = server.ResolveDependency<IMapManager>();
var dockingSystem = entManager.System<DockingSystem>();
- var xformSystem = entManager.System<SharedTransformSystem>();
var mapSystem = entManager.System<SharedMapSystem>();
var mapGrid = entManager.AddComponent<MapGridComponent>(map.MapUid);
await server.WaitAssertion(() =>
{
var mapId = mapMan.CreateMap();
- var grid = mapMan.CreateGrid(mapId);
+ var grid = mapMan.CreateGridEntity(mapId);
gridEnt = grid.Owner;
Assert.Multiple(() =>