private void ControllerDestroyed(object sender, IMorphController controller) { if (controller as MorphAbstractController == this) { Destroy(gameObject); } }
public bool DestroyController(IMorphController controller) { if (!Controllers.Contains(controller)) { return(false); } controller.DeInitialize(); WhenControllerDestroyed?.Invoke(this, controller); Controllers.Remove(controller); return(true); }
public bool AddController(IMorphController controller) { //Initialize controller if (!controller.Initialize()) { return(false); } //Add controller to list Controllers.Add(controller); return(true); }
public bool Initialize() { //Main camera if (!_mainCamera) { return(false); } MainDisplay = _mainCamera.GetComponent <IMorphDisplay>(); //Components Components = new List <IMorphComponent>(); //Controllers Controllers = new List <IMorphController>(); foreach (var controller in _controllers) { if (!controller) { continue; } IMorphController morphController = controller.GetComponent <IMorphController>(); if (morphController == null) { Debug.LogWarningFormat("Controller game object {0} has no Morph controller", controller.name); continue; } if (!AddController(morphController)) { Debug.LogErrorFormat("Failed to add controller {0}", controller.name); continue; } } return(true); }