1,298 Commits over 1,371 Days - 0.04cph!
NetworkTable.Entry.HasControl test. Separate sending network table changes from main update. Host or Owner can send table changes (only send entries they _control_)
Network Authority / Permissions (#1457)
* Can a connection create objects?
* Send network destroy even if DestroyImmediate is called
* Ownership authority flags
* Let GameObject have [Sync] too (test)
* Reorder enum, add [Expose]
* Change up logic for can create objects - only check if we have a source
* Default CanCreateObjects to true for now (this is current behavior)
* Initial implementatior for ownership authority
* Use NetworkAccessor for changing ownership authority. (Temp? Depending on review) don't use TL for set prop for Sync Vars
* Initial implementation of Rpc authority
* Remove a test log
* CodeGen static array for attributes on a CodeGenerator method/prop now marked as [SkipHotload] and readonly, so they do update when changed
* Make it CanSpawnObjects
* CanSpawnObjects settable only by the host
* Some renaming. Set OwnerTransfer direct on GameObject instead of method on NetworkAccessor
* Make sure CanSpawnObjects is synchronized to clients when set from host via ConnectionInfo
* Default CanSpawnObjects to true for now
* When OwnerTransfer is Request, make actual requests to the host for Drop/Assign/Take ownership and if host approves, then host will send the messages to everyone to take that action. Each message will then validate if was received from host
* Remove this for now, sus is later
* CanSpawnObjects is always true for the host. Early out in NetworkSpawn if local connection can't spawn objects - why bother trying at all?
* NetworkAccessor.SetOwnerTransfer method
* Documentation fixes
* Rename Rpc.HasAuthority to Rpc.HasPermission for consistency
* Owner can always drop ownership
* Allow owner transfer changing from current owner
Allow owner transfer changing from current owner
Owner can always drop ownership
Rename Rpc.HasAuthority to Rpc.HasPermission for consistency
NetworkAccessor.SetOwnerTransfer method
CanSpawnObjects is always true for the host. Early out in NetworkSpawn if local connection can't spawn objects - why bother trying at all?
Remove this for now, sus is later
When OwnerTransfer is Request, make actual requests to the host for Drop/Assign/Take ownership and if host approves, then host will send the messages to everyone to take that action. Each message will then validate if was received from host
Default CanSpawnObjects to true for now
Make sure CanSpawnObjects is synchronized to clients when set from host via ConnectionInfo
Some renaming. Set OwnerTransfer direct on GameObject instead of method on NetworkAccessor
Can a connection create objects?
Send network destroy even if DestroyImmediate is called
Ownership authority flags
Let GameObject have [Sync] too (test)
Reorder enum, add [Expose]
Change up logic for can create objects - only check if we have a source
Default CanCreateObjects to true for now (this is current behavior)
Initial implementatior for ownership authority
Use NetworkAccessor for changing ownership authority. (Temp? Depending on review) don't use TL for set prop for Sync Vars
Initial implementation of Rpc authority
Remove a test log
CodeGen static array for attributes on a CodeGenerator method/prop now marked as [SkipHotload] and readonly, so they do update when changed
Make it CanSpawnObjects
CanSpawnObjects settable only by the host
Can a connection create objects?
Send network destroy even if DestroyImmediate is called
Ownership authority flags
Let GameObject have [Sync] too (test)
Reorder enum, add [Expose]
Change up logic for can create objects - only check if we have a source
Default CanCreateObjects to true for now (this is current behavior)
Initial implementatior for ownership authority
Use NetworkAccessor for changing ownership authority. (Temp? Depending on review) don't use TL for set prop for Sync Vars
Initial implementation of Rpc authority
Remove a test log
CodeGen static array for attributes on a CodeGenerator method/prop now marked as [SkipHotload] and readonly, so they do update when changed
Make it CanSpawnObjects
CanSpawnObjects settable only by the host
Copy tags from GameObject for Legacy Particle System -> SceneObject
In ParticleSpriteRenderer make sure we copy over tags from the GameObject to the SceneObject
Internal ReadOnlyTagSet
Parse kv tags into ObjectEntry.Tags and use them in SceneMapLoader to set any created sceneobject tags
Copy tags from SceneObjects to MapObjectComponent GameObject
Add some default tag from Hammer, light, text, particles
Fix NRE
Set some default tags for Particle and Light and Skybox components
Better light tags
CanSpawnObjects settable only by the host
Remove a test log
CodeGen static array for attributes on a CodeGenerator method/prop now marked as [SkipHotload] and readonly, so they do update when changed
Can a connection create objects?
Send network destroy even if DestroyImmediate is called
Ownership authority flags
Let GameObject have [Sync] too (test)
Reorder enum, add [Expose]
Change up logic for can create objects - only check if we have a source
Default CanCreateObjects to true for now (this is current behavior)
Initial implementatior for ownership authority
Use NetworkAccessor for changing ownership authority. (Temp? Depending on review) don't use TL for set prop for Sync Vars
Initial implementation of Rpc authority
Clear watcher var after dispose
Fixes Facepunch/sbox-issues#4725 - Fixes a bunch of issues with SCSS hotloading. Style sheets weren't actually being removed when deleted or changed. Clear previously loaded style sheets properly on hotload. Properly update when stylesheet is added after it had tried to be loaded before.
Change mount logic in OnPostCompileFinished, call SceneMap.OnMapUpdated regardless. Make async and add short delays
Fixed FileSystem.NormalizeFilename changing \ to // in paths instead of to /. This fixes hotloading of .scss files in regular razor Panel (PanelComponent was fine)
NetList, NetDictionary (#1447)
* Initial commit
* Make NetworkTableContainer into an internal interface INetworkTableContainer. Use explicit interface implemention to keep members from being exposed to public API.
* Add some exception handling
* Let the INetworkTableContainer handle writing/reading whether it's only changes or a full update
* Backwards compatibility for IList and IDictionary but it isn't ideal so throw a warning to use NetList and NetDictionary
* Fix some documentation. Add ExchangeNetList test. When new instance of NetDictionary or NetList is created, add Reset change immediately. We want clients to know it's completely changed.
* Add appropriate unit tests
* Fix for hashcode
* INetworkCustom. Add tests for NetList, NetDictionary.
* Add example usage
* Better formatting
Initial commit
Make NetworkTableContainer into an internal interface INetworkTableContainer. Use explicit interface implemention to keep members from being exposed to public API.
Add some exception handling
Let the INetworkTableContainer handle writing/reading whether it's only changes or a full update
Backwards compatibility for IList and IDictionary but it isn't ideal so throw a warning to use NetList and NetDictionary
Fix some documentation. Add ExchangeNetList test. When new instance of NetDictionary or NetList is created, add Reset change immediately. We want clients to know it's completely changed.
Add appropriate unit tests
Fix for hashcode
INetworkCustom. Add tests for NetList, NetDictionary.
Add example usage
Better formatting
Use EverythingInSelfAndDescendants when finding INetworkSpawn components
INetworkCustom. Add tests for NetList, NetDictionary.
Add [ImageAssetPath]
fix SerializedCollection NRE
Fix MemberDescription.HasAttribute not finding base attributes
Convert TextureEditor to use Sequences
SequenceControlWidget has popup instead of doing it all horribly inline
Fix SerializedObject changes not propagating upwards
ResourceStringControlWidget cleanup
Use new Sequences json for amalgamated texture
Expose some sheet access on texture
Simplify amalgamatedtexture packing, less likely to infinite loop, loads from json
Add TextureFile sequence `IsLooping `
Can use particle SequenceTime easier
Remove parse_mks.cpp
Delete mks importers (everything should use our way now)
Use gizmos for physics debug draw lines for when I need it
Comment out early out in capsule vs hull deep penetration until I get the proper fix
Implement joint breaking, break callbacks called on post step, breaking a joint disables the component
Support joint breaking on prismatic, revolute, rigid, spherical
Add EditorUtility.OpenPropertySheet
https://files.facepunch.com/garry/c9f2b5cb-f6bb-4895-a401-346d1dbf939c.png
Set qt darkmode=2 so windows will follow system theme (I think)
Add ControlObjectWidget
Add [KeyProperty]
Add KeyProperty to TextureSequence.Source
ControlWidget will create an editor for unknown types (this will likely need locking down)
Assume test mode will want rendersystemempty
Right now our tests machine doesn't have a GPU attached, for d3d11 it's fine since this runs over D3D11 Warp renderer, but not on Vulkan.
Change this if we ever do graphics tests on CI.
Running locally our tests pass fine without it
Fix QPainter was null when calling setPen errors
CompileProgress tests (doesn't work)
Fix asset browser file type size
Fix NRE in GenericControlWidget
Add BaseLayout.AddLayout<T>
Add ControlSheet.AddProperty
SerializedCollection elements return attributes of parent
SoundFileCollection doesn't use PropertySheet
VR: Fix vulkan submit, submit depth texture to compositor
VR: Update overlays from the render thread, because SetOverlayTexture might touch vulkan queue
Forward InputData and VROverlay through to Sandbox.Game to preserve compatibility
VR: Minor VROverlay cleanup
VR: Fix VROverlay xml comment
Citizen/animgraph: change the swimming 2D Blendspace from Z/X to Y/X, it was an interesting idea that unfortunately didn't pan out
Re-compile ui backdrop filter shader w/ SPIR-V block
VR: fix LOD rendering, remove bVr from CFrustum::ComputeScreenSize
Citizen/animgraph: made vertical swimming work, it's janky as hell, but at least it's reflected visually; becoming increasingly clear that this state will need custom code on the controller side
https://files.facepunch.com/maxlebled/1b2411b1/2024-01-24%2018-50-19.mp4
Fix izQueryFaceDirections using the max instead of the min distance for face separation
Fix HitPosition for Trace.Sphere https://files.facepunch.com/layla/1b2511b1/sbox-dev_CvSjg1QMpX.mp4
This should probably just be the radius of the input shape, not both
Add Skybox support to Render Tags - good for View Model Camera where we don't wanna render the skybox, or usually anything but things with a viewmodel tag
Do the same for 2D skybox
Merge branch 'master' into nt-container
Do the same for 2D skybox
Add Skybox support to Render Tags - good for View Model Camera where we don't wanna render the skybox, or usually anything but things with a viewmodel tag
Add appropriate unit tests
Backwards compatibility for IList and IDictionary but it isn't ideal so throw a warning to use NetList and NetDictionary
Fix some documentation. Add ExchangeNetList test. When new instance of NetDictionary or NetList is created, add Reset change immediately. We want clients to know it's completely changed.
Let the INetworkTableContainer handle writing/reading whether it's only changes or a full update
Add some exception handling
Make NetworkTableContainer into an internal interface INetworkTableContainer. Use explicit interface implemention to keep members from being exposed to public API.
In ByteStream.Read/WriteValueArray, use Enum.GetUnderlyingType when using Marshal.SizeOf if the type is an Enum type. This is because Marshal.SizeOf will error when used with Enum types directly. Fixes Facepunch/sbox-issues#4579
Be able to get object from CodeGen wrapped prop/method
Add GameObject.NetworkSpawn, obsolete Network.Spawn (redirect)