]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
NetSyncEnabled fixes (#23553)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Fri, 5 Jan 2024 04:11:26 +0000 (23:11 -0500)
committerGitHub <noreply@github.com>
Fri, 5 Jan 2024 04:11:26 +0000 (15:11 +1100)
NetSyncEnabled  fixes

Content.Client/Effects/ColorFlashEffectSystem.cs
Content.Client/Weapons/Ranged/Systems/GunSystem.cs

index 9a844019480bf7c8a8939a143b240abaf3f2efeb..af0bd4b600dd556a509e189ad6158508577ca8a0 100644 (file)
@@ -11,6 +11,7 @@ public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem
 {
     [Dependency] private readonly IGameTiming _timing = default!;
     [Dependency] private readonly AnimationPlayerSystem _animation = default!;
+    [Dependency] private readonly IComponentFactory _factory = default!;
 
     /// <summary>
     /// It's a little on the long side but given we use multiple colours denoting what happened it makes it easier to register.
@@ -86,8 +87,13 @@ public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem
                 continue;
             }
 
-            var player = EnsureComp<AnimationPlayerComponent>(ent);
-            player.NetSyncEnabled = false;
+            if (!TryComp(ent, out AnimationPlayerComponent? player))
+            {
+                player = (AnimationPlayerComponent) _factory.GetComponent(typeof(AnimationPlayerComponent));
+                player.Owner = ent;
+                player.NetSyncEnabled = false;
+                AddComp(ent, player);
+            }
 
             // Need to stop the existing animation first to ensure the sprite color is fixed.
             // Otherwise we might lerp to a red colour instead.
@@ -111,8 +117,14 @@ public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem
             if (animation == null)
                 continue;
 
-            var comp = EnsureComp<ColorFlashEffectComponent>(ent);
-            comp.NetSyncEnabled = false;
+            if (!TryComp(ent, out ColorFlashEffectComponent? comp))
+            {
+                comp = (ColorFlashEffectComponent) _factory.GetComponent(typeof(ColorFlashEffectComponent));
+                comp.Owner = ent;
+                comp.NetSyncEnabled = false;
+                AddComp(ent, comp);
+            }
+
             comp.Color = sprite.Color;
             _animation.Play((ent, player), animation, AnimationKey);
         }
index 72f0c2130bd23dad624f4d87654e7e89d7ea465b..e4a95ac2c54d12dcfe424313931436d5d4c942ba 100644 (file)
@@ -31,6 +31,7 @@ public sealed partial class GunSystem : SharedGunSystem
     [Dependency] private readonly AnimationPlayerSystem _animPlayer = default!;
     [Dependency] private readonly InputSystem _inputSystem = default!;
     [Dependency] private readonly SharedCameraRecoilSystem _recoil = default!;
+    [Dependency] private readonly IComponentFactory _factory = default!;
 
     [ValidatePrototypeId<EntityPrototype>]
     public const string HitscanProto = "HitscanEffect";
@@ -309,8 +310,14 @@ public sealed partial class GunSystem : SharedGunSystem
         };
 
         _animPlayer.Play(ent, anim, "muzzle-flash");
-        var light = EnsureComp<PointLightComponent>(uid);
-        light.NetSyncEnabled = false;
+        if (!TryComp(uid, out PointLightComponent? light))
+        {
+            light = (PointLightComponent) _factory.GetComponent(typeof(PointLightComponent));
+            light.Owner = uid;
+            light.NetSyncEnabled = false;
+            AddComp(uid, light);
+        }
+
         Lights.SetEnabled(uid, true, light);
         Lights.SetRadius(uid, 2f, light);
         Lights.SetColor(uid, Color.FromHex("#cc8e2b"), light);