From f0ef0fbb210b0d4f6b6c22366c84b26e470baa8d Mon Sep 17 00:00:00 2001 From: Evan Hemsley <2342303+ehemsley@users.noreply.github.com> Date: Thu, 5 Dec 2019 23:16:47 -0800 Subject: [PATCH] fix erroneous engine cycle detection --- encompass-cs/WorldBuilder.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/encompass-cs/WorldBuilder.cs b/encompass-cs/WorldBuilder.cs index d8e678e..09ed567 100644 --- a/encompass-cs/WorldBuilder.cs +++ b/encompass-cs/WorldBuilder.cs @@ -91,7 +91,6 @@ namespace Encompass internal void RegisterComponent(Type componentType) { registeredComponentTypes.Add(componentType); - AddEngine((Engine)Activator.CreateInstance(typeof(ComponentEmitter<>).MakeGenericType(componentType))); } /// @@ -134,13 +133,10 @@ namespace Encompass foreach (var componentType in engine.readTypes.Union(engine.writeTypes)) { - if (!registeredComponentTypes.Contains(componentType)) - { - RegisterComponent(componentType); - } + RegisterComponent(componentType); } - foreach (var receiveType in engine.receiveTypes.Union(engine.readPendingTypes).Union(engine.readTypes)) + foreach (var receiveType in engine.receiveTypes.Union(engine.readPendingTypes)) { if (!typeToReaders.ContainsKey(receiveType)) { @@ -327,6 +323,14 @@ namespace Encompass } var engineOrder = new List(); + + foreach (var registeredComponentType in registeredComponentTypes) + { + var emitterEngine = (Engine)Activator.CreateInstance(typeof(ComponentEmitter<>).MakeGenericType(registeredComponentType)); + AddEngine(emitterEngine); + engineOrder.Add(emitterEngine); + } + foreach (var engine in engineGraph.TopologicalSort()) { engineOrder.Add(engine);