if (!TryComp<SpriteComponent>(uid, out var sprite))
return;
- sprite.LayerSetOffset(EdgeLayer.South, new Vector2(0, -1f));
- sprite.LayerSetOffset(EdgeLayer.East, new Vector2(1f, 0f));
- sprite.LayerSetOffset(EdgeLayer.North, new Vector2(0, 1f));
- sprite.LayerSetOffset(EdgeLayer.West, new Vector2(-1f, 0f));
+ _sprite.LayerSetOffset((uid, sprite), EdgeLayer.South, new Vector2(0, -1f));
+ _sprite.LayerSetOffset((uid, sprite), EdgeLayer.East, new Vector2(1, 0f));
+ _sprite.LayerSetOffset((uid, sprite), EdgeLayer.North, new Vector2(0, 1f));
+ _sprite.LayerSetOffset((uid, sprite), EdgeLayer.West, new Vector2(-1, 0f));
- sprite.LayerSetVisible(EdgeLayer.South, false);
- sprite.LayerSetVisible(EdgeLayer.East, false);
- sprite.LayerSetVisible(EdgeLayer.North, false);
- sprite.LayerSetVisible(EdgeLayer.West, false);
+ _sprite.LayerSetVisible((uid, sprite), EdgeLayer.South, false);
+ _sprite.LayerSetVisible((uid, sprite), EdgeLayer.East, false);
+ _sprite.LayerSetVisible((uid, sprite), EdgeLayer.North, false);
+ _sprite.LayerSetVisible((uid, sprite), EdgeLayer.West, false);
}
private void OnEdgeShutdown(EntityUid uid, SmoothEdgeComponent component, ComponentShutdown args)
if (!TryComp<SpriteComponent>(uid, out var sprite))
return;
- sprite.LayerMapRemove(EdgeLayer.South);
- sprite.LayerMapRemove(EdgeLayer.East);
- sprite.LayerMapRemove(EdgeLayer.North);
- sprite.LayerMapRemove(EdgeLayer.West);
+ _sprite.LayerMapRemove((uid, sprite), EdgeLayer.South);
+ _sprite.LayerMapRemove((uid, sprite), EdgeLayer.East);
+ _sprite.LayerMapRemove((uid, sprite), EdgeLayer.North);
+ _sprite.LayerMapRemove((uid, sprite), EdgeLayer.West);
}
private void CalculateEdge(EntityUid uid, DirectionFlag directions, SpriteComponent? sprite = null, SmoothEdgeComponent? component = null)
for (var i = 0; i < 4; i++)
{
- var dir = (DirectionFlag) Math.Pow(2, i);
+ var dir = (DirectionFlag)Math.Pow(2, i);
var edge = GetEdge(dir);
if ((dir & directions) != 0x0)
{
- sprite.LayerSetVisible(edge, false);
+ _sprite.LayerSetVisible((uid, sprite), edge, false);
continue;
}
- sprite.LayerSetVisible(edge, true);
+ _sprite.LayerSetVisible((uid, sprite), edge, true);
}
}
public sealed partial class IconSmoothSystem : EntitySystem
{
[Dependency] private readonly SharedMapSystem _mapSystem = default!;
+ [Dependency] private readonly SpriteSystem _sprite = default!;
private readonly Queue<EntityUid> _dirtyEntities = new();
private readonly Queue<EntityUid> _anchorChangedEntities = new();
if (component.Mode != IconSmoothingMode.Corners || !TryComp(uid, out SpriteComponent? sprite))
return;
- SetCornerLayers(sprite, component);
+ SetCornerLayers((uid, sprite), component);
if (component.Shader != null)
{
return;
component.StateBase = newState;
- SetCornerLayers(sprite, component);
+ SetCornerLayers((uid, sprite), component);
}
- private void SetCornerLayers(SpriteComponent sprite, IconSmoothComponent component)
+ private void SetCornerLayers(Entity<SpriteComponent?> sprite, IconSmoothComponent component)
{
- sprite.LayerMapRemove(CornerLayers.SE);
- sprite.LayerMapRemove(CornerLayers.NE);
- sprite.LayerMapRemove(CornerLayers.NW);
- sprite.LayerMapRemove(CornerLayers.SW);
+ _sprite.LayerMapRemove(sprite, CornerLayers.SE);
+ _sprite.LayerMapRemove(sprite, CornerLayers.NE);
+ _sprite.LayerMapRemove(sprite, CornerLayers.NW);
+ _sprite.LayerMapRemove(sprite, CornerLayers.SW);
var state0 = $"{component.StateBase}0";
- sprite.LayerMapSet(CornerLayers.SE, sprite.AddLayerState(state0));
- sprite.LayerSetDirOffset(CornerLayers.SE, DirectionOffset.None);
- sprite.LayerMapSet(CornerLayers.NE, sprite.AddLayerState(state0));
- sprite.LayerSetDirOffset(CornerLayers.NE, DirectionOffset.CounterClockwise);
- sprite.LayerMapSet(CornerLayers.NW, sprite.AddLayerState(state0));
- sprite.LayerSetDirOffset(CornerLayers.NW, DirectionOffset.Flip);
- sprite.LayerMapSet(CornerLayers.SW, sprite.AddLayerState(state0));
- sprite.LayerSetDirOffset(CornerLayers.SW, DirectionOffset.Clockwise);
+ _sprite.LayerMapSet(sprite, CornerLayers.SE, _sprite.AddRsiLayer(sprite, state0));
+ _sprite.LayerSetDirOffset(sprite, CornerLayers.SE, DirectionOffset.None);
+ _sprite.LayerMapSet(sprite, CornerLayers.NE, _sprite.AddRsiLayer(sprite, state0));
+ _sprite.LayerSetDirOffset(sprite, CornerLayers.NE, DirectionOffset.CounterClockwise);
+ _sprite.LayerMapSet(sprite, CornerLayers.NW, _sprite.AddRsiLayer(sprite, state0));
+ _sprite.LayerSetDirOffset(sprite, CornerLayers.NW, DirectionOffset.Flip);
+ _sprite.LayerMapSet(sprite, CornerLayers.SW, _sprite.AddRsiLayer(sprite, state0));
+ _sprite.LayerSetDirOffset(sprite, CornerLayers.SW, DirectionOffset.Clockwise);
}
private void OnShutdown(EntityUid uid, IconSmoothComponent component, ComponentShutdown args)
{
if (gridEntity == null)
{
- sprite.Comp.LayerSetState(0, $"{smooth.StateBase}0");
+ _sprite.LayerSetRsiState(sprite.AsNullable(), 0, $"{smooth.StateBase}0");
return;
}
if (matching)
{
- sprite.Comp.LayerSetState(0, $"{smooth.StateBase}1");
+ _sprite.LayerSetRsiState(sprite.AsNullable(), 0, $"{smooth.StateBase}1");
}
else
{
- sprite.Comp.LayerSetState(0, $"{smooth.StateBase}0");
+ _sprite.LayerSetRsiState(sprite.AsNullable(), 0, $"{smooth.StateBase}0");
}
}
if (gridEntity == null)
{
- sprite.Comp.LayerSetState(0, $"{smooth.StateBase}{(int)dirs}");
+ _sprite.LayerSetRsiState(sprite.AsNullable(), 0, $"{smooth.StateBase}{(int)dirs}");
return;
}
if (MatchingEntity(smooth, _mapSystem.GetAnchoredEntitiesEnumerator(gridUid, grid, pos.Offset(Direction.West)), smoothQuery))
dirs |= CardinalConnectDirs.West;
- sprite.Comp.LayerSetState(0, $"{smooth.StateBase}{(int)dirs}");
+ _sprite.LayerSetRsiState(sprite.AsNullable(), 0, $"{smooth.StateBase}{(int)dirs}");
var directions = DirectionFlag.None;
// At the very least each event currently only queues a sprite for updating.
// Oh god sprite component is a mess.
var sprite = spriteEnt.Comp;
- sprite.LayerSetState(CornerLayers.NE, $"{smooth.StateBase}{(int)cornerNE}");
- sprite.LayerSetState(CornerLayers.SE, $"{smooth.StateBase}{(int)cornerSE}");
- sprite.LayerSetState(CornerLayers.SW, $"{smooth.StateBase}{(int)cornerSW}");
- sprite.LayerSetState(CornerLayers.NW, $"{smooth.StateBase}{(int)cornerNW}");
+ _sprite.LayerSetRsiState(spriteEnt.AsNullable(), CornerLayers.NE, $"{smooth.StateBase}{(int)cornerNE}");
+ _sprite.LayerSetRsiState(spriteEnt.AsNullable(), CornerLayers.SE, $"{smooth.StateBase}{(int)cornerSE}");
+ _sprite.LayerSetRsiState(spriteEnt.AsNullable(), CornerLayers.SW, $"{smooth.StateBase}{(int)cornerSW}");
+ _sprite.LayerSetRsiState(spriteEnt.AsNullable(), CornerLayers.NW, $"{smooth.StateBase}{(int)cornerNW}");
var directions = DirectionFlag.None;