示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }