private void InitOverlay() { var overlay = OpenVR.Overlay; if (overlay == null) { return; } if (OverlayTexture != null) { var error = overlay.ShowOverlay(_handle); if (error == EVROverlayError.InvalidHandle || error == EVROverlayError.UnknownOverlay) { if (overlay.FindOverlay(key, ref _handle) != EVROverlayError.None) { return; } } var tex = new Texture_t { handle = OverlayTexture.GetNativeTexturePtr(), eType = SteamVR.instance.textureType, eColorSpace = EColorSpace.Auto }; overlay.SetOverlayColor(_handle, 1f, 1f, 1f); overlay.SetOverlayTexture(_handle, ref tex); overlay.SetOverlayAlpha(_handle, Alpha); var textureBounds = new VRTextureBounds_t { uMin = (0 + UvOffset.x) * UvOffset.z, vMin = (1 + UvOffset.y) * UvOffset.w, uMax = (1 + UvOffset.x) * UvOffset.z, vMax = (0 + UvOffset.y) * UvOffset.w }; overlay.SetOverlayTextureBounds(_handle, ref textureBounds); UpdateOverlayTransform(); enabled = true; } else { overlay.HideOverlay(_handle); } }
public void UpdateTexture(bool refresh = false) { if ((refresh && OverlayTexture == null) || !enabled) { return; } var overlay = OpenVR.Overlay; if (overlay == null) { return; } var tex = new Texture_t { handle = OverlayTexture.GetNativeTexturePtr(), eType = SteamVR.instance.textureType, eColorSpace = EColorSpace.Auto }; overlay.SetOverlayTexture(_handle, ref tex); }
public static Dictionary <TexType, OverlayTexture> KSOXDictionary(this PluginData data) { Dictionary <TexType, OverlayTexture> overlays = new Dictionary <TexType, OverlayTexture>(); foreach (TexType type in Enum.GetValues(typeof(TexType)) as TexType[]) { if (type == TexType.Unknown) { continue; } if (data.data.TryGetValue(type.ToString(), out object texData) && texData is byte[] bytes && bytes.Length > 0) { overlays[type] = new OverlayTexture(bytes); } } return(overlays); }