]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Support separate displacement maps for left and right hand (#35820)
authorEd <96445749+TheShuEd@users.noreply.github.com>
Thu, 20 Mar 2025 07:06:55 +0000 (10:06 +0300)
committerGitHub <noreply@github.com>
Thu, 20 Mar 2025 07:06:55 +0000 (00:06 -0700)
* Update HandsSystem.cs

* Update HandsComponent.cs

Content.Client/Hands/Systems/HandsSystem.cs
Content.Shared/Hands/Components/HandsComponent.cs

index 68800a2afe517ec1f76e93fed8c1e4aa9f685924..f879e06a20ddb4e6cbf5fea2183ed78c06047149 100644 (file)
@@ -349,7 +349,12 @@ namespace Content.Client.Hands.Systems
                 sprite.LayerSetData(index, layerData);
 
                 //Add displacement maps
-                if (handComp.HandDisplacement is not null)
+                if (hand.Location == HandLocation.Left && handComp.LeftHandDisplacement is not null)
+                    _displacement.TryAddDisplacement(handComp.LeftHandDisplacement, sprite, index, key, revealedLayers);
+                else if (hand.Location == HandLocation.Right && handComp.RightHandDisplacement is not null)
+                    _displacement.TryAddDisplacement(handComp.RightHandDisplacement, sprite, index, key, revealedLayers);
+                //Fallback to default displacement map
+                else if (handComp.HandDisplacement is not null)
                     _displacement.TryAddDisplacement(handComp.HandDisplacement, sprite, index, key, revealedLayers);
             }
 
index b3cb51ae359ec3b1de4c0b9dc66260a541c815d5..0af318ba0678f699efe720418f66c47a19677af5 100644 (file)
@@ -78,9 +78,24 @@ public sealed partial class HandsComponent : Component
     [DataField, ViewVariables(VVAccess.ReadWrite)]
     public TimeSpan ThrowCooldown = TimeSpan.FromSeconds(0.5f);
 
+    /// <summary>
+    ///     Fallback displacement map applied to all sprites in the hand, unless otherwise specified
+    /// </summary>
     [DataField]
     public DisplacementData? HandDisplacement;
 
+    /// <summary>
+    ///     If defined, applies to all sprites in the left hand, ignoring <see cref="HandDisplacement"/>
+    /// </summary>
+    [DataField]
+    public DisplacementData? LeftHandDisplacement;
+
+    /// <summary>
+    ///     If defined, applies to all sprites in the right hand, ignoring <see cref="HandDisplacement"/>
+    /// </summary>
+    [DataField]
+    public DisplacementData? RightHandDisplacement;
+
     /// <summary>
     /// If false, hands cannot be stripped, and they do not show up in the stripping menu.
     /// </summary>