public MTActionState AddAction(MTAction action, GameObject target, bool paused = false) { Debug.Assert(action != null); Debug.Assert(target != null); HashElement element; if (!targets.TryGetValue(target, out element)) { element = new HashElement(); element.Paused = paused; element.Target = target; targets.Add(target, element); targetsAvailable = true; } ActionAllocWithHashElement(element); var isActionRunning = false; for (int i = 0; i < element.ActionStates.Count; i++) { var existingState = element.ActionStates [i]; if (existingState.Action == action) { isActionRunning = true; break; } } Debug.Assert(!isActionRunning, "MTUnityAction : Action is already running for this target."); var state = action.StartAction(target); element.ActionStates.Add(state); return(state); }
public MTActionState AddAction(MTAction action, GameObject target, bool paused = false) { Debug.Assert(action != null); Debug.Assert(target != null); HashElement element; if (!targets.TryGetValue(target, out element)) { element = new HashElement(); element.Paused = paused; element.Target = target; targets.Add(target, element); targetsAvailable = true; } ActionAllocWithHashElement(element); var isActionRunning = false; for (int i = 0; i < element.ActionStates.Count; i++) { var existingState = element.ActionStates [i]; if (existingState.Action == action) { isActionRunning = true; break; } } Debug.Assert(!isActionRunning, "MTUnityAction : Action is already running for this target."); var state = action.StartAction(target); element.ActionStates.Add(state); return state; }