diff --git a/Content.Benchmarks/DeviceNetworkingBenchmark.cs b/Content.Benchmarks/DeviceNetworkingBenchmark.cs index 05d533d3f9..27e5000bc0 100644 --- a/Content.Benchmarks/DeviceNetworkingBenchmark.cs +++ b/Content.Benchmarks/DeviceNetworkingBenchmark.cs @@ -19,7 +19,6 @@ namespace Content.Benchmarks; public class DeviceNetworkingBenchmark { private PairTracker _pair = default!; - private IEntityManager _entityManager = default!; private DeviceNetworkTestSystem _deviceNetTestSystem = default!; private DeviceNetworkSystem _deviceNetworkSystem = default!; private EntityUid _sourceEntity; @@ -56,34 +55,35 @@ public class DeviceNetworkingBenchmark public int EntityCount = 500; [GlobalSetup] - public void Setup() + public async Task SetupAsync() { ProgramShared.PathOffset = "../../../../"; - _pair = PoolManager.GetServerClient(new PoolSettings{NoClient = true, ExtraPrototypes = Prototypes}).GetAwaiter().GetResult(); + _pair = await PoolManager.GetServerClient(new PoolSettings{NoClient = true, ExtraPrototypes = Prototypes}); var server = _pair.Pair.Server; - _entityManager = server.ResolveDependency(); - _deviceNetworkSystem = _entityManager.EntitySysManager.GetEntitySystem(); - _deviceNetTestSystem = _entityManager.EntitySysManager.GetEntitySystem(); - - IoCManager.InitThread(_pair.Pair.Server.InstanceDependencyCollection); - - var testValue = "test"; - _payload = new NetworkPayload + await server.WaitPost(() => { - ["Test"] = testValue, - ["testnumber"] = 1, - ["testbool"] = true - }; + var entityManager = server.InstanceDependencyCollection.Resolve(); + _deviceNetworkSystem = entityManager.EntitySysManager.GetEntitySystem(); + _deviceNetTestSystem = entityManager.EntitySysManager.GetEntitySystem(); - _sourceEntity = _entityManager.SpawnEntity("DummyNetworkDevice", MapCoordinates.Nullspace); - _sourceWirelessEntity = _entityManager.SpawnEntity("DummyWirelessNetworkDevice", MapCoordinates.Nullspace); + var testValue = "test"; + _payload = new NetworkPayload + { + ["Test"] = testValue, + ["testnumber"] = 1, + ["testbool"] = true + }; - for (var i = 0; i < EntityCount; i++) - { - _targetEntities.Add(_entityManager.SpawnEntity("DummyNetworkDevice", MapCoordinates.Nullspace)); - _targetWirelessEntities.Add(_entityManager.SpawnEntity("DummyWirelessNetworkDevice", MapCoordinates.Nullspace)); - } + _sourceEntity = entityManager.SpawnEntity("DummyNetworkDevice", MapCoordinates.Nullspace); + _sourceWirelessEntity = entityManager.SpawnEntity("DummyWirelessNetworkDevice", MapCoordinates.Nullspace); + + for (var i = 0; i < EntityCount; i++) + { + _targetEntities.Add(entityManager.SpawnEntity("DummyNetworkDevice", MapCoordinates.Nullspace)); + _targetWirelessEntities.Add(entityManager.SpawnEntity("DummyWirelessNetworkDevice", MapCoordinates.Nullspace)); + } + }); } [Benchmark(Baseline = true, Description = "Entity Events")] diff --git a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs index 3b3acf8a38..77b4781175 100644 --- a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -1,6 +1,5 @@ using System.Linq; using System.Runtime.CompilerServices; -using System.Threading; using System.Threading.Tasks; using Content.Server.Atmos.Components; using Content.Shared.Atmos; @@ -255,17 +254,11 @@ namespace Content.Server.Atmos.EntitySystems // Afterwards we reset all the chunk data for the next time we tick. var players = _playerManager.ServerSessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); var opts = new ParallelOptions { MaxDegreeOfParallelism = _parMan.ParallelProcessCount }; - var mainThread = Thread.CurrentThread; - var parentDeps = IoCManager.Instance!; - Parallel.ForEach(players, opts, p => UpdatePlayer(p, curTick, mainThread, parentDeps)); + Parallel.ForEach(players, opts, p => UpdatePlayer(p, curTick)); } - private void UpdatePlayer(IPlayerSession playerSession, GameTick curTick, Thread mainThread, IDependencyCollection parentDeps) + private void UpdatePlayer(IPlayerSession playerSession, GameTick curTick) { - // Thjs exists JUST to be able to resolve IRobustStringSerializer for networked message sending. - if (mainThread != Thread.CurrentThread) - IoCManager.InitThread(parentDeps.FromParent(parentDeps), true); - var xformQuery = GetEntityQuery(); var chunksInRange = _chunkingSys.GetChunksForSession(playerSession, ChunkSize, xformQuery, _chunkIndexPool, _chunkViewerPool); var previouslySent = _lastSentChunks[playerSession]; diff --git a/Content.Server/Decals/DecalSystem.cs b/Content.Server/Decals/DecalSystem.cs index 7b1dd93aef..ca0d170fb0 100644 --- a/Content.Server/Decals/DecalSystem.cs +++ b/Content.Server/Decals/DecalSystem.cs @@ -482,8 +482,6 @@ namespace Content.Server.Decals public void UpdatePlayer(IPlayerSession player) { - IoCManager.InitThread(_dependencies, replaceExisting: true); - var xformQuery = GetEntityQuery(); var chunksInRange = _chunking.GetChunksForSession(player, ChunkSize, xformQuery, _chunkIndexPool, _chunkViewerPool); var staleChunks = _chunkViewerPool.Get();