Beispiel #1
0
 private void ControllerDestroyed(object sender, IMorphController controller)
 {
     if (controller as MorphAbstractController == this)
     {
         Destroy(gameObject);
     }
 }
Beispiel #2
0
        public bool DestroyController(IMorphController controller)
        {
            if (!Controllers.Contains(controller))
            {
                return(false);
            }

            controller.DeInitialize();
            WhenControllerDestroyed?.Invoke(this, controller);
            Controllers.Remove(controller);
            return(true);
        }
Beispiel #3
0
        public bool AddController(IMorphController controller)
        {
            //Initialize controller
            if (!controller.Initialize())
            {
                return(false);
            }

            //Add controller to list
            Controllers.Add(controller);
            return(true);
        }
Beispiel #4
0
        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);
        }