if (!_mapManager.TryFindGridAt(mousePos, out var gridUid, out var grid))
return;
- StartDragging(gridUid, Vector2.Transform(mousePos.Position, Transform(gridUid).InvWorldMatrix));
+ StartDragging(gridUid, Vector2.Transform(mousePos.Position, _transformSystem.GetInvWorldMatrix(gridUid)));
}
if (!TryComp(_dragging, out TransformComponent? xform))
return;
}
- var localToWorld = Vector2.Transform(_localPosition, xform.WorldMatrix);
+ var localToWorld = Vector2.Transform(_localPosition, _transformSystem.GetWorldMatrix(xform));
if (localToWorld.EqualsApprox(mousePos.Position, 0.01f)) return;
if (_enableShuttlePosition)
{
- _overlay = new EmergencyShuttleOverlay(EntityManager);
+ _overlay = new EmergencyShuttleOverlay(EntityManager.TransformQuery, XformSystem);
overlayManager.AddOverlay(_overlay);
RaiseNetworkEvent(new EmergencyShuttleRequestPositionMessage());
}
/// </summary>
public sealed class EmergencyShuttleOverlay : Overlay
{
- private IEntityManager _entManager;
+ private readonly EntityQuery<TransformComponent> _transformQuery;
+ private readonly SharedTransformSystem _transformSystem;
public override OverlaySpace Space => OverlaySpace.WorldSpace;
public EntityUid? StationUid;
public Box2? Position;
- public EmergencyShuttleOverlay(IEntityManager entManager)
+ public EmergencyShuttleOverlay(EntityQuery<TransformComponent> transformQuery, SharedTransformSystem transformSystem)
{
- _entManager = entManager;
+ _transformQuery = transformQuery;
+ _transformSystem = transformSystem;
}
protected override void Draw(in OverlayDrawArgs args)
{
- if (Position == null || !_entManager.TryGetComponent<TransformComponent>(StationUid, out var xform)) return;
+ if (Position == null || !_transformQuery.TryGetComponent(StationUid, out var xform))
+ return;
- args.WorldHandle.SetTransform(xform.WorldMatrix);
+ args.WorldHandle.SetTransform(_transformSystem.GetWorldMatrix(xform));
args.WorldHandle.DrawRect(Position.Value, Color.Red.WithAlpha(100));
args.WorldHandle.SetTransform(Matrix3x2.Identity);
}
var transformSystem = entityManager.System<SharedTransformSystem>();
var transform = entityManager.GetComponent<TransformComponent>(Grid.Owner);
- var size = (float) Grid.TileSize;
+ var size = (float)Grid.TileSize;
_matrix.M31 = size / 2;
_matrix.M32 = size / 2;
Matrix3x2.Invert(spaceMatrix, out var invSpace);
- _matrix *= transform.WorldMatrix * invSpace;
- var relativeAngle = transformSystem.GetWorldRotation(transform) - spaceAngle;
+ var (_, relativeAngle, worldMatrix) = transformSystem.GetWorldPositionRotationMatrix(transform);
+ relativeAngle -= spaceAngle;
+ _matrix *= worldMatrix * invSpace;
_offset = relativeAngle.RotateVec(new Vector2(size / 4, size / 4));
}
{
var targetGrid = Comp<MapGridComponent>(referenceGrid.Value);
var xform = Transform(referenceGrid.Value);
- targetAngle = _transformSystem.GetWorldRotation(xform);
- targetMatrix = xform.InvWorldMatrix;
+ (_, targetAngle, targetMatrix) = _transformSystem.GetWorldPositionRotationInvMatrix(xform);
tileSize = targetGrid.TileSize;
}
if (referenceGrid != null)
{
var xform = Transform(Comp<MapGridComponent>(referenceGrid.Value).Owner);
- spaceMatrix = xform.WorldMatrix;
- spaceAngle = _transformSystem.GetWorldRotation(xform);
+ (_, spaceAngle, spaceMatrix) = _transformSystem.GetWorldPositionRotationMatrix(xform);
}
// is the explosion starting on a grid?
{
var gridXform = Transform(gridUid);
- return new EntityCoordinates(gridUid, Vector2.Transform(toMap.Position, gridXform.InvWorldMatrix));
+ return new EntityCoordinates(gridUid, Vector2.Transform(toMap.Position, _transform.GetInvWorldMatrix(gridXform)));
}
return spawn;
return Vector2.Zero;
}
- endPos = Vector2.Transform(Vector2.Transform(endPos, endXform.WorldMatrix), startXform.InvWorldMatrix);
+ endPos = Vector2.Transform(Vector2.Transform(endPos, _transform.GetWorldMatrix(endXform)), _transform.GetInvWorldMatrix(startXform));
}
// TODO: Numerics when we changeover.
return null;
}
- var localPos = Vector2.Transform(coordinates.ToMapPos(EntityManager, _transform), xform.InvWorldMatrix);
+ var localPos = Vector2.Transform(coordinates.ToMapPos(EntityManager, _transform), _transform.GetInvWorldMatrix(xform));
var origin = GetOrigin(localPos);
if (!TryGetChunk(origin, comp, out var chunk))