Exemple #1
0
 public void DisplayDisable()
 {
     //オーバーレイを非表示する
     if (overlay != null)
     {
         overlay.HideOverlay(overlayHandle);
     }
 }
Exemple #2
0
    //すべての処理後
    private void LateUpdate()
    {
#pragma warning disable 0219
        string Tag = "[" + this.GetType().Name + ":" + System.Reflection.MethodBase.GetCurrentMethod(); //クラス名とメソッド名を自動取得
#pragma warning restore 0219

        //エラーが発生した場合や、ハンドルが無効な場合は実行しない
        if (IsError())
        {
            return;
        }

        if (show != oldshow)
        {
            oldshow = show;
        }
        if (show)
        {
            //オーバーレイを表示する
            overlay.ShowOverlay(overlayHandle);
        }
        else
        {
            //オーバーレイを非表示にする
            overlay.HideOverlay(overlayHandle);
        }

        //イベントを処理する(終了された時true)
        if (ProcessEvent())
        {
            Debug.Log(Tag + "VRシステムが終了されました");
            ApplicationQuit();
        }

        //オーバーレイが表示されている時
        if (show && overlay.IsOverlayVisible(overlayHandle))
        {
            //位置情報と各種設定の更新
            updatePosition();
            //表示情報の更新
            updateTexture();

            //Canvasが設定されている場合
            if (LaycastRootObject != null)
            {
                //GUIタッチ機能の処理
                updateVRTouch();
            }
        }

        if (putLogDevicesInfo)
        {
            showDevices();
            putLogDevicesInfo = false;
        }
    }
Exemple #3
0
 public void SetShow(bool show)
 {
     if (show)
     {
         //オーバーレイを表示する
         overlay.ShowOverlay(overlayHandle);
     }
     else
     {
         //オーバーレイを非表示にする
         overlay.HideOverlay(overlayHandle);
     }
 }
Exemple #4
0
        /*
         *  m_cvrOverlay.ShowOverlay(handle);
         *
         *  var textureBounds = new VRTextureBounds_t();
         *  textureBounds.uMin = 0;
         *  textureBounds.uMax = 1;
         *  textureBounds.vMin = 0;
         *  textureBounds.vMax = 1;
         *  m_cvrOverlay.SetOverlayTextureBounds(handle, ref textureBounds);
         *
         *  HmdMatrix34_t matrix = new HmdMatrix34_t();
         *  matrix.m = new float[12];
         *  matrix.m[0] = 1;
         *  matrix.m[5] = 1;
         *  matrix.m[10] = 1;
         *  matrix.m[3] = 0;
         *  matrix.m[7] = 0;
         *  matrix.m[11] = -0.2f;
         *  m_cvrOverlay.SetOverlayTransformTrackedDeviceRelative(handle, m_controller1ID, ref matrix);
         *
         *  oError = m_cvrOverlay.SetOverlayWidthInMeters(handle, 0.5f);
         *  oError = m_cvrOverlay.SetOverlayInputMethod(handle, VROverlayInputMethod.Mouse);
         * }*/
        public static bool ShowOverlay(string key, bool show)
        {
            Debug.Assert(m_cvrOverlay != null);
            ulong handle = OpenVR.k_ulOverlayHandleInvalid;
            var   oError = m_cvrOverlay.FindOverlay(key, ref handle);

            if (oError != EVROverlayError.None)
            {
                Debug.Fail("Overlay does not exist " + oError.ToString());
                return(false);
            }
            if (show)
            {
                m_cvrOverlay.ShowOverlay(handle);
            }
            else
            {
                m_cvrOverlay.HideOverlay(handle);
            }
            return(true);
        }
Exemple #5
0
        private static EVROverlayError ProcessOverlay2(CVROverlay overlay, ref ulong overlayHandle, ref bool overlayVisible, bool dashboardVisible)
        {
            var err = EVROverlayError.None;

            if (overlayHandle == 0)
            {
                err = overlay.FindOverlay("VRCX2", ref overlayHandle);
                if (err != EVROverlayError.None)
                {
                    if (err != EVROverlayError.UnknownOverlay)
                    {
                        return(err);
                    }
                    overlayVisible = false;
                    err            = overlay.CreateOverlay("VRCX2", "VRCX2", ref overlayHandle);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    err = overlay.SetOverlayAlpha(overlayHandle, 0.9f);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    err = overlay.SetOverlayWidthInMeters(overlayHandle, 1f);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    err = overlay.SetOverlayInputMethod(overlayHandle, VROverlayInputMethod.None);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    var m = Matrix.Scaling(1f);
                    m *= Matrix.Translation(0, -0.3f, -1.5f);
                    var hm34 = new HmdMatrix34_t
                    {
                        m0  = m.M11,
                        m1  = m.M21,
                        m2  = m.M31,
                        m3  = m.M41,
                        m4  = m.M12,
                        m5  = m.M22,
                        m6  = m.M32,
                        m7  = m.M42,
                        m8  = m.M13,
                        m9  = m.M23,
                        m10 = m.M33,
                        m11 = m.M43,
                    };
                    err = overlay.SetOverlayTransformTrackedDeviceRelative(overlayHandle, OpenVR.k_unTrackedDeviceIndex_Hmd, ref hm34);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                }
            }

            if (!dashboardVisible)
            {
                var texture = new Texture_t
                {
                    handle = m_Texture2.NativePointer
                };
                err = overlay.SetOverlayTexture(overlayHandle, ref texture);
                if (err != EVROverlayError.None)
                {
                    return(err);
                }
                if (!overlayVisible)
                {
                    err = overlay.ShowOverlay(overlayHandle);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    overlayVisible = true;
                }
            }
            else if (overlayVisible)
            {
                err = overlay.HideOverlay(overlayHandle);
                if (err != EVROverlayError.None)
                {
                    return(err);
                }
                overlayVisible = false;
            }

            return(err);
        }
Exemple #6
0
        private static EVROverlayError ProcessOverlay1(CVROverlay overlay, ref ulong overlayHandle, ref bool overlayVisible, bool dashboardVisible, uint overlayIndex, DateTime nextOverlay)
        {
            var err = EVROverlayError.None;

            if (overlayHandle == 0)
            {
                err = overlay.FindOverlay("VRCX1", ref overlayHandle);
                if (err != EVROverlayError.None)
                {
                    if (err != EVROverlayError.UnknownOverlay)
                    {
                        return(err);
                    }
                    overlayVisible = false;
                    err            = overlay.CreateOverlay("VRCX1", "VRCX1", ref overlayHandle);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    err = overlay.SetOverlayAlpha(overlayHandle, 0.9f);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    err = overlay.SetOverlayWidthInMeters(overlayHandle, 1f);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    err = overlay.SetOverlayInputMethod(overlayHandle, VROverlayInputMethod.None);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                }
            }

            if (overlayIndex != OpenVR.k_unTrackedDeviceIndexInvalid)
            {
                // http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices
                // Scaling-Rotation-Translation
                var m = Matrix.Scaling(0.25f);
                m *= Matrix.RotationX(m_Rotation[0]);
                m *= Matrix.RotationY(m_Rotation[1]);
                m *= Matrix.RotationZ(m_Rotation[2]);
                m *= Matrix.Translation(m_Translation[0], m_Translation[1], m_Translation[2]);
                var hm34 = new HmdMatrix34_t
                {
                    m0  = m.M11,
                    m1  = m.M21,
                    m2  = m.M31,
                    m3  = m.M41,
                    m4  = m.M12,
                    m5  = m.M22,
                    m6  = m.M32,
                    m7  = m.M42,
                    m8  = m.M13,
                    m9  = m.M23,
                    m10 = m.M33,
                    m11 = m.M43,
                };
                err = overlay.SetOverlayTransformTrackedDeviceRelative(overlayHandle, overlayIndex, ref hm34);
                if (err != EVROverlayError.None)
                {
                    return(err);
                }
            }

            if (!dashboardVisible &&
                DateTime.UtcNow.CompareTo(nextOverlay) <= 0)
            {
                var texture = new Texture_t
                {
                    handle = m_Texture1.NativePointer
                };
                err = overlay.SetOverlayTexture(overlayHandle, ref texture);
                if (err != EVROverlayError.None)
                {
                    return(err);
                }
                if (!overlayVisible)
                {
                    err = overlay.ShowOverlay(overlayHandle);
                    if (err != EVROverlayError.None)
                    {
                        return(err);
                    }
                    overlayVisible = true;
                }
            }
            else if (overlayVisible)
            {
                err = overlay.HideOverlay(overlayHandle);
                if (err != EVROverlayError.None)
                {
                    return(err);
                }
                overlayVisible = false;
            }

            return(err);
        }
Exemple #7
0
    // Token: 0x06005F2C RID: 24364 RVA: 0x00215578 File Offset: 0x00213978
    private IEnumerator LoadLevel()
    {
        if (this.loadingScreen != null && this.loadingScreenDistance > 0f)
        {
            SteamVR_Controller.Device hmd = SteamVR_Controller.Input(0);
            while (!hmd.hasTracking)
            {
                yield return(null);
            }
            SteamVR_Utils.RigidTransform tloading = hmd.transform;
            tloading.rot  = Quaternion.Euler(0f, tloading.rot.eulerAngles.y, 0f);
            tloading.pos += tloading.rot * new Vector3(0f, 0f, this.loadingScreenDistance);
            Transform t = (!(this.loadingScreenTransform != null)) ? base.transform : this.loadingScreenTransform;
            t.position = tloading.pos;
            t.rotation = tloading.rot;
        }
        SteamVR_LoadLevel._active = this;
        SteamVR_Events.Loading.Send(true);
        if (this.loadingScreenFadeInTime > 0f)
        {
            this.fadeRate = 1f / this.loadingScreenFadeInTime;
        }
        else
        {
            this.alpha = 1f;
        }
        CVROverlay overlay = OpenVR.Overlay;

        if (this.loadingScreen != null && overlay != null)
        {
            this.loadingScreenOverlayHandle = this.GetOverlayHandle("loadingScreen", (!(this.loadingScreenTransform != null)) ? base.transform : this.loadingScreenTransform, this.loadingScreenWidthInMeters);
            if (this.loadingScreenOverlayHandle != 0UL)
            {
                Texture_t texture_t = default(Texture_t);
                texture_t.handle      = this.loadingScreen.GetNativeTexturePtr();
                texture_t.eType       = SteamVR.instance.textureType;
                texture_t.eColorSpace = EColorSpace.Auto;
                overlay.SetOverlayTexture(this.loadingScreenOverlayHandle, ref texture_t);
            }
        }
        bool fadedForeground = false;

        SteamVR_Events.LoadingFadeOut.Send(this.fadeOutTime);
        CVRCompositor compositor = OpenVR.Compositor;

        if (compositor != null)
        {
            if (this.front != null)
            {
                SteamVR_Skybox.SetOverride(this.front, this.back, this.left, this.right, this.top, this.bottom);
                compositor.FadeGrid(this.fadeOutTime, true);
                yield return(new WaitForSeconds(this.fadeOutTime));
            }
            else if (this.backgroundColor != Color.clear)
            {
                if (this.showGrid)
                {
                    compositor.FadeToColor(0f, this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a, true);
                    compositor.FadeGrid(this.fadeOutTime, true);
                    yield return(new WaitForSeconds(this.fadeOutTime));
                }
                else
                {
                    compositor.FadeToColor(this.fadeOutTime, this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a, false);
                    yield return(new WaitForSeconds(this.fadeOutTime + 0.1f));

                    compositor.FadeGrid(0f, true);
                    fadedForeground = true;
                }
            }
        }
        SteamVR_Render.pauseRendering = true;
        while (this.alpha < 1f)
        {
            yield return(null);
        }
        base.transform.parent = null;
        UnityEngine.Object.DontDestroyOnLoad(base.gameObject);
        if (!string.IsNullOrEmpty(this.internalProcessPath))
        {
            UnityEngine.Debug.Log("Launching external application...");
            CVRApplications applications = OpenVR.Applications;
            if (applications == null)
            {
                UnityEngine.Debug.Log("Failed to get OpenVR.Applications interface!");
            }
            else
            {
                string currentDirectory = Directory.GetCurrentDirectory();
                string text             = Path.Combine(currentDirectory, this.internalProcessPath);
                UnityEngine.Debug.Log("LaunchingInternalProcess");
                UnityEngine.Debug.Log("ExternalAppPath = " + this.internalProcessPath);
                UnityEngine.Debug.Log("FullPath = " + text);
                UnityEngine.Debug.Log("ExternalAppArgs = " + this.internalProcessArgs);
                UnityEngine.Debug.Log("WorkingDirectory = " + currentDirectory);
                EVRApplicationError evrapplicationError = applications.LaunchInternalProcess(text, this.internalProcessArgs, currentDirectory);
                UnityEngine.Debug.Log("LaunchInternalProcessError: " + evrapplicationError);
                Process.GetCurrentProcess().Kill();
            }
        }
        else
        {
            LoadSceneMode mode = (!this.loadAdditive) ? LoadSceneMode.Single : LoadSceneMode.Additive;
            if (this.loadAsync)
            {
                Application.backgroundLoadingPriority = ThreadPriority.Low;
                this.async = SceneManager.LoadSceneAsync(this.levelName, mode);
                while (!this.async.isDone)
                {
                    yield return(null);
                }
            }
            else
            {
                SceneManager.LoadScene(this.levelName, mode);
            }
        }
        yield return(null);

        GC.Collect();
        yield return(null);

        Shader.WarmupAllShaders();
        yield return(new WaitForSeconds(this.postLoadSettleTime));

        SteamVR_Render.pauseRendering = false;
        if (this.loadingScreenFadeOutTime > 0f)
        {
            this.fadeRate = -1f / this.loadingScreenFadeOutTime;
        }
        else
        {
            this.alpha = 0f;
        }
        SteamVR_Events.LoadingFadeIn.Send(this.fadeInTime);
        if (compositor != null)
        {
            if (fadedForeground)
            {
                compositor.FadeGrid(0f, false);
                compositor.FadeToColor(this.fadeInTime, 0f, 0f, 0f, 0f, false);
                yield return(new WaitForSeconds(this.fadeInTime));
            }
            else
            {
                compositor.FadeGrid(this.fadeInTime, false);
                yield return(new WaitForSeconds(this.fadeInTime));

                if (this.front != null)
                {
                    SteamVR_Skybox.ClearOverride();
                }
            }
        }
        while (this.alpha > 0f)
        {
            yield return(null);
        }
        if (overlay != null)
        {
            if (this.progressBarOverlayHandle != 0UL)
            {
                overlay.HideOverlay(this.progressBarOverlayHandle);
            }
            if (this.loadingScreenOverlayHandle != 0UL)
            {
                overlay.HideOverlay(this.loadingScreenOverlayHandle);
            }
        }
        UnityEngine.Object.Destroy(base.gameObject);
        SteamVR_LoadLevel._active = null;
        SteamVR_Events.Loading.Send(false);
        yield break;
    }
 public EVROverlayError Hide()
 {
     return(FOverlay.HideOverlay(FHandle));
 }
Exemple #9
0
    public void UpdateOverlay()
    {
        CVROverlay overlay = OpenVR.Overlay;

        if (overlay == null)
        {
            return;
        }
        if (this.texture != null)
        {
            EVROverlayError evroverlayError = overlay.ShowOverlay(this.handle);
            if ((evroverlayError == EVROverlayError.InvalidHandle || evroverlayError == EVROverlayError.UnknownOverlay) && overlay.FindOverlay(SteamVR_Overlay.key, ref this.handle) != EVROverlayError.None)
            {
                return;
            }
            Texture_t texture_t = default(Texture_t);
            texture_t.handle      = this.texture.GetNativeTexturePtr();
            texture_t.eType       = SteamVR.instance.textureType;
            texture_t.eColorSpace = EColorSpace.Auto;
            overlay.SetOverlayTexture(this.handle, ref texture_t);
            overlay.SetOverlayAlpha(this.handle, this.alpha);
            overlay.SetOverlayWidthInMeters(this.handle, this.scale);
            overlay.SetOverlayAutoCurveDistanceRangeInMeters(this.handle, this.curvedRange.x, this.curvedRange.y);
            VRTextureBounds_t vrtextureBounds_t = default(VRTextureBounds_t);
            vrtextureBounds_t.uMin = this.uvOffset.x * this.uvOffset.z;
            vrtextureBounds_t.vMin = (1f + this.uvOffset.y) * this.uvOffset.w;
            vrtextureBounds_t.uMax = (1f + this.uvOffset.x) * this.uvOffset.z;
            vrtextureBounds_t.vMax = this.uvOffset.y * this.uvOffset.w;
            overlay.SetOverlayTextureBounds(this.handle, ref vrtextureBounds_t);
            HmdVector2_t hmdVector2_t = default(HmdVector2_t);
            hmdVector2_t.v0 = this.mouseScale.x;
            hmdVector2_t.v1 = this.mouseScale.y;
            overlay.SetOverlayMouseScale(this.handle, ref hmdVector2_t);
            SteamVR_Camera steamVR_Camera = SteamVR_Render.Top();
            if (steamVR_Camera != null && steamVR_Camera.origin != null)
            {
                SteamVR_Utils.RigidTransform rigidTransform = new SteamVR_Utils.RigidTransform(steamVR_Camera.origin, base.transform);
                rigidTransform.pos.x = rigidTransform.pos.x / steamVR_Camera.origin.localScale.x;
                rigidTransform.pos.y = rigidTransform.pos.y / steamVR_Camera.origin.localScale.y;
                rigidTransform.pos.z = rigidTransform.pos.z / steamVR_Camera.origin.localScale.z;
                rigidTransform.pos.z = rigidTransform.pos.z + this.distance;
                HmdMatrix34_t hmdMatrix34_t = rigidTransform.ToHmdMatrix34();
                overlay.SetOverlayTransformAbsolute(this.handle, SteamVR_Render.instance.trackingSpace, ref hmdMatrix34_t);
            }
            overlay.SetOverlayInputMethod(this.handle, this.inputMethod);
            if (this.curved || this.antialias)
            {
                this.highquality = true;
            }
            if (this.highquality)
            {
                overlay.SetHighQualityOverlay(this.handle);
                overlay.SetOverlayFlag(this.handle, VROverlayFlags.Curved, this.curved);
                overlay.SetOverlayFlag(this.handle, VROverlayFlags.RGSS4X, this.antialias);
            }
            else if (overlay.GetHighQualityOverlay() == this.handle)
            {
                overlay.SetHighQualityOverlay(0UL);
            }
        }
        else
        {
            overlay.HideOverlay(this.handle);
        }
    }
Exemple #10
0
    void Update()
    {
        //初期化失敗するなどoverlayが無効な場合は実行しない
        if (overlay == null || error)
        {
            return;
        }

        if (show)
        {
            //オーバーレイを表示する
            overlay.ShowOverlay(overlayHandle);
        }
        else
        {
            //オーバーレイを非表示にする
            overlay.HideOverlay(overlayHandle);
        }

        //イベントを処理する
        uint uncbVREvent = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VREvent_t));

        while (overlay.PollNextOverlayEvent(overlayHandle, ref Event, uncbVREvent))
        {
            if (eventlog)
            {
                Debug.Log(Tag + "Event:" + ((EVREventType)Event.eventType).ToString());
            }
            //Debug.Log(Tag +"Event:"+ (Event.eventType).ToString());
            switch ((EVREventType)Event.eventType)
            {
            case EVREventType.VREvent_MouseMove:
                MouseX = Event.data.mouse.x;
                MouseY = Event.data.mouse.y;
                break;

            case EVREventType.VREvent_MouseButtonDown:
                MouseClick = true;
                break;

            case EVREventType.VREvent_MouseButtonUp:
                MouseClick = false;
                break;

            case EVREventType.VREvent_DashboardActivated:
                break;

            case EVREventType.VREvent_DashboardDeactivated:
                break;

            case EVREventType.VREvent_DashboardRequested:
                break;

            case EVREventType.VREvent_DashboardThumbSelected:
                break;

            case EVREventType.VREvent_EnterStandbyMode:
                break;

            case EVREventType.VREvent_LeaveStandbyMode:
                break;

            case EVREventType.VREvent_KeyboardCharInput:
                break;

            case EVREventType.VREvent_KeyboardClosed:
                break;

            case EVREventType.VREvent_KeyboardDone:
                break;

            case EVREventType.VREvent_ResetDashboard:
                break;

            case EVREventType.VREvent_ScreenshotTriggered:
                break;

            case EVREventType.VREvent_WirelessDisconnect:
                break;

            case EVREventType.VREvent_WirelessReconnect:
                break;

            case EVREventType.VREvent_Quit:
                Debug.Log(Tag + "Quit");
                ApplicationQuit();
                break;

            default:
                break;
            }
        }

        if (overlay.IsDashboardVisible())
        {
            //サムネイルにテクスチャを設定
            if (thumbnailAvailable)
            {
                var overlayError = EVROverlayError.None;
                overlayError = overlay.SetOverlayTexture(thumbnailHandle, ref thumbnailTexture);
                if (overlayError != EVROverlayError.None)
                {
                    Debug.LogError(Tag + "Overlayにサムネイルをセットできませんでした. " + overlayError.ToString());
                    error = true;
                    return;
                }
            }
        }

        //オーバーレイが表示されている時
        if (overlay.IsOverlayVisible(overlayHandle) && overlay.IsActiveDashboardOverlay(overlayHandle))
        {
            //オーバーレイの大きさ設定(幅のみ。高さはSetOverlayMouseScaleの比から自動計算される)
            overlay.SetOverlayWidthInMeters(overlayHandle, width);
            //オーバーレイの透明度を設定
            overlay.SetOverlayAlpha(overlayHandle, alpha);

            //RenderTextureが生成されているかチェック
            if (!renderTexture.IsCreated())
            {
                Debug.Log(Tag + "RenderTextureがまだ生成されていない");
                return;
            }

            try
            {
                //マウスカーソルスケールを設定する(これにより表示領域のサイズも決定される)
                vecMouseScale.v0 = renderTexture.width;
                vecMouseScale.v1 = renderTexture.height;
                overlay.SetOverlayMouseScale(overlayHandle, ref vecMouseScale);
                //RenderTextureからネイティブテクスチャのハンドルを取得
                overlayTexture.handle = renderTexture.GetNativeTexturePtr();
            }
            catch (UnassignedReferenceException e)
            {
                Debug.LogError(Tag + "RenderTextureがセットされていません " + e.ToString());
                error = true;
                return;
            }

            //オーバーレイにテクスチャを設定
            var overlayError = EVROverlayError.None;
            overlayError = overlay.SetOverlayTexture(overlayHandle, ref overlayTexture);
            if (overlayError != EVROverlayError.None)
            {
                Debug.LogError(Tag + "Overlayにテクスチャをセットできませんでした. " + overlayError.ToString());
                error = true;
                return;
            }
        }
    }
Exemple #11
0
 /**
  * Hide the overlay
  */
 public void Hide()
 {
     ReportError(overlay.HideOverlay(handle));
 }