private Graph CreateGraph(IWorldBase world) { if (world == null) { return(null); } var systems = WorldHelper.GetSystems(world); var modules = WorldHelper.GetModules(world); var graph = new Graph(this.checkpointCollector); graph.worldGraph = this; var rootNode = graph.AddNode(new WorldNode(world)); var modulesVisualContainer = graph.AddNode(rootNode, new ModulesVisualContainer(this.CreateSubGraph <ModuleVisualNode>(modules, "Update", WorldStep.VisualTick)), modules); var beginTick = graph.AddNode(modulesVisualContainer, new BeginTickNode(null), "Simulate"); var modulesLogicContainer = graph.AddNode(beginTick, new ModulesLogicContainer(this.CreateSubGraph <ModuleLogicNode>(modules, "AdvanceTick", WorldStep.LogicTick)), modules); var pluginsLogicContainer = graph.AddNode(modulesLogicContainer, new PluginsLogicContainer(null), "PlayPluginsForTick"); var systemsLogicContainer = graph.AddNode(pluginsLogicContainer, new SystemsLogicContainer(this.CreateSubGraph <SystemLogicNode>(systems, "AdvanceTick", WorldStep.LogicTick)), systems); var removeOnceComponents = graph.AddNode(systemsLogicContainer, new RemoveOnceComponentsNode(null), "RemoveComponentsOnce"); var endTick = graph.AddNode(removeOnceComponents, new EndTickNode(null)); var pluginsLogicSimulateContainer = graph.AddNode(endTick, new PluginsLogicSimulateContainer(null), "SimulatePluginsForTicks"); var systemsVisualContainer = graph.AddNode(pluginsLogicSimulateContainer, new SystemsVisualContainer(this.CreateSubGraph <SystemVisualNode>(systems, "Update", WorldStep.VisualTick)), systems); graph.AddNode(systemsVisualContainer, new RemoveMarkersNode(null), "RemoveMarkers"); return(graph); }
private Graph CreateGraph(World world) { if (world == null) { return(null); } var systems = WorldHelper.GetSystems(world); var modules = WorldHelper.GetModules(world); var graph = new Graph(this.checkpointCollector); graph.worldGraph = this; var rootNode = graph.AddNode(new WorldNode(world)); var modulesVisualContainer = graph.AddNode(rootNode, new ModulesVisualContainer(this.CreateSubGraph <ModuleVisualNode>(modules, "Update", WorldStep.VisualTick)), modules); var beginTick = graph.AddNode(modulesVisualContainer, new BeginTickNode(null), "Simulate"); var modulesLogicContainer = graph.AddNode(beginTick, new ModulesLogicContainer(this.CreateSubGraph <ModuleLogicNode>(modules, "AdvanceTick", WorldStep.LogicTick)), modules); var pluginsLogicContainer = graph.AddNode(modulesLogicContainer, new PluginsLogicContainer(null), "PlayPluginsForTick"); Node systemsLogicContainer = pluginsLogicContainer; for (int i = 0; i < systems.Length; ++i) { var group = systems.arr[i]; if (group.runtimeSystem.allSystems == null || group.runtimeSystem.allSystems.Count == 0) { continue; } systemsLogicContainer = graph.AddNode(systemsLogicContainer, new SystemsLogicContainer(group.name, this.CreateSubGraph <SystemLogicNode>(group.runtimeSystem.allSystems, "AdvanceTick", WorldStep.LogicTick)), group.runtimeSystem.allSystems); } var endTick = graph.AddNode(systemsLogicContainer, new EndTickNode(null)); var pluginsLogicSimulateContainer = graph.AddNode(endTick, new PluginsLogicSimulateContainer(null), "SimulatePluginsForTicks"); Node systemsVisualContainer = pluginsLogicSimulateContainer; for (int i = 0; i < systems.Length; ++i) { var group = systems.arr[i]; if (group.runtimeSystem.allSystems == null || group.runtimeSystem.allSystems.Count == 0) { continue; } systemsVisualContainer = graph.AddNode(systemsVisualContainer, new SystemsVisualContainer(group.name, this.CreateSubGraph <SystemVisualNode>(group.runtimeSystem.allSystems, "Update", WorldStep.VisualTick)), group.runtimeSystem.allSystems); } graph.AddNode(systemsVisualContainer, new RemoveMarkersNode(null), "RemoveMarkers"); return(graph); }
private Graph CreateSubGraph <T>(IEnumerable list, string methodName, WorldStep step) where T : Node { var innerGraph = new Graph(this.checkpointCollector); innerGraph.worldGraph = this; innerGraph.vertical = true; var enter = innerGraph.AddNode(new SubmoduleEnterNode(null)); var lastNode = enter; foreach (var item in list) { if (WorldHelper.HasMethod(item, methodName) == true) { lastNode = innerGraph.AddNode(lastNode, (T)System.Activator.CreateInstance(typeof(T), item), item, step); } } innerGraph.AddNode(lastNode, new SubmoduleExitNode(lastNode)); return(innerGraph); }
private Graph CreateSubGraph <T>(ME.ECS.Collections.IBufferArray list, string methodName, WorldStep step) where T : Node { var innerGraph = new Graph(this.checkpointCollector); innerGraph.worldGraph = this; innerGraph.vertical = true; var enter = innerGraph.AddNode(new SubmoduleEnterNode(null)); var lastNode = enter; var arr = list.GetArray(); for (int i = 0; i < list.Count; ++i) { var item = arr.GetValue(i); if (WorldHelper.HasMethod(item, methodName) == true) { lastNode = innerGraph.AddNode(lastNode, (T)System.Activator.CreateInstance(typeof(T), item), item, step); } } innerGraph.AddNode(lastNode, new SubmoduleExitNode(lastNode)); return(innerGraph); }
public bool HasMethod(object instance, string methodName) { return(WorldHelper.HasMethod(instance, methodName)); }
public IList <ME.ECS.IModuleBase> GetModules() { return(WorldHelper.GetModules(this.world)); }
public IList <ME.ECS.ISystemBase> GetSystems() { return(WorldHelper.GetSystems(this.world)); }
/*public Dictionary<int, ME.ECS.IComponentsBase> GetComponentsStorage() { * * return WorldHelper.GetComponentsStorage(this.world); * * }*/ public IList[] GetEntitiesStorage() { return(WorldHelper.GetEntitiesStorage(this.world)); }
public FiltersStorage GetFilters() { return(WorldHelper.GetFilters(this.world)); }
public ME.ECS.Collections.ListCopyable <ME.ECS.IModuleBase> GetModules() { return(WorldHelper.GetModules(this.world)); }
public ME.ECS.Collections.BufferArray <SystemGroup> GetSystems() { return(WorldHelper.GetSystems(this.world)); }
public IStructComponentsContainer GetStructComponentsStorage() { return(WorldHelper.GetStructComponentsStorage(this.world)); }
public ME.ECS.FiltersArchetype.FiltersArchetypeStorage GetEntitiesStorage() { return(WorldHelper.GetEntitiesStorage(this.world)); }