Remove most usages of obsolete TransformComponent methods (#19571)

This commit is contained in:
Visne
2023-08-30 04:05:19 +02:00
committed by GitHub
parent 3ba60835ec
commit 1416942bea
91 changed files with 312 additions and 221 deletions

View File

@@ -48,7 +48,7 @@ namespace Content.Server.Administration.Commands
? _entities.GetComponent<TransformComponent>(player.AttachedEntity.Value).Coordinates
: EntitySystem.Get<GameTicker>().GetObserverSpawnPoint();
var ghost = _entities.SpawnEntity("AdminObserver", coordinates);
_entities.GetComponent<TransformComponent>(ghost).AttachToGridOrMap();
_entities.System<SharedTransformSystem>().AttachToGridOrMap(ghost);
if (canReturn)
{

View File

@@ -4,6 +4,7 @@ using Content.Server.Warps;
using Content.Shared.Administration;
using Content.Shared.Follower;
using Content.Shared.Ghost;
using Robust.Server.GameObjects;
using Robust.Server.Player;
using Robust.Shared.Console;
using Robust.Shared.Enums;
@@ -121,9 +122,9 @@ namespace Content.Server.Administration.Commands
return;
}
var xform = _entManager.GetComponent<TransformComponent>(playerEntity);
xform.Coordinates = coords;
xform.AttachToGridOrMap();
var transform = _entManager.System<SharedTransformSystem>();
transform.SetCoordinates(playerEntity, coords);
transform.AttachToGridOrMap(playerEntity);
if (_entManager.TryGetComponent(playerEntity, out PhysicsComponent? physics))
{
_entManager.System<SharedPhysicsSystem>().SetLinearVelocity(playerEntity, Vector2.Zero, body: physics);

View File

@@ -76,6 +76,7 @@ public sealed partial class AdminVerbSystem
[Dependency] private readonly VomitSystem _vomitSystem = default!;
[Dependency] private readonly WeldableSystem _weldableSystem = default!;
[Dependency] private readonly SharedContentEyeSystem _eyeSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
// All smite verbs have names so invokeverb works.
private void AddSmiteVerbs(GetVerbsEvent<Verb> args)
@@ -130,8 +131,8 @@ public sealed partial class AdminVerbSystem
Filter.PvsExcept(args.Target), true, PopupType.MediumCaution);
var board = Spawn("ChessBoard", xform.Coordinates);
var session = _tabletopSystem.EnsureSession(Comp<TabletopGameComponent>(board));
xform.Coordinates = EntityCoordinates.FromMap(_mapManager, session.Position);
xform.WorldRotation = Angle.Zero;
_transform.SetCoordinates(args.Target, EntityCoordinates.FromMap(_mapManager, session.Position));
_transform.SetWorldRotation(xform, Angle.Zero);
},
Impact = LogImpact.Extreme,
Message = Loc.GetString("admin-smite-chess-dimension-description")

View File

@@ -18,6 +18,7 @@ namespace Content.Server.Atmos.EntitySystems
[Dependency] private readonly IMapManager _mapManager = default!;
[Dependency] private readonly IConfigurationManager _configManager = default!;
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
/// <summary>
/// Players allowed to see the atmos debug overlay.
@@ -134,7 +135,7 @@ namespace Content.Server.Atmos.EntitySystems
var mapIsSpace = _atmosphereSystem.IsTileSpace(null, mapUid, Vector2i.Zero);
var worldBounds = Box2.CenteredAround(transform.WorldPosition,
var worldBounds = Box2.CenteredAround(_transform.GetWorldPosition(transform),
new Vector2(LocalViewRange, LocalViewRange));
foreach (var grid in _mapManager.FindGridsIntersecting(transform.MapID, worldBounds))

View File

@@ -15,6 +15,8 @@ namespace Content.Server.Atmos.EntitySystems
{
public sealed partial class AtmosphereSystem
{
[Dependency] private readonly SharedTransformSystem _transform = default!;
private const int SpaceWindSoundCooldownCycles = 75;
private int _spaceWindSoundCooldown = 0;
@@ -118,7 +120,7 @@ namespace Content.Server.Atmos.EntitySystems
return;
// Used by ExperiencePressureDifference to correct push/throw directions from tile-relative to physics world.
var gridWorldRotation = xforms.GetComponent(gridAtmosphere.Owner).WorldRotation;
var gridWorldRotation = _transform.GetWorldRotation(gridAtmosphere.Owner);
// If we're using monstermos, smooth out the yeet direction to follow the flow
if (MonstermosEqualization)
@@ -234,7 +236,7 @@ namespace Content.Server.Atmos.EntitySystems
// TODO: Technically these directions won't be correct but uhh I'm just here for optimisations buddy not to fix my old bugs.
if (throwTarget != EntityCoordinates.Invalid)
{
var pos = ((throwTarget.ToMap(EntityManager).Position - xform.WorldPosition).Normalized() + dirVec).Normalized();
var pos = ((throwTarget.ToMap(EntityManager).Position - _transform.GetWorldPosition(xform)).Normalized() + dirVec).Normalized();
_physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics);
}
else

View File

@@ -29,6 +29,7 @@ namespace Content.Server.Bible
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
[Dependency] private readonly UseDelaySystem _delay = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -235,7 +236,7 @@ namespace Content.Server.Bible
if (HasComp<GhostRoleMobSpawnerComponent>(familiar))
{
_popupSystem.PopupEntity(Loc.GetString("bible-summon-requested"), user, PopupType.Medium);
Transform(familiar).AttachParent(component.Owner);
_transform.SetParent(familiar, component.Owner);
}
component.AlreadySummoned = true;
_actionsSystem.RemoveAction(user, component.SummonAction);

View File

@@ -29,6 +29,7 @@ public sealed class BodySystem : SharedBodySystem
[Dependency] private readonly MobStateSystem _mobState = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly MindSystem _mindSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -126,7 +127,7 @@ public sealed class BodySystem : SharedBodySystem
return;
// Don't microwave animals, kids
Transform(uid).AttachToGridOrMap();
_transform.AttachToGridOrMap(uid);
GibBody(uid, false, component);
args.Handled = true;
@@ -208,7 +209,7 @@ public sealed class BodySystem : SharedBodySystem
else
{
cont.Remove(ent, EntityManager, force: true);
Transform(ent).Coordinates = coordinates;
_transform.SetCoordinates(ent, coordinates);
ent.RandomOffset(0.25f);
}
}

View File

@@ -10,6 +10,7 @@ public sealed class RehydratableSystem : EntitySystem
[Dependency] private readonly SharedPopupSystem _popups = default!;
[Dependency] private readonly SolutionContainerSystem _solutions = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -36,7 +37,7 @@ public sealed class RehydratableSystem : EntitySystem
var target = Spawn(randomMob, Transform(uid).Coordinates);
Transform(target).AttachToGridOrMap();
_transform.AttachToGridOrMap(target);
var ev = new GotRehydratedEvent(target);
RaiseLocalEvent(uid, ref ev);

View File

@@ -27,6 +27,7 @@ namespace Content.Server.Chemistry.EntitySystems
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
[Dependency] private readonly ThrowingSystem _throwing = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private const float ReactTime = 0.125f;
@@ -69,7 +70,7 @@ namespace Content.Server.Chemistry.EntitySystems
_throwing.TryThrow(vapor.Owner, dir, speed, user: user, pushbackRatio: ThrowingSystem.PushbackDefault * 10f);
var distance = (target.Position - vaporXform.WorldPosition).Length();
var distance = (target.Position - _transform.GetWorldPosition(vaporXform)).Length();
var time = (distance / physics.LinearVelocity.Length());
despawn.Lifetime = MathF.Min(aliveTime, time);
}

View File

@@ -45,6 +45,7 @@ public sealed class ClimbSystem : SharedClimbSystem
[Dependency] private readonly InteractionSystem _interactionSystem = default!;
[Dependency] private readonly StunSystem _stunSystem = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private const string ClimbingFixtureName = "climb";
private const int ClimbingCollisionGroup = (int) (CollisionGroup.TableLayer | CollisionGroup.LowImpassable);
@@ -394,8 +395,8 @@ public sealed class ClimbSystem : SharedClimbSystem
if (!Resolve(uid, ref physics, ref climbing, false))
return;
var from = Transform(uid).WorldPosition;
var to = Transform(target).WorldPosition;
var from = _transform.GetWorldPosition(uid);
var to = _transform.GetWorldPosition(target);
var (x, y) = (to - from).Normalized();
if (MathF.Abs(x) < 0.6f) // user climbed mostly vertically so lets make it a clean straight line

View File

@@ -1,5 +1,4 @@
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using Robust.Server.Player;
using Robust.Shared.Console;
using Robust.Shared.Network;
@@ -49,42 +48,5 @@ namespace Content.Server.Commands
attachedEntity = session.AttachedEntity.Value;
return true;
}
public static string SubstituteEntityDetails(IConsoleShell shell, EntityUid ent, string ruleString)
{
var entMan = IoCManager.Resolve<IEntityManager>();
var transform = entMan.GetComponent<TransformComponent>(ent);
// gross, is there a better way to do this?
ruleString = ruleString.Replace("$ID", ent.ToString());
ruleString = ruleString.Replace("$WX",
transform.WorldPosition.X.ToString(CultureInfo.InvariantCulture));
ruleString = ruleString.Replace("$WY",
transform.WorldPosition.Y.ToString(CultureInfo.InvariantCulture));
ruleString = ruleString.Replace("$LX",
transform.LocalPosition.X.ToString(CultureInfo.InvariantCulture));
ruleString = ruleString.Replace("$LY",
transform.LocalPosition.Y.ToString(CultureInfo.InvariantCulture));
ruleString = ruleString.Replace("$NAME", entMan.GetComponent<MetaDataComponent>(ent).EntityName);
if (shell.Player is IPlayerSession player)
{
if (player.AttachedEntity is {Valid: true} p)
{
var pTransform = entMan.GetComponent<TransformComponent>(p);
ruleString = ruleString.Replace("$PID", ent.ToString());
ruleString = ruleString.Replace("$PWX",
pTransform.WorldPosition.X.ToString(CultureInfo.InvariantCulture));
ruleString = ruleString.Replace("$PWY",
pTransform.WorldPosition.Y.ToString(CultureInfo.InvariantCulture));
ruleString = ruleString.Replace("$PLX",
pTransform.LocalPosition.X.ToString(CultureInfo.InvariantCulture));
ruleString = ruleString.Replace("$PLY",
pTransform.LocalPosition.Y.ToString(CultureInfo.InvariantCulture));
}
}
return ruleString;
}
}
}

View File

@@ -15,7 +15,7 @@ namespace Content.Server.Construction.Completions
var transform = entityManager.GetComponent<TransformComponent>(uid);
if (!transform.Anchored)
transform.Coordinates = transform.Coordinates.SnapToGrid(entityManager);
entityManager.System<SharedTransformSystem>().SetCoordinates(uid, transform, transform.Coordinates.SnapToGrid(entityManager));
if (SouthRotation)
{

View File

@@ -341,7 +341,7 @@ namespace Content.Server.Construction
// Transform transferring.
var newTransform = Transform(newUid);
newTransform.AttachToGridOrMap(); // in case in hands or a container
_transform.AttachToGridOrMap(newUid, newTransform); // in case in hands or a container
newTransform.LocalRotation = transform.LocalRotation;
newTransform.Anchored = transform.Anchored;

View File

@@ -31,6 +31,7 @@ namespace Content.Server.Construction
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
[Dependency] private readonly EntityLookupSystem _lookupSystem = default!;
[Dependency] private readonly StorageSystem _storageSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
// --- WARNING! LEGACY CODE AHEAD! ---
// This entire file contains the legacy code for initial construction.
@@ -515,7 +516,7 @@ namespace Content.Server.Construction
var xform = Transform(structure);
var wasAnchored = xform.Anchored;
xform.Anchored = false;
xform.Coordinates = ev.Location;
_transform.SetCoordinates(structure, xform, ev.Location);
xform.LocalRotation = constructionPrototype.CanRotate ? ev.Angle : Angle.Zero;
xform.Anchored = wasAnchored;

View File

@@ -6,6 +6,8 @@ namespace Content.Server.DeviceNetwork.Systems
[UsedImplicitly]
public sealed class WirelessNetworkSystem : EntitySystem
{
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
base.Initialize();
@@ -25,7 +27,7 @@ namespace Content.Server.DeviceNetwork.Systems
return;
if (xform.MapID != args.SenderTransform.MapID
|| (ownPosition - xform.WorldPosition).Length() > sendingComponent.Range)
|| (ownPosition - _transform.GetWorldPosition(xform)).Length() > sendingComponent.Range)
{
args.Cancel();
}

View File

@@ -38,6 +38,7 @@ public sealed partial class DragonSystem : EntitySystem
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;
[Dependency] private readonly NPCSystem _npc = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
/// <summary>
/// Minimum distance between 2 rifts allowed.
@@ -251,7 +252,7 @@ public sealed partial class DragonSystem : EntitySystem
}
}
foreach (var tile in grid.GetTilesIntersecting(new Circle(xform.WorldPosition, RiftTileRadius), false))
foreach (var tile in grid.GetTilesIntersecting(new Circle(_transform.GetWorldPosition(xform), RiftTileRadius), false))
{
if (!tile.IsSpace(_tileDef))
continue;

View File

@@ -69,13 +69,14 @@ public sealed class ExplosionGridTileFlood : ExplosionTileFlood
return;
_needToTransform = true;
var transform = IoCManager.Resolve<IEntityManager>().GetComponent<TransformComponent>(Grid.Owner);
var transform = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<SharedTransformSystem>();
var size = (float) Grid.TileSize;
_matrix.R0C2 = size / 2;
_matrix.R1C2 = size / 2;
_matrix *= transform.WorldMatrix * Matrix3.Invert(spaceMatrix);
var relativeAngle = transform.WorldRotation - spaceAngle;
var (_, rot, mat) = transform.GetWorldPositionRotationMatrix(Grid.Owner);
_matrix *= mat * Matrix3.Invert(spaceMatrix);
var relativeAngle = rot - spaceAngle;
_offset = relativeAngle.RotateVec(new Vector2(size / 4, size / 4));
}

View File

@@ -61,8 +61,9 @@ public sealed partial class ExplosionSystem : EntitySystem
{
var targetGrid = _mapManager.GetGrid(referenceGrid.Value);
var xform = Transform(targetGrid.Owner);
targetAngle = xform.WorldRotation;
targetMatrix = xform.InvWorldMatrix;
var (_, rot, invMat) = _transformSystem.GetWorldPositionRotationInvMatrix(xform);
targetAngle = rot;
targetMatrix = invMat;
tileSize = targetGrid.TileSize;
}
@@ -95,7 +96,7 @@ public sealed partial class ExplosionSystem : EntitySystem
var xforms = EntityManager.GetEntityQuery<TransformComponent>();
var xform = xforms.GetComponent(grid.Owner);
var (_, gridWorldRotation, gridWorldMatrix, invGridWorldMatrid) = xform.GetWorldPositionRotationMatrixWithInv(xforms);
var (_, gridWorldRotation, gridWorldMatrix, invGridWorldMatrid) = _transformSystem.GetWorldPositionRotationMatrixWithInv(xform, xforms);
var localEpicentre = (Vector2i) invGridWorldMatrid.Transform(epicentre.Position);
var matrix = offsetMatrix * gridWorldMatrix * targetMatrix;

View File

@@ -87,8 +87,8 @@ public sealed partial class ExplosionSystem : EntitySystem
if (referenceGrid != null)
{
var xform = Transform(_mapManager.GetGrid(referenceGrid.Value).Owner);
spaceMatrix = xform.WorldMatrix;
spaceAngle = xform.WorldRotation;
spaceMatrix = _transformSystem.GetWorldMatrix(xform);
spaceAngle = _transformSystem.GetWorldRotation(xform);
}
// is the explosion starting on a grid?

View File

@@ -340,7 +340,7 @@ public sealed partial class ExplosionSystem : EntitySystem
if (player.AttachedEntity is not EntityUid uid)
continue;
var playerPos = Transform(player.AttachedEntity!.Value).WorldPosition;
var playerPos = _transformSystem.GetWorldPosition(player.AttachedEntity.Value);
var delta = epicenter.Position - playerPos;
if (delta.EqualsApprox(Vector2.Zero))

View File

@@ -13,6 +13,7 @@ public sealed class PuddleDebugDebugOverlaySystem : SharedPuddleDebugOverlaySyst
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly IMapManager _mapManager = default!;
[Dependency] private readonly PuddleSystem _puddle = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private readonly HashSet<IPlayerSession> _playerObservers = new();
@@ -55,7 +56,7 @@ public sealed class PuddleDebugDebugOverlaySystem : SharedPuddleDebugOverlaySyst
var transform = EntityManager.GetComponent<TransformComponent>(entity);
var worldBounds = Box2.CenteredAround(transform.WorldPosition,
var worldBounds = Box2.CenteredAround(_transform.GetWorldPosition(transform),
new Vector2(LocalViewRange, LocalViewRange));

View File

@@ -368,7 +368,7 @@ namespace Content.Server.GameTicking
var gridXform = Transform(gridUid);
return new EntityCoordinates(gridUid,
gridXform.InvWorldMatrix.Transform(toMap.Position));
_transform.GetInvWorldMatrix(gridXform).Transform(toMap.Position));
}
return spawn;

View File

@@ -39,6 +39,7 @@ namespace Content.Server.Ghost
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly MindSystem _minds = default!;
[Dependency] private readonly JobSystem _jobs = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -205,8 +206,8 @@ namespace Content.Server.Ghost
private void OnGhostWarpToTargetRequest(GhostWarpToTargetRequestEvent msg, EntitySessionEventArgs args)
{
if (args.SenderSession.AttachedEntity is not {Valid: true} attached ||
!EntityManager.TryGetComponent(attached, out GhostComponent? ghost))
if (args.SenderSession.AttachedEntity is not { Valid: true } attached ||
!EntityManager.HasComponent<GhostComponent>(attached))
{
Logger.Warning($"User {args.SenderSession.Name} tried to warp to {msg.Target} without being a ghost.");
return;
@@ -221,13 +222,12 @@ namespace Content.Server.Ghost
if (TryComp(msg.Target, out WarpPointComponent? warp) && warp.Follow
|| HasComp<MobStateComponent>(msg.Target))
{
_followerSystem.StartFollowingEntity(ghost.Owner, msg.Target);
_followerSystem.StartFollowingEntity(attached, msg.Target);
return;
}
var xform = Transform(ghost.Owner);
xform.Coordinates = Transform(msg.Target).Coordinates;
xform.AttachToGridOrMap();
_transform.SetCoordinates(attached, Transform(msg.Target).Coordinates);
_transform.AttachToGridOrMap(attached);
if (TryComp(attached, out PhysicsComponent? physics))
_physics.SetLinearVelocity(attached, Vector2.Zero, body: physics);
}

View File

@@ -45,6 +45,7 @@ namespace Content.Server.Hands.Systems
[Dependency] private readonly StorageSystem _storageSystem = default!;
[Dependency] private readonly ISharedPlayerManager _player = default!;
[Dependency] private readonly IConfigurationManager _configuration = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -201,7 +202,7 @@ namespace Content.Server.Hands.Systems
throwEnt = splitStack.Value;
}
var direction = coords.ToMapPos(EntityManager) - Transform(player).WorldPosition;
var direction = coords.ToMapPos(EntityManager) - _transform.GetWorldPosition(player);
if (direction == Vector2.Zero)
return true;

View File

@@ -20,6 +20,7 @@ public sealed class ImmovableRodSystem : EntitySystem
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Update(float frameTime)
{
@@ -62,11 +63,11 @@ public sealed class ImmovableRodSystem : EntitySystem
var vel = component.DirectionOverride.Degrees switch
{
0f => _random.NextVector2(component.MinSpeed, component.MaxSpeed),
_ => xform.WorldRotation.RotateVec(component.DirectionOverride.ToVec()) * _random.NextFloat(component.MinSpeed, component.MaxSpeed)
_ => _transform.GetWorldRotation(xform).RotateVec(component.DirectionOverride.ToVec()) * _random.NextFloat(component.MinSpeed, component.MaxSpeed),
};
_physics.ApplyLinearImpulse(uid, vel, body: phys);
xform.LocalRotation = (vel - xform.WorldPosition).ToWorldAngle() + MathHelper.PiOver2;
xform.LocalRotation = (vel - _transform.GetWorldPosition(xform)).ToWorldAngle() + MathHelper.PiOver2;
}
}

View File

@@ -16,6 +16,7 @@ public sealed class LightningSystem : SharedLightningSystem
[Dependency] private readonly PhysicsSystem _physics = default!;
[Dependency] private readonly BeamSystem _beam = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -97,7 +98,7 @@ public sealed class LightningSystem : SharedLightningSystem
for (int i = 0; i < directions; i++)
{
var direction = (Direction) i;
var (targetPos, targetRot) = targetXForm.GetWorldPositionRotation(xformQuery);
var (targetPos, targetRot) = _transform.GetWorldPositionRotation(targetXForm, xformQuery);
var dirRad = direction.ToAngle() + targetRot;
var ray = new CollisionRay(targetPos, dirRad.ToVec(), component.CollisionMask);
var rayCastResults = _physics.IntersectRay(targetXForm.MapID, ray, component.MaxLength, target, false).ToList();

View File

@@ -274,10 +274,11 @@ public sealed class MagicSystem : EntitySystem
var transform = Transform(args.Performer);
if (transform.MapID != args.Target.GetMapId(EntityManager)) return;
if (transform.MapID != args.Target.GetMapId(EntityManager))
return;
_transformSystem.SetCoordinates(args.Performer, args.Target);
transform.AttachToGridOrMap();
_transformSystem.AttachToGridOrMap(args.Performer, transform);
_audio.PlayPvs(args.BlinkSound, args.Performer, AudioParams.Default.WithVolume(args.BlinkVolume));
Speak(args);
args.Handled = true;

View File

@@ -13,6 +13,7 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem
{
[Dependency] private readonly IConGroupController _admin = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private readonly HashSet<ICommonSession> _draggers = new();
@@ -65,10 +66,11 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem
if (args.SenderSession is not IPlayerSession playerSession ||
!_admin.CanCommand(playerSession, CommandName) ||
!Exists(msg.Grid) ||
Deleted(msg.Grid)) return;
Deleted(msg.Grid))
{
return;
}
var gridXform = Transform(msg.Grid);
gridXform.WorldPosition = msg.WorldPosition;
_transform.SetWorldPosition(msg.Grid, msg.WorldPosition);
}
}

View File

@@ -77,7 +77,7 @@ public sealed class MechGrabberSystem : EntitySystem
component.ItemContainer.Remove(toRemove);
var mechxform = Transform(mech);
var xform = Transform(toRemove);
xform.AttachToGridOrMap();
_transform.AttachToGridOrMap(toRemove, xform);
var offset = _transform.GetWorldPosition(mechxform) + _transform.GetWorldRotation(mechxform).RotateVec(component.DepositOffset);
_transform.SetWorldPosition(xform, offset);

View File

@@ -36,7 +36,7 @@ public sealed partial class PathfindingSystem
return Vector2.Zero;
}
endPos = startXform.InvWorldMatrix.Transform(endXform.WorldMatrix.Transform(endPos));
endPos = _transform.GetInvWorldMatrix(startXform).Transform(_transform.GetWorldMatrix(endXform).Transform(endPos));
}
// TODO: Numerics when we changeover.

View File

@@ -410,8 +410,7 @@ public sealed partial class PathfindingSystem
private Vector2i GetOrigin(EntityCoordinates coordinates, EntityUid gridUid)
{
var gridXform = Transform(gridUid);
var localPos = gridXform.InvWorldMatrix.Transform(coordinates.ToMapPos(EntityManager));
var localPos = _transform.GetInvWorldMatrix(gridUid).Transform(coordinates.ToMapPos(EntityManager));
return new Vector2i((int) Math.Floor(localPos.X / ChunkSize), (int) Math.Floor(localPos.Y / ChunkSize));
}

View File

@@ -47,6 +47,7 @@ namespace Content.Server.NPC.Pathfinding
[Dependency] private readonly FixtureSystem _fixtures = default!;
[Dependency] private readonly NPCSystem _npc = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private readonly Dictionary<ICommonSession, PathfindingDebugMode> _subscribedSessions = new();
@@ -382,7 +383,7 @@ namespace Content.Server.NPC.Pathfinding
return null;
}
var localPos = xform.InvWorldMatrix.Transform(coordinates.ToMapPos(EntityManager));
var localPos = _transform.GetInvWorldMatrix(xform).Transform(coordinates.ToMapPos(EntityManager));
var origin = GetOrigin(localPos);
if (!TryGetChunk(origin, comp, out var chunk))

View File

@@ -16,6 +16,7 @@ namespace Content.Server.Pointing.EntitySystems
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly ExplosionSystem _explosion = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private EntityUid? RandomNearbyPlayer(EntityUid uid, RoguePointingArrowComponent? component = null, TransformComponent? transform = null)
{
@@ -68,24 +69,24 @@ namespace Content.Server.Pointing.EntitySystems
if (component.TurningDelay > 0)
{
var difference = EntityManager.GetComponent<TransformComponent>(chasing).WorldPosition - transform.WorldPosition;
var difference = _transform.GetWorldPosition(chasing) - _transform.GetWorldPosition(transform);
var angle = difference.ToAngle();
var adjusted = angle.Degrees + 90;
var newAngle = Angle.FromDegrees(adjusted);
transform.WorldRotation = newAngle;
_transform.SetWorldRotation(transform, newAngle);
UpdateAppearance(uid, component, transform);
continue;
}
transform.WorldRotation += Angle.FromDegrees(20);
_transform.SetWorldRotation(transform, _transform.GetWorldRotation(transform) + Angle.FromDegrees(20));
UpdateAppearance(uid, component, transform);
var toChased = EntityManager.GetComponent<TransformComponent>(chasing).WorldPosition - transform.WorldPosition;
var toChased = _transform.GetWorldPosition(chasing) - _transform.GetWorldPosition(transform);
transform.WorldPosition += toChased * frameTime * component.ChasingSpeed;
_transform.SetWorldPosition(transform, _transform.GetWorldPosition(transform) + toChased * frameTime * component.ChasingSpeed);
component.ChasingTime -= frameTime;

View File

@@ -266,8 +266,8 @@ namespace Content.Server.Polymorph.Systems
var parentXform = Transform(parent);
_transform.SetParent(parent, parentXform, uidXform.ParentUid);
parentXform.Coordinates = uidXform.Coordinates;
parentXform.LocalRotation = uidXform.LocalRotation;
_transform.SetCoordinates(parent, parentXform, uidXform.Coordinates);
_transform.SetLocalRotation(parentXform, uidXform.LocalRotation);
if (proto.TransferDamage &&
TryComp<DamageableComponent>(parent, out var damageParent) &&
@@ -306,7 +306,7 @@ namespace Content.Server.Polymorph.Systems
_mindSystem.TransferTo(mindId, parent, mind: mind);
// if an item polymorph was picked up, put it back down after reverting
Transform(parent).AttachToGridOrMap();
_transform.AttachToGridOrMap(parent);
_popup.PopupEntity(Loc.GetString("polymorph-revert-popup-generic",
("parent", Identity.Entity(uid, EntityManager)),

View File

@@ -22,6 +22,7 @@ public sealed class SpecialRespawnSystem : SharedSpecialRespawnSystem
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly TurfSystem _turf = default!;
[Dependency] private readonly IChatManager _chat = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -156,7 +157,7 @@ public sealed class SpecialRespawnSystem : SharedSpecialRespawnSystem
var tile = tileRef.GridIndices;
var found = false;
var (gridPos, _, gridMatrix) = xform.GetWorldPositionRotationMatrix();
var (gridPos, _, gridMatrix) = _transform.GetWorldPositionRotationMatrix(xform);
var gridBounds = gridMatrix.TransformBox(grid.LocalAABB);
//Obviously don't put anything ridiculous in here

View File

@@ -40,6 +40,7 @@ public sealed partial class RevenantSystem
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
[Dependency] private readonly GhostSystem _ghost = default!;
[Dependency] private readonly TileSystem _tile = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private void InitializeAbilities()
{
@@ -214,7 +215,7 @@ public sealed partial class RevenantSystem
var xform = Transform(uid);
if (!_mapManager.TryGetGrid(xform.GridUid, out var map))
return;
var tiles = map.GetTilesIntersecting(Box2.CenteredAround(xform.WorldPosition,
var tiles = map.GetTilesIntersecting(Box2.CenteredAround(_transform.GetWorldPosition(xform),
new Vector2(component.DefileRadius * 2, component.DefileRadius))).ToArray();
_random.Shuffle(tiles);

View File

@@ -50,7 +50,7 @@ sealed class SalvageRulerCommand : IConsoleCommand
var first = true;
foreach (var mapGrid in _maps.GetAllMapGrids(entityTransform.MapID))
{
var aabb = _entities.GetComponent<TransformComponent>(mapGrid.Owner).WorldMatrix.TransformBox(mapGrid.LocalAABB);
var aabb = _entities.System<SharedTransformSystem>().GetWorldMatrix(mapGrid.Owner).TransformBox(mapGrid.LocalAABB);
if (first)
{
total = aabb;

View File

@@ -54,6 +54,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
[Dependency] private readonly ShuttleSystem _shuttle = default!;
[Dependency] private readonly StationSystem _station = default!;
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private ISawmill _sawmill = default!;
@@ -415,6 +416,6 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
if (!Resolve(shuttle, ref grid, ref shuttleXform))
return false;
return shuttleXform.WorldMatrix.TransformBox(grid.LocalAABB).Contains(xform.WorldPosition);
return _transform.GetWorldMatrix(shuttleXform).TransformBox(grid.LocalAABB).Contains(_transform.GetWorldPosition(xform));
}
}

View File

@@ -250,8 +250,8 @@ public sealed partial class ShuttleSystem
var fromRotation = _transform.GetWorldRotation(xform);
var width = Comp<MapGridComponent>(uid).LocalAABB.Width;
xform.Coordinates = new EntityCoordinates(_mapManager.GetMapEntityId(_hyperSpaceMap!.Value), new Vector2(_index + width / 2f, 0f));
xform.LocalRotation = Angle.Zero;
_transform.SetCoordinates(uid, xform, new EntityCoordinates(_mapManager.GetMapEntityId(_hyperSpaceMap!.Value), new Vector2(_index + width / 2f, 0f)));
_transform.SetLocalRotation(xform, Angle.Zero);
_index += width + Buffer;
comp.Accumulator += comp.TravelTime - DefaultArrivalTime;
@@ -336,7 +336,7 @@ public sealed partial class ShuttleSystem
}
else
{
xform.Coordinates = comp.TargetCoordinates;
_transform.SetCoordinates(uid, xform, comp.TargetCoordinates);
mapId = comp.TargetCoordinates.GetMapId(EntityManager);
}
@@ -506,7 +506,7 @@ public sealed partial class ShuttleSystem
if (config != null)
{
FTLDock(config, shuttleXform);
FTLDock(config, shuttleUid, shuttleXform);
return true;
}
@@ -517,10 +517,13 @@ public sealed partial class ShuttleSystem
/// <summary>
/// Forces an FTL dock.
/// </summary>
public void FTLDock(DockingConfig config, TransformComponent shuttleXform)
public void FTLDock(DockingConfig config, EntityUid uid, TransformComponent? shuttleXform = null)
{
if (!Resolve(uid, ref shuttleXform))
return;
// Set position
shuttleXform.Coordinates = config.Coordinates;
_transform.SetCoordinates(uid, shuttleXform, config.Coordinates);
_transform.SetWorldRotation(shuttleXform, config.Angle);
// Connect everything
@@ -629,7 +632,7 @@ public sealed partial class ShuttleSystem
spawnPos = _transform.GetWorldPosition(targetXform, xformQuery);
}
xform.Coordinates = new EntityCoordinates(targetXform.MapUid.Value, spawnPos);
_transform.SetCoordinates(shuttleUid, xform, new EntityCoordinates(targetXform.MapUid.Value, spawnPos));
if (!HasComp<MapComponent>(targetXform.GridUid))
{

View File

@@ -115,7 +115,7 @@ public sealed partial class ShuttleSystem
if (config != null)
{
FTLDock(config, shuttleXform);
FTLDock(config, ent[0], shuttleXform);
if (TryComp<StationMemberComponent>(xform.GridUid, out var stationMember))
{

View File

@@ -38,8 +38,8 @@ public sealed partial class ShuttleSystem
var otherXform = Transform(args.OtherEntity);
var ourPoint = ourXform.InvWorldMatrix.Transform(args.WorldPoint);
var otherPoint = otherXform.InvWorldMatrix.Transform(args.WorldPoint);
var ourPoint = _transform.GetInvWorldMatrix(ourXform).Transform(args.WorldPoint);
var otherPoint = _transform.GetInvWorldMatrix(otherXform).Transform(args.WorldPoint);
var ourVelocity = _physics.GetLinearVelocity(uid, ourPoint, ourBody, ourXform);
var otherVelocity = _physics.GetLinearVelocity(args.OtherEntity, otherPoint, otherBody, otherXform);

View File

@@ -22,6 +22,7 @@ public sealed class ContainmentFieldGeneratorSystem : EntitySystem
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly PhysicsSystem _physics = default!;
[Dependency] private readonly AppearanceSystem _visualizer = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -228,7 +229,7 @@ public sealed class ContainmentFieldGeneratorSystem : EntitySystem
if (!gen1XForm.Anchored)
return false;
var genWorldPosRot = gen1XForm.GetWorldPositionRotation();
var genWorldPosRot = _transform.GetWorldPositionRotation(gen1XForm);
var dirRad = dir.ToAngle() + genWorldPosRot.WorldRotation; //needs to be like this for the raycast to work properly
var ray = new CollisionRay(genWorldPosRot.WorldPosition, dirRad.ToVec(), component.CollisionMask);
@@ -304,7 +305,7 @@ public sealed class ContainmentFieldGeneratorSystem : EntitySystem
var newField = Spawn(firstGenComp.CreatedField, currentCoords);
var fieldXForm = Transform(newField);
fieldXForm.AttachParent(firstGenComp.Owner);
_transform.SetParent(newField, fieldXForm, firstGenComp.Owner);
if (dirVec.GetDir() == Direction.East || dirVec.GetDir() == Direction.West)
{
var angle = fieldXForm.LocalPosition.ToAngle();

View File

@@ -13,6 +13,7 @@ public sealed class ContainmentFieldSystem : EntitySystem
{
[Dependency] private readonly ThrowingSystem _throwing = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
public override void Initialize()
{
@@ -26,16 +27,16 @@ public sealed class ContainmentFieldSystem : EntitySystem
{
var otherBody = args.OtherEntity;
if (TryComp<SpaceGarbageComponent>(otherBody, out var garbage))
if (HasComp<SpaceGarbageComponent>(otherBody))
{
_popupSystem.PopupEntity(Loc.GetString("comp-field-vaporized", ("entity", otherBody)), component.Owner, PopupType.LargeCaution);
QueueDel(garbage.Owner);
_popupSystem.PopupEntity(Loc.GetString("comp-field-vaporized", ("entity", otherBody)), uid, PopupType.LargeCaution);
QueueDel(otherBody);
}
if (TryComp<PhysicsComponent>(otherBody, out var physics) && physics.Mass <= component.MaxMass && physics.Hard)
{
var fieldDir = Transform(component.Owner).WorldPosition;
var playerDir = Transform(otherBody).WorldPosition;
var fieldDir = _transform.GetWorldPosition(uid);
var playerDir = _transform.GetWorldPosition(otherBody);
_throwing.TryThrow(otherBody, playerDir-fieldDir, strength: component.ThrowForce);
}

View File

@@ -18,6 +18,7 @@ namespace Content.Server.Solar.EntitySystems
{
[Dependency] private readonly IRobustRandom _robustRandom = default!;
[Dependency] private readonly SharedPhysicsSystem _physicsSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
/// <summary>
/// Maximum panel angular velocity range - used to stop people rotating panels fast enough that the lag prevention becomes noticable
@@ -111,7 +112,7 @@ namespace Content.Server.Solar.EntitySystems
foreach (var (panel, xform) in EntityManager.EntityQuery<SolarPanelComponent, TransformComponent>())
{
TotalPanelPower += panel.MaxSupply * panel.Coverage;
xform.WorldRotation = TargetPanelRotation;
_transform.SetWorldRotation(xform, TargetPanelRotation);
_updateQueue.Enqueue(panel);
}
}
@@ -134,7 +135,7 @@ namespace Content.Server.Solar.EntitySystems
// directly downwards (abs(theta) = pi) = coverage -1
// as TowardsSun + = CCW,
// panelRelativeToSun should - = CW
var panelRelativeToSun = xform.WorldRotation - TowardsSun;
var panelRelativeToSun = _transform.GetWorldRotation(xform) - TowardsSun;
// essentially, given cos = X & sin = Y & Y is 'downwards',
// then for the first 90 degrees of rotation in either direction,
// this plots the lower-right quadrant of a circle.
@@ -152,7 +153,7 @@ namespace Content.Server.Solar.EntitySystems
if (coverage > 0)
{
// Determine if the solar panel is occluded, and zero out coverage if so.
var ray = new CollisionRay(xform.WorldPosition, TowardsSun.ToWorldVec(), (int) CollisionGroup.Opaque);
var ray = new CollisionRay(_transform.GetWorldPosition(xform), TowardsSun.ToWorldVec(), (int) CollisionGroup.Opaque);
var rayCastResults = _physicsSystem.IntersectRayWithPredicate(
xform.MapID,
ray,

View File

@@ -13,6 +13,7 @@ public sealed class StandingStateSystem : EntitySystem
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
[Dependency] private readonly ThrowingSystem _throwingSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private void FallOver(EntityUid uid, StandingStateComponent component, DropHandItemsEvent args)
{
@@ -25,7 +26,7 @@ public sealed class StandingStateSystem : EntitySystem
if (!TryComp(uid, out HandsComponent? handsComp))
return;
var worldRotation = EntityManager.GetComponent<TransformComponent>(uid).WorldRotation.ToVec();
var worldRotation = _transform.GetWorldRotation(uid).ToVec();
foreach (var hand in handsComp.Hands.Values)
{
if (hand.HeldEntity is not EntityUid held)

View File

@@ -12,6 +12,7 @@ namespace Content.Server.Worldgen.Systems;
public abstract class BaseWorldSystem : EntitySystem
{
[Dependency] private readonly WorldControllerSystem _worldController = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
/// <summary>
/// Gets a chunk's coordinates in chunk space as an integer value.
@@ -25,7 +26,7 @@ public abstract class BaseWorldSystem : EntitySystem
if (!Resolve(ent, ref xform))
throw new Exception("Failed to resolve transform, somehow.");
return WorldGen.WorldToChunkCoords(xform.WorldPosition).Floored();
return WorldGen.WorldToChunkCoords(_transform.GetWorldPosition(xform)).Floored();
}
/// <summary>
@@ -40,7 +41,7 @@ public abstract class BaseWorldSystem : EntitySystem
if (!Resolve(ent, ref xform))
throw new Exception("Failed to resolve transform, somehow.");
return WorldGen.WorldToChunkCoords(xform.WorldPosition);
return WorldGen.WorldToChunkCoords(_transform.GetWorldPosition(xform));
}
/// <summary>

View File

@@ -16,6 +16,7 @@ public sealed class ThrowArtifactSystem : EntitySystem
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly ThrowingSystem _throwing = default!;
[Dependency] private readonly TileSystem _tile = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
/// <inheritdoc/>
public override void Initialize()
@@ -29,7 +30,7 @@ public sealed class ThrowArtifactSystem : EntitySystem
if (_map.TryGetGrid(xform.GridUid, out var grid))
{
var tiles = grid.GetTilesIntersecting(
Box2.CenteredAround(xform.WorldPosition, new Vector2(component.Range * 2, component.Range)));
Box2.CenteredAround(_transform.GetWorldPosition(xform), new Vector2(component.Range * 2, component.Range)));
foreach (var tile in tiles)
{