]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Update RaiseEventBenchmark for engine changes (#37349)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Thu, 13 Nov 2025 10:50:17 +0000 (23:50 +1300)
committerGitHub <noreply@github.com>
Thu, 13 Nov 2025 10:50:17 +0000 (21:50 +1100)
* Update RaiseEventBenchmark

* fix test

* poke_tests

Content.Benchmarks/RaiseEventBenchmark.cs

index 4c4e0d9125ab0fe4d7a2b15e189c4acdb4d791ce..e3d377ccb3ec9ed3f66d1edef07e991fed751349 100644 (file)
@@ -23,6 +23,8 @@ public class RaiseEventBenchmark
         PoolManager.Startup(typeof(BenchSystem).Assembly);
         _pair = PoolManager.GetServerClient().GetAwaiter().GetResult();
         var entMan = _pair.Server.EntMan;
+        var fact = _pair.Server.ResolveDependency<IComponentFactory>();
+        var bus = (EntityEventBus)entMan.EventBus;
         _sys = entMan.System<BenchSystem>();
 
         _pair.Server.WaitPost(() =>
@@ -30,6 +32,8 @@ public class RaiseEventBenchmark
             var uid = entMan.Spawn();
             _sys.Ent = new(uid, entMan.GetComponent<TransformComponent>(uid));
             _sys.Ent2 = new(_sys.Ent.Owner, _sys.Ent.Comp);
+            _sys.NetId = fact.GetRegistration<TransformComponent>().NetID!.Value;
+            _sys.EvSubs = bus.GetNetCompEventHandlers<BenchSystem.BenchEv>();
         })
             .GetAwaiter()
             .GetResult();
@@ -60,6 +64,12 @@ public class RaiseEventBenchmark
         return _sys.RaiseICompEvent();
     }
 
+    [Benchmark]
+    public int RaiseNetEvent()
+    {
+        return _sys.RaiseNetIdEvent();
+    }
+
     [Benchmark]
     public int RaiseCSharpEvent()
     {
@@ -74,6 +84,8 @@ public class RaiseEventBenchmark
         public delegate void EntityEventHandler(EntityUid uid, TransformComponent comp, ref BenchEv ev);
 
         public event EntityEventHandler? OnCSharpEvent;
+        public ushort NetId;
+        internal EntityEventBus.DirectedEventHandler?[] EvSubs = default!;
 
         public override void Initialize()
         {
@@ -92,7 +104,7 @@ public class RaiseEventBenchmark
         public int RaiseCompEvent()
         {
             var ev = new BenchEv();
-            EntityManager.EventBus.RaiseComponentEvent(Ent.Owner, Ent.Comp, ref ev);
+            RaiseComponentEvent(Ent.Owner, Ent.Comp, ref ev);
             return ev.N;
         }
 
@@ -100,7 +112,16 @@ public class RaiseEventBenchmark
         {
             // Raise with an IComponent instead of concrete type
             var ev = new BenchEv();
-            EntityManager.EventBus.RaiseComponentEvent(Ent2.Owner, Ent2.Comp, ref ev);
+            RaiseComponentEvent(Ent2.Owner, Ent2.Comp, ref ev);
+            return ev.N;
+        }
+
+        public int RaiseNetIdEvent()
+        {
+            // Raise a "IComponent" event using a net-id index delegate array (for PVS & client game-state events)
+            var ev = new BenchEv();
+            ref var unitEv = ref Unsafe.As<BenchEv, EntityEventBus.Unit>(ref ev);
+            EvSubs[NetId]?.Invoke(Ent2.Owner, Ent2.Comp, ref unitEv);
             return ev.N;
         }
 
@@ -118,6 +139,7 @@ public class RaiseEventBenchmark
         }
 
         [ByRefEvent]
+        [ComponentEvent(Exclusive = false)]
         public struct BenchEv
         {
             public int N;