public HookCtroller(params ActionHook[] actionHooks) { if (actionHooks != null)//删除无用的hooks { actionHooks = (from hook in actionHooks where hook != null select hook).ToArray(); } if (actionHooks != null && actionHooks.Length > 0) { active = true; statu = ExecuteStatu.UnStarted; hooks = new ActionHook[actionHooks.Length]; for (int i = 0; i < actionHooks.Length; i++) { hooks[i] = ScriptableObject.Instantiate(actionHooks[i]); hooks[i].name = actionHooks[i].name; } } else { statu = ExecuteStatu.Completed; active = false; } }
protected virtual void OnEnable() { statu = ExecuteStatu.UnStarted; InitHookCtrl(); InitBindgCtrl(); InitOperateCtrl(); }
public virtual void OnEndExecute() { if (log) { Debug.Log("OnEndExecute", this); } if (statu != ExecuteStatu.Completed) { Debug.Log(completeHookCtrl.Statu); if (completeHookCtrl.Statu == ExecuteStatu.Completed) { statu = ExecuteStatu.Completed; CoreEndExecute(); TryCallBack(); } else if (completeHookCtrl.Statu == ExecuteStatu.UnStarted) { completeHookCtrl.OnStartExecute(forceAuto); } else { Debug.Log("wait:" + StepName); } } else { Debug.Log("already completed" + StepName); } }
public virtual void UnDoExecute() { if (log) { Debug.Log("UnDoExecute:" + this); } statu = ExecuteStatu.UnStarted; if (completeHookCtrl.Statu != ExecuteStatu.UnStarted) { completeHookCtrl.OnUnDoExecute(); } OnBeforeActionsUnDo(); actionCtrl.SetContext(this); actionCtrl.OnUnDoExecute(); if (startHookCtrl.Statu != ExecuteStatu.UnStarted) { startHookCtrl.OnUnDoExecute(); } if (enviromentCtrl != null) { enviromentCtrl.OrignalState(environments); } }
public virtual void OnUnDoExecute() { if (log) { Debug.Log("OnUnDoExecute:" + this); } if (statu != ExecuteStatu.UnStarted) { statu = ExecuteStatu.UnStarted; if (completeHookCtrl.Statu != ExecuteStatu.UnStarted) { completeHookCtrl.OnUnDoExecute(); } OnUnDoExecuteInternal(); if (startHookCtrl.Statu != ExecuteStatu.UnStarted) { startHookCtrl.OnUnDoExecute(); } } else { Debug.LogError(this + "allready undo"); } TryExecuteFeatures(feature => { feature.OnUnDoExecute(); }); }
public virtual void OnStartExecute(bool auto = false) { if (log) { Debug.Log("OnStartExecute:" + this.Name); } this.auto = auto; if (statu == ExecuteStatu.UnStarted) { statu = ExecuteStatu.Executing; if (startHookCtrl.Statu == ExecuteStatu.Completed) { OnStartExecuteInternal(); } else { startHookCtrl.OnStartExecute(auto); } } else { Debug.LogError("already started"); } TryExecuteFeatures(feature => { feature.OnStartExecute(auto); }); }
private void OnCompleteHookEnd() { if (statu != ExecuteStatu.Completed) { statu = ExecuteStatu.Completed; CoreEndExecute(); TryCallBack(); } }
protected override void OnEnable() { base.OnEnable(); statu = ExecuteStatu.UnStarted; InitHookCtrl(); InitBindingCtrl(); operateFeatures = RegistFeatures(); TryExecuteFeatures(feature => { feature.OnEnable(); }); }
public virtual void OnStartExecute(bool auto) { if (log) { Debug.Log("onStart Execute Hook :" + this); } if (status == ExecuteStatu.UnStarted) { status = ExecuteStatu.Executing; CoreStartExecute(); } }
public virtual void OnEndExecute(bool force) { if (status != ExecuteStatu.Completed) { status = ExecuteStatu.Completed; OnBeforeEndExecute(); CoreEndExecute(force); } else { Debug.LogError("already completed" + this); } }
public virtual void OnStartExecute(bool forceAuto) { if (!active) { return; } if (statu == ExecuteStatu.UnStarted) { statu = ExecuteStatu.Executing; this.isForceAuto = forceAuto; ChargeQueueIDs(); ExecuteAStep(isForceAuto); } }
public virtual void OnUnDoExecute() { if (!active) { return; } if (statu != ExecuteStatu.UnStarted) { statu = ExecuteStatu.UnStarted; foreach (var item in hooks) { if (item.Statu != ExecuteStatu.UnStarted) { item.OnUnDoExecute(); } } } }
public virtual bool StartExecute(bool forceAuto) { this.forceAuto = forceAuto; if (statu == ExecuteStatu.UnStarted) { statu = ExecuteStatu.Executing; if (startHookCtrl.Statu == ExecuteStatu.Completed) { StartExecuteInternal(); } else { startHookCtrl.OnStartExecute(forceAuto); } return(true); } else { Debug.Log("already started" + name); return(false); } }
public virtual void OnEndExecute(bool force) { if (statu != ExecuteStatu.Completed) { OnBeforeEnd(force); if (force) { statu = ExecuteStatu.Completed; if (completeHookCtrl.Statu != ExecuteStatu.Completed) { completeHookCtrl.CoreEndExecute(); } CoreEndExecute(); } else { if (completeHookCtrl.Statu == ExecuteStatu.Completed) { statu = ExecuteStatu.Completed; CoreEndExecute(); TryCallBack(); } else if (completeHookCtrl.Statu == ExecuteStatu.UnStarted) { completeHookCtrl.OnStartExecute(auto); } else { if (log) { Debug.Log("wait:" + Name); } } } } TryExecuteFeatures(feature => { feature.CoreEndExecute(); }); }
public virtual void EndExecute() { if (statu != ExecuteStatu.Completed) { statu = ExecuteStatu.Completed; if (startHookCtrl.Statu != ExecuteStatu.Completed) { startHookCtrl.CoreEndExecute(); } CoreEndExecute(); if (completeHookCtrl.Statu != ExecuteStatu.Completed) { completeHookCtrl.CoreEndExecute(); } } else { Debug.Log("already completed" + StepName); } }
public virtual void CoreEndExecute() { if (!active) { return; } if (statu != ExecuteStatu.Completed) { statu = ExecuteStatu.Completed; foreach (var item in hooks) { if (item.Statu == ExecuteStatu.UnStarted) { item.OnStartExecute(isForceAuto); } if (item.Statu != ExecuteStatu.Completed) { item.OnEndExecute(true); } } } }
protected virtual void OnEnable() { status = ExecuteStatu.UnStarted; }
public virtual void OnUnDoExecute() { status = ExecuteStatu.UnStarted; }