public void SetTextureBounds(float uMin, float vMin, float uMax, float vMax) { var OverlayTextureBounds = new VRTextureBounds_t(); OverlayTextureBounds.uMin = uMin; OverlayTextureBounds.vMin = vMin; OverlayTextureBounds.uMax = uMax; OverlayTextureBounds.vMax = vMax; overlay.SetOverlayTextureBounds(overlayHandle, ref OverlayTextureBounds); }
/** * Set an overlay's texture bounds */ public void SetTextureBounds(float xMin, float yMin, float xMax, float yMax) { // @note u=horizontal/x, v=vertical/y // @note OpenVR's vMin is the top of the overlay, and vMax is the bottom var textureBounds = new VRTextureBounds_t(); textureBounds.uMin = xMin; textureBounds.vMin = yMax; textureBounds.uMax = xMax; textureBounds.vMax = yMin; ReportError(overlay.SetOverlayTextureBounds(handle, ref textureBounds)); }
// Token: 0x06005F2D RID: 24365 RVA: 0x00215594 File Offset: 0x00213994 private ulong GetOverlayHandle(string overlayName, Transform transform, float widthInMeters = 1f) { ulong num = 0UL; CVROverlay overlay = OpenVR.Overlay; if (overlay == null) { return(num); } string pchOverlayKey = SteamVR_Overlay.key + "." + overlayName; EVROverlayError evroverlayError = overlay.FindOverlay(pchOverlayKey, ref num); if (evroverlayError != EVROverlayError.None) { evroverlayError = overlay.CreateOverlay(pchOverlayKey, overlayName, ref num); } if (evroverlayError == EVROverlayError.None) { overlay.ShowOverlay(num); overlay.SetOverlayAlpha(num, this.alpha); overlay.SetOverlayWidthInMeters(num, widthInMeters); if (SteamVR.instance.textureType == ETextureType.DirectX) { VRTextureBounds_t vrtextureBounds_t = default(VRTextureBounds_t); vrtextureBounds_t.uMin = 0f; vrtextureBounds_t.vMin = 1f; vrtextureBounds_t.uMax = 1f; vrtextureBounds_t.vMax = 0f; overlay.SetOverlayTextureBounds(num, ref vrtextureBounds_t); } SteamVR_Camera steamVR_Camera = (this.loadingScreenDistance != 0f) ? null : SteamVR_Render.Top(); if (steamVR_Camera != null && steamVR_Camera.origin != null) { SteamVR_Utils.RigidTransform rigidTransform = new SteamVR_Utils.RigidTransform(steamVR_Camera.origin, 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; HmdMatrix34_t hmdMatrix34_t = rigidTransform.ToHmdMatrix34(); overlay.SetOverlayTransformAbsolute(num, SteamVR_Render.instance.trackingSpace, ref hmdMatrix34_t); } else { SteamVR_Utils.RigidTransform rigidTransform2 = new SteamVR_Utils.RigidTransform(transform); HmdMatrix34_t hmdMatrix34_t2 = rigidTransform2.ToHmdMatrix34(); overlay.SetOverlayTransformAbsolute(num, SteamVR_Render.instance.trackingSpace, ref hmdMatrix34_t2); } } return(num); }
//-------------------------------------------------------------------------- //初期化処理 private void Start() { #pragma warning disable 0219 string Tag = "[" + this.GetType().Name + ":" + System.Reflection.MethodBase.GetCurrentMethod(); //クラス名とメソッド名を自動取得 #pragma warning restore 0219 Debug.Log(Tag + "Begin"); var openVRError = EVRInitError.None; var overlayError = EVROverlayError.None; error = false; //フレームレートを90fpsにする。(しないと無限に早くなることがある) Application.targetFrameRate = 120; Debug.Log(Tag + "Set Frame Rate 90"); //OpenVRの初期化 openvr = OpenVR.Init(ref openVRError, EVRApplicationType.VRApplication_Overlay); if (openVRError != EVRInitError.None) { Debug.LogError(Tag + "OpenVRの初期化に失敗." + openVRError.ToString()); ProcessError(); return; } //オーバーレイ機能の初期化 overlay = OpenVR.Overlay; overlayError = overlay.CreateOverlay(OverlayKeyName, OverlayFriendlyName, ref overlayHandle); if (overlayError != EVROverlayError.None) { Debug.LogError(Tag + "Overlayの初期化に失敗. " + overlayError.ToString()); ProcessError(); return; } Debug.Log(overlayError); var OverlayTextureBounds = new VRTextureBounds_t(); //pTexture overlayTexture.eType = ETextureType.DirectX; //上下反転する OverlayTextureBounds.uMin = 0; OverlayTextureBounds.vMin = 1; OverlayTextureBounds.uMax = 1; OverlayTextureBounds.vMax = 0; overlay.SetOverlayTextureBounds(overlayHandle, ref OverlayTextureBounds); Debug.Log(Tag + "初期化完了しました"); }
//-------------------------------------------------------------------------- //初期化処理 private void Start() { #pragma warning disable 0219 string Tag = "[" + this.GetType().Name + ":" + System.Reflection.MethodBase.GetCurrentMethod(); //クラス名とメソッド名を自動取得 #pragma warning restore 0219 Debug.Log(Tag + "Begin"); var openVRError = EVRInitError.None; var overlayError = EVROverlayError.None; error = false; if (!OpenVR.IsHmdPresent()) { this.enabled = false; } //フレームレートを90fpsにする。(しないと無限に早くなることがある) Application.targetFrameRate = 90; Debug.Log(Tag + "Set Frame Rate 90"); //OpenVRの初期化 openvr = OpenVR.Init(ref openVRError, EVRApplicationType.VRApplication_Overlay); if (openVRError != EVRInitError.None) { Debug.LogError(Tag + "OpenVRの初期化に失敗." + openVRError.ToString()); ProcessError(); return; } //オーバーレイ機能の初期化 overlay = OpenVR.Overlay; overlayError = overlay.CreateOverlay(OverlayKeyName, OverlayFriendlyName, ref overlayHandle); if (overlayError != EVROverlayError.None) { Debug.LogError(Tag + "Overlayの初期化に失敗. " + overlayError.ToString()); ProcessError(); return; } //オーバーレイに渡すテクスチャ種類の設定 var OverlayTextureBounds = new VRTextureBounds_t(); var isOpenGL = SystemInfo.graphicsDeviceVersion.Contains("OpenGL"); if (isOpenGL) { //pGLuintTexture overlayTexture.eType = ETextureType.OpenGL; //上下反転しない OverlayTextureBounds.uMin = 1; OverlayTextureBounds.vMin = 0; OverlayTextureBounds.uMax = 1; OverlayTextureBounds.vMax = 0; overlay.SetOverlayTextureBounds(overlayHandle, ref OverlayTextureBounds); } else { //pTexture overlayTexture.eType = ETextureType.DirectX; //上下反転する OverlayTextureBounds.uMin = 0; OverlayTextureBounds.vMin = 1; OverlayTextureBounds.uMax = 1; OverlayTextureBounds.vMax = 0; overlay.SetOverlayTextureBounds(overlayHandle, ref OverlayTextureBounds); } //-------- showDevices(); Debug.Log(Tag + "初期化完了しました"); }
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); } }
void Start() { var openVRError = EVRInitError.None; var overlayError = EVROverlayError.None; //OpenVRの初期化 openvr = OpenVR.Init(ref openVRError, EVRApplicationType.VRApplication_Overlay); if (openVRError != EVRInitError.None) { Debug.LogError(Tag + "OpenVRの初期化に失敗." + openVRError.ToString()); error = true; return; } //オーバーレイ機能の初期化 overlay = OpenVR.Overlay; overlayError = overlay.CreateDashboardOverlay(OverlayKeyName, OverlayFriendlyName, ref overlayHandle, ref thumbnailHandle); if (overlayError != EVROverlayError.None) { Debug.LogError(Tag + "Overlayの初期化に失敗. " + overlayError.ToString()); error = true; return; } //マウス(Dashboardのときのみ有効) overlay.SetOverlayInputMethod(overlayHandle, VROverlayInputMethod.Mouse); //オーバーレイに渡すテクスチャ種類の設定 OverlayTextureBounds = new VRTextureBounds_t(); var isOpenGL = SystemInfo.graphicsDeviceVersion.Contains("OpenGL"); if (isOpenGL) { //pGLuintTexture overlayTexture.eType = ETextureType.OpenGL; thumbnailTexture.eType = ETextureType.OpenGL; //上下反転しない OverlayTextureBounds.uMin = 1; OverlayTextureBounds.vMin = 0; OverlayTextureBounds.uMax = 1; OverlayTextureBounds.vMax = 0; overlay.SetOverlayTextureBounds(thumbnailHandle, ref OverlayTextureBounds); } else { //pTexture overlayTexture.eType = ETextureType.DirectX; thumbnailTexture.eType = ETextureType.DirectX; //上下反転する OverlayTextureBounds.uMin = 0; OverlayTextureBounds.vMin = 1; OverlayTextureBounds.uMax = 1; OverlayTextureBounds.vMax = 0; overlay.SetOverlayTextureBounds(overlayHandle, ref OverlayTextureBounds); } //サムネイルテクスチャが存在するなら if (thumbnailTextureInput != null) { //サムネイルテクスチャの情報を取得 var thumWidth = thumbnailTextureInput.width; var thumHeight = thumbnailTextureInput.height; //作業用テクスチャの領域を確保 thumbnailTexture2D = new Texture2D(thumWidth, thumHeight, TextureFormat.RGBA32, false); //力技でコピーして圧縮を解除 if (isOpenGL) { for (int y = 0; y < thumHeight; y++) { for (int x = 0; x < thumWidth; x++) { thumbnailTexture2D.SetPixel(x, y, thumbnailTextureInput.GetPixel(x, y)); } } } else { //DirectXは上下反転 for (int y = 0; y < thumHeight; y++) { for (int x = 0; x < thumWidth; x++) { thumbnailTexture2D.SetPixel(x, thumHeight - y - 1, thumbnailTextureInput.GetPixel(x, y)); } } } //操作を反映 thumbnailTexture2D.Apply(); //ネイティブテクスチャを取得して設定 thumbnailTexture.handle = thumbnailTexture2D.GetNativeTexturePtr(); //サムネイル利用可能フラグを立てる thumbnailAvailable = true; } Debug.Log(Tag + "初期化完了しました"); }
//-------------------------------------------------------------------------- //初期化処理 private void Start() { #pragma warning disable 0219 string Tag = "[" + this.GetType().Name + ":" + System.Reflection.MethodBase.GetCurrentMethod(); //クラス名とメソッド名を自動取得 #pragma warning restore 0219 Debug.Log(Tag + "Begin"); var openVRError = EVRInitError.None; var overlayError = EVROverlayError.None; error = false; oldshow = !show; //フレームレートを90fpsにする。(しないと無限に早くなることがある) Application.targetFrameRate = 90; Debug.Log(Tag + "Set Frame Rate 90"); //JSON読み込み Debug.Log(Tag + "Load JSON"); loadJSON(); InstanceKeyText.text = ""; //複数起動用キー if (Environment.GetCommandLineArgs().Length >= 3) { Debug.Log(Environment.GetCommandLineArgs()[1]); Debug.Log(Environment.GetCommandLineArgs()[2]); //引数に合わせて一時的にKeyを変更する if (Environment.GetCommandLineArgs()[1] == "overlaykey") { config.OverlayKeyName = Environment.GetCommandLineArgs()[2]; config.OverlayFriendlyName = Environment.GetCommandLineArgs()[2]; //サブインスタンス表示 InstanceKeyText.text = config.OverlayKeyName; } } //表示用 OverlayKeyName = config.OverlayKeyName; OverlayFriendlyName = config.OverlayFriendlyName; //OpenVRの初期化 openvr = OpenVR.Init(ref openVRError, EVRApplicationType.VRApplication_Overlay); if (openVRError != EVRInitError.None) { Debug.LogError(Tag + "OpenVRの初期化に失敗." + openVRError.ToString()); //エラーを告知し5秒後に終了 DOVirtual.DelayedCall(5f, () => { ApplicationQuit(); }); ProcessError(); return; } //オーバーレイ機能の初期化 overlay = OpenVR.Overlay; overlayError = overlay.CreateOverlay(config.OverlayKeyName, config.OverlayFriendlyName, ref overlayHandle); if (overlayError != EVROverlayError.None) { Debug.LogError(Tag + "Overlayの初期化に失敗. " + overlayError.ToString()); //エラーを告知し5秒後に終了 DOVirtual.DelayedCall(5f, () => { ApplicationQuit(); }); ProcessError(); return; } //オーバーレイに渡すテクスチャ種類の設定 var OverlayTextureBounds = new VRTextureBounds_t(); var isOpenGL = SystemInfo.graphicsDeviceVersion.Contains("OpenGL"); if (isOpenGL) { //pGLuintTexture overlayTexture.eType = ETextureType.OpenGL; //上下反転しない OverlayTextureBounds.uMin = 1; OverlayTextureBounds.vMin = 0; OverlayTextureBounds.uMax = 1; OverlayTextureBounds.vMax = 0; overlay.SetOverlayTextureBounds(overlayHandle, ref OverlayTextureBounds); } else { //pTexture overlayTexture.eType = ETextureType.DirectX; //上下反転する OverlayTextureBounds.uMin = 0; OverlayTextureBounds.vMin = 1; OverlayTextureBounds.uMax = 1; OverlayTextureBounds.vMax = 0; overlay.SetOverlayTextureBounds(overlayHandle, ref OverlayTextureBounds); } //-------- showDevices(); Debug.Log(Tag + "初期化完了しました"); }