예제 #1
0
        public void Should_activate_simple_step()
        {
            var m1        = Movement.Forward(_cam.LeftHand, 10);
            var step      = new GestureStep(TimeSpan.FromHours(1), m1);
            var completed = false;

            step.StepCompleted += () => completed = true;
            step.Activate();
            _cam.MoveLeftHandZ(30);
            _cam.MoveLeftHandZ(20);
            Assert.IsTrue(completed);
        }
예제 #2
0
        protected override List <SimAsset> GetParts()
        {
            AssetGesture gestureAsset = GetGesture();

            //            StringBuilder sb = new StringBuilder();
            //sb.Append("2\n");
            if (gestureAsset == null)
            {
                return(null);
            }
            Name = gestureAsset.Trigger;
            //sb.Append(TriggerKey + "\n");
            //sb.Append(TriggerKeyMask + "\n");
            //sb.Append(Trigger + "\n");
            Name = gestureAsset.ReplaceWith;//sb.Append(ReplaceWith + "\n");

            List <GestureStep> Sequence = gestureAsset.Sequence;
            int count = 0;

            if (Sequence != null)
            {
                count = Sequence.Count;
            }
            List <SimAsset> parts = new List <SimAsset>(count);

            //sb.Append(count + "\n");
            _Length = 0;
            for (int i = 0; i < count; i++)
            {
                GestureStep step = Sequence[i];
                // sb.Append((int)step.GestureStepType + "\n");
                SimAsset asset;

                switch (step.GestureStepType)
                {
                case GestureStepType.EOF:
                    goto Finish;

                case GestureStepType.Animation:
                    GestureStepAnimation animstep = (GestureStepAnimation)step;
                    asset      = SimAssetStore.FindOrCreateAsset(animstep.ID, AssetType.Animation);
                    asset.Name = animstep.Name;
                    if (animstep.AnimationStart)
                    {
                        parts.Add(asset);
                        //                            sb.Append("0\n");
                        _Length += asset.Length;
                    }
                    else
                    {
                        //             sb.Append("1\n");
                    }
                    break;

                case GestureStepType.Sound:
                    GestureStepSound soundstep = (GestureStepSound)step;
                    asset      = SimAssetStore.FindOrCreateAsset(soundstep.ID, AssetType.Sound);
                    asset.Name = soundstep.Name;
                    parts.Add(asset);
                    _Length += asset.Length;
                    break;

                case GestureStepType.Chat:
                    GestureStepChat chatstep = (GestureStepChat)step;
                    Name = chatstep.Text;
                    //sb.Append(chatstep.Text + "\n");
                    //sb.Append("0\n");
                    _Length += 10;
                    break;

                case GestureStepType.Wait:
                    GestureStepWait waitstep = (GestureStepWait)step;
                    //sb.AppendFormat("{0:0.000000}\n", waitstep.WaitTime);
                    int waitflags = 0;

                    if (waitstep.WaitForTime)
                    {
                        waitflags |= 0x01;
                        _Length   += waitstep.WaitTime;
                    }
                    if (waitstep.WaitForAnimation)
                    {
                        waitflags |= 0x02;
                        _Length   += 10;
                    }
                    //sb.Append(waitflags + "\n");
                    break;
                }
            }
Finish:

            if (parts.Count == 1)
            {
                SimAsset A = parts[0];
                if (A is SimAnimation)
                {
                    AnimationGestures[A.AssetID] = this;
                    if (A.Item == null)
                    {
                        A.Item = Item;
                    }
                }
            }
            return(parts);
        }