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); }
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); }