13using System.Collections.Generic;
19 public abstract class InteractionEngineTestBase : LeapTestBase {
21 protected const int WAIT_FOR_INTERACTION_FRAME_LIMIT = 500;
23 #region Test Object Names
28 protected const string DEFAULT_RIG =
"IE Test Default Rig";
33 protected const string DEFAULT_STAGE =
"IE Test Default Stage";
40 protected const string GRASP_THROW_RIG =
"IE Test Playback Rig - Grasp and Throw";
47 protected const string PRESS_BUTTON_RIG =
"IE Test Playback Rig - Press Button";
51 #region Test Rig Objects
53 protected GameObject rigObj;
58 protected PlayableDirector recording;
63 protected LeapProvider provider;
68 protected InteractionManager manager;
70 protected InteractionHand leftHand;
71 protected InteractionHand rightHand;
72 protected InteractionXRController leftVRController;
73 protected InteractionXRController rightVRController;
77 #region Test Stage Objects
79 protected GameObject stageObj;
84 protected InteractionBehaviour box0;
89 protected InteractionBehaviour box1;
94 protected InteractionBehaviour box2;
99 protected InteractionButton button;
108 protected void InitTest(
string rigObjName,
string stageObjName) {
111 base.InitTest(rigObjName);
113 recording = rigObj.GetComponentInChildren<PlayableDirector>();
114 provider = rigObj.GetComponentInChildren<LeapProvider>();
115 manager = rigObj.GetComponentInChildren<InteractionManager>();
117 foreach (var controller
in manager.interactionControllers) {
118 if (controller.intHand !=
null && controller.isLeft) {
119 leftHand = controller.intHand;
122 if (controller.intHand !=
null && !controller.isLeft) {
123 rightHand = controller.intHand;
127 var vrController = controller as InteractionXRController;
128 if (vrController !=
null && vrController.isLeft) {
129 leftVRController = vrController;
132 if (vrController !=
null && !vrController.isLeft) {
133 rightVRController = vrController;
139 stageObj = LoadObject(stageObjName);
141 var intObjs = Pool<List<InteractionBehaviour>>.Spawn();
143 stageObj.GetComponentsInChildren<InteractionBehaviour>(
true, intObjs);
146 foreach (var simpleBoxObj
in intObjs
148 .Where(o => o.primaryHoverColliders.Count == 1
149 && o.primaryHoverColliders[0] is BoxCollider
151 && !o.ignoreGrasping)) {
152 if (box0 ==
null) { box0 = simpleBoxObj;
continue; }
153 if (box1 ==
null) { box1 = simpleBoxObj;
continue; }
154 if (box2 ==
null) { box2 = simpleBoxObj;
continue; }
157 foreach (var interactionButtonObj
in intObjs.Query()
158 .Where(o => o is InteractionButton)) {
159 if (button ==
null) button = interactionButtonObj as InteractionButton;
164 Pool<List<InteractionBehaviour>>.Recycle(intObjs);
171 protected override void InitTest(
string stageObjName) {
172 InitTest(DEFAULT_RIG, stageObjName);
178 protected void InitTest() {
179 InitTest(DEFAULT_RIG, DEFAULT_STAGE);
183 protected virtual void Teardown() {
187 Debug.ClearDeveloperConsole();