public override Action Reverse() { FiniteTimeAction action1 = finiteTimeActions[1].Reverse() as FiniteTimeAction; FiniteTimeAction action0 = finiteTimeActions[0].Reverse() as FiniteTimeAction; return(new Sequence(action1, action0)); }
public Repeat(FiniteTimeAction action, int times) { _times = times; duration = action.GetDuration() * times; _innerAction = action; }
public Sequence(FiniteTimeAction action1, FiniteTimeAction action2) { float totalduration = action1.GetDuration() + action2.GetDuration(); duration = totalduration; finiteTimeActions[0] = action1; finiteTimeActions[1] = action2; }
public Spawn(FiniteTimeAction action1, FiniteTimeAction action2) { //CCASSERT(action1 != nullptr, "action1 can't be nullptr!"); //CCASSERT(action2 != nullptr, "action2 can't be nullptr!"); _one = action1; _two = action2; AccumulateDuration(action1, action2); }
void AccumulateDuration(FiniteTimeAction action1, FiniteTimeAction action2) { float d1 = _one.GetDuration(); float d2 = _two.GetDuration(); duration = Mathf.Max(d1, d2); if (d1 > d2) { _two = new Sequence(action2, new DelayTime(d1 - d2)); } else if (d1 < d2) { _one = new Sequence(action1, new DelayTime(d2 - d1)); } }
public IEnumerator YieldAction(FiniteTimeAction anAction) { if(action !=null) Debug.LogError("An action is already running"); else { action = anAction; Action.Run(transform,action); yield return new WaitForSeconds(action.GetDuration()); while(!action.IsDone()) { yield return null; } action=null; } }
public IEnumerator YieldAction(FiniteTimeAction anAction) { if (action != null) { Debug.LogError("An action is already running"); } else { action = anAction; Action.Run(transform, action); yield return(new WaitForSeconds(action.GetDuration())); while (!action.IsDone()) { yield return(null); } action = null; } }
private Sequence( bool dummy,FiniteTimeAction[] list) : base(1) { if(list.Length==0) { finiteTimeActions[0]= new ExtraAction(); finiteTimeActions[1]= new ExtraAction(); AccumulateDuration(); } else if(list.Length==1) { finiteTimeActions[0]= list[0]; finiteTimeActions[1]= new ExtraAction(); AccumulateDuration(); }else if(list.Length==2) { finiteTimeActions[0]= list[0]; finiteTimeActions[1]= list[1]; }else {// GREATER THAN 2 Sequence last = new Sequence (list[list.Length-2],list[list.Length-1]); for(int i= list.Length-3;i>=1;i--) { last = new Sequence(list[i],last); } finiteTimeActions[0]= list[0]; finiteTimeActions[1]= last; AccumulateDuration(); } }
public Repeat(FiniteTimeAction action, int times) { _times=times; duration = action.GetDuration() * times; _innerAction=action; }
public Sequence( FiniteTimeAction action1,FiniteTimeAction action2) { float totalduration = action1.GetDuration()+action2.GetDuration(); duration = totalduration; finiteTimeActions[0]=action1; finiteTimeActions[1]=action2; }
Spawn(bool dummy,FiniteTimeAction[] list) { if(list.Length<3) Debug.LogError("Array length should greater than 2"); Spawn last = new Spawn (list[list.Length-2],list[list.Length-1]); for(int i= list.Length-3;i>=1;i--) { last = new Spawn(list[i],last); } _one= list[0]; _two= last; AccumulateDuration(_one,_two); }
void AccumulateDuration(FiniteTimeAction action1, FiniteTimeAction action2) { float d1 = _one.GetDuration (); float d2 = _two.GetDuration (); duration = Mathf.Max (d1, d2); if (d1 > d2) { _two = new Sequence (action2, new DelayTime (d1 - d2)); } else if (d1 < d2) { _one = new Sequence (action1, new DelayTime (d2 - d1)); } }
public Spawn(FiniteTimeAction action1, FiniteTimeAction action2) { //CCASSERT(action1 != nullptr, "action1 can't be nullptr!"); //CCASSERT(action2 != nullptr, "action2 can't be nullptr!"); _one = action1; _two = action2; AccumulateDuration (action1, action2); }
public static Coroutine RunAction(this MonoBehaviour component, FiniteTimeAction action) { return(Actor.GetActor(component.transform).PerformAction(action)); }
public Coroutine PerformAction(FiniteTimeAction anAction) { return StartCoroutine(YieldAction(anAction)); }
public Coroutine PerformAction(FiniteTimeAction anAction) { return(StartCoroutine(YieldAction(anAction))); }
public static Coroutine RunAction(this MonoBehaviour component, FiniteTimeAction action) { return Actor.GetActor (component.transform).PerformAction (action); }