6,025 Commits over 1,614 Days - 0.16cph!
merge from softcore_tc_limit/map_icons -> main
merge from optimize_spawn_distribution_simple -> main
merge from main -> softcore_tc_limit/map_icons
Fix TCs being sent to you when on tutorial island
Fix TCs on tutorial island being sent to you (if the island isn't instantly cleaned up)
Fix other map views (MLRS, vending, etc) showing TCs on it
Fix TC label on map able to get a delete button if a network update happens when the map is open and the sleeping bag buttons shuffle
Don't build quadtree for spawn distributions that feed in a zero length array
Reimplement the tile based version of spawn distributions without the additional optimizations on top
- still saves a large amount of memory (700MB vs 780MB before)
Fix tool cupboards still showing on the map if the replicated convar for max TCs is disabled at runtime
update softcore_tc_limit/map_icons
merge from main -> softcore_tc_limit
merge from optimize_world_server_clear/maps -> main
- only the server clearing WorldSerialization maps part, not the later NativeArray changes
Refactor world.maps.Clear() -> ClearMaps()
Show TCs on the map
- only enabled when the TC limit convar is enabled
- combines TCs with sleeping bags into clusters just like bags
- can toggle TC visibility on the map with a new button just like toggling bags
- TC map icons are slightly larger than sleeping bag icons
merge from sentry_crash_timestamp -> main
Include crash timestamp when uploading to sentry
- sentry parses from the minidump but this includes it in the JSON body too
- crashes happen in past then are uploaded on next startup so we want to know the difference
Update the rest of the code to work with the new NativeArrays for mapdata
Add support to TerrainMap to return a NativeArray
Switch WorldSerialization to use NativeArray
- make sure it frees the MapData explicitly as normally the GC is collecting the managed arrays
Switch the MapData protobuf from managed -> NativeArray<byte>
Add support for NativeArray<byte> in protobuf codegen
- instead of byte[]
Fix the server not clearing unused World Serialization maps
- saves about 175MB on 4500 map
Reduce memory usage of the server's SpawnDistributions by 750MB (780MB -> 40MB) and make it 3x faster to sample (2.1 us -> 0.7 us)
- store in tiles of 16x16 values
- 85% of the tiles are all zeros (fun fact)
- tiles that are all the same value store as negative tile index so it can avoid looking up the tile (mainly all zeros)
- deduplicate the remaining tiles (saves a little more)
- palette packing on top for tiles that have mixed values (2 - 4 bits / value)
- reduces server startup time from 4s -> 2.5s
Set TC items to use the display type of "TC limit" (it's how you configure them to show TC limit when held)
Add convar to softcore gamemode prefab
- it's `max_tool_cupboards` so could technically be set on any server (but intended only for softcore)
Implement maximum amount of TCs placed IN SOFTCORE ONLY
- maximum 3 for now
- follows how the "maximum sleeping bag" system works with the amount shown on the icon & toast when you reach the limit
██ ▌▅▋▊▉ ▄▌▇▅▅▆ ▋▊ ▇▌▌▆▆▌ ▄▆▊█▅▊█▄ ▆▇▌ ▇▊▌▆▉▊ ██▋ ▋▄▉▋▉▉▇▄▌▊▆▆ ▌█▇▅ ▅▊▊▄ ▅▍▊▄▆▌ ▉▌▇▋▆▇▌█ ▅▄▋▍ ▍▉▆ █▆▉▅ ▉█▆▉ ▅▇▍▌▇▊▌▇▉█▊▄█ ▊▄█▌█▇ ▆▆█▅ ▊▅▌▊▋ ▄▍▋ ▇▆▇▆▇▆▉█▌ ▆▋ ▅█▆▉▋▋▅▅▆ ▄▅▍▆ ▋▆▇ ▋▉ ▍▄▆▊ ▋▇▋▄█ ▊▅▇▍ █▍▉ ▆▊ █▉▄▌ ▉▍▊▊▆▆▅█▅
merge from fix_memdump_logging -> main
merge from qol_spawn_vendors -> main
merge from replicated_convar_save_fix -> main
merge from fix_replicated_bag_range -> main
merge from fix_codelock_load_nre -> main
merge from qol_loadout_inventory_preview -> main
merge from fix_apartment_teammate_door -> main
merge from fix_apartment_transfer_items -> main
merge from main -> fix_apartment_teammate_door
merge from fix_custom_item_drag -> main
merge from fix_jungle_plant_water -> main
merge from fix_sentry_modded_tag -> main
merge from fix_motorcycle_dismount_order -> main
merge from fix_client_sail_wind -> main
█▍ ▊▇▍█▍ ▍▅█▆ ▆▊▌█▉▉▇▄█▋▌█▊▍▉▄▍▇▅▇▋▌▉ ▌▆ █▆▊▇