3,127 Commits over 1,338 Days - 0.10cph!
Started converting the settings pages
Passively ignore razor bind exceptions
Add server list sidebar placeholder to show intent
When we get an exception in an event don't call that target anymore, but keep the others going
Fix exception when getting active style blocks
Rename NavigatorButton to Anchor - don't derive from button
Style cleanup
Fix NRE in WildcardMatch
Fixes
Revert "Menu: Validate GamePackage.Usage in GameScreen to prevent NRE for local projects"
This reverts commit 67704c38470d188869313834a16edbf45fa0e610.
Revert "Fixed Package.FindAsync failing to deserialize PackageUsageStats - fixes Sandbox and Asset Browser cloud tab"
This reverts commit 680d2f2b637479610ca6c07916b24b76f0e81177.
Add test for Package.FindAsync
Keep lobbies to one line
Lower opacity of empty servers
Fix 5px border down the right of game screenshots on main menu
Tweak icon hover
Mattress meta
Give a polite warning when no endpoint when uploading
Obsolete Package.Background
Tests for negative animation-delay
Animation keyframes support background position, background size
Game widgets show screenshots
Fix for new screenshots api
Can save/restore in editor style edits https://files.facepunch.com/garry/037591e3-f19e-49f0-92a3-030b545250a0.mp4
Fix tests to reflect new behaviour of parser
Skip over empty styleblocks
Fix opening stylesheet location when seemingly not clicking the label
Can toggle :hover etc in style editor
Can edit styles in panel's inspector
Try to fix "path must be absolute" exception
Fix Editor labels not having callbacks
Can click stylesheet name in panel inspector to open it
Provide filename for stylesheets defined in razor files
Store the filename and line number in StyleBlock
Make PseudoClass available on IPanel
Highlight panels with :hover in UI tree
Hide a bunch of useless panel properties in inspector
TabWidget can save its state
Can see panel styles in inspector
https://files.facepunch.com/garry/4a3983e5-f072-45ce-b746-b7b05234d8be.png
Ingame console doesn't use templates anymore
GameSetting use razor
Menu back to horizontal
Servers Widget
Games widget
Don't lowercase texture path when loading (because http can be case sensitive!)
Hotload textures in the menu properly
Add MenuUtlity.OpenFolder
NewsWidget
Style tweaks
Event widget
Navbar cleanup
PlayerWidget
Navbar cleanup
Clean main menu styles
new & trending
Refresh server list widget automatically
Package list sidebar glass style
Dirty check PanelNode properly
Add TreeNode.SetChildren
Sidebar can be bigger now
If the razor @ref is the wrong type then ignore it
Fixup partydeck
Merge pull request #712 from Facepunch/main-menu-sucks
Main menu sucks
Fix exception when splashscreen manually closed
Fix exception in DragData.Url
Fix LaunchConfig construct exception
Fix exception in ConsoleOutput.OpenAnchor
Fix exception in Hammer.PostLoadMap
Fix exception in AssetPreview.GetAssetThumb
Attempt to fix CloudAssetDirectory share access exception
Attempt to fix exceptions in AssetFolderNode.UpdateCount
Fix possible exceptions in FileWatch.Tick
Wrap ClientSpawn so downstream exceptions can't cause too many problems
Exception wrap CreateEntityFromEngine better
Make unhandled RPC a warning
Change how ModelEntity.PhysicsBody is returned to avoid null pointer exceptions
Handle file in use exceptions in NetworkAssetList.AddFiles
Disconnect clients if they're requesting net files that don't exist/are deleted
Add string.ToLong
If the server's port is taken, try the next one a few times
Color picker handles HDR colors
Show components in entity list better https://files.facepunch.com/garry/a20003da-9cd0-48a7-a39c-15a0cb6f5f8c.mp4
Fixed uploading runtime addons not working
This is faster without the parallel
Add benchmark project
Induce a tools hotload swap after game hotload - for the sakes of consistency
This was happening anyway, just at a random point
Make matt's amsi patch default (-amsi to disable)
This leafiest asset stuff isn't used anymore
When registering custom asset type assets, register the compiled version too - which stops it thinking they're not compiled
If imported GameResource isn't compiled then compile it
Fixed passing in wrong name to RegisterResourceReference (might not be a bug but it looks like one)
Only add events on retail
Don't hotload/etc compiled assemblies that we've already hotloaded
Client only reload assemblies that have changed
No need to re-verify assemblies that we've already verified
Parallel thread .cs reads
Cleaner Generators
Clean compilegroup/compiler thread stuff
Entity.FindByIndex<T> just return null if can't cast to right type
Fix test
TypeLibrary hunch speedups
Don't do GC during server addon loading
Include editor sounds so everyone gets annoying compile sounds
Hotload manager use its own logger
Include compiled shaders on server
Disable AC optimization (it's not filling the resolver in propertly)
Merge branch 'master' into iteration-speed-sucks
Order the syntaxtrees before giving them to the compiler, because hotloading is going to want the names of things to be as close as deterministic as possible
Fix compile notifications popping up on boot
Fix compile notifications appearing on the top left of the screen for no reason
Not using it, but can at least fix SetWindowNoActivate
Merge pull request #688 from Facepunch/iteration-speed-sucks
Speed up code iteration time
Switch @visibility to @internal - because afaik it's the only visibility that makes sense + add unit tests
Logging in CompileGroup
TypeLibrary logging
Diagnostic event for start to end code iteration timings
Remove log tags
Remove the rest of the log tags
Texture.Update doesn't crash with wrong sized data, can update the first mip only, will generate the other mipmaps if only updating the first mip
SkiaTextBlock will update the texture instead of disposing and creating a new one
Add names for other runtime textures to aid debugging
Add logging menu to editor, can switch Trace/Detailed logging on
https://files.facepunch.com/garry/88a623bf-7fcd-4245-bf05-13ae6da6f5d9.png
Don't need special checks for IClient anymore in netcode, because it's an IEntity
IClient and IEntity can be [Net]
Dedicated server fixes
MapSchema experiment (unexposed)
Re-add ResetMap, HammerID is a string
Protocol++ (sorry, HammerId forced it)
Remove Entity.IsClient, Entity.IsServer (just add Game. in front of them)
Strip out built in noclip
Devcam cleanup
PackageExtensions to SandboxGameExtensions
Transform.ConcatTransforms => Transform.Concat
Move GameServices to Sandbox.Internal
Organize base extensions into one class
Move Assert to Sandbox.Diagnostics
NullChecks => SandboxGameExtensions
Move internal EntityUtility to OOBChecks
Move DevCam stuff to Sandbox.UI.DevCam from Sandbox
Move Sandbox.MenuEngine.FileSystem.OpenFileDialog to Sandbox.MenuUtility.OpenFileDialog
Rename Sandbox.FileSystem in System.Tools to Editor.FileSystem
Move Sandbox.IMenuAddon to Sandbox.Internal and make it an interface
Added "Animation Speed" property to prop_animated
Implement prop_data SpawnMotionDisabled
Use prop_data.SpawnMotionDisabled for parking_barrier first gib
PackageExtensions to SandboxGameExtensions
Transform.ConcatTransforms => Transform.Concat
Move GameServices to Sandbox.Internal
NullChecks => SandboxGameExtensions
Move internal EntityUtility to OOBChecks
Move DevCam stuff to Sandbox.UI.DevCam from Sandbox
Move Sandbox.MenuEngine.FileSystem.OpenFileDialog to Sandbox.MenuUtility.OpenFileDialog
Rename Sandbox.FileSystem in System.Tools to Editor.FileSystem
Move Sandbox.IMenuAddon to Sandbox.Internal and make it an interface
Revert "Move DevCam stuff to Sandbox.UI.DevCam from Sandbox"
This reverts commit e084b44e963a5ada259328585b83444dfc66d5d0.
Merge branch 'rubat-pain-day-2' of sbox into rubat-pain-day-2
Make Global a real static class, Remove GameService completely (we can take another run at this)
Rename Sandbox.Global to Sandbox.Game
Remove Rand, add Game.Random
Fix devcam scss
Delete Host, move everything to Game
Remove Client, replace with IClient, Client.All is now Game.Clients
Move Local.UserPreference to Game.Preferences
Remove 'Local', all moved to Game
Moved everything from Map. into Game. and deleted Map
Merge branch 'master' into engine-refactor-3
protocol++
Fixed console key not working in editor
Removed Sandbox.Hooks obsolete code
Moved VoiceSpeaker, VoiceEntry, VoiceList to Sandbox.UI namespace, removed Style.Dirty usage
Tools: Remove Utility.RunCommand, replace with ConsoleSystem.Run (to match Sandbox.Game)
Replace tools addon usage of Utility.RunCommand
Merge branch 'master' into pain_day
Merge remote-tracking branch 'origin/pain_day' into engine-refactor-2
Move DebugOverlayAttribuite to Event.Debug.Overlay
Update GameDebug.cs
Remove Entity WaterLevel + WaterEntity
Protocol++
Hide EntityComponentAccessor, make component system interface based, accessible on IEntity (from tools etc)
Clear that up, add some extensions to get water level easier
Remove PhysicsBody.WaterLevel
Show components in Entity list
TypeLibrary.GetDescription becomes TypeLibrary.GetType
Make AssemblyInitialize internal
Remove ApplicationTimings
BBox's "center" constructor takes an optional size argument
Remove env_tonemap_controller,
Remove EnginePostProcess, Remove ITonemapEntity, make SceneTonemapParameters internal
Warning fixes
SandboxEditor becomes Editor
Rename Tools to Editor
ToolEvent to EditorEvent
Can change visibility of Razor created panels using @visibility
https://files.facepunch.com/garry/ba7154d8-e33c-4ce8-b799-09ad82dc8d17.png
Move PhysicsJoint, CollisionRules, PhysicsSettings to Sandbox.Physics
Move Sandbox.Easing to Sandbox.Utility.Easing
Move PerformanceStats to Sandbox.Diagnostics
Put CircularBuffer in Sandbox.Utility
Flatten all the extension classes to per-assembly classes
Move Logger to Sandbox.Diagnostics, making Logging internal
Make Sandbox.TextureLoader.Image internal
Delete AboutDialog
Move Task related stuff to Sandbox.Tasks
Move Noise to Sandbox.Utility
Squashed commit of the following:
commit 9f84591e8130aa00e90d4ea6a6ceab96a0860585
Author: Tony <devultj@gmail.com>
Date: Mon Nov 14 14:16:54 2022 +0000
Update Water and VoxelChunk to use tags
commit e178470dbc3917cf3b5321c3326a69e2726dfd1a
Author: Tony <devultj@gmail.com>
Date: Mon Nov 14 14:08:32 2022 +0000
Refactor DamageInfo to use tags instead of flags
- Obsolete DamageFlags, DamageInfo.Flags, DamageInfo.WithFlag, DamageInfo.Explosion
- Add DamageInfo.FromExplosion, DamageInfo.WithTag, DamageInfo.HasTag
- Replaced all obsolete flag usage with new tag usage
Completely remove DamageFlags
Minimal addon correct fov calculation
Move glow component to addon code
Don't switch loading screen to addons
Remove further obsoletes
Merge branch 'master' into engine-refactor-2
Merge fixes
Merge branch 'master' into engine-refactor-2
engine-refactor-2
Engine refactor 2
Assure Base Runtime is available when loading a runtime game
Add an assembly manifest to addons so we don't need the hack in the future when we let people add more assemblies
Load the packaged dlls in a determinate order
Fixed ConditionalWeakTableUpgrader
Handles the case where oldInstance == newInstance, or if the collection gets modified while being processed
Simplify JsonSerializerOptionsUpgrader
Directly process JsonConverters inside existing JsonSerializerOptions, without creating a new instance. Handles case where we can't create a new instance, and the options aren't mutable. Also make sure we process static fields in System.Text.Json assembly. Possible fix for #640
Add some more easy hotload skips to save a few milliseconds
JsonSerializerOptionsUpgrader .NET 7 fixes
Log path to instance when a hotload error occurs
Some nicer paths for items in common collections
Replace TypeDescription / MemberDescription instances during swap
Tests for TypeDescription / MemberDescription replacing
Make hotload tests more strict
Warn when encountering delegates that can't be upgraded
Even simpler way to clear System.Text.Json cache on hotload
Readonly field hotload test
Trace instance paths when doing hotload tests
Stop watching System.Text.Json since we're clearing its cache now
Ignore LiteDB types during hotload
Merge remote-tracking branch 'origin/master' into hotload-fixes
Get rid of soon-to-be-unused "context" arg in OnTryCreateNewInstance
Some more permutations of lambda method types
Big DelegateUpgrader rewrite
* A lot more careful about matching generated methods that change name
* Fixed case where swapping unchanged code would substitute in the wrong lambda method
* Now replace lambdas we can't find a match for with one that throws a helpful error (before they would become null)
Easy case for delegate methods from non-swapped assemblies
Failing delegate swap involving same-named methods
Strategies for fixing HotloadTests.Delegate11
Split DelegateUpgrader up, mocked up same-named scope method solution
Refactor to assume we have Mono.Cecil, WIP method resolution
Fixed HotloadTests.Delegate11
Hotload message type consistency
Warning: non-fatal, but recommend reloading the game
Error: something went wrong that we should fix
Fixed resolving nested type definitions
Merge remote-tracking branch 'origin/master' into hotload-fixes
Failing test for lambdas with a generator context method
Fixed upgrading lambdas with a generator context method
Tests for finding definitions of methods involving generic parameters
More generic type / method fixes in hotload
Added failing test for handling removed lambda with a return type
Test case for nested lambdas
Fixed generating error delegate if original lambda had a return type
Some more test cases for upgrading delegates
Fixed resolving multi-dimensional array parameter methods
ByRef and async method tests
Fixed resolving method definitions with ByRef parameters
Support for upgrading lambdas defined in async methods
More array and ByRef fixes
Type equivalence fixes
Apparently MakeArrayType( 1 ) != MakeArrayType()
We can skip cached lambda instances now
They'll still get upgraded if they're referenced in a non-cache field somewhere
Merge remote-tracking branch 'origin/master' into hotload-fixes
Merge pull request #668 from Facepunch/hotload-fixes
Hotload Maintenance
Add version to events
Add defaults for znear/zfar, so if games don't mess they'll be fine. Add comments with suggested values.
Vector2.Dot returns float
Vector3.Equals doesn't use AlmostEqual, but the == and != operators do
Move a bunch of stuff from Client to IClient, PlayerId is now SteamId
Client.Pawn is an IEntity
Game becomes GameController, added Sandbox.Game namespace
Move stuff from GameController to BaseGameController where possible
Remove Sandbox.Hooks
Rename CameraMode to CameraComponent
Make CameraSetup internal
Delete FixedCamera.cs
Delete LookAtCamera.cs
Obsolete [UseTemplate] so we appreciate the scope of removing it
Move Event.Frame to Event.Client.Frame, add ToolEvent.Frame
Add Event.Client.PreCamera, PostCamera
Move Event.BuildInput to Event.Client.BuildInput
Move default BuildInput to internal BaseGameController
Rename files to match new classnames
GameController becomes GameManager
Delete CameraSetup
Delete CurrentView
Use Map.Camera in place of CurrentView
Remove dof and motionblur from ViewDesc
Delete BrushEntity.Solid (was obsolete)
SurroundingBoundsType.Obb => SurroundingBoundsType.OBB
Use RangedFloat in SoundEvent resource
This change will make existing assets lose their PitchRandom/VolumeRandom until updated
Move GlobalRpcHandler to Sandbox.Internal
Make Sound.Index internal
Hide Prediction.CommandsAcknowledged/LastExecutedPacketNum
Move QTextBlock to Tools namespace
Rename ModelDoc namespace to Sandbox.ModelEditor
Also moved all ModelDoc node classes to Sandbox.ModelEditor.Nodes
Renamed ModelDocAttributes.cs to ModelEditorAttributes.cs
Delete Sandbox.ConstantBuffer (obsolete & unused)
Delete TriggerHurt and TriggerTeleport (obsolete aliases)
Delete TriggerMultiple.Wait (obsolete alias)
Delete ModelBreakPiece.CollisionGroupOverride (obsolete)
Delete CameraMode.DoFPoint/DoFBlurSize (obsolete)
Add Local.UserPreference.DefaultFieldOfView
Remove unused properties of Sandbox.Water
EnableShadows/EnableFog/EnableRefraction
Fixed main SceneCamera not controlling the render properly
Remove SharedRendering/SetDevLayer hack
Delete more obsoletes
Deleted PhysicsWorld.IsPointWater
Deleted Sandbox.Component.Glow.Active/RangeMin/RangeMax
Deleted FogStength from all light entities
Deleted OrthoLightEntity.UseFogNoShadows
Deleted Global.IsDedicatedServer/PhysicsSubSteps/PhysicsTimeScale
Deleted ScenePanel.CameraPosition/CameraRotation/FieldOfView/AmbientColor/ClearColor/ZNear/ZFar/DisablePostProcessing/SceneAttributes
Delete CameraComponent
DevCamera tweaks
Remove Map.Camera, add global Camera
Don't use EyeRotation for view angles - because it's laggy and fucked and I'm gonna remove it
Remove Entity.,EyePosition, Entity.EyeRotation, Entity.EyeLocalPosition, Entity.EyeLocalRotation, Added Entity.GetAimRay()
Delete StandardPlayerAnimator, PawnAnimator
Refactoring
Cleaning
Notes for future
Remove unsued
Merge remote-tracking branch 'origin/pain-day-rubat1' into engine-refactor-1
Rename SurroundingBoundsType.OBB to SurroundingBoundsType.Object, comment out unused
Remove now unused constant buffer binds
Defaults for main camera
Minimal template fixes
Reduce default vertex size
Move some stuff from base addon into the game dll
protocol++
Add prediction tolerance to m_vecOrigin
Split base and compiled assembly again
Only compile base addon if we're a runtime game
Remove debug
Remove rest of fov hacking code, add Screen.CreateVerticalFieldOfView
Update TransformTest.cs
Fix Gamemode download unit test to use new assembly schema
Disable tests that are too much work to get working yet
Don't allow LocalScale < 0
Don't complain about TaskCanceledException on game shutdown
Add Copy To Clipboard button to Stack property
Add facepunch.unicycle_frenzy to test
Lets mark a bunch of stuff as obsoleted so people aren't surprised
Set default FOV back
Merge pull request #669 from Facepunch/engine-refactor-1
orgs/sboxgame/discussions/2652
Fix soundscape NRE
Fix PanelList overflow
Squashed commit of the following:
commit f5d20681b7389cd09e9c877d4ea0d9e260762a44
Author: Rubat <3299036+robotboy655@users.noreply.github.com>
Date: Mon Dec 5 21:48:02 2022 +0200
Delete Sandbox.Internal.Decals
commit c9ed0a3acf8a248f4533109ddb63edba3a3c5330
Author: Rubat <3299036+robotboy655@users.noreply.github.com>
Date: Mon Dec 5 21:43:19 2022 +0200
Remove obsoletes
Removed Sandbox.SpotLightCone
Removed Sandbox.SceneSpotLight.SpotCone
Removed Sandbox.UI.DataSource.ArraySource
Removed Sandbox.UI.DataSource.BaseDataSource
Removed Sandbox.UI.DataSource.BindMethod
Removed Sandbox.UI.DataSource.Property
Removed Assert.True( bool ) in favor of Assert.True( bool, string=null )
Removed Assert.False( bool ) in favor of Assert.False( bool, string=null )
Removed Vector3.LerpTo( Vector3, float ) in favor of Vector3.LerpTo( Vector3, float, bool = true )
Removed Vector3.LerpTo( Vector3, Vector3 ) in favor of Vector3.LerpTo( Vector3, Vector3, bool = true )
Removed Sandbox.DecalSystem
Nothing should be named "dynamic.*" anymore
protocol++
Experimental / PoC
Limit stored custom inputs to a maximum of 256, removing older entries as new ones are added
Added ButtonState intended for use with [ClientInput]
Use TypeDescription to fetch property for [ClientInput]
Add extensions for reading/writing Transform
Add Transform.Read and Transform.Write
Add support for Transform to [ClientInput]
Added ButtonState.Pressed and ButtonState.Released with docs
Fixed compile error from copy paste 🥴
Make ButtonState a struct again but add a method `Set` so it doesn't need to be a class for the property
Revert "Make ButtonState a struct again but add a method `Set` so it doesn't need to be a class for the property"
This reverts commit 6d29a14ea85614a2c91c8f670f73e5ebb30e60cf.
Fixed IsDown / WasDown and also Pressed / Released being swapped
Delta values for some stuff (only send stuff that changed since last cmd)
Tidy up + add ManagedInputs
Rename to PawnInput
Just use TypeLibrary as its cached anyway
Add comments + use TypeLibrary
Add HasAttribute<T>()
Merge branch 'master' into custom-client-input
Don't add const to ArgPointer if asref is specified
Rid of CUtlVectorByte in favor of direct byte arrays
Make ButtonState a struct with implicit bool conversion
Write dynamic assembly hash to managed input message. Check hashes match when deserializing, if they don't skip that input
Merge branch 'master' into custom-client-input
Prepare to move a bunch of stuff from user cmd to managed. Clear out eye angle stuff
Start stripping out stuff that'll need implementing on pawn
Merge branch 'master' into custom-client-input
Match structs
Input.LookDelta and Input.MoveDelta analog inputs + copy PawnInput props in MimicBot from target client
Update (obsolete) player and controller examples to use the managed input / pawn inputs
Try stripping out InputBuilder and see how it feels...
Merge branch 'master' into custom-client-input
Some extra docs + rename PawnInput to ClientInput
Remove redundant inputs. Reverse yaw for bots
Some additional documentation
Move MimicBot to base addon
Write -1 if entity is null
Add ActiveChildInput and ensure children get added to Inventory on ClientSpawn so they match
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Can pass RenderAttributes into VertexBuffer.Draw
Avoid conflicts
Merge branch 'master' into custom-client-input
Add Tony's change for always record voice in VR
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Remove code I added that wasn't needed
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge in Matt's Input.Pressed fix for when FPS is lower than tick rate
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Make sure StopProcessing is reset in Input.Process so that it isn't remembered next time
Ensure InputDirection client input is consistently set to Input.AnalogMove for parity with old system
Merge branch 'master' into custom-client-input
Support extra types
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Early out if no managed inputs to write
Additional types
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge branch 'master' into custom-client-input
Merge fixes incompatible
Merge branch 'master' into custom-client-input
Merge remote-tracking branch 'origin/custom-client-input'
protocol++
Remove obsolete
Disable api protection unit tests (we're breaking the api now)
Api++
Remove Package.Query
Clean up + document protocol stuff in c#
Pass api protocol when querying packages
Oops, unmangle engine.def
Moved network and api protocol into src/common/protocol.h, deleted unused version stuff
This test is a bit subjective, lets give it more breathing room