using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Invector { public static class vCharacterExtensions { /// /// Load all and derivatives in character gameObject to register to events , and . /// /// Target public static void LoadActionControllers(this vCharacterController.vCharacter character, bool debug = false) { var actionControllers = character.GetComponents(); for (int i = 0; i < actionControllers.Length; i++) { if (actionControllers[i].enabled) { if (actionControllers[i] is vCharacterController.vActions.IActionListener) { var actionListener = actionControllers[i] as vCharacterController.vActions.IActionListener; { if (actionListener.actionEnter) { character.onActionEnter.RemoveListener(actionListener.OnActionEnter); character.onActionEnter.AddListener(actionListener.OnActionEnter); if (debug) Debug.Log("Register Action Enter event to the " + actionListener.GetType().Name); } if (actionListener.actionStay) { character.onActionStay.RemoveListener(actionListener.OnActionStay); character.onActionStay.AddListener(actionListener.OnActionStay); if (debug) Debug.Log("Register Action Stay event to the " + actionListener.GetType().Name); } if (actionListener.actionExit) { character.onActionExit.RemoveListener(actionListener.OnActionExit); character.onActionExit.AddListener(actionListener.OnActionExit); if (debug) Debug.Log("Register action Exit event to the " + actionListener.GetType().Name); } } } else { if (actionControllers[i] is vCharacterController.vActions.IActionEnterListener) { character.onActionEnter.RemoveListener((actionControllers[i] as vCharacterController.vActions.IActionEnterListener).OnActionEnter); character.onActionEnter.AddListener((actionControllers[i] as vCharacterController.vActions.IActionEnterListener).OnActionEnter); if (debug) Debug.Log("Register Action Enter event to the " + actionControllers[i].GetType().Name); } if (actionControllers[i] is vCharacterController.vActions.IActionStayListener) { character.onActionStay.RemoveListener((actionControllers[i] as vCharacterController.vActions.IActionStayListener).OnActionStay); character.onActionStay.AddListener((actionControllers[i] as vCharacterController.vActions.IActionStayListener).OnActionStay); if (debug) Debug.Log("Register Action Stay event to the " + actionControllers[i].GetType().Name); } if (actionControllers[i] is vCharacterController.vActions.IActionExitListener) { character.onActionExit.RemoveListener((actionControllers[i] as vCharacterController.vActions.IActionExitListener).OnActionExit); character.onActionExit.AddListener((actionControllers[i] as vCharacterController.vActions.IActionExitListener).OnActionExit); if (debug) Debug.Log("Register Action Exit event to the " + actionControllers[i].GetType().Name); } } } } } } }