1,584 Commits over 1,127 Days - 0.06cph!
Fix small fuck up I made multiplying AnalogLook.pitch * 1.5f when using controller instead of mouse
Remove NativeEngine.EngineInputContextId
TraceResult.StartPos/EndPos -> StartPosition/EndPosition
PawnController.EyePosLocal -> EyeLocalPosition ( matches Entity.EyeLocalPosition )
TraceResult.StartPos/EndPos -> StartPosition/EndPosition
add managed to findflags concommand
Add Input.MotionData - current input device's motion sensors states of absolute rotation, positional acceleration & angular velocity.
Supported devices: Playstation 4/5 Controller, Switch Pro Controller, Steam Controller, Steam Deck.
Remove remaining references of fow
CClientInput::CreateVrMove: stop using tracked controller manager, removes reliance on vr_core and gives us more up to date values
Very basic movement with joystick in headset direction
Update .addon to new schema and resolve obsoletes
Fix CClientChangelevelState invalid client copy & not clearing causing the destructor to wrongly shutdown clients
Add basic sys/gpu mem usage to editor status bar to help identify if we have vram leaks
Make rich presence work again so it shows the game title instead of "Game" for every game
Fix some issues with Steam Input glyphs reflected in upcoming Steam Client update
* Glyph sizes for medium and large glyphs changed 64 => 128, 128 => 256.
* Glyph style modifiers now work properly with the source files from Steam.
* Added `steaminput_glyph_forceresize` cvar (default on), some of the styled glyphs are still the wrong size on Steam's end, so cvar so we know when it's safe to remove this hack.
* Added `steaminput_glyph_forcetype` cvar, you can test what your game looks like with different controller types easily.
send playername in connect protobuf, was previously wrapped in a splitscreen message
Remove splitscreen from engine and all the hacky shit that went along with it
* Input config now handled in InputService instead of SplitScreenService
* Remove split client connects / channels from networksystem
* Remove all remaining references to CSplitScreenSlot
Remove c++ engine camera manager from dota, we do cameras entirely in C# managed already anyway
Delete c++ flashlight code
Remove a bunch of vgui HUD stuff
Delete achievements manager from C++, when we add achievements it'll be easier to do in C# with Steamworks
Remove more unused convars specific to hl2, cs, etc.
Restore host_writeconfig which was hidden away in splitscreen service 🥴
Drop `name` convar that was really just a wrapped steamworks GetFriendPersonaName() call - replace with a cached GetPersonaName()
Packaged games properly update their hash for networking, fixes net vars in packaged games
Remove anything marked as [Obsolete] 3+ months ago
Obsolete Entity.EyePos/Rot => Entity.EyePosition/Rotation
delete some legacy c++ concommands: god, say, give, etc. these didn't work anyway and if they should work they should be done in c#
reimplement cl_showpos in c# so it uses the pawn, remove cl_showfps (there's much better ways to see it now)
Fix compile error and strip Panorama stuff from the particle host
Remove more legacy player concommands and whatevers left of impulse
remove env_message
Basic Managed Hammer: add menus from C# and auto reload fgds
* Basic Hammer interop, let tools addons add menu bar options with [Menu]
* FgdWriter tells Hammer to reload fgd automatically when written
* Hammer: Save & restore selection when reloading fgds instead of clearing it
[Net] codegen, use the ISymbol to get attributes instead of the syntax node so you can use the FQN and not have it silently do nothing
Fix access violation crash in NetWrite.SendRpc on invalid entities
Add missing interop includes
Basic Hammer interop, let tools addons add menu bar options with [Menu]
FgdWriter tells Hammer to reload fgd automatically when written
Hammer: Save & restore selection when reloading fgds instead of clearing it
Hook Hammer MapViewHUD render and pass a ToolRenderContext to C# for helper overlays (e.g. showing where a platform will go.)
Lobby.JoinGame remove [] wrapped steamid from connect
Hammer: Fix "New From Template" creating 2 world nodes and leaving one in a fucked state crashing loads of shit
Bare managed interop setup for Hammer
FgdWriter: tell tools to reload fgds
Hammer: when reloading fgds instead of just clearing selection, make a backup and restore it
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