Skip to content

Commit

Permalink
add set map coordinates function
Browse files Browse the repository at this point in the history
  • Loading branch information
EmoGarbage404 committed Apr 24, 2024
1 parent 4e87d93 commit ccf312d
Showing 1 changed file with 31 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,37 @@ public MapCoordinates GetMapCoordinates(Entity<TransformComponent> entity)
return GetMapCoordinates(entity.Comp);
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void SetMapCoordinates(EntityUid entity, MapCoordinates coordinates)
{
var xform = XformQuery.GetComponent(entity);
SetMapCoordinates((entity, xform), coordinates);
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void SetMapCoordinates(Entity<TransformComponent> entity, MapCoordinates coordinates)
{
var xform = entity.Comp;

if (!xform._parent.IsValid() || xform.MapUid == null)
{
DebugTools.Assert("Parent is invalid while attempting to set MapCoordinates - did you try to move root node?");
return;
}

var mapUid = _map.GetMap(coordinates.MapId);
if (!_gridQuery.HasComponent(entity) &&
_mapManager.TryFindGridAt(mapUid, coordinates.Position, out var targetGrid, out _))
{
var invWorldMatrix = GetInvWorldMatrix(targetGrid);
SetCoordinates(entity, new EntityCoordinates(targetGrid, invWorldMatrix.Transform(coordinates.Position)));
}
else
{
SetCoordinates(entity, new EntityCoordinates(mapUid, coordinates.Position));
}
}

[Pure]
public (Vector2 WorldPosition, Angle WorldRotation) GetWorldPositionRotation(EntityUid uid)
{
Expand Down

0 comments on commit ccf312d

Please sign in to comment.