1,413 Commits over 943 Days - 0.06cph!
Restore default key binds button for when you've fucked them
When uploading addons use a 64 bit int for scanned bytes for addons with manifests over ~2.1gb
Use an estimated velocity clientside for entities with physics (was just 0 before)
Only show gamemode packages in local games menu
Ball movement controller, move along with the ground entity velocity
Give KeyframeEntity (e.g ent_platform) velocity so pawn movers can use their base velocity.
https://files.facepunch.com/matt/1b2611b1/platform_before_after.mp4
Recompile assets
Update control hints to use Input.GetGlyph with light neutral style
Update README.md, LICENSE
Update addon schema
Code cleanup, take advantage of new API and C# language features to make this a good example of how to use s&box.
* Stop using Sandbox.GameBase, if there's a reason we were using this let's fix that in base instead.
* Update namespace and use file scoped namespaces from C#10.
* Take advantage of [UseTemplate] and @text binds instead of updating text in Tick.
* RootPanel deletion is handled by engine now, we can just do new RootPanel()
* Move code around into partial classes better.
Update fgd filename
Update trap entity code after merge
Template property binds (e.g @text=) allow non-public and ignore case, matches @ref behavior
Whitelist System.IO.StreamReader/TextReader ( explicitly the Stream constructor only )
Basic key bind menu
https://files.facepunch.com/matt/1b2411b1/sbox_VIhmptifiG.png
Remove old unused default controller binds
Allow changing audio output device in tools
Save key binds
Resolve obsolete ResourceId usage
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.
Clear Asset dictionaries and dispose of watchers on Init/Shutdown
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.
Update addon schema
Add tests for networked dictionaries with BaseNetworkable and object value 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.
Update world input usage and update addon schema
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.
Final code/doc cleanup, fix Controller.All returning disconnected ones
Add Input.GetAnalog( InputAnalog ) returns a Vector2 of either Move, Look or Trigger - can be used serverside too.
Strip XInput / Joystick methods completely from InputSystem, remove workarounds / hacks around it since we just do it all in C# now
Add Input.GetGlyph( InputAnalog ) - split InputAnalog.Trigger into LeftTrigger, RightTrigger so you can get the glyphs
Add action manifest file with PS4 / Xbox One configs ( other controllers should derive nicely from these )
Very simple controller settings button in main menu to open bindings
Don't cache invalid handles in the Controller API, seems to be a few ms where handles are invalid when a controller is plugged in.
Update Steamworks SDK 1.53
Resolve deprecated SteamNetworkingSockets usage
Controller API in Sandbox.Engine wrapping Steam Input internally with proper async glyph loading
Use Controller API for Input, all InputButton are bindable from Steam Input.
New methods:
* Input.UsingController - true if the last input from a user was from a controller (accessible serverside too)
* Input.GetGlyph( InputButton ) - Get a controller-specific glyph texture for the bound InputButton ( if using controller )
* Input.GetButtonOrigin( InputButton ) - Get context specific button, e.g InputButton.Jump would return 'SPACE' or 'A Button'
InputButton: Obsolete a bunch of unused/unbound buttons that made no sense
Remove old Steam Controller initialization from C++ engine and disable XInput
Remove dead or legacy code / tidy InputSystem/UserCmd
Disable videomode settings when in tools as it's handled by the widget (prevents user getting into an infinitely tiling window state)
Fix generated ISteamInput interface not handling arrays for originsOut which would just crash if a user has multiple buttons for an action
Remove InputButton enums that were completely unused and unbound to avoid API confusion
Ditch seperate DigitalAction enum, let Steam Input bind any InputButton as a digital action.
Make Controller an internal class that we use from the public Input class instead
Add clientside Input.GetGlyph( InputButton ) and Input.GetButtonOriginName( InputButton ) which return dependent on active input device. ( Need to source some M+KB glyphs really )
Throw a nicer exception if you try to add children to something that shouldn't have them ( <text>, <img> )
Update Steamworks SDK 1.53
Resolve deprecated SteamNetworkingSockets usage
Add ISteamInput interface to managed and callback forwarders
Controller API using Steam Input; glyph textures, multiple controller support, analog states, etc.
Use C# Controller API in InputBuilder to replicate default Source behaviour with Steam Input & disable XInput devices in C++ engine
Don't spam the Event.Controller events if Steam Input spams us, derive Controller hash code from handle, add missing AnalogAction glyph getter
Add action manifest files and load them, add default configs for Xbox One / PS4 controllers ( I think everything else should derive from this )
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 )
Update Steamworks SDK 1.53
Resolve deprecated SteamNetworkingSockets usage
Add ISteamInput interface to managed and callback forwarders
Controller API using Steam Input; glyph textures, multiple controller support, analog states, etc.
Use C# Controller API in InputBuilder to replicate default Source behaviour with Steam Input & disable XInput devices in C++ engine