5,906 Commits over 1,584 Days - 0.16cph!
Use AddRange() to add converters instead of foreach and Add() per converter
Fix Hash128 and LayerMask incorrect parsing from breaking the rest of the document
Add tests to prove that the code doesn't allocate (not just that it works)
Fix so ints can read float values again (that's the way it used to work before)
merge from main -> optimize_json_garbage
merge from crash_uploader_error_code -> main
Log HTTP error code to console / logs when the crash fails to upload
merge from main -> base_occlusion
Fix individual edits causing more faces to be marked dirty than needed
Optimize worst case pass of the multiple exterior detection so it doesn't balloon execution time
Ok fine allow buildings to define multiple exteriors
- even though theoretically there can only be a single exterior per base it gets funky in it's current implementation when not all building blocks are handled by base occlusion so you can have separate sections of a base that aren't connected with faces but are both outsides (example: connecting external TC with ramps)
Exclude high walls from room occlusion (since they are always considered outside structures)
Fix bases being able to define multiple outsides of the base
- collapse to a single outside when interior rooms incorrectly are flagged as interior
Make remote controlled entities (turrets, drones, cameras) have base occlusion disabled
- will enable it for RC entities when we do the push to get rid of the minimum 30m occlusion distance to make it work for anti-ESP, for now lets keep it simple and skip since RC entities are used for <1% of gameplay
merge from base_occlusion -> main
500 extra bases from the server save
- add room.exportpastes <folder> to convert a folder of copy paste files (aka the server save) to the test format base occlusion expects
- add support for base occlusion tests to work across multiple directories of test files (so we can keep the test bases organized)
Fix refreshing faces being able to go above 1,000 depth, use a queue instead because initializing a large base can go over the limit
Fix unity toolbar extender ui toolkit causing focus as well on domain reload
Fixed the game window grabbing mouse + keyboard focus when running tests
- should only show the window, not grab focus
Improve base splitting
- filter out external TCs and small structures so it only exports proper bases
Add ability to copy paste to import entire saves and output a different copy paste for each base
- fix deployables clipping through doors being hidden when an exterior door closes
- fix entity destroy message sometimes being sent before network group switch happens (when repartitioning base)
merge from base_occlusion -> main
Fix compile error (even though it's editor only it still can mess up editor if it switches realms)
merge from base_occlusion -> main
Fix formatting of Visibility.cs
merge from main -> base_occlusion
Fix room export tool not writing to the temp directory in the editor
Mark the room exporter (base -> JSON) as editor only
- used so we can run tests on bases without having to spawn the entire base (which is slow)
Disable TCs from room occlusion
- if you hide the TC from the client then you don't know if your authed on the base
- re-enable later once we move auth networking out of the TC itself (we could only network to players authed but then we still need to know if a TC is attached to a building)
Set room occlusion and the admin bypass for it to be saved in editor
- avoid us having to keep turning it on & disable the admin bypass every time we enter play mode but keep the feature disabled by default in standalone builds
Add support for convars to only be saved in the editor
merge from main -> base_occlusion
▌▍ ▉▊▇▇▆▆ ▄▄▍▋▅ ▋▊▌▌▋ ▉▇▋▋▊█ ▉▍▊▊ ▌▅▉▆▉ ▊▉▌▉▆▋█▅▅▊▆▄▍ █▄▌ ▌ ▋█▆▍▌▄ ▇▅▅ █▋ ▉▇▌█▊▅ ▉▅▌ ▆▊▍▅▆ ▊▄▇▇▉█▉▋▄ █▄▄ ▊▋▉ ██▅▇▊▉▌▋▋▇ ▋▍▌▄▉▅█▄▋▆▍▍▋ ▉▍▆ ▌▇██ ▊▉▋▊▇▌▉▊ █▊▌▇▊▍▌▉ ▊▋▉▆▉▍ ▍▉▉▉▊▉ ▇█▋█▆▇
Optimizations
- add spatial grid for rooms (just like network grids) so we don't murder performance networking every room within 32m (because we actually testing this large scale now, not craggy)
- fix every room being checked on the server instead of only the room that the entity was deleted from
Make sure that disabling room occlusion after enabling it cleans everything up
- we want all face definitions to be destroyed after disabling so we can re-initalize everything properly
- if initialization fails, only try once instead of getting stuck trying every frame
Add base occlusion to runtime profiling so we can monitor how much main thread time it spends on room occlusion per frame
Improve the warning if the spatial network grid IDs will overlap the reserved room ids
- change the encoding from hardcoded values to constants (confirmed behavior is identical)
Make room network group IDs static similar to the other reserved values instead of instance field
- first 1024 IDs are for global groups
- last 6.5M IDs reserved for base occlusion