3,102 Commits over 915 Days - 0.14cph!
Tests showed missing ushort overload
Expand tests to cover all overloads of EventRecord.AddField()
Add overloads without any key for CSV
Change existing overloads for BasePlayer, BaseEntity, etc to use the new 2 string key overloads instead of new EventRecordField(key1,key2)
Add a bunch of overloads that take two keys and concat them later with zstring instead of having to manually add new EventRecordField( key1, key2 )
Merge from gizmo_light_occludee_nre
Fix NRE when gizmos are enabled from LightOccludee.cs
Merge from analytics_zstring -> main
Fix compile error from merge
Merge from main -> analytics_zstring
merge from runtime_profiling_disable_pooling -> main
Merge from main -> runtime_profiling_disable_pooling
Actually test that the values of each field of the JSON or CSV value match to confirm all the serialization and escaping is correct
Ensure escaping handles both JSON and CSV rules differently (assuming the CSV is always comma seperated)
Simplify overloads for byte,short,etc -> long
Mark AddField(string,char) as unsupported instead of silently casting to int
Escape all CSV columns with double quotes
Added tests to confirm serialization works
Fix DateTime formatting having to use 'O' instead of 'o'
Switch WebAPI serialization using ZStringWriter instead of Utf8ValueStringBuilder
Switch from StreamWriter to Utf8ValueStringBuilder
- ensure the struct is passed by ref
- Clear() instead of creating a new one for each upload
Remove TMP extension overwrites because our TMP is outdated and it won't compile
merge from main -> monument_scenes
Merge from main -> monument_scenes
Merge from hot_reload_unity -> main
Merge from hot_reload_unity -> main
Add hotreload package manually since specifying the package link requires a git client on PC
Merge from main -> monument_scenes
Merge from hot_reload_unity -> main
Merge from main -> hot_reload_unity
Merge from main -> hot_reload_unity
Combine `isFlushing` and `invalid` bools into single `disposed` bool
Add `UsePooling` convar that allows you to turn pooling on and off for bulk uploaders
- default to false to help debug why multiple types of events are uploaded to the same file
Include serverid in uploaded path so we can see which server is sending errors inside ingest failures
Sends raknet stats per connection (including throttling) to runtime profiling every 1 second
- iterates through 30 connections per frame but waits for up to 1 second to start looping again
Include byte[] pooling stats for networking
Flush memory pool size every 5 minutes for runtime profiling
Fix a collider's cached monument not being invalidated if the collider moves
- no evidence of this happening but best to be safe
Rename `MonumentColliderTag` to `CachedMonumentComponent` to make it a lot clearer what it does
Add `GetOrAddComponent()` to ComponentEx instead of using the VLB namespace
Merge from fix_reserved_slots_joining -> main
Fix reserved slots being added when you left the queue after joining a server
- supposed to only be reserved when you disconnect after getting past queue
Add ReservedSlots to serverinfo command
Merge from event_record_pool_increase -> main
Increase EventRecord pool size from default of 512 -> 16k
Merge from fix_reserved_slots_expiry -> main
Fixed reserved slots not expiring until a player joined the queue (or server) without a reserved slot
Fixed a player able to use expired reservation to join (incase the first fix doesn't work)
Merge from rcon_commands -> main
Include more information on each connection
- number of messages sent, recieved and broadcast
- connection duration
Add `print_rcon_clients` command to print a list of all connected RCON clients
Merge from runtime_profiling_rcon -> main
Log rcon as part of runtime profiling
- commands executed
- number of connected clients
- rcon commands ran each frame
- successful or failed RCON connections
- execution time of RCON commands per frame
Reference pooling to Facepunch.Rcon assembly so Rcon stats can be pooled