public static EgoComponent AddGameObject(GameObject gameObject) { var egoComponent = AddGameObjectToChildren(gameObject.transform); EgoEvents <AddedGameObject> .AddEvent(new AddedGameObject(gameObject, egoComponent)); return(egoComponent); }
public static void DestroyGameObject(EgoComponent egoComponent) { var gameObject = egoComponent.gameObject; EgoEvents <DestroyedGameObject> .AddEvent(new DestroyedGameObject(gameObject, egoComponent)); EgoCleanUp.Destroy(egoComponent.gameObject); }
public static void SetParent(EgoComponent parent, EgoComponent child) { if (child == null) { Debug.LogWarning("Cannot set the Parent of a null Child"); } EgoEvents <SetParent> .AddEvent(new SetParent(parent, child)); }
public static C AddComponent <C>(EgoComponent egoComponent) where C : Component { C component = null; if (!egoComponent.TryGetComponents <C>(out component)) { component = egoComponent.gameObject.AddComponent <C>(); egoComponent.mask[ComponentIDs.Get(typeof(C))] = true; EgoEvents <AddedComponent <C> > .AddEvent(new AddedComponent <C>(component, egoComponent)); } return(component); }
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); }
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(); }
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(); }