public void Run() { _node = this.Sequence(this.env) .While(IsFinish, LoopEvent) .OnCompelete(OnCompelete) .Run(); }
public override void Run() { if (recyled) { return; } _seq = this.Sequence(env.envType) .Repeat((r) => { _repeat = r.Sequence((s) => { s.Repeat((_r) => { _r.Sequence((_s) => { _s .Until(IsFinish) .OnBegin(OnLoopBegin) .OnCompelete(OnLoopCompele); }); }, _array.Length - 1); }); }, loop) .OnCompelete(OnTweenCompelete) .Run(); }
public async void StartAsync() { _State = SequencerState.Running; try { while (CurrentNode != null && CurrentNode != default(ISequenceNode)) { // Execute the Task and wait for it to return await CurrentNode.ExecuteAsync(); // If the node finished successfully if (CurrentNode.Completed || (CurrentNode.CanContinueOnError && !CurrentNode.RepeatOnError)) { var target = CurrentNode.Index + 1; CurrentNode = Nodes.Where(x => x.Index == target) .FirstOrDefault(); } else if (!CurrentNode.Completed && !CurrentNode.RepeatOnError && !CurrentNode.CanContinueOnError) { CurrentNode = null; } } } catch (Exception ex) { //TODO: Add Logging } _State = SequencerState.Stopped; }
public Sequencer(IEnumerable <ISequenceNode> nodes) { // Order the nodes by index _Nodes = nodes.OrderBy(x => x.Index); _State = SequencerState.Stopped; // Setup the first node CurrentNode = Nodes.First(); // Initialize it so we're ready to go CurrentNode.Init() }
protected override void OnDataReset() { if (_node != null && !_node.recyled) { _node.Recyle(); _node = null; } onCompelete = null; _time = 0f; _converter = ValueCurveCoverter.Default; compeleted = false; }
private void RecycleInner() { if (_tv != null && !_tv.recyled) { _tv.Recyle(); _tv = null; } if (_seq != null && !_seq.recyled) { _seq.Recyle(); _seq = null; } if (_repeat != null && !_repeat.recyled) { _repeat.Recyle(); _repeat = null; } }
public override void VisitSequenceContainer(ISequenceNode handlerNode) { base.VisitSequenceContainer(handlerNode); _._comment("HANDLER: " + handlerNode.Name); }
public ISequenceNode DecorateNode(ISequenceNode node, XmlElement element, Context context) { if(node is IAudioNode) { return DecorateAudioNode((IAudioNode) node, element, context); } return node; }
public virtual void VisitSequenceContainer(ISequenceNode handlerNode) { Visit(handlerNode.StartNode); }
public virtual void AfterVisitHandler(ISequenceNode handlerNode) { }
public virtual void BeforeVisitHandler(ISequenceNode handlerNode) { }