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;
	}
Exemple #2
0
	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]);
				}
			}
		}
	}
Exemple #5
0
 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);
 }
Exemple #6
0
    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;
    }
Exemple #7
0
 private IVR_Controller FindActiveController(IVR_Controller[] controllers)
 {
     for (int i = 0; i < controllers.Length; i++) {
         if (controllers[i].isTracking())
             return(controllers[i]);
     }
     return null;
 }
Exemple #8
0
    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;
 }
Exemple #11
0
 public void TransferCalibration(IVR_Controller lastController) {
 }