Remove most usages of obsolete TransformComponent methods (#19571)
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user