/// <summary> /// Runs an Action that can be awaited. /// </summary> /// <param name="action">A FiniteTimeAction.</param> public Task<ActionState> RunActionsAsync(FiniteTimeAction action) { var tcs = new TaskCompletionSource<ActionState>(); ActionState state = null; var completion = new CallFunc(() => tcs.TrySetResult(state)); var asyncAction = new Sequence(action, completion); state = Application.Current.ActionManager.AddAction(asyncAction, this); return tcs.Task; }
/// <summary> /// Runs a sequence of Actions so that it can be awaited. /// </summary> /// <param name="actions">An array of FiniteTimeAction objects.</param> public Task<ActionState> RunActionsAsync(params FiniteTimeAction[] actions) { if (actions.Length == 0) return Task.FromResult<ActionState>(null); var tcs = new TaskCompletionSource<ActionState>(); var numActions = actions.Length; var asyncActions = new FiniteTimeAction[actions.Length + 1]; Array.Copy(actions, asyncActions, numActions); ActionState state = null; asyncActions[numActions] = new CallFunc(() => tcs.TrySetResult(state)); var asyncAction = asyncActions.Length > 1 ? new Sequence(asyncActions) : asyncActions[0]; state = Application.Current.ActionManager.AddAction(asyncAction, this); return tcs.Task; }
public CallFuncState(CallFunc action, Node target) : base(action, target) { CallFunction = action.CallFunction; ScriptFuncName = action.ScriptFuncName; }
public AsyncCompletionCallFuncState(CallFunc action, Node target) : base(action, target) { }
public CallFuncState (CallFunc action, Node target) : base(action, target) { CallFunction = action.CallFunction; ScriptFuncName = action.ScriptFuncName; }
public AsyncCompletionCallFuncState(CallFunc action, Node target) : base(action, target) { }