private int FindControllerIndex(IVR_Controller[] controllers, IVR_Controller controller) { for (int i = 0; i < controllers.Length; i++) { if (controllers[i] == controller) return i; } return -1; }
protected virtual void Awake() { Screen.sleepTimeout = SleepTimeout.NeverSleep; extensions = this.GetComponents<IVR_Extension>(); foreach (IVR_Extension extension in extensions) extension.StartExtension(); headControllers = headTarget.GetComponents<IVR_Controller>(); leftHandControllers = leftHandTarget.GetComponents<IVR_Controller>(); rightHandControllers = rightHandTarget.GetComponents<IVR_Controller>(); hipControllers = hipTarget.GetComponents<IVR_Controller>(); leftFootControllers = leftFootTarget.GetComponents<IVR_Controller>(); rightFootControllers = rightFootTarget.GetComponents<IVR_Controller>(); headController = FindActiveController(headControllers); leftHandController = FindActiveController(leftHandControllers); rightHandController = FindActiveController(rightHandControllers); hipController = FindActiveController(hipControllers); leftFootController = FindActiveController(leftFootControllers); rightFootController = FindActiveController(rightFootControllers); leftInput = leftHandTarget.GetComponent<IVR_Input>(); rightInput = rightHandTarget.GetComponent<IVR_Input>(); leftMovements = leftHandTarget.GetComponent<IVR_Movements>(); rightMovements = rightHandTarget.GetComponent<IVR_Movements>(); Animator[] animators = GetComponentsInChildren<Animator>(); for (int i = 0; i < animators.Length; i++) { Avatar avatar = animators[i].avatar; if (avatar.isValid && avatar.isHuman) { characterTransform = animators[i].transform; AddRigidbody(characterTransform.gameObject); } } foreach (IVR_Controller c in headControllers) c.StartController(this); foreach (IVR_Controller c in leftHandControllers) c.StartController(this); foreach (IVR_Controller c in rightHandControllers) c.StartController(this); foreach (IVR_Controller c in hipControllers) c.StartController(this); foreach (IVR_Controller c in leftFootControllers) c.StartController(this); foreach (IVR_Controller c in rightFootControllers) c.StartController(this); IVR_BodyMovements bm = GetComponent<IVR_BodyMovements>(); if (bm != null) bm.StartMovements(); if (leftMovements != null && leftMovements.enabled) leftMovements.StartMovements(this); if (rightMovements != null && rightMovements.enabled) rightMovements.StartMovements(this); }
protected void MoveUp(IVR_Controller controller) { IVR_Controller[] controllers = controller.gameObject.GetComponents<IVR_Controller>(); int controllerIndex = FindControllerIndex(controllers, controller); if (controllerIndex > 0) { if (controllers[controllerIndex].extension != null && controllers[controllerIndex - 1].extension != null) { if (controllers[controllerIndex].extension.priority <= controllers[controllerIndex - 1].extension.priority + 1) { UnityEditorInternal.ComponentUtility.MoveComponentUp(controllers[controllerIndex]); } } } }
protected void MoveDown(IVR_Controller controller) { IVR_Controller[] controllers = controller.gameObject.GetComponents<IVR_Controller>(); int controllerIndex = FindControllerIndex(controllers, controller); if (controllerIndex > -1 && controllerIndex < controllers.Length - 1) { if (controllers[controllerIndex].extension != null && controllers[controllerIndex + 1].extension != null) { if (controllers[controllerIndex].extension.priority >= controllers[controllerIndex + 1].extension.priority - 1) { UnityEditorInternal.ComponentUtility.MoveComponentDown(controllers[controllerIndex]); } } } }
private void UpdateControllers() { leftHandController = UpdateController(leftHandControllers, leftHandController); rightHandController = UpdateController(rightHandControllers, rightHandController); hipController = UpdateController(hipControllers, hipController); leftFootController = UpdateController(leftFootControllers, leftFootController); rightFootController = UpdateController(rightFootControllers, rightFootController); // Head needs to be after hands because of traditional controller. headController = UpdateController(headControllers, headController); }
private IVR_Controller UpdateController(IVR_Controller[] controllers, IVR_Controller lastActiveController) { if (controllers != null) { int lastIndex = 0, newIndex = 0; IVR_Controller activeController = null; for (int i = 0; i < controllers.Length; i++) { if (controllers [i] != null) { controllers [i].UpdateController (); if (activeController == null && controllers [i].isTracking ()) { activeController = controllers [i]; controllers [i].SetSelection (true); newIndex = i; } else controllers [i].SetSelection (false); if (controllers [i] == lastActiveController) lastIndex = i; } } if (lastIndex < newIndex && lastActiveController != null) { // we are degreding activeController.TransferCalibrarion (lastActiveController); } return activeController; } else return null; }
private IVR_Controller FindActiveController(IVR_Controller[] controllers) { for (int i = 0; i < controllers.Length; i++) { if (controllers[i].isTracking()) return(controllers[i]); } return null; }
protected virtual void Awake() { RaycastHit hit; Vector3 rayStart = hipTarget.position; if (Physics.Raycast(rayStart, Vector3.down, out hit, 2f, ~myBodyLayer)) basePosition = new Vector3(hipTarget.position.x, hit.point.y, hipTarget.position.z); else basePosition = new Vector3(hipTarget.position.x, 0, hipTarget.position.z); baseRotation = this.transform.rotation; extensions = this.GetComponents<IVR_Extension>(); foreach (IVR_Extension extension in extensions) extension.StartExtension(); headControllers = headTarget.GetComponents<IVR_Controller>(); leftHandControllers = leftHandTarget.GetComponents<IVR_Controller>(); rightHandControllers = rightHandTarget.GetComponents<IVR_Controller>(); hipControllers = hipTarget.GetComponents<IVR_Controller>(); leftFootControllers = leftFootTarget.GetComponents<IVR_Controller>(); rightFootControllers = rightFootTarget.GetComponents<IVR_Controller>(); headController = FindActiveController(headControllers); leftHandController = FindActiveController(leftHandControllers); rightHandController = FindActiveController(rightHandControllers); hipController = FindActiveController(hipControllers); leftFootController = FindActiveController(leftFootControllers); rightFootController = FindActiveController(rightFootControllers); leftInput = leftHandTarget.GetComponent<IVR_Input>(); if (leftInput) leftInput.StartInput(this); rightInput = rightHandTarget.GetComponent<IVR_Input>(); if (rightInput) rightInput.StartInput(this); leftMovements = leftHandTarget.GetComponent<IVR_Movements>(); rightMovements = rightHandTarget.GetComponent<IVR_Movements>(); SetIVRLayer(); Animator[] animators = GetComponentsInChildren<Animator>(); for (int i = 0; i < animators.Length; i++) { Avatar avatar = animators[i].avatar; if (avatar.isValid && avatar.isHuman) { characterTransform = animators[i].transform; AddRigidbody(characterTransform.gameObject); } } foreach (IVR_Controller c in headControllers) c.StartController(this); foreach (IVR_Controller c in leftHandControllers) c.StartController(this); foreach (IVR_Controller c in rightHandControllers) c.StartController(this); foreach (IVR_Controller c in hipControllers) c.StartController(this); foreach (IVR_Controller c in leftFootControllers) c.StartController(this); foreach (IVR_Controller c in rightFootControllers) c.StartController(this); BodyMovementsBasics bm = GetComponent<BodyMovementsBasics>(); if (bm != null) bm.StartMovements(); if (leftMovements != null) leftMovements.StartMovements(this); if (rightMovements != null) rightMovements.StartMovements(this); }
public void TransferCalibration(IVR_Controller lastController) { }
public void TransferCalibrarion(IVR_Controller fromController) { Vector3 delta = Vector3.zero; //delta = position - fromController.position; referencePosition -= delta; }