diff --git a/Content.Client/DisplacementMap/DisplacementMapSystem.cs b/Content.Client/DisplacementMap/DisplacementMapSystem.cs
index 9e9ad6135b..94dbc7f00c 100644
--- a/Content.Client/DisplacementMap/DisplacementMapSystem.cs
+++ b/Content.Client/DisplacementMap/DisplacementMapSystem.cs
@@ -8,18 +8,19 @@ namespace Content.Client.DisplacementMap;
public sealed class DisplacementMapSystem : EntitySystem
{
[Dependency] private readonly ISerializationManager _serialization = default!;
+ [Dependency] private readonly SpriteSystem _sprite = default!;
///
/// Attempting to apply a displacement map to a specific layer of SpriteComponent
///
/// Information package for applying the displacement map
- /// SpriteComponent
+ /// Entity with SpriteComponent
/// Index of the layer where the new map layer will be added
/// Unique layer key, which will determine which layer to apply displacement map to
/// The key of the new displacement map layer added by this function.
///
public bool TryAddDisplacement(DisplacementData data,
- SpriteComponent sprite,
+ Entity sprite,
int index,
object key,
out string displacementKey)
@@ -30,10 +31,9 @@ public sealed class DisplacementMapSystem : EntitySystem
return false;
if (data.ShaderOverride != null)
- sprite.LayerSetShader(index, data.ShaderOverride);
+ sprite.Comp.LayerSetShader(index, data.ShaderOverride);
- if (sprite.LayerMapTryGet(displacementKey, out var oldIndex))
- sprite.RemoveLayer(oldIndex);
+ _sprite.RemoveLayer(sprite.AsNullable(), displacementKey, false);
//allows you not to write it every time in the YML
foreach (var pair in data.SizeMaps)
@@ -55,7 +55,7 @@ public sealed class DisplacementMapSystem : EntitySystem
// We choose a displacement map from the possible ones, matching the size with the original layer size.
// If there is no such a map, we use a standard 32 by 32 one
var displacementDataLayer = data.SizeMaps[EyeManager.PixelsPerMeter];
- var actualRSI = sprite.LayerGetActualRSI(index);
+ var actualRSI = _sprite.LayerGetEffectiveRsi(sprite.AsNullable(), index);
if (actualRSI is not null)
{
if (actualRSI.Size.X != actualRSI.Size.Y)
@@ -72,9 +72,20 @@ public sealed class DisplacementMapSystem : EntitySystem
var displacementLayer = _serialization.CreateCopy(displacementDataLayer, notNullableOverride: true);
displacementLayer.CopyToShaderParameters!.LayerKey = key.ToString() ?? "this is impossible";
- sprite.AddLayer(displacementLayer, index);
- sprite.LayerMapSet(displacementKey, index);
+ _sprite.AddLayer(sprite.AsNullable(), displacementLayer, index);
+ _sprite.LayerMapSet(sprite.AsNullable(), displacementKey, index);
return true;
}
+
+ ///
+ [Obsolete("Use the Entity overload")]
+ public bool TryAddDisplacement(DisplacementData data,
+ SpriteComponent sprite,
+ int index,
+ object key,
+ out string displacementKey)
+ {
+ return TryAddDisplacement(data, (sprite.Owner, sprite), index, key, out displacementKey);
+ }
}