4,794 Commits over 1,371 Days - 0.15cph!
Default HasControl to true for NetList/NetDictionary in-case not set
Let's call it HostSync
Prevent actual setting of Sync property, modification of NetList, or NetDictionary if you don't have control over it. Non-owner, non-host can't change the values locally, they _must_ be what the synchronized value is
We can always set the property if network not initialized
Let''s have each entry define if it has changes now that each one can be potentially controlled by different clients. Make sure we clear changed flag on entry when reading it. NetworkTable.HasChanges will now return true if any entry we have control over is dirty
Revert that for now - let people change Sync var value locally as it was before, we can try to find a better way to prevent this later. Complication comes from INetworkCustom
When using WriteAll always write all regardless of control. Make it so unless YOU control a Sync property you can't physically change its value
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.
Add GetPlayer (by slot) and separate internal player list and players enumerable
Change lobby time temp. Comment out respawn effect for now
Use BombRoyale.Players where possible. Fix IResettable.
Make AddPlayer method instead
Change mount logic in OnPostCompileFinished, call SceneMap.OnMapUpdated regardless. Make async and add short delays
Player movespeed based on disease. Initial bomb vars
Keep list of players by slot to avoid using Scene.GetAllComponents all the time. Fully update PlayerCard
Initial health system, respawn logic
Update active state on OnAwake instead so can set initial vars immediately
Fix timeleft
Set initial lobby time to 30s
Hide pickups if player is isvalid
Add better state system
Fixed FileSystem.NormalizeFilename changing \ to // in paths instead of to /. This fixes hotloading of .scss files in regular razor Panel (PanelComponent was fine)
Add Round
Add base round states / winner props
Add round display hud integration
Add @attribute StyleSheet for all panels
Update round display when time or round name changes
Change hud screen scale. Port over old chatbox
Clamp time left
Fixed fonts (use proper name not file name)
Player spawns
Camera, Movement, Spawning, ScreenShake Port
Bomb prefab, game manager component
Player prefab
Make breakable, block into prefabs. update scene to link all the objects to prefab
Bombable
Add bombable comp
Update shader to what I think is right now
Make Hud PanelComponent - fix Lobby UI
Initial work to convert vmap to scene
Convert UI first, comment out loads of stuff that doesn't exist yet