@@ -27,6 +27,7 @@ public sealed class HolopadSystem : SharedHolopadSystem
2727{
2828 [ Dependency ] private readonly IPrototypeManager _prototypeManager = default ! ;
2929 [ Dependency ] private readonly IGameTiming _timing = default ! ;
30+ [ Dependency ] private readonly SpriteSystem _sprite = default ! ;
3031
3132 public override void Initialize ( )
3233 {
@@ -72,26 +73,25 @@ private void UpdateHologramSprite(EntityUid hologram, EntityUid? target)
7273 return ;
7374
7475 // Remove all sprite layers
75- for ( int i = hologramSprite . AllLayers . Count ( ) - 1 ; i >= 0 ; i -- )
76- hologramSprite . RemoveLayer ( i ) ;
76+ for ( var i = hologramSprite . AllLayers . Count ( ) - 1 ; i >= 0 ; i -- )
77+ _sprite . RemoveLayer ( ( hologram , hologramSprite ) , i ) ;
7778
7879 if ( TryComp < SpriteComponent > ( target , out var targetSprite ) )
7980 {
8081 // Use the target's holographic avatar (if available)
8182 if ( TryComp < HolographicAvatarComponent > ( target , out var targetAvatar ) &&
8283 targetAvatar . LayerData != null )
8384 {
84- for ( int i = 0 ; i < targetAvatar . LayerData . Length ; i ++ )
85+ for ( var i = 0 ; i < targetAvatar . LayerData . Length ; i ++ )
8586 {
86- var layer = targetAvatar . LayerData [ i ] ;
87- hologramSprite . AddLayer ( targetAvatar . LayerData [ i ] , i ) ;
87+ _sprite . AddLayer ( ( hologram , hologramSprite ) , targetAvatar . LayerData [ i ] , i ) ;
8888 }
8989 }
9090
9191 // Otherwise copy the target's current physical appearance
9292 else
9393 {
94- hologramSprite . CopyFrom ( targetSprite ) ;
94+ _sprite . CopySprite ( ( target . Value , targetSprite ) , ( hologram , hologramSprite ) ) ;
9595 }
9696 }
9797
@@ -101,25 +101,27 @@ private void UpdateHologramSprite(EntityUid hologram, EntityUid? target)
101101 if ( string . IsNullOrEmpty ( holopadhologram . RsiPath ) || string . IsNullOrEmpty ( holopadhologram . RsiState ) )
102102 return ;
103103
104- var layer = new PrototypeLayerData ( ) ;
105- layer . RsiPath = holopadhologram . RsiPath ;
106- layer . State = holopadhologram . RsiState ;
104+ var layer = new PrototypeLayerData
105+ {
106+ RsiPath = holopadhologram . RsiPath ,
107+ State = holopadhologram . RsiState
108+ } ;
107109
108- hologramSprite . AddLayer ( layer ) ;
110+ _sprite . AddLayer ( ( hologram , hologramSprite ) , layer , null ) ;
109111 }
110112
111113 // Override specific values
112- hologramSprite . Color = Color . White ;
113- hologramSprite . Offset = holopadhologram . Offset ;
114- hologramSprite . DrawDepth = ( int ) DrawDepth . Mobs ;
114+ _sprite . SetColor ( ( hologram , hologramSprite ) , Color . White ) ;
115+ _sprite . SetOffset ( ( hologram , hologramSprite ) , holopadhologram . Offset ) ;
116+ _sprite . SetDrawDepth ( ( hologram , hologramSprite ) , ( int ) DrawDepth . Mobs ) ;
115117 hologramSprite . NoRotation = true ;
116118 hologramSprite . DirectionOverride = Direction . South ;
117119 hologramSprite . EnableDirectionOverride = true ;
118120
119121 // Remove shading from all layers (except displacement maps)
120- for ( int i = 0 ; i < hologramSprite . AllLayers . Count ( ) ; i ++ )
122+ for ( var i = 0 ; i < hologramSprite . AllLayers . Count ( ) ; i ++ )
121123 {
122- if ( hologramSprite . TryGetLayer ( i , out var layer ) && layer . ShaderPrototype != "DisplacedStencilDraw " )
124+ if ( _sprite . TryGetLayer ( ( hologram , hologramSprite ) , i , out var layer , false ) && layer . ShaderPrototype != "DisplacedDraw " )
123125 hologramSprite . LayerSetShader ( i , "unshaded" ) ;
124126 }
125127
0 commit comments