11using System.Collections;
17 public class CreationAndDeletionTests : InteractionEngineTestBase {
22 public IEnumerator CanCreateAndDelete() {
23 yield
return wait(beginningTestWait);
26 provider.editTimePose = TestHandFactory.TestHandPose.HeadMountedB;
28 yield
return wait(aBit);
30 var lHandPos = leftHand.leapHand.PalmPosition.ToVector3();
31 var rHandPos = rightHand.leapHand.PalmPosition.ToVector3();
33 var addBox0 = Spawn(box0, lHandPos -
Physics.gravity * 0.1F +
Vector3.forward * 0.5F);
34 var addBox1 = Spawn(box1, rHandPos -
Physics.gravity * 0.1F +
Vector3.forward * 0.5F);
36 yield
return wait(aWhile);
38 GameObject.Destroy(addBox0.gameObject);
39 GameObject.Destroy(addBox1.gameObject);
41 yield
return wait(endingTestWait);
45 public IEnumerator CanCreateInteractionBehaviourAtRuntime() {
46 yield
return wait(beginningTestWait);
49 provider.editTimePose = TestHandFactory.TestHandPose.HeadMountedB;
51 var rHandPos = rightHand.leapHand.PalmPosition.ToVector3();
53 var spawnPos = rHandPos;
54 var newBox = GameObject.CreatePrimitive(PrimitiveType.Cube);
55 newBox.transform.parent = rigObj.transform;
56 newBox.transform.position = spawnPos;
57 newBox.transform.localScale =
Vector3.one * 0.1F;
58 var newBody = newBox.AddComponent<Rigidbody>();
59 newBody.useGravity =
true;
60 newBody.isKinematic =
false;
61 newBox.AddComponent<InteractionBehaviour>();
63 yield
return wait(aWhile);
65 yield
return wait(endingTestWait);
73 public IEnumerator CanDeleteObjectWhileHovering() {
74 yield
return wait(beginningTestWait);
77 provider.editTimePose = TestHandFactory.TestHandPose.HeadMountedB;
79 yield
return wait(aBit);
81 var lHandPos = leftHand.leapHand.PalmPosition.ToVector3();
82 var addBox0 = Spawn(box0, lHandPos +
Vector3.forward * 0.2F);
83 addBox0.rigidbody.useGravity =
false;
85 yield
return wait(aBit);
87 Assert.That(addBox0.isHovered);
89 GameObject.Destroy(addBox0.gameObject);
91 yield
return wait(endingTestWait);
99 public IEnumerator CanDeleteObjectDuringContact() {
100 yield
return wait(beginningTestWait);
103 provider.editTimePose = TestHandFactory.TestHandPose.HeadMountedB;
105 yield
return wait(aWhile);
107 var lHandPos = leftHand.leapHand.PalmPosition.ToVector3();
108 var rHandPos = rightHand.leapHand.PalmPosition.ToVector3();
110 var addBox0 = Spawn(box0, lHandPos -
Physics.gravity * 0.1F);
111 var addBox1 = Spawn(box1, rHandPos -
Physics.gravity * 0.1F);
113 bool addBox0Contacted =
false;
114 bool addBox1Contacted =
false;
115 addBox0.OnContactBegin += () => {
116 addBox0Contacted =
true;
118 addBox1.OnContactBegin += () => {
119 addBox1Contacted =
true;
122 int contactFramesWaited = 0;
123 while ((!addBox0Contacted || !addBox1Contacted) && contactFramesWaited < WAIT_FOR_INTERACTION_FRAME_LIMIT) {
126 contactFramesWaited++;
128 Assert.That(contactFramesWaited != WAIT_FOR_INTERACTION_FRAME_LIMIT);
130 GameObject.Destroy(addBox0.gameObject);
131 GameObject.Destroy(addBox1.gameObject);
133 yield
return wait(endingTestWait);
138 #region Grasping Tests
141 public IEnumerator CanDeleteObjectDuringGrasp() {
142 yield
return wait(beginningTestWait);
144 InitTest(GRASP_THROW_RIG, DEFAULT_STAGE);
147 yield
return wait(aBit);
153 bool graspOccurred =
false;
154 box0.OnGraspBegin += () => {
155 graspOccurred =
true;
157 int framesWaited = 0;
158 while (!graspOccurred && framesWaited < WAIT_FOR_INTERACTION_FRAME_LIMIT) {
162 Assert.That(framesWaited != WAIT_FOR_INTERACTION_FRAME_LIMIT);
165 GameObject.Destroy(box0);
167 yield
return wait(endingTestWait);