4,794 Commits over 1,371 Days - 0.15cph!
Let's get rid of all the GameSetting/PackageSetting convar stuff now
Completely strip Saved Game functionality - re-evaluate if this is actually needed or something we want later on with the scene system though most likely easy enough for people to just do themselves now
Update CodeGenerator unit tests for new stuff
Readonly ref for Wrapped structs. Store Identity on MemberDescription. virtual method for generating identity hash, override it for MethodDescription... store global lookup for member idents. Add TypeLibrary.GetMemberByIdent. Clear members for types when assembly removed
No need for TypeIdentity to be sent now, use TypeLibrary.GetMemberByIdent for global lookup
Added typeparam docs for T in WrappedPropertySet/Get and WrappedMethod
Sent TypeIdentity in StaticRpcMsg as well to get rid of that other bs
Update to use MethodIdentity and new CodeGen callback format
Add TypeDescription.GetMethodByIdent, fix array param types not matching from codegen + methoddescription hash
MethodDescription.Identity built from return type, name, params but not fully qualified rn as hard to correlate with results from ITypeSymbol in codegen
Add support for codegen to pass methodidentity in struct, and split typename from methodname and add IsStatic as well to help differentiate properly
Initial commit / struct names not finalized
Fix .sndscape assets not being added to __references
Alternate method index using fast hash
Targeted Messages (Send to Connection Id) (#1363)
* Can send message directly to connection id and if necessary route through server and wrap in a TargetedMessage
* Forward sender id in targeted message, when received by intended recipient call message handler with sender connection
Forward sender id in targeted message, when received by intended recipient call message handler with sender connection
Fixed sending wrong method index
EditorBrowsable attr for WrapStaticMethod. Throw inside FindMethodIndex etc
Build method index cache over time
Fix invalid method usage
Can send message directly to connection id and if necessary route through server and wrap in a TargetedMessage
If not host broadcast otherwise send directly to owner
Moved copy/paste component stuff. Can right click GameObject inspector to paste component as new. Accept mouse event when opening context menu for component sheet to prevent passthrough. Set accepted on a bunch of OnContextMenu stuff to prevent passthrough. Add undo support / edit log for removing a component.
Copy Component/Paste Values/Paste As New
Undo Support
Use EditLog
Merge pull request #60 from Facepunch/copy-paste-components
Copy Component/Paste Values/Paste As New
Only actually add attribute members if they'd be used (target function accepts them)
CodeGen method wrap target function can (optionally) have first parameter be the specific wrapping attribute or an array of Attribute[] which would contain all CodeGen attributes on the method being wrapped
Fixed previous commit test breaking for supporting internal/protected/private where possible in method validation for wrap method/properties...
New way to validate method availability for method wrap/property wrap - this picks up internal / private / protected methods and checks containing type against that type to determine accessibility. tl;dr lets you in most cases use private / protected / internal methods as the target function for wrap without it complaining
Support params object[] when validating method for CodeGenerator.WrapMethod
Add test for CodeGeneraror wrap method with no arg. Fix wrap method with no arg causing syntax error in generated code.
Add support for moving multiple selected GameObject nodes in the hierarchy
Copy Component/Paste Values/Paste As New
Don't clear selection when selecting empty GameObject field in inspector Fixes #1329
Unmount/Re-mount Vpk After Map Compile (#1309)
* Initial commit
* Test mount/unmount VPK methods
* Remove file extension when passing to Mount/UnmountVPK
* Use ChangeExtension instead as apparently this preserves the path...
* Fix IsVPKMounted check not working
* Fix docs
* Use correct log channel
* Rename to OnPreCompileFinished + OnPostCompileFinished
Rename to OnPreCompileFinished + OnPostCompileFinished
Stash PoC code for reference (temp)
Test mount/unmount VPK methods
Remove file extension when passing to Mount/UnmountVPK
Use ChangeExtension instead as apparently this preserves the path...
Fix IsVPKMounted check not working
Add Gradient type, editor, tests
https://files.facepunch.com/garry/de833785-fe3d-4cc9-b27a-035df8705130.png
Don't hit gizmo hitbox if too close
FloatControlWidget observes [Range] attributes, creates a slider
https://files.facepunch.com/garry/64940736-605c-4d7f-a7f7-5d20c1427fa2.png
Add SceneModel.AnimationGraph
New Outfit Piece! - Chef's Skull Cap
https://files.facepunch.com/daniel/1b1711b1/R8fCJOhbSd.jpg
LODs coming ASAP
Fix leaked resources when CSwapChainDx11 is resized
Before: https://files.facepunch.com/matt/1b1711b1/Taskmgr_mvUnDuMcc1.png
After: https://files.facepunch.com/matt/1b1711b1/Taskmgr_fd19SDW3Xa.png
CSwapChainVulkan also flushes scratch rendertargets on resize
Add PhysicsBody.AddShape() which takes a Hull and transforms it
Fixed check for if this is first time assembly is enrolled
Call TriggerRegisterEvent before OnHotloadSuccess
This makes sure that TypeLibrary knows about the new assembly before
things like EntityManager.OnHotloaded() get called.
Recycle shadow depth texture if requested atlas is of same size, remove code for unused mask texture
Hammer uses same shadow atlas as everything else
If there is no current game, generate s&box.sln (fixes sbox/issues/1302)
Clean release build at 1am every day
Fix bloom being enabled by default
Add ProjectCookie, to save cookies relative to a specific project (like last opened scenes etc)
artifact game log files when running test
Write s&box.sln in unit test proper
See if we can convince it to compile editor addons during test
KeyBindWidget: Fixed using the wrong code for middle/right mouse button
Plumb in a fix for EntityPrefabEditor entity selection
Flush managed rts the same time native wants to, stops those huge temporary vram spikes when resizing scene editor
Fill out SceneParticles
Chef outfit LODs
Hair-net White variation
Add NavigationPath.GetPositionAlongPath
Add Gizmo.Draw.SolidTriangles
Remove all the Msg'ing when generating a navmesh
Merge branch 'master' into map-build-fix
Codegen Attributes (#1299)
* Initial tests for static call wrap
* Finally sort of got somewhere... bit of a nightmare to debug this right now. Allow multiple CodeGenAttribute. Remove from ClientRpc and add some tests locally instead
* Support CodeGenType.Instance with CodeGenType.WrapCall
* Added first version of WrapSet/WrapGet
* Unit test stubs
* Don't pass value for get accessor..
* Cast to original return type in get accessor when wrapping
* Tests build
* Let CodeGenType.WrapCall proxies return their own values. They can simple do "return resume();" if they wanna keep intended behavior, so we can also wrap methods that don't just return void
* Fixed a bug with static set/get wrap codegen not passing correct method name. Now support also adding [CodeGen] attributes directly to a method or property bypassing an attribute alias, these don't require setting the Instance/Static flags.
* Use nameof where possible
* Fixed tests for WrapSet/WrapGet
* Improve documentation
* Improve docs for CodeGenAttribute
* More documentation
* Fixed logic in WrapSet
* Added method validation. Compiler will let you know what methods you're missing when using CodeGen and what types, return types etc they need
* Add some extra tests
* Only allow CodeGen on custom attributes. Tidy up. CallbackName for CodeGenType.Static is the actual fully qualified name of static method to call
* Auto generate backing fields for properties. Pass current value in WrapGet callbacks. Set backing field before calling WrapSet callbacks. Update method validation error prints appropriately
* Fixed ValidatePropertyCallback
* Can now propertly wrap setters/getters. Setter callback passes Action<T> you can call to run default behavior
* Fix error if value statement empty
* Update tests
* Fix TestWrapSet
* Run WrapSet and WrapGet if both are specified. When passing to static callback always pass propertyName or methodName as fully qualified name.
* Support type argument for return type and Func param
* Nicer error when can't find type to invoke on for passed callback name
* CodeGeneratorFlags/CodeGeneratorAttribute renaming
* Update tests
* WrapPropertySet, WrapPropertyGet, WrapMethod
* Fix tests + fix issues with props that only have set; or get;
* No need to wrap getValue() body in {} as already have them
* Use SemanticModel.LookupSymbols to find and validate methods taking inheritance into account
* Remove leftover test code
Remove leftover test code
Fix tests + fix issues with props that only have set; or get;
No need to wrap getValue() body in {} as already have them
Use SemanticModel.LookupSymbols to find and validate methods taking inheritance into account
WrapPropertySet, WrapPropertyGet, WrapMethod