1,239 Commits over 1,341 Days - 0.04cph!
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
Added typeparam docs for T in WrappedPropertySet/Get and WrappedMethod
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
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
Can send message directly to connection id and if necessary route through server and wrap in a TargetedMessage
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.
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
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
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
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
Only allow CodeGen on custom attributes. Tidy up. CallbackName for CodeGenType.Static is the actual fully qualified name of static method to call
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
Improve docs for CodeGenAttribute
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
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
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
Support CodeGenType.Instance with CodeGenType.WrapCall
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
Initial tests for static call wrap
Use Frustum instead to ensure created
Fix Vector3.ToScreen not working as it did before and breaking lots of stuff. Implement backwards compatibility and evaluate if this is the right solution later.