Beispiel #1
0
    /// <summary>
    /// Updates the low Persistence mode.
    /// </summary>
    void UpdateLowPersistenceMode()
    {
        if (Input.GetKeyDown(KeyCode.F1))
        {
            if (LowPersistenceMode == false)
            {
                LowPersistenceMode = true;
#if     SHOW_DK2_VARIABLES
                strLPM = "Low Persistence Mode: ON";
#endif
                OVRDevice.SetLowPersistenceMode(LowPersistenceMode);
            }
            else
            {
                LowPersistenceMode = false;
#if     SHOW_DK2_VARIABLES
                strLPM = "Low Persistence Mode: OFF";
#endif
                OVRDevice.SetLowPersistenceMode(LowPersistenceMode);
            }
        }
    }
    void Start()
    {
        if (camera == null)
        {
            gameObject.AddComponent <Camera>();
        }

        // In the event of an unsupported platform, remove our cameras and replace with a dummy
        if (!OVRDevice.SupportedPlatform)
        {
            OVRCamera[] ovrCameras = gameObject.GetComponentsInChildren <OVRCamera>();
            for (int i = 0; i < ovrCameras.Length; i++)
            {
                ovrCameras[i].enabled = false;
            }
        }
        else
        {
            //HACK: Use the camera to force rendering of the left and right eyes.
            camera.cullingMask   = 0;
            camera.clearFlags    = CameraClearFlags.Nothing;
            camera.renderingPath = RenderingPath.Forward;
            camera.orthographic  = true;
        }

        // Get the required Rift infromation needed to set cameras
        InitCameraControllerVariables();

        // Initialize the cameras
        UpdateCamerasDirtyFlag    = true;
        UpdateDistortionDirtyFlag = true;
        SetScaleRenderTarget();

        if (Application.isEditor)
        {
            OVRDevice.SetLowPersistenceMode(false);
        }
    }
    void Start()
    {
        AlphaFadeValue = 1.0f;
        CurrentLevel   = 0;
        PrevStartDown  = false;
        PrevHatDown    = false;
        PrevHatUp      = false;
        ShowVRVars     = false;
        OldOpenMenu    = false;
        strFPS         = "FPS: 0";
        LoadingLevel   = false;
        ScenesVisible  = false;

        // Ensure that camera controller variables have been properly
        // initialized before we start reading them
        if (CameraController != null)
        {
            CameraController.InitCameraControllerVariables();
        }

        // Set the GUI target
        GUIRenderObject = GameObject.Instantiate(Resources.Load("OVRGUIObjectMain")) as GameObject;

        if (GUIRenderObject != null)
        {
            // Chnge the layer
            GUIRenderObject.layer = LayerMask.NameToLayer(LayerName);

            if (GUIRenderTexture == null)
            {
                int w = Screen.width;
                int h = Screen.height;

                // We don't need a depth buffer on this texture
                GUIRenderTexture = new RenderTexture(w, h, 0);
                GuiHelper.SetPixelResolution(w, h);
                // NOTE: All GUI elements are being written with pixel values based
                // from DK1 (1280x800). These should change to normalized locations so
                // that we can scale more cleanly with varying resolutions
                //GuiHelper.SetDisplayResolution(OVRDevice.HResolution,
                //								 OVRDevice.VResolution);
                GuiHelper.SetDisplayResolution(1280.0f, 800.0f);
            }
        }

        // Attach GUI texture to GUI object and GUI object to Camera
        if (GUIRenderTexture != null && GUIRenderObject != null)
        {
            GUIRenderObject.renderer.material.mainTexture = GUIRenderTexture;

            if (CameraController != null)
            {
                // Grab transform of GUI object
                Vector3    ls = GUIRenderObject.transform.localScale;
                Vector3    lp = GUIRenderObject.transform.localPosition;
                Quaternion lr = GUIRenderObject.transform.localRotation;

                // Attach the GUI object to the camera
                CameraController.AttachGameObjectToCamera(ref GUIRenderObject);
                // Reset the transform values (we will be maintaining state of the GUI object
                // in local state)

                GUIRenderObject.transform.localScale    = ls;
                GUIRenderObject.transform.localRotation = lr;

                // Deactivate object until we have completed the fade-in
                // Also, we may want to deactive the render object if there is nothing being rendered
                // into the UI
                // we will move the position of everything over to account for the IPD camera offset.
                float     ipdOffsetDirection = 1.0f;
                Transform guiParent          = GUIRenderObject.transform.parent;
                if (guiParent != null)
                {
                    OVRCamera ovrCamera = guiParent.GetComponent <OVRCamera>();
                    if (ovrCamera != null && ovrCamera.RightEye)
                    {
                        ipdOffsetDirection = -1.0f;
                    }
                }

                float ipd = 0.0f;
                CameraController.GetIPD(ref ipd);
                lp.x += ipd * 0.5f * ipdOffsetDirection;
                GUIRenderObject.transform.localPosition = lp;

                GUIRenderObject.SetActive(false);
            }
        }

        // Save default values initially
        //StoreSnapshot("DEFAULT");

        // Make sure to hide cursor
        if (Application.isEditor == false)
        {
            Screen.showCursor = false;
            Screen.lockCursor = true;
        }

        // CameraController updates
        if (CameraController != null)
        {
            // Set LPM on by default
            OVRDevice.SetLowPersistenceMode(LowPersistenceMode);

            // Add a GridCube component to this object
            GridCube = gameObject.AddComponent <OVRGridCube>();
            GridCube.SetOVRCameraController(ref CameraController);

            // Add a VisionGuide component to this object
            VisionGuide = gameObject.AddComponent <OVRVisionGuide>();
            VisionGuide.SetOVRCameraController(ref CameraController);
            VisionGuide.SetFadeTexture(ref FadeInTexture);
            VisionGuide.SetVisionGuideLayer(ref LayerName);
        }

        // Crosshair functionality
        Crosshair.Init();
        Crosshair.SetCrosshairTexture(ref CrosshairImage);
        Crosshair.SetOVRCameraController(ref CameraController);
        Crosshair.SetOVRPlayerController(ref PlayerController);

        // Check for HMD and sensor
        CheckIfRiftPresent();
    }
Beispiel #4
0
    /// <summary>
    /// Start this instance.
    /// </summary>
    void Start()
    {
        AlphaFadeValue = 1.0f;
        CurrentLevel   = 0;
        PrevStartDown  = false;
        PrevHatDown    = false;
        PrevHatUp      = false;
        ShowVRVars     = false;
        OldSpaceHit    = false;
        strFPS         = "FPS: 0";
        LoadingLevel   = false;
        ScenesVisible  = false;

        // Ensure that camera controller variables have been properly
        // initialized before we start reading them
        if (CameraController != null)
        {
            CameraController.InitCameraControllerVariables();
        }

        // Set the GUI target
        GUIRenderObject = GameObject.Instantiate(Resources.Load("OVRGUIObjectMain")) as GameObject;

        if (GUIRenderObject != null)
        {
            // Chnge the layer
            GUIRenderObject.layer = LayerMask.NameToLayer(LayerName);

            if (GUIRenderTexture == null)
            {
                int w = Screen.width;
                int h = Screen.height;

                // We don't need a depth buffer on this texture
                GUIRenderTexture = new RenderTexture(w, h, 0);
                GuiHelper.SetPixelResolution(w, h);
                // NOTE: All GUI elements are being written with pixel values based
                // from DK1 (1280x800). These should change to normalized locations so
                // that we can scale more cleanly with varying resolutions
                //GuiHelper.SetDisplayResolution(OVRDevice.HResolution,
                //								 OVRDevice.VResolution);
                GuiHelper.SetDisplayResolution(1280.0f, 800.0f);
            }
        }

        // Attach GUI texture to GUI object and GUI object to Camera
        if (GUIRenderTexture != null && GUIRenderObject != null)
        {
            GUIRenderObject.renderer.material.mainTexture = GUIRenderTexture;

            if (CameraController != null)
            {
                // Grab transform of GUI object
                Vector3    ls = GUIRenderObject.transform.localScale;
                Vector3    lp = GUIRenderObject.transform.localPosition;
                Quaternion lr = GUIRenderObject.transform.localRotation;

                // Attach the GUI object to the camera
                CameraController.AttachGameObjectToCamera(ref GUIRenderObject);
                // Reset the transform values (we will be maintaining state of the GUI object
                // in local state)

                GUIRenderObject.transform.localScale    = ls;
                GUIRenderObject.transform.localRotation = lr;

                // Deactivate object until we have completed the fade-in
                // Also, we may want to deactive the render object if there is nothing being rendered
                // into the UI
                // we will move the position of everything over to the left, so get
                // IPD / 2 and position camera towards negative X
                float ipd = 0.0f;
                CameraController.GetIPD(ref ipd);
                lp.x -= ipd * 0.5f;
                GUIRenderObject.transform.localPosition = lp;

                GUIRenderObject.SetActive(false);
            }
        }

        // Save default values initially
        StoreSnapshot("DEFAULT");

        // Make sure to hide cursor
        if (Application.isEditor == false)
        {
            Screen.showCursor = false;
            Screen.lockCursor = true;
        }

        // Add delegates to update; useful for ordering menu tasks, if required
        UpdateFunctions += UpdateFPS;

        // CameraController updates
        if (CameraController != null)
        {
            UpdateFunctions += UpdateIPD;
            UpdateFunctions += UpdatePrediction;

            // Set LPM on by default
            UpdateFunctions += UpdateLowPersistenceMode;
            OVRDevice.SetLowPersistenceMode(LowPersistenceMode);
            UpdateFunctions += UpdateVisionMode;
            UpdateFunctions += UpdateFOV;
            UpdateFunctions += UpdateEyeHeightOffset;

            // Add a GridCube component to this object
            GridCube = gameObject.AddComponent <OVRGridCube>();
            GridCube.SetOVRCameraController(ref CameraController);

            // Add a VisionGuide component to this object

            /*VisionGuide = gameObject.AddComponent<OVRVisionGuide>();
             * VisionGuide.SetOVRCameraController(ref CameraController);
             * VisionGuide.SetFadeTexture(ref FadeInTexture);
             * VisionGuide.SetVisionGuideLayer(ref LayerName);*/
        }

        // PlayerController updates
        if (PlayerController != null)
        {
            UpdateFunctions += UpdateSpeedAndRotationScaleMultiplier;
            UpdateFunctions += UpdatePlayerControllerMovement;
        }

        // MainMenu updates
        UpdateFunctions += UpdateSelectCurrentLevel;
        UpdateFunctions += UpdateHandleSnapshots;

        // Device updates
        UpdateFunctions += UpdateDeviceDetection;

        // Add a callback to detect device detection
        OVRMessenger.AddListener <Device, bool>("Sensor_Attached", UpdateDeviceDetectionMsgCallback);

        // Mag Yaw-Drift correction
        // We will test to see if we are already calibrated by the
        // Calibration tool
        MagCal.SetInitialCalibarationState();
        UpdateFunctions += MagCal.UpdateMagYawDriftCorrection;
        MagCal.SetOVRCameraController(ref CameraController);

        // Crosshair functionality
        Crosshair.Init();
        Crosshair.SetCrosshairTexture(ref CrosshairImage);
        Crosshair.SetOVRCameraController(ref CameraController);
        Crosshair.SetOVRPlayerController(ref PlayerController);
        UpdateFunctions += Crosshair.UpdateCrosshair;

        // Check for HMD and sensor
        CheckIfRiftPresent();

        // Reset tracker position.
        // We assume that the CameraController is at the desired neck location
        Vector3 eyeOffset = Vector3.zero;

        if (CameraController != null)
        {
            CameraController.GetEyeCenterPosition(ref eyeOffset);
        }

        OVRCamera.ResetCameraPositionOrientation(ref eyeOffset, true, false, false);
    }