14 Commits over 30 Days - 0.02cph!
Adjust main menu vr size / scaling to a more square aspect ratio and scale it bigger so it's not difficult to read
If VR is enabled make the GameList.ControlTag default to VR
Add 4k & 8k render target sizes to be used as scratch ( dx11 max texture size = 16k )
Use a copy of the current viewport instead of framebuffer when rendering panel backdrop filters
Add console commands from Sandbox.Menu dll making menu_reload work again
Add missing internals to a couple OpenVR structs
Add float.MeterToInch / float.InchToMeter extension methods
Make main menu VR overlay properly show when ingame
Make the loading screen show in VR, add VROverlay.SortOrder, add RootPanel.IsVR set when a RootPanel is owned by a VROverlay
OpenVR update 1.10.20 -> 1.16.8, resolve deprecated crap
Interopgen OpenVR's IVROverlay to managed engine
Add VROverlayPanel - these are panels rendered in local VR space over the world, input is automatically simulated
VR.Init() in MenuDll, set VR.Enabled in Init only since it never changes
When in VR create a main menu with an VROverlayPanel, make this wide and 4k so it doesn't look ass
Basic interop of IVRInput to managed, get action origins & add VROverlay.SetTransformRelative( VRTrackedDevice )
OpenVR update 1.10.20 -> 1.16.8, resolve deprecated crap
Add internal managed code bindings for OpenVR interfaces to Sandbox.Engine
VROverlay class in managed, do basic render & input for main menu.
These transparently handle the differing coordinate systems from
Source to OpenVR.
Add VROverlayPanel<T> where T : RootPanel, acts like a normal VROverlay but automatically renders UI to it
Render VR menu from menu addon using VROverlayPanel, render in 4K so it doesn't look shit
Store VROverlays with WeakRef, sort out IDisposable to delete VROverlayPanel.RootPanel
VROverlay input system for UI using input data from OpenVR
Handle scroll events on vr overlays, turn it into InputData for UI
Custom OpenVR interop bindings, grab the OpenVR interfaces from engine
Lets us cut out loads of bullshit making things way simpler and neater.
Restore viewport after rendering in VROverlayPanel
Simulate VR overlay mouse position properly from scale
Make engine construct OpenVR texture handles instead since they're graphics API specific
Update MouseScale properly on vr panel overlays
Update vr overlay panel render texture when panel bounds change
Hide vr overlays if vr dashboard is open
Document on when you should use an overlay vs a worldpanel
Dispose of all vr overlays on game end that may not have been picked up by GC yet
Prevent redundant calls to OpenVR in property setters
Expose TriggerLaserMouseHapticVibration for VR overlays, add quick test case to pulse when hovering panels
tidy up, unfuck namespaces / class names / docs
Fix vr overlays crashing from wrong thread by using a device thread callback ( even though we were in a render thread anyway? )
Make VR overlays work in-game, hide them when the main menu overlay is showing
Fix interop issues from rebase/squash
Decide if VROverlayPanel does input from pointer-events
Allow absolute overlay transforms from seated or standing origins
Add relative overlay transforms from other overlays (they inherit visibility too)
Add Overlay.SetHudTransform( Transform ), set it relative to system.HeadsetView overlay view
Start exposing IVRInput to the managed engine, let us interact with actions internally ( shit like /user/hand/right )
Add relative overlays to tracked devices
misc mark shit as internal, fixes, tidy up
tidy up, unfuck namespaces / class names / docs
Fix vr overlays crashing from wrong thread by using a device thread callback ( even though we were in a render thread anyway? )
Make VR overlays work in-game, hide them when the main menu overlay is showing
Dispose of all vr overlays on game end that may not have been picked up by GC yet
Prevent redundant calls to OpenVR in property setters
Expose TriggerLaserMouseHapticVibration for VR overlays, add quick test case to pulse when hovering panels
Make engine construct OpenVR texture handles instead since they're graphics API specific
Update MouseScale properly on vr panel overlays
Update vr overlay panel render texture when panel bounds change
Hide vr overlays if vr dashboard is open
Document on when you should use an overlay vs a worldpanel
Use our own interop bindings for OpenVR, grab interface from engine
Refactor VROverlay, just set stuff once in property setters instead of in render thread
No need for a separate MainMenuPanel impl for VR, just make a VROverlayPanel of it
Restore viewport after rendering in VROverlayPanel
Simulate VR overlay mouse position properly from scale
Store VROverlays with WeakRef, sort out IDisposable to delete VROverlayPanel.RootPanel
VROverlay input system for UI using input data from OpenVR
Handle scroll events on vr overlays, turn it into InputData for UI
Make vr controllers scroll UI the right way and consume the delta after it's used
VR mainmenu, split out the lobby bar into a seperate offset overlay
VROverlay: handle key management automatically internally
Add VROverlayPanel<T> where T : RootPanel, acts like a normal VROverlay but automatically renders UI to it
Render VR menu from menu addon using VROverlayPanel, render in 4K so it doesn't look shit
OpenVR update 1.10.20 -> 1.16.8, resolve deprecated crap
Add internal managed code bindings for OpenVR interfaces to Sandbox.Engine
VROverlay class in managed with rendering props and render update loop
Basic VROverlay in Sandbox.Menu with a render target texture of the menu UI - probably a shit place for it but can be moved easily.
https://files.facepunch.com/matt/1b1811b1/vrmonitor_A6tO3ufJP9.png
Iterate on VROverlay API, make the coordinate system match engine, poll events and simulate input in the menu.
Basic VROverlay in Sandbox.Menu with a render target texture of the menu UI - probably a shit place for it but can be moved easily.
https://files.facepunch.com/matt/1b1811b1/vrmonitor_A6tO3ufJP9.png
OpenVR update 1.10.20 -> 1.16.8, resolve deprecated crap
Add internal managed code bindings for OpenVR interfaces to Sandbox.Engine
VROverlay class in managed with rendering props and render update loop