private static void UpdateBehaviorSystem(BehaviorSystem system) { if (system.IsActive == false) { return; } //update system system.Update(); //build scenes GameScene[] scenes = new GameScene[2] { SystemScene, MainScene }; foreach (var scene in scenes) { if (scene == null) { continue; } //create passed gameobject list List <GameObject> passedGameObjects = new List <GameObject>(); void SearchNode(GameObject node, ref List <GameObject> passedList) { if (node is null) { return; } //if node can not pass the requirement //we will not to search the children of node if (system.RequireComponents.IsPass(node) is false) { return; } passedList.Add(node); foreach (var child in node.Children) { SearchNode(child, ref passedList); } } foreach (var child in scene.Root.Children) { SearchNode(child, ref passedGameObjects); } system.Excute(passedGameObjects); } }
public static void RemoveBehaviorSystem(BehaviorSystem behaviorSystem) { BehaviorSystems.Remove(behaviorSystem); LogEmitter.Apply(LogLevel.Information, "[Remove Behavior System] [Name = {0}] from [GameSystems]", behaviorSystem.Name); }