コード例 #1
0
 public void Run()
 {
     _node = this.Sequence(this.env)
             .While(IsFinish, LoopEvent)
             .OnCompelete(OnCompelete)
             .Run();
 }
コード例 #2
0
 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();
 }
コード例 #3
0
        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;
        }
コード例 #4
0
 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()
 }
コード例 #5
0
 protected override void OnDataReset()
 {
     if (_node != null && !_node.recyled)
     {
         _node.Recyle();
         _node = null;
     }
     onCompelete = null;
     _time       = 0f;
     _converter  = ValueCurveCoverter.Default;
     compeleted  = false;
 }
コード例 #6
0
 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;
     }
 }
コード例 #7
0
 public override void VisitSequenceContainer(ISequenceNode handlerNode)
 {
     base.VisitSequenceContainer(handlerNode);
     _._comment("HANDLER: " + handlerNode.Name);
 }
コード例 #8
0
        public ISequenceNode DecorateNode(ISequenceNode node, XmlElement element, Context context)
        {
            if(node is IAudioNode)
            {
                return DecorateAudioNode((IAudioNode) node, element, context);
            }

            return node;
        }
コード例 #9
0
 public override void VisitSequenceContainer(ISequenceNode handlerNode)
 {
     base.VisitSequenceContainer(handlerNode);
     _._comment("HANDLER: " + handlerNode.Name);
 }
コード例 #10
0
 public virtual void VisitSequenceContainer(ISequenceNode handlerNode)
 {
     Visit(handlerNode.StartNode);
 }
コード例 #11
0
 public virtual void AfterVisitHandler(ISequenceNode handlerNode)
 {
     
 }
コード例 #12
0
 public virtual void BeforeVisitHandler(ISequenceNode handlerNode)
 {
     
 }
コード例 #13
0
 public virtual void VisitSequenceContainer(ISequenceNode handlerNode)
 {
     Visit(handlerNode.StartNode);
 }
コード例 #14
0
 public virtual void AfterVisitHandler(ISequenceNode handlerNode)
 {
 }
コード例 #15
0
 public virtual void BeforeVisitHandler(ISequenceNode handlerNode)
 {
 }