|
|
- #if UNITY_EDITOR
- namespace VRTK.Examples.Utilities
- {
- using UnityEngine;
- using UnityEditor;
-
- [ExecuteInEditMode]
- public class VRTKExample_FixSetup : MonoBehaviour
- {
- public bool forceOculusFloorLevel = true;
- protected bool trackingLevelFloor = false;
-
- public virtual void ApplyFixes()
- {
- FixOculus();
- }
-
- protected virtual void Awake()
- {
-
- if (Application.isEditor && !Application.isPlaying)
- {
- ApplyFixes();
- }
- }
-
- protected virtual void Update()
- {
- FixTrackingType();
- }
-
- protected virtual void FixTrackingType()
- {
- #if VRTK_DEFINE_SDK_OCULUS
- if (forceOculusFloorLevel && !trackingLevelFloor)
- {
- GameObject overManagerGO = GameObject.Find("[VRTK_SDKManager]/[VRTK_SDKSetups]/Oculus/OVRCameraRig");
- if (overManagerGO != null)
- {
- OVRManager ovrManager = overManagerGO.GetComponent<OVRManager>();
- if (ovrManager != null)
- {
- ovrManager.trackingOriginType = OVRManager.TrackingOrigin.FloorLevel;
- trackingLevelFloor = true;
- Debug.Log("Forced Oculus Tracking to Floor Level");
- }
- }
- }
- #endif
- }
-
- protected virtual void FixOculus()
- {
- #if VRTK_DEFINE_SDK_OCULUS
- string oculusPath = "[VRTK_SDKManager]/[VRTK_SDKSetups]/Oculus";
- GameObject oculusSDK = GameObject.Find(oculusPath);
-
- /*
- if (oculusSDK == null || oculusSDK.GetComponentInChildren<OVRManager>() != null)
- {
- Debug.Log("No Oculus Repaired Required");
- return;
- }
- */
-
- GameObject currentRig = GameObject.Find(oculusPath + "/OVRCameraRig");
- GameObject currentAvatar = GameObject.Find(oculusPath + "/LocalAvatar");
- VRTK_SDKSetup oculusSetup = oculusSDK.GetComponent<VRTK_SDKSetup>();
-
- if (currentRig != null)
- {
- DestroyImmediate(currentRig);
- }
- if (currentAvatar != null)
- {
- DestroyImmediate(currentAvatar);
- }
-
- GameObject ovrCameraRig = null;
- GameObject ovrCameraRigToInstantiate = (GameObject)AssetDatabase.LoadAssetAtPath("Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab", typeof(GameObject));
- if (ovrCameraRigToInstantiate != null)
- {
- ovrCameraRig = Instantiate(ovrCameraRigToInstantiate) as GameObject;
- }
- if (ovrCameraRig != null)
- {
- ovrCameraRig.name = ovrCameraRig.name.Replace("(Clone)", "");
- ovrCameraRig.transform.SetParent(oculusSDK.transform);
- ovrCameraRig.SetActive(true);
- oculusSetup.actualBoundaries = ovrCameraRig;
- oculusSetup.actualHeadset = GameObject.Find(oculusPath + "/OVRCameraRig/TrackingSpace/CenterEyeAnchor");
- oculusSetup.actualLeftController = GameObject.Find(oculusPath + "/OVRCameraRig/TrackingSpace/LeftHandAnchor");
- oculusSetup.actualRightController = GameObject.Find(oculusPath + "/OVRCameraRig/TrackingSpace/RightHandAnchor");
- Debug.Log("Successfully repaired Oculus OVRCameraRig prefab");
- }
-
- GameObject ovrAvatar = null;
- GameObject ovrAvatarToInstantiate = (GameObject)AssetDatabase.LoadAssetAtPath("Assets/Oculus/Avatar/Content/Prefabs/LocalAvatar.prefab", typeof(GameObject));
- if (ovrAvatarToInstantiate != null)
- {
- ovrAvatar = Instantiate(ovrAvatarToInstantiate) as GameObject;
- }
-
- if (ovrAvatar == null)
- {
- //legacy location
- ovrAvatarToInstantiate = (GameObject)AssetDatabase.LoadAssetAtPath("Assets/OvrAvatar/Content/Prefabs/LocalAvatar.prefab", typeof(GameObject));
- if (ovrAvatarToInstantiate != null)
- {
- ovrAvatar = Instantiate(ovrAvatarToInstantiate) as GameObject;
- }
- }
- if (ovrAvatar != null)
- {
- OvrAvatar avatarScript = ovrAvatar.GetComponent<OvrAvatar>();
- avatarScript.StartWithControllers = true;
- ovrAvatar.name = ovrAvatar.name.Replace("(Clone)", "");
- ovrAvatar.transform.SetParent(oculusSDK.transform);
- ovrAvatar.SetActive(true);
- oculusSetup.modelAliasLeftController = GameObject.Find(oculusPath + "/LocalAvatar/controller_left");
- oculusSetup.modelAliasRightController = GameObject.Find(oculusPath + "/LocalAvatar/controller_right");
- //GameObject.Find(oculusPath + "/LocalAvatar/hand_left").SetActive(false);
- //GameObject.Find(oculusPath + "/LocalAvatar/hand_right").SetActive(false);
- VRTK_TransformFollow transformFollow = ovrAvatar.AddComponent<VRTK_TransformFollow>();
- transformFollow.gameObjectToFollow = ovrCameraRig;
- Debug.Log("Successfully repaired Oculus LocalAvatar prefab");
- }
- #endif
- }
- }
- }
- #endif
|