438 Commits over 1,371 Days - 0.01cph!
Fixed query mode Sync vars
Fix error in OnChangePropertySet if the new value is null
[Hide] IsValid on Resource so that it doesn't show Is Valid tickbox in inspector for game resources
Fix Close On Launch not being saved properly in Startup Window (Fixes Facepunch/sbox-issues#5718)
Fix logs being cleared too late when Clear Console On Play is checked (Fixes Facepunch/sbox-issues#6103)
Use safe scale in Transform.ToLocal and Transform.PointToLocal so that it cannot produce NaN or infinity values. This fixes a bug where a child of a parent with a scale of 0,0,0 cannot set position programatically without the position being infinity. It should also fix any other issues with NaN values where ToLocal is concerned (such as GameTransform) in cases where any component of scale was 0.
Don't invoke change callback when loading or deserializing (Fixes Facepunch/sbox-issues#6406)
Make sure CodeGen is using global:: for everything - add a unit test to confirm
Put LONG obsolete method back again so tests pass because someone is still using it (grr)
Restore functionality to clear interpolation over the network with new system
Re-instate these long-obsolete methods for now because something is still using one of them :(
Ensure last update is sent properly when ownership changes (Fixes Facepunch/sbox-issues#6394)
Move ChangeAttribute back to Sandbox.System but put the callback in Sandbox.Game so we don't break anything.
Upgrade ChangeAttribute to support any property not just for [ConVar], so it now works with [Sync], too. Move ChangeAttribute to Sandbox.Game so it can use TypeLibrary for CodeGenerator wrapped property stuff. Resolves Facepunch/sbox-issues#6386
More accurately synchronize Time.Now between clients. Fixes Facepunch/sbox-issues#6326 (at least with the repro they attached.)
Fixed Sync attribute / CodeGenerator wrapped properties ignoring existing modifiers (Fixes Facepunch/sbox-issues#5867)
Delta Snapshot Slots (#1660)
Only run logic in SceneNetworkSystem.OnBecameHost if scene is valid - we could just be in a lobby/party but not in-game
If GameObject isn't valid when trying to call an RPC, call the method anyway but only if we can determine that we have permission to do so - this way we can ensure RPC methods are still not called when they shouldn't be for any given user. (Fixes Facepunch/sbox-issues#6270)
Fixed an issue where if you're Small Fish and disconnect yourself from a created lobby immediately by calling GameNetworkSystem.Disconnect in OnLoad, a TCP socket would remain open preventing you from starting a lobby again. This is because Disconnect is called before the asynchronous method CreateLobbyAsync has finished, so it goes and adds/creates new sockets that never get closed.
Idea for custom writing / reading data to snapshot per component (if it overrides those methods)
Some docs
Explicit ISnapshotWriter interface
Read snapshot immediately - no need for this prop
Dispose ByteStream properly
Rename to INetworkSnapshot
Component.INetworkSnapshot - improve some docs
Fix deserializing across network when GameObject reference on a property doesn't exist on the receiving end
Better warning messages on unknown component / gameobject for RPC - try to log the RPC method name, and if unknown component the GameObject name
Don't need to use the RPC filter here this should fix Tony's issue - doing a check inside the RPC callback anyway
Fix parent setting, flush for appropriate game object only, ++
Add undo support / unsaved changes to advanced network settings
Clearer logic for these flags
Only log this message if networking debug is on
Re-enable Nagle by default, Protocol++
Component RPCs sent Id instead of type name string allowing RPCs from multiple components of the same type. Protocol++
Make sure we do include reliable transform update when changing ownership
Squashed commit of the following:
commit 76f039bef3ee819f4b5e0b34179223405196d5bd
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 15:50:41 2024 +0100
Cleanup
commit 7559957d809b94986d20f93f417f69194138782a
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 15:43:55 2024 +0100
Some logs
commit ed9cb58705a97c3889d8d7a4ef97d8895b93dc98
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 15:04:35 2024 +0100
Remove debug log
commit 91c006383091050f87ac0a75b70df02e9ac17498
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 14:54:41 2024 +0100
Remove debugging - fix spike when flushing pending updates
commit a681e665208d87bc99c82ffb9865abc24365caa5
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 14:43:32 2024 +0100
Fix flags
commit 5eee6683b66a3b38390605a1f7ba72aaf51cc68a
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 14:34:28 2024 +0100
More debug
commit f35802593b1e9af772bf91a3eb451cb6c1c6dc3a
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 14:30:52 2024 +0100
Debugging
commit 42e0e1d3d06f4cce830c530e7b2e3943b94921e4
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 12:52:35 2024 +0100
++
commit d2402c9253ef520bdea0b141a393d0baa72a8d82
Author: kurozael <kurozael@gmail.com>
Date: Tue Aug 6 12:46:25 2024 +0100
Initial commit
Actually log the result code from SendMessageToUser so can debug issues here
NetworkSpawnRemote after all NWOs from snapshot deserialized but before callback batch to ensure references exist ( Fixes Facepunch/sbox-issues#6086 )
Add global:: to generated code for attributes with CodeGenerator ( Fixes Facepunch/sbox-issues#6055 )
Branch for experimenting and fucking around with networking w/ diagnostics
Test trying to reduce packet sizes a lot
Only do parent rpc if we're network root
Change order here
Go back to reliable test
Test
Reduce initial size
Test unreliable again
Unreliable transform updates test
Prevent calling Msg_ClearInterpolation for ourselves
Fix
drop older updates
Fix
Remove this log
When flushing pending updates before RPC calls - send reliable transform update
Move net stats drawing out into system
Only flush pending updates on reliable RPCs
Some docs
Don't call set parent if we called the rpc
Call these flags Transmission maybe
Some refactor, try to branch out with convar where possible
Make internal for now
Remove net_experiment convar
Network protocol++
Send if unreliable anyway - should be acceptable it'll either drop or not
Make net_debug work in game
Remove queue system - make minimumState Snapshot instead of Connected for broadcastraw
Initial commit test
Make it not dumb
ToString override
Add name for debug
Output addr
Draw some of the info with gizmos - tho doesn't render in non-editor mode rn
Print network info cmd
net_info includes own connection
Make GetStats internal for now - could be useful public later
Use display name
Prefab instances must be updated to have at least the tags specified in their prefab (Fixes Facepunch/sbox-issues#5729)
Fixed not being able to edit these advanced networking settings in prefab editor - working around NetworkAccessor ref struct
Let's remove these exceptions - let us try to call RPCs on components that don't have a networked object root, as long as a GO and Component exists on the other end with those ids, we should allow it
Initial commit
Call flush here
Don't set to connected until Activate
Undo that
Flush for source here too
Only queue messages after Snapshot (otherwise ignore) and send when Connected. Add new docs to broadcast
By default queuedUntilState is null
Remove debug logs
Use new ByteStream( data ) instead of create w/ length then write
Optimization to remove queues when no longer required (cheers Ziks)
Remove BytePack.ISerializer from Connection for now - need to solve something first
BytePack.ISerializer implementation for Connection. Also make sure we clear Connection._mockConnections on ResetEnvironment because I think this dictionary would never clear otherwise. Remove long-time unused net_lerptime ConVar.
Byte Pack Convert - Networked GameObject, Component, GameResource References (#1618)
* Add add IBytePackConvert to a class to specify how it should be serialized/deserialized with BytePack (similar to IJsonConvert). Implement for GameObject.
* Add IBytePackConvert support to Component and GameResource
* We should be able to null these out
* Some comments on ConverterPacker to describe its use
* Let's move it out of Sandbox and call it BytePack.ISerializer - it won't be exposed to public API (for now?)
* Makes sense to rename to SerializerPacker so it matches ISerializer
* Explicit implementations of BytePackRead and BytePackWrite means we can have these non-public
* Add test for BytePack.ISerializer with MySerializedClass
* Some minor doc change
* Tidy
Only serialize NetworkMode, NetworkInterpolation, NetworkOrphaned and OwnerTransfer in GameObject.Serialize if they are not their default values