Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        public static void RemoveBehaviorSystem(BehaviorSystem behaviorSystem)
        {
            BehaviorSystems.Remove(behaviorSystem);

            LogEmitter.Apply(LogLevel.Information, "[Remove Behavior System] [Name = {0}] from [GameSystems]", behaviorSystem.Name);
        }