Beispiel #1
0
        public static void DestroyGameObject(EgoComponent egoComponent)
        {
            var gameObject = egoComponent.gameObject;

            EgoEvents <DestroyedGameObject> .AddEvent(new DestroyedGameObject(gameObject, egoComponent));

            EgoCleanUp.Destroy(egoComponent.gameObject);
        }
Beispiel #2
0
        public static bool DestroyComponent <C>(EgoComponent egoComponent) where C : Component
        {
            C component = null;

            if (!egoComponent.TryGetComponents <C>(out component))
            {
                return(false);
            }

            var e = new DestroyedComponent <C>(component, egoComponent);

            EgoEvents <DestroyedComponent <C> > .AddEvent(e);

            EgoCleanUp <C> .Destroy(egoComponent, component);

            return(true);
        }
Beispiel #3
0
        public static void Update()
        {
            // Update all Systems
            foreach (var system in _systems)
            {
#if UNITY_EDITOR
                if (system.enabled)
                {
                    system.Update();
                }
#else
                system.Update();
#endif
            }

            // Invoke all queued Events
            EgoEvents.Invoke();

            // Clean up Destroyed Components & GameObjects
            EgoCleanUp.CleanUp();
        }
Beispiel #4
0
        public static void Start()
        {
            var sceneCount = SceneManager.sceneCount;

            for (var sceneIndex = 0; sceneIndex < sceneCount; sceneIndex++)
            {
                var scene           = SceneManager.GetSceneAt(sceneIndex);
                var rootGameObjects = scene.GetRootGameObjects();

                // Attach an EgoComponent Component to every GameObject in the scene
                foreach (var go in rootGameObjects)
                {
                    InitEgoComponent(go);
                }

                // Add every GameObject to any relevant system
                foreach (var system in _systems)
                {
                    foreach (var go in rootGameObjects)
                    {
                        var egoComponent = go.GetComponent <EgoComponent>();
                        system.CreateBundles(egoComponent);
                    }
                }
            }

            EgoEvents.Start();

            // Start all Systems
            foreach (var system in _systems)
            {
                system.Start();
            }

            // Invoke all queued Events
            EgoEvents.Invoke();

            // Clean up Destroyed Components & GameObjects
            EgoCleanUp.CleanUp();
        }