protected virtual void ToggleOnSDK()
 {
     if (loadedSDKSetup != null && loadedSDKSetup == VRTK_SDKManager.GetLoadedSDKSetup())
     {
         ToggleObject();
     }
 }
示例#2
0
 protected override void ControllerReady(VRTK_ControllerReference controllerReference)
 {
     if (VRTK_SDKManager.GetLoadedSDKSetup() != null && gameObject.activeInHierarchy)
     {
         UpdateTransform(controllerReference);
     }
 }
示例#3
0
        protected virtual void OnEnable()
        {
            desktopCamera = desktopCamera == null?GetComponentInChildren <Camera>() : desktopCamera;

            followScript = followScript == null?GetComponentInChildren <VRTK_ObjectFollow>() : followScript;

            if (desktopCamera == null)
            {
                VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.REQUIRED_COMPONENT_MISSING_NOT_INJECTED, "VRTK_DesktopCamera", "Camera", "desktopCamera", "the same", " or any child of it"));
                return;
            }

            if (followScript == null)
            {
                VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.REQUIRED_COMPONENT_MISSING_NOT_INJECTED, "VRTK_DesktopCamera", "VRTK_ObjectFollow", "followScript", "the same", " or any child of it"));
                return;
            }

            headsetCameraTransformFollow        = gameObject.AddComponent <VRTK_TransformFollow>();
            headsetCameraTransformFollow.moment = VRTK_TransformFollow.FollowMoment.OnLateUpdate;

            if (VRTK_SDKManager.SubscribeLoadedSetupChanged(LoadedSetupChanged) && VRTK_SDKManager.GetLoadedSDKSetup() != null)
            {
                ConfigureForCurrentSDKSetup();
            }
        }
 protected override void ControllerReady(VRTK_ControllerReference passedControllerReference)
 {
     if (VRTK_SDKManager.GetLoadedSDKSetup() != null && gameObject.activeInHierarchy && VRTK_ControllerReference.IsValid(passedControllerReference))
     {
         Cleanup(true);
         controllerReference = passedControllerReference;
         controllerEvents    = (controllerEvents == null ? controllerReference.scriptAlias.GetComponentInChildren <VRTK_ControllerEvents>() : controllerEvents);
         ManageActivationListeners(true);
         SetupRigidbody();
         SetupColliders();
         SetupFollower();
         ToggleColliders(activationButton == VRTK_ControllerEvents.ButtonAlias.Undefined);
     }
 }
示例#5
0
        protected virtual VRTK_SDKButtonInputOverrideType GetSelectedModifier(List <VRTK_SDKButtonInputOverrideType> overrideTypes, VRTK_ControllerReference controllerReference)
        {
            VRTK_SDKButtonInputOverrideType selectedModifier = null;

            //attempt to find by the overall SDK set up to start with
            if (VRTK_SDKManager.GetLoadedSDKSetup() != null)
            {
                selectedModifier = overrideTypes.FirstOrDefault(item => item.loadedSDKSetup == VRTK_SDKManager.GetLoadedSDKSetup());
            }

            //If no sdk set up is found or it is null then try and find by the SDK controller
            if (selectedModifier == null)
            {
                SDK_BaseController.ControllerType currentControllerType = VRTK_DeviceFinder.GetCurrentControllerType(controllerReference);
                selectedModifier = overrideTypes.FirstOrDefault(item => item.controllerType == currentControllerType);
            }
            return(selectedModifier);
        }
        protected virtual void AddSelectionButtons()
        {
            if (VRTK_SDKManager.GetLoadedSDKSetup() != null)
            {
                GameObject chooseNoneButton = Instantiate(chooseButton.gameObject, chooseButton.transform.parent);
                chooseNoneButton.GetComponentInChildren <Text>().text = "None";
                chooseNoneButton.name = "ChooseNoneButton";
                chooseNoneButton.SetActive(true);

                chooseNoneButton.GetComponent <Button>().onClick.AddListener(
                    () => VRTK_SDKManager.AttemptUnloadSDKSetup(true)
                    );

                chooseButtonGameObjects.Add(chooseNoneButton);
            }

            VRTK_SDKSetup[] setups = VRTK_SDKManager.GetAllSDKSetups();
            for (int index = 0; index < setups.Length; index++)
            {
                VRTK_SDKSetup setup = setups[index];
                if (setup == null || setup == VRTK_SDKManager.GetLoadedSDKSetup())
                {
                    continue;
                }

                GameObject chooseButtonCopy = Instantiate(chooseButton.gameObject, chooseButton.transform.parent);
                chooseButtonCopy.GetComponentInChildren <Text>().text = setup.name;
                chooseButtonCopy.name = string.Format("Choose{0}Button", setup.name);
                chooseButtonCopy.SetActive(true);

                int    indexCopy = index;
                Button button    = chooseButtonCopy.GetComponent <Button>();
                button.onClick.AddListener(
                    () => VRTK_SDKManager.AttemptTryLoadSDKSetup(indexCopy, true, setups)
                    );

                ColorBlock buttonColors = button.colors;
                buttonColors.colorMultiplier = setup.isValid ? 1.0f : 0.8f;
                button.colors = buttonColors;

                chooseButtonGameObjects.Add(chooseButtonCopy);
            }
        }
示例#7
0
        protected virtual VRTK_SDKTransformModifiers GetSelectedModifier(VRTK_ControllerReference controllerReference)
        {
            //attempt to find by the overall SDK set up to start with
            VRTK_SDKTransformModifiers selectedModifier = sdkOverrides.FirstOrDefault(item => item.loadedSDKSetup == VRTK_SDKManager.GetLoadedSDKSetup());

            //If no sdk set up is found or it is null then try and find by the SDK controller
            if (selectedModifier == null)
            {
                SDK_BaseController.ControllerType currentControllerType = VRTK_DeviceFinder.GetCurrentControllerType(controllerReference);
                selectedModifier = sdkOverrides.FirstOrDefault(item => item.controllerType == currentControllerType);
            }
            return(selectedModifier);
        }
        protected virtual void UpdateCurrentText()
        {
            VRTK_SDKSetup loadedSetup = VRTK_SDKManager.GetLoadedSDKSetup();

            currentText.text = (loadedSetup == null ? "None" : loadedSetup.name);
        }
示例#9
0
        protected virtual void ConfigureForCurrentSDKSetup()
        {
            if (headsetCameraCopy != null)
            {
                Destroy(headsetCameraCopy.gameObject);
            }

            headsetCameraTransformFollow.enabled = false;
            followScript.enabled = false;

            if (VRTK_SDKManager.GetLoadedSDKSetup() == null)
            {
                return;
            }

            Camera headsetCamera = VRTK_DeviceFinder.HeadsetCamera().GetComponent <Camera>();

            desktopCamera.depth           = headsetCamera.depth + 1;
            desktopCamera.stereoTargetEye = StereoTargetEyeMask.None;

            followScript.gameObjectToFollow = headsetCamera.gameObject;
            followScript.gameObjectToChange = desktopCamera.gameObject;
            followScript.Follow();
            followScript.enabled = true;

            if (headsetImage == null)
            {
                return;
            }

            if (headsetRenderTexture == null)
            {
                headsetRenderTexture = new RenderTexture(
                    (int)headsetImage.rectTransform.rect.width,
                    (int)headsetImage.rectTransform.rect.height,
                    24,
                    RenderTextureFormat.ARGB32)
                {
                    name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "Headset RenderTexture")
                };
            }

            headsetCameraCopy               = Instantiate(headsetCamera, transform);
            headsetCameraCopy.name          = VRTK_SharedMethods.GenerateVRTKObjectName(true, "Headset Camera Copy");
            headsetCameraCopy.targetTexture = headsetRenderTexture;

            foreach (Transform child in headsetCameraCopy.transform)
            {
                Destroy(child.gameObject);
            }

            IEnumerable <Component> componentsToDestroy = headsetCameraCopy
                                                          .GetComponents <Component>()
                                                          .Where(component => component != headsetCameraCopy && !(component is Transform));

            foreach (Component component in componentsToDestroy)
            {
                Destroy(component);
            }

            headsetCameraTransformFollow.gameObjectToFollow = headsetCamera.gameObject;
            headsetCameraTransformFollow.gameObjectToChange = headsetCameraCopy.gameObject;
            headsetCameraTransformFollow.Follow();
            headsetCameraTransformFollow.enabled = true;

            headsetImage.texture = headsetRenderTexture;
            headsetImage.SetNativeSize();
        }