branchrust_reboot/main/syncvarscancel

115 Commits over 120 Days - 0.04cph!

17 Days Ago
Find queue/send method properly (search parent class) Don't pass byte - cant append that OpCode unless its an int
17 Days Ago
Use Cecil for SyncVar weaving. Boostrap weaving on domain reload Properly map depdency paths Include unity modules Better timing to avoid race conditions
18 Days Ago
Attempts to better filter what files are pushed for weaving Better Diagnostics Cleanup GenerateResult (Just generate pe and pdb output streams in method before writing to them)
18 Days Ago
Scrap Source Generator - Try IL Weaving instead
18 Days Ago
Moved to new project -> Rust.SourceGenerators.SyncVar Fix legacy shelter mini example
19 Days Ago
main -> syncvars
19 Days Ago
Throw error if greater > 31 packed SyncVars New Implementation is done! 🎉
19 Days Ago
Fixed SourceGenerator not throwing errors properly when looking at field name (invalid string/uppercase starting string)
19 Days Ago
More code cleanup
19 Days Ago
Add support for Pack=True/False. Unpacked SyncVars are sent immediately when changed.
19 Days Ago
Removed old SyncVar implementation
19 Days Ago
Successful queue, sending and receiving on new code generator implementation. Stripped out another overhead byte not needed with our new solution. Generate byte table inside code generator. Developer > 2 logging support. Safety with property setter on the client (throw an exception). Few more Diagnostics error throws (class > 256 syncvars, Base Class == BaseEntity). Try & Catch on Syncvar replicate. Time to fully rip out the old solution.
20 Days Ago
Missed Files - Code Analysis Dependencies
20 Days Ago
Roslyn Compiler setup for SyncVars working (auto property generation) Not adding to queue etc yet. Seperated .csproj to seperate directory since Unity keeps forcing .NET Framework
21 Days Ago
Setup syntax receiver
21 Days Ago
Implemented Microsoft.CodeAnalysis via plugins instead (fetched nuget dlls from external project)
21 Days Ago
Include Microsoft.CodeAnalysis Initial Source Generator setup
22 Days Ago
Give queue back to the pool if its empty (after sending)
22 Days Ago
Fixed bitmask read using too small a bit count
22 Days Ago
Code cleanup
22 Days Ago
Remove client -> server syncvars
22 Days Ago
main -> syncvars
28 Days Ago
Generation fixes
28 Days Ago
Allow sending sync vars to specific players Correct send info from client -> server
28 Days Ago
Turn packing off by default (this is so the server can send packets to different endpoints, eg player x, or y)
28 Days Ago
Protobuf support for sync vars
28 Days Ago
Throw error if too many sync vars are defined
28 Days Ago
Developer logging and disconnect/kick for incorrect replications on both client/server
28 Days Ago
Some fixes for client authoritative queue packing
28 Days Ago
Seperate client and server packing queues due to listen servers messing everything up Client now uses packed sending Cleanup
29 Days Ago
Batching system when sending packed sync vars. If all packed syncvars require a larger bitmask then split it over multiple send cycles
29 Days Ago
Swap syncvar system over to using bytes rather than ushorts. We will never reach max 255 per entity as the current queue limit is 32 (due to the bitmask), even if we split the queue its fine
29 Days Ago
Server receive packed sync var methods
29 Days Ago
main ➡️ syncvars
30 Days Ago
Ensure child classes of SyncVar are picked up in SyncVar Codegen Initial profiling pass. Virtually no memory overhead for send/receive, and very little for the queue (pooled)
30 Days Ago
Fix non packed syncvars attempting to use the cheap int ids used with regular packed sync vars (will try and incorporate this before release)
30 Days Ago
Locally cache a reference to queue sending action for each entity that needs it - use that for invoke repeating and cancel invoke
30 Days Ago
Cleanup start/stop queue methods Return hashset to the pool on stop
30 Days Ago
Conditional sync vars now force sending. We use force here due to memory. onditionals could be added to the queue for specific values, and then by the time the queue processes it the value may have changed. Invoking force prevents us from having to maintain a dictionary of values for every entity
30 Days Ago
Server -> Client Syncvars properly syncing up via a fixed repeating queue Cancel repeating invoke on entity destroy Bitmask setup as a uint - 32 sync vars max per class
31 Days Ago
Some minor fixes Experimenting with different queue implementation
31 Days Ago
main ➡️ syncvars
32 Days Ago
Setup queuing and packing methods. SyncVars are added to each entities queue. Setup Sync() and SyncImmediate(), behaves similarly to SendNetworkUpdate() and SendNetworkUpdateImmediate() Setup standardised getter method to retreive sync vars current values without using reflection or any pre existing list.
32 Days Ago
Swap syncvars to send shorts instead. (Id is class relative so no problem with duplicates)
32 Days Ago
Equal, do not subscribing to delegate. Reduces some allocations.
32 Days Ago
Pregenerate field name ids rather than running it through string pool at runtime Very initial setup to support packed syncvars
32 Days Ago
Fixed client write and send methods trying to use server write and send Fixed server recieve method being hooked up wrongly
32 Days Ago
Can mark SyncVars as [ClientAuthority] This changes the ifdef blocks used in the resulting replicate and sync methods Changed test code to include a client -> server Syncvar
32 Days Ago
Add server receive methods Add CLIENT & SERVER preprocessor tags in generation step
32 Days Ago
main ➡️ syncvars