Beispiel #1
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;
        }
        /// <summary>
        /// The GetControllerSDK method returns the selected controller SDK
        /// </summary>
        /// <returns>The currently selected Controller SDK</returns>
        public SDK_BaseController GetControllerSDK()
        {
            SDK_BaseController returnSDK = null;

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

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

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

            default:
                Debug.LogError("No valid Controller 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 Controller SDK from the dropdown list.");
                returnSDK = ScriptableObject.CreateInstance <SDK_FallbackController>();
                break;
            }
            return(returnSDK);
        }
Beispiel #4
0
 private static SDK_BaseController GetControllerSDK()
 {
     if (controllerSDK == null)
     {
         controllerSDK = (VRTK_SDKManager.instance ? VRTK_SDKManager.instance.GetControllerSDK() : ScriptableObject.CreateInstance <SDK_FallbackController>());
     }
     return(controllerSDK);
 }
Beispiel #5
0
        /// <summary>
        /// The GetControllerSDK method returns the selected controller SDK.
        /// </summary>
        /// <returns>The currently selected controller SDK.</returns>
        public SDK_BaseController GetControllerSDK()
        {
            if (cachedControllerSDK == null)
            {
                HandleSDKGetter <SDK_BaseController>("Controller", controllerSDKInfo, InstalledControllerSDKInfos);
                cachedControllerSDK = (SDK_BaseController)ScriptableObject.CreateInstance(controllerSDKInfo.type);
            }

            return(cachedControllerSDK);
        }
 public static SDK_BaseController GetControllerSDK()
 {
     if (VRTK_SDKManager.instance != null && VRTK_SDKManager.instance.loadedSetup != null)
     {
         return(VRTK_SDKManager.instance.loadedSetup.controllerSDK);
     }
     if (controllerSDK == null)
     {
         controllerSDK = ScriptableObject.CreateInstance <SDK_FallbackController>();
     }
     return(controllerSDK);
 }
Beispiel #7
0
        /// <summary>
        /// The GetControllerSDK method returns the selected controller SDK
        /// </summary>
        /// <returns>The currently selected Controller SDK</returns>
        public SDK_BaseController GetControllerSDK()
        {
            SDK_BaseController returnSDK = null;

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

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

            default:
                returnSDK = ScriptableObject.CreateInstance <SDK_FallbackController>();
                break;
            }
            return(returnSDK);
        }
Beispiel #8
0
        private static SDK_InterfaceController GetControllerSDK()
        {
            if (controllerSDK == null)
            {
                controllerSDK = ScriptableObject.CreateInstance <SDK_FallbackController>();
                if (VRTK_SDKManager.instance)
                {
                    switch (VRTK_SDKManager.instance.controllerSDK)
                    {
                    case VRTK_SDKManager.SupportedSDKs.SteamVR:
                        controllerSDK = ScriptableObject.CreateInstance <SDK_SteamVRController>();
                        break;

                    default:
                        Debug.LogError("No Controller SDK configured, falling back to generic Controller SDK.");
                        break;
                    }
                }
            }
            return(controllerSDK);
        }
Beispiel #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());
            }
        }
 protected virtual void LoadedSetupChanged(VRTK_SDKManager sender, VRTK_SDKManager.LoadedSetupChangeEventArgs e)
 {
     CheckControllersReady();
     previousControllerSDK = VRTK_SDK_Bridge.GetControllerSDK();
 }