public void applyTheTransforms(int e) { //apply transforms at the current time index to all the objects //These have to match what is in Manifest.XML AND manifest loader in terms of order mytype etc. string st = GetLine(e); string[] stA = Regex.Split(st, myManifest.getSeparator()); string quatString; string[] valArray; int myType = -1; int startString; int endString; int staLength = stA.Length; logInfoDisplay.ChangeIndexText(e); for (int i = 0; i < staLength; i++) { if (stA[i].IndexOf("(") != -1) { string label = (stA[i].Substring(0, stA[i].IndexOf("("))); myType = myManifest.getTypeByLabel(label); } startString = stA[i].IndexOf("(") + 1; endString = stA[i].Length - (1 + startString); if (startString < 0) { startString = 0; } if (endString < 1) { endString = 1; } quatString = ""; if (stA[i].Length > 0) { quatString = stA[i].Substring(startString, endString); valArray = Regex.Split(quatString, ","); switch (myType) { case 1: Quaternion HeadRot = new Quaternion(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2]), GetFloat(valArray[3])); CameraHead.transform.rotation = HeadRot; leftCamera.transform.rotation = HeadRot; rightCamera.transform.rotation = HeadRot; break; case 2: Vector3 HeadPos = new Vector3(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2])); CameraHead.transform.position = HeadPos; leftCamera.transform.position = HeadPos; rightCamera.transform.position = HeadPos; break; case 3: Vector3 LE = new Vector3(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2])); //LeftEye.transform.rotation = mainScript.GetEyeRotQuat(LE, CameraHead.transform.rotation); //Kyle's entry LeftEye.transform.localRotation = mainScript.eyeTrackInterpret.AssignRotation(LE, 1); logInfoDisplay.ChangeLEyeText(LE); //Quaternion LE = new Quaternion(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2]), GetFloat(valArray[3])); break; case 4: Vector3 RE = new Vector3(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2])); //RightEye.transform.rotation = mainScript.GetEyeRotQuat(RE, CameraHead.transform.rotation); //Kyle's entry RightEye.transform.localRotation = mainScript.eyeTrackInterpret.AssignRotation(RE, 0); logInfoDisplay.ChangeREyeText(RE); //Quaternion RE = new Quaternion(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2]), GetFloat(valArray[3])); break; case 5: Vector3 LContPos = new Vector3(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2])); LeftController.transform.position = LContPos; break; case 6: Vector3 RContPos = new Vector3(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2])); RightController.transform.position = RContPos; break; case 7: Quaternion LContRot = new Quaternion(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2]), GetFloat(valArray[3])); LeftController.transform.rotation = LContRot; break; case 8: Quaternion RContRot = new Quaternion(GetFloat(valArray[0]), GetFloat(valArray[1]), GetFloat(valArray[2]), GetFloat(valArray[3])); RightController.transform.rotation = RContRot; break; case 9: float LTAxis = GetFloat(quatString); LeftTrigger.transform.rotation = mainScript.getQuatFromTriggerValue(LTAxis, mainScript.LeftTriggerOrienter.transform.rotation.eulerAngles); if (LTAxis > 0) { if (LTAxisTrackedValue == 0) { mainScript.DoTriggerPress("left"); } } else if (LTAxis == 0) { if (LTAxisTrackedValue > 0) { mainScript.DoTriggerRelease("left"); } } LTAxisTrackedValue = LTAxis; break; case 10: float RTAxis = GetFloat(quatString); RightTrigger.transform.rotation = mainScript.getQuatFromTriggerValue(RTAxis, mainScript.RightTriggerOrienter.transform.rotation.eulerAngles); if (RTAxis > 0) { if (RTAxisTrackedValue == 0) { mainScript.DoTriggerPress("right"); } } if (RTAxis == 0) { if (RTAxisTrackedValue > 0) { mainScript.DoTriggerRelease("right"); } } RTAxisTrackedValue = RTAxis; break; case 11: Vector2 LCtopAxisPos = new Vector2(GetFloat(valArray[0]), GetFloat(valArray[1])); Vector3 newPos = LeftTopAxisOrienter.transform.localPosition; newPos.x = LeftTopAxisOrienter.transform.localPosition.x + (LCtopAxisPos.x * AxialRadialExtent); newPos.z = LeftTopAxisOrienter.transform.localPosition.z - (LCtopAxisPos.y * AxialRadialExtent); LeftTopAxis.transform.localPosition = newPos; break; case 12: Vector2 RCtopAxisPos = new Vector2(GetFloat(valArray[0]), GetFloat(valArray[1])); Vector3 newRPos = RightTopAxisOrienter.transform.localPosition; newRPos.x = RightTopAxisOrienter.transform.localPosition.x + (RCtopAxisPos.x * AxialRadialExtent); newRPos.z = RightTopAxisOrienter.transform.localPosition.z - (RCtopAxisPos.y * AxialRadialExtent); RightTopAxis.transform.localPosition = newRPos; break; case 13: //Left top button pressed if (quatString.ToLower().IndexOf("true") != -1) { LeftTopButton.SetActive(false); LeftTopButtonDown.SetActive(true); } else { LeftTopButton.SetActive(true); LeftTopButtonDown.SetActive(false); } break; case 14: //Right top button pressed if (quatString.ToLower().IndexOf("true") != -1) { RightTopButton.SetActive(false); RightTopButtonDown.SetActive(true); } else { RightTopButton.SetActive(true); RightTopButtonDown.SetActive(false); } break; case 15: //Left Grip button pressed if (quatString.ToLower().IndexOf("true") != -1) { LeftGripButton.SetActive(false); LeftGripButtonDown.SetActive(true); } else { LeftGripButton.SetActive(true); LeftGripButtonDown.SetActive(false); } break; case 16: //Right Grip button pressed if (quatString.ToLower().IndexOf("true") != -1) { RightGripButton.SetActive(false); RightGripButtonDown.SetActive(true); } else { RightGripButton.SetActive(true); RightGripButtonDown.SetActive(false); } break; case 17: //LeftPupil.GetComponent<RectTransform>().localScale = new Vector3(GetFloat(quatString), LeftPupil.GetComponent<RectTransform>().localScale.y, GetFloat(quatString)); mainScript.setPupilWidth(LeftPupil, GetFloat(quatString)); logInfoDisplay.ChangeLEyeWidthText(GetFloat(quatString)); break; case 18: //RightPupil.GetComponent<RectTransform>().localScale = new Vector3(GetFloat(quatString), RightPupil.GetComponent<RectTransform>().localScale.y, GetFloat(quatString)); mainScript.setPupilWidth(RightPupil, GetFloat(quatString)); logInfoDisplay.ChangeREyeWidthText(GetFloat(quatString)); break; case 19: int endSpot = quatString.IndexOf(":"); int theCurrentTest; if (endSpot > 0) { theCurrentTest = int.Parse(quatString.Substring(0, endSpot)); } else { theCurrentTest = int.Parse(quatString); } //put a colon in there so its plus 2 to skip the colon in manifest loader. string testDataString = stA[i].Substring(startString + 2, endString - 1); //this is test specific data stored in an open ended string that the specific test script can record and playback. if (myTests.currentTest != -1) { myTests.baseTests[myTests.currentTest].dataString = testDataString; } if (theCurrentTest != myTests.currentTest) { myTests.showTest(theCurrentTest); } break; case 20: int theCurrentEnvironment = int.Parse(stA[i].Substring(startString, endString)); if (theCurrentEnvironment != myEnvironments.currentEnvironment) { myEnvironments.showObj(theCurrentEnvironment); } break; case 21: logInfoDisplay.ChangeTimeText(stA[i]); break; default: break; } } } }