981 Commits over 1,066 Days - 0.04cph!
Don't derive Asset from Resource... fix getting assets by id/path returning null (#150)
Don't derive Asset from Resource, lets Sandbox.Game keep it's loaded assets instead of Sandbox.Engine
Fixes case when assets are loaded across Client, Server, Menu and all stored under the same ID,
meaning when you fetched by ID it would only be valid in one state.
Hint the networked dictionary generator to support class types we can NetWrite as keys.
Disable debug warning log on network hash mismatch
Implement [Net] IDictionary<TKey, BaseNetworkable> and expose IDictionary<TKey, object>, code gen is more resilient and gives better feedback for unsupported combination types.
Tag asset type images under tools
Fix small regression with InputBuilder Pressed/Released not working after calling Clear()
Remove VROverlay from update list if it's handle is 0, don't think the weakref was freeing fast enough
Update Steam file exclusion so some pngs from base addon end up in steam build - fixes missing ui / asset files
Fix SlotNext, SlotPrev buttons not working on controllers
Add mouse icons for Input.GetGlyph instead of text
https://files.facepunch.com/matt/1b1711b1/sbox_BvBA1fyVuJ.png
Fix glyphs for analog inputs not working
Make [Net] only work on { get; set; } props and throw a nice error, people were constantly getting confused why their custom getters/setters weren't working.
Make [Net, Change] work with entities and remove obsolete [OnChangedCallback]
Give base addons proper schemas so they don't get auto-upgraded and stomp SharedAssets.
Set SharedAssets to empty on base, citizen, rust addons - stops them being downloaded over multiplayer
Hack to resize glyphs from Steam if they're the wrong size until it's fixed on Steam, e.g PS glyphs are twice as big..
Add optional style parameter to Input.GetGlyph
There's 3 styles Knockout (default) buttons are on a knocked-out background. Light is black on a white background, Dark is white on a black background.
Modifiers WithNeutralColorABXY() will match the style color instead, WithSolidABXY() gives the buttons a solid fill.
Example usage: Input.GetGlyph( InputButton, style: GlyphStyle.Light.WithSolidABXY() );
https://files.facepunch.com/matt/1b1711b1/glyph_styles.png
Error if trying to add the same addon twice.
Remove debug log from controller testing.
Remove extra EndGlobalSection from .sln - fixes Rider being unable to open solution
When upgrading .addon to new schema default SharedAssets to `*.*`
Fix hanging from SetParent, forgot to stage this fix oops
Don't allow entities to try and become children of their children, throw a warning for creators - fixes infinite recursion crash.
Fix InputBuilder.Pressed/Up not working properly with controller input
Add optional argument to Input.GetGlyph specifying glyph size. ( Small: 32px, Med: 64px, Large: 128px )
Input.GetGlyph( InputButton ) will now return glyphs in the same knockout style as controller glyphs
https://files.facepunch.com/matt/1b1311b1/glyphs.png
Clear all cached handles when a new Steam Input config is loaded
Whitelist ZipArchive properly so you can pass a Stream and whitelist various System.IO exceptions.
Small fix with controller config (exporter missed a #?)
Update Steamworks SDK 1.53
Resolve deprecated SteamNetworkingSockets usage
Controller API in Sandbox.Engine wrapping Steam Input internally with proper async glyph loading
Better controller support in C# Input system with Steam Input.
New methods:
* Input.UsingController - true if the last input from a user was from a controller (accessible serverside too)
* Input.GetAxis( InputAnalog ) - get the raw analog axis from a controller, move / look / triggers.
* Input.GetGlyph( InputButton / InputAnalog ) - Get a controller-specific glyph texture for the bound InputButton ( if using controller )
* Input.GetButtonOrigin( InputButton / InputAnalog ) - Get context specific button, e.g InputButton.Jump would return 'SPACE' or 'A Button'
Users can bind any InputButton to various controller devices by opening the binding panel from the settings menu.
Default configurations for Xbox One and PS4 controllers, other devices should derive nicely from these, let us know if not.
InputButton: Obsolete a bunch of unused/unbound buttons that made no sense.
Strip native InputSystem of legacy code for XInput / Joystick / Steam Controller.
Disable videomode settings when in tools as it's handled by the widget (prevents user getting into an infinitely tiling window state)
Throw a nicer exception if you try to add children to something that shouldn't have them ( <text>, <img> )
Fix NRE on unsized Image panel with no texture
<img> panel will now default size to their Texture size
When rendering an Image panel mimick background-size: cover instead of contain - fix it looking shit at edges
Add Open Visual Studio & Regenerate Solution options to editor window
Fix InputBuilder From/To UserCmd wrongly using static instance which meant you couldn't manipulate it properly on bots
Remove long obsolete InputBuilder.CursorAim/CursorOrigin ( Use InputBuilder.Cursor instead )
Ignore uncompiled texture .jpg when sending files to client
Parse CSS floats / ints with InvariantCulture in generated code too, should fix remaining issues with odd regional setups
Use InvariantCulture when parsing time in scss too
Fix initial fgd autogen needing config folder to exist
If we surpass MAX_ACTUAL_RENDERTARGETS don't try to allocate more, fixes buffer overflow crashes
(cherry picked from commit 124a7d351686733fe63d829c49ee65f18aec8359)
Double MAX_ACTUAL_RENDERTARGETS to 256, with people making their own tools 128 would easily get hit
(cherry picked from commit 08628fb0f855688c84909b976a2d3b3c3cd678da)
Backport engine fix for debug scratch rendertargets running out
Support loading font files with SemiLight (350) or ExtraBlack (950) names
Fix NRE in stylesheet parser if an invalid file is requested
Parse floats properly in stylesheets with InvariantCulture
Add WaterSceneObject's PlanarReflection as a scene object child properly
▊▇▉ ▇▅ #▆▊▉▅▇ ▋▅█▅▄▇ ▄▉ ▅▆ ▌▆▉▌█▌▉▅▍ ▆▇▋▋▅▋█ ▊▍▋▌█▇▌ ▍▍▊▄▋ █▊▇▉, ▊▆▉ ▇▌▊▌ ▇▊█▊ ▍▍ ▍ ▇▇▇ ▊▋▅▋▇ ▋█▇▉▍▋ ▋▌▊▆▍▌▅█▉
▆▍▇ ▍▉▅▅▍▇▍▄▋▊ ▌▋▄▊▇▄ ▅▊▊▍▆ ▊▋ ▄_▍▅▌▍█▄▅▅▋▇::▇▄▊▉▉▉█, ▇▇▋▅▊ ▉▋▍▇▇ ▋▉ ▄▄▇▌▅▅▌▉▍ ▉▊█▊/▄▊▆▆█▊ ▅▅█▍ ▆▍▌▇▊▄▍ ▅▋▇▊▋▆▍ ▆▉▇▊▄▉
▌▋▇█▊▌▉▋ ▍▋▊ █▊▅▄▌▆▌▅█ ▍▇ ▌ ▄▄▆█▇▄▌▆█▄▍▄▉▊█ ▊▌▉▆▆▄▋▅ ▄▅▌▇ ▇▉█ ▉▉█▌▆█▇█ ▅▊ ▄█▆▇▋▄█, ▆▋▆▇▍▋▄▌ ▇▌▅▆█▊█▋▍ ██▊▋█▄▆ █▇▊▅▊▉
▋▇▄█▅▉▇ ▅▊▋▇▍▌▉▆ ▅▋▄▊▊▆▍▇█▋ ▋▋ ▍▍▉▄▌▆▋▅, ▌▆▄█▌ █▌▌ ▊▆▋▉█▄▆▉▉▉▍ ▆▌ ▄▊▊ ▇▋▇▅ ▄▋█▋ ▄▇▇▍▋ ▉▋▆█▄▋▅▍ ▆▇ ▍▊▄ █▇▆▉▆▋
▉▇▄▄ ▄▊▋▌▋▍█▄▊ ▇▌ ▄ ▌▊▌▋▇█▋▅ ██ █▄▆▅▉▉▅▊▇▇█ ▊▅▋▇▌▇ ▍ ▋▆▆▆▅ ██ ▉▊▉ █▅▊ ▍▊▊▅▋▊▊█ ▍▍ ▄▄▉▊▆▉▄█▉ ▅▋█ ▆▆▅▍▋▋▍ ▍▊▅▆▋. ▉▄▉▉▊▅▋█ ▌▆▅▆▊▌ ▆▄▉▄ ▍▍▌▉ ▇█▄ ▋▍▌▉▍▇▍ ▌▋ ▅▅▄ ▉▋▇▇ ▆▉▄▄▍ ▇▍█▌▇▉▆ = ▆▌▍▋▄▉▌
Remove redundant inherited member on MainMenuPanel
Don't render panels on invisible overlay panels 🤦 optimize some other code paths too
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 )
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
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
Adjust main menu vr size / scaling to a more square aspect ratio and scale it bigger so it's not difficult to read
Network Client.IsBot so it works clientside
Fix Event.Hotload not calling on the server, fixes network tables not updating on hotload and probably other shit
Make sure we update our GameAssembly hash on initial load, fixes all networking errors
Make non public and inherited methods register for events again
fix build log discord post on long message commits
Ensure resident model resources get added to the manifest, fixes error models from missing resources in manifest.
This would specifically happen if a server starts a game / map a second time, the resources would remain resident,
so when a client does their initial join these models are missing from the manifest resulting in an error.
If the client had previously joined on the first time their resources would already be resident and not error.
Simplest way to do it, rather then change (and slow down) how the rest of the resource system works.
If a resource we try to preload returns an error handle, don't keep the handle alive. Map resources specifically will become valid and load automatically after this.
Change WorldInput API to instances to resolve issues and allow simultaneous inputs.
* Replace WorldInput.Update with instanced WorldInput fixing hovering and clicking issues as well as allowing simultaneous inputs.
* Resolved various issues with WorldPanel.RayToLocalPosition not using the right axis, being inverted and not scaling.
* Simulate double click and mousemove events for world inputs.
* Fix right clicks not working on WorldInput.
Fix missing game lobby settings
Allow RootPanel.Parent = null though
Throw if trying to set RootPanel.Parent
Fix a couple of NREs preventing -dedicated from working
SetProperty fallback on [Property] attributes, fixes map entities not working from having their properties not set