/// <summary>
        /// The GetHeadsetSDK method returns the selected headset SDK
        /// </summary>
        /// <returns>The currently selected Headset SDK</returns>
        public SDK_BaseHeadset GetHeadsetSDK()
        {
            SDK_BaseHeadset returnSDK = null;

            switch (headsetSDK)
            {
            case SupportedSDKs.SteamVR:
                returnSDK = ScriptableObject.CreateInstance <SDK_SteamVRHeadset>();
                break;

            case SupportedSDKs.OculusVR:
                returnSDK = ScriptableObject.CreateInstance <SDK_OculusVRHeadset>();
                break;

            case SupportedSDKs.Simulator:
                returnSDK = ScriptableObject.CreateInstance <SDK_SimHeadset>();
                break;

            default:
                Debug.LogError("No valid Headset SDK has been selected. If you're seeing this error in Unity Edit mode, then try selecting the GameObject with the `VRTK_SDKManager` script and selecting a valid Headset SDK from the dropdown list.");
                returnSDK = ScriptableObject.CreateInstance <SDK_FallbackHeadset>();
                break;
            }
            return(returnSDK);
        }
Exemple #2
0
        /// <summary>
        /// Populates the object references by using the currently set SDKs.
        /// </summary>
        /// <param name="force">Whether to ignore <see cref="autoPopulateObjectReferences"/> while deciding to populate.</param>
        public void PopulateObjectReferences(bool force)
        {
            if (!(force || autoPopulateObjectReferences) || automaticSDKSelection)
            {
                return;
            }

            actualBoundaries          = null;
            actualHeadset             = null;
            actualLeftController      = null;
            actualRightController     = null;
            modelAliasLeftController  = null;
            modelAliasRightController = null;

            SDK_BaseBoundaries boundariesSDK = GetBoundariesSDK();
            SDK_BaseHeadset    headsetSDK    = GetHeadsetSDK();
            SDK_BaseController controllerSDK = GetControllerSDK();

            Transform playAreaTransform = boundariesSDK.GetPlayArea();
            Transform headsetTransform  = headsetSDK.GetHeadset();

            actualBoundaries          = playAreaTransform == null ? null : playAreaTransform.gameObject;
            actualHeadset             = headsetTransform == null ? null : headsetTransform.gameObject;
            actualLeftController      = controllerSDK.GetControllerLeftHand(true);
            actualRightController     = controllerSDK.GetControllerRightHand(true);
            modelAliasLeftController  = controllerSDK.GetControllerModel(SDK_BaseController.ControllerHand.Left);
            modelAliasRightController = controllerSDK.GetControllerModel(SDK_BaseController.ControllerHand.Right);
        }
        public static void InvalidateCaches()
        {
#if UNITY_EDITOR
            Object.DestroyImmediate(systemSDK);
            Object.DestroyImmediate(headsetSDK);
            Object.DestroyImmediate(controllerSDK);
            Object.DestroyImmediate(boundariesSDK);
            Object.DestroyImmediate(trackerSDK);
            Object.DestroyImmediate(handSDK);
#else
            Object.Destroy(systemSDK);
            Object.Destroy(headsetSDK);
            Object.Destroy(controllerSDK);
            Object.Destroy(boundariesSDK);
            Object.Destroy(trackerSDK);
            Object.Destroy(handSDK);
#endif

            systemSDK     = null;
            headsetSDK    = null;
            controllerSDK = null;
            boundariesSDK = null;
            trackerSDK    = null;
            handSDK       = null;
        }
Exemple #4
0
 private static SDK_BaseHeadset GetHeadsetSDK()
 {
     if (headsetSDK == null)
     {
         headsetSDK = (VRTK_SDKManager.instance ? VRTK_SDKManager.instance.GetHeadsetSDK() : ScriptableObject.CreateInstance <SDK_FallbackHeadset>());
     }
     return(headsetSDK);
 }
Exemple #5
0
        /// <summary>
        /// The GetHeadsetSDK method returns the selected headset SDK.
        /// </summary>
        /// <returns>The currently selected headset SDK.</returns>
        public SDK_BaseHeadset GetHeadsetSDK()
        {
            if (cachedHeadsetSDK == null)
            {
                HandleSDKGetter <SDK_BaseHeadset>("Headset", headsetSDKInfo, InstalledHeadsetSDKInfos);
                cachedHeadsetSDK = (SDK_BaseHeadset)ScriptableObject.CreateInstance(headsetSDKInfo.type);
            }

            return(cachedHeadsetSDK);
        }
 public static SDK_BaseHeadset GetHeadsetSDK()
 {
     if (VRTK_SDKManager.instance != null && VRTK_SDKManager.instance.loadedSetup != null)
     {
         return(VRTK_SDKManager.instance.loadedSetup.headsetSDK);
     }
     if (headsetSDK == null)
     {
         headsetSDK = ScriptableObject.CreateInstance <SDK_FallbackHeadset>();
     }
     return(headsetSDK);
 }
Exemple #7
0
        /// <summary>
        /// The GetHeadsetSDK method returns the selected headset SDK
        /// </summary>
        /// <returns>The currently selected Headset SDK</returns>
        public SDK_BaseHeadset GetHeadsetSDK()
        {
            SDK_BaseHeadset returnSDK = null;

            switch (headsetSDK)
            {
            case SupportedSDKs.SteamVR:
                returnSDK = ScriptableObject.CreateInstance <SDK_SteamVRHeadset>();
                break;

            case SupportedSDKs.OculusVR:
                returnSDK = ScriptableObject.CreateInstance <SDK_OculusVRHeadset>();
                break;

            default:
                returnSDK = ScriptableObject.CreateInstance <SDK_FallbackHeadset>();
                break;
            }
            return(returnSDK);
        }
Exemple #8
0
        private static SDK_InterfaceHeadset GetHeadsetSDK()
        {
            if (headsetSDK == null)
            {
                headsetSDK = ScriptableObject.CreateInstance <SDK_FallbackHeadset>();
                if (VRTK_SDKManager.instance)
                {
                    switch (VRTK_SDKManager.instance.headsetSDK)
                    {
                    case VRTK_SDKManager.SupportedSDKs.SteamVR:
                        headsetSDK = ScriptableObject.CreateInstance <SDK_SteamVRHeadset>();
                        break;

                    default:
                        Debug.LogError("No Headset SDK configured, falling back to generic Headset SDK.");
                        break;
                    }
                }
            }
            return(headsetSDK);
        }
Exemple #9
0
        private void AutoPopulate(VRTK_SDKManager sdkManager)
        {
            var boundariesSDK = GetBoundariesSDK(sdkManager);
            var headsetSDK    = GetHeadsetSDK(sdkManager);
            var controllerSDK = GetControllerSDK(sdkManager);

            var forceSaveScene = false;

            if (boundariesSDK && (!sdkManager.actualBoundaries || !previousBoundariesSDK || boundariesSDK.GetType() != previousBoundariesSDK.GetType()))
            {
                var playareaTransform = boundariesSDK.GetPlayArea();
                sdkManager.actualBoundaries = (playareaTransform ? playareaTransform.gameObject : null);
                previousBoundariesSDK       = boundariesSDK;
                forceSaveScene = true;
            }

            if (headsetSDK && (!sdkManager.actualHeadset || !previousHeadsetSDK || headsetSDK.GetType() != previousHeadsetSDK.GetType()))
            {
                var headsetTransform = headsetSDK.GetHeadset();
                sdkManager.actualHeadset = (headsetTransform ? headsetTransform.gameObject : null);
                previousHeadsetSDK       = headsetSDK;
                forceSaveScene           = true;
            }

            var setPreviousControllerSDK = false;

            if (controllerSDK && (!sdkManager.actualLeftController || !previousControllerSDK || controllerSDK.GetType() != previousControllerSDK.GetType()))
            {
                var controllerLeft = controllerSDK.GetControllerLeftHand(true);
                sdkManager.actualLeftController = (controllerLeft ? controllerLeft : null);
                setPreviousControllerSDK        = true;
            }

            if (controllerSDK && (!sdkManager.actualRightController || !previousControllerSDK || controllerSDK.GetType() != previousControllerSDK.GetType()))
            {
                var controllerRight = controllerSDK.GetControllerRightHand(true);
                sdkManager.actualRightController = (controllerRight ? controllerRight : null);
                setPreviousControllerSDK         = true;
            }

            if (controllerSDK && (!sdkManager.modelAliasLeftController || !previousControllerSDK || controllerSDK.GetType() != previousControllerSDK.GetType()))
            {
                var controllerLeft = controllerSDK.GetControllerModel(SDK_BaseController.ControllerHand.Left);
                sdkManager.modelAliasLeftController = (controllerLeft ? controllerLeft : null);
                setPreviousControllerSDK            = true;
            }

            if (controllerSDK && (!sdkManager.modelAliasRightController || !previousControllerSDK || controllerSDK.GetType() != previousControllerSDK.GetType()))
            {
                var controllerRight = controllerSDK.GetControllerModel(SDK_BaseController.ControllerHand.Right);
                sdkManager.modelAliasRightController = (controllerRight ? controllerRight : null);
                setPreviousControllerSDK             = true;
            }

            if (setPreviousControllerSDK)
            {
                previousControllerSDK = controllerSDK;
                forceSaveScene        = true;
            }

            if (forceSaveScene)
            {
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEngine.SceneManagement.SceneManager.GetActiveScene());
            }
        }