1,646 Commits over 427 Days - 0.16cph!
Clean: fixing various whitespace issues and unused "using" statements
Tests: compiles in editor
▆▉▋▍▇: ▅▊▇▇ ▅▇▍▄▌▍▊▉ ▆▋▇ ▍▍▌▌▌█▉▋.▋▋▌█▊▇▋█▊▅▉▌█▋▄▆▇
▆▋█▋▉: ▋▄▇▆, ▌▆▊▌▄▌▊ ▍▊▊▇▍▇
Merge: from main
Tests: ran unit tests
Update: add profiling scopes to search-component parts of GamePhysics.CheckSphere<T> and CheckCapsule<T>
This is a slow path if there are many terrain/water volumes being hit
Tests: none
▌▌▉▉▅: ▅▉▇▇▆▉█▄▉▋▊▌▇▇▅▋▍▅▆▇▆ - ▋▋▇ ▌▍▆▅▍▅-▋▇▆▌▋▅▆ ▌█▍▅▇▆▅
█▍▌▋▄: ▊▌▊ ▆▅▍▇ ▋▍▉▇▇
Tests: GamePhysics tests now contain cases with both water and terrain ignore volumes
This is kind of a bug fix, since it wasn't testing both paths, but ah well
Tests: ran unit tests
▋▊▋▊▇: ▊▋▆▌▋▊▇▆█▍▅▅▌▆▉▆▄█▌▍▊ - ▇▇▆▊█▅ ▉▌▋▉
- ▄█ ▅█▄▅▉'▍ ▋▊▍▅▋▍ █▄▋▅▌▋▅▌ ▋ ▊▇█ ▄▆▇█ ▋█▋▇▄▋▋ ▋▉▄██
▄▆▊▅▉: ▆▅█▇
▅▅▆▉▄▆: █▋▆▍▍█▌▌.█▄▄▋▄▊▉▋▊▄██▄ - ▆▌▉▉ ▌▉▊▍ ▇▍ ▄▆▊▆▋ ▋█▅▆▆ ▄▆▆▌▋▅▅▌▇▉▅ ▅▊▆▆▍▊ ▇▄▌▅▌▄▄ ▄███▌
▄▅▍ ▅ ▅▍▍, ▉▊▌▊▇▌▊ ▋'▋▍ ▊▇▍▋▄▄▄ █▄▅▅ ▅▌▆▋▋▄▆▇ ▆▍█▆ ▇█▍▉█ █▇▆▆ - ▆▄▌ ▄█▄▍ ▅▌▋ ▄▋'▋ ▇▌▉▍▊ ▌▇█ ▉▍▅▅▊ ▇▅▉▊▍ ▋▍ ▌▍▌█
▊▇▍▆▆: ▇▆▇█, ▉▄▅▍█▌▉ ▌▌▋▄▊▍
▊▌▉▇▊: █▄▆▅▉▅▊▅.▇▋█▊▅▄▆█▉█▋▇▋ - ▅▉▉ ▋▆▉ ▅▊ ▊▇▅▇▅▄██▅▇▊ ▇▍▄▅▅
- ▋▇█▍ ▊▄█▋ ▄▌ ▆█ ▋▇▇▊█▉▊█▆▆ ▄▍▋▍▇▅ ▅▍▌▅ ██▄▍▅▅▄▉ ▌▇▇▆▌▄
▋▌▍▄▍: █▇▋▌, ▉▆█▅▊▊▆ ▊▄▍▅▄▇
▉▆▅▍▋: ▊▅▆▌▌▋▄▋.▆▇▅▌▍▄█▅▄▅▄▅█ - █▇▍ ▅█▄ ▇▊ ▍▆█▄▋▍▍▍▄▄▉▊▆▄▍ ▌▉█▍▉▆ ▉▅▅▋▆
- ▆▋▆▊▇ ▊▋▅ ▇▅▊▋▅▄ ▉▆▄▄ █▉ ▆█ ▇▅▊▄▄▋▇█▄▇ ▆▉▋▅▊▇ ▋▍▍▄ ▊▌▅ ▋▆▍▄▍
█▅▊▆▍: ▋█▅▄, ▆▊▍▌▍▄▇ ▉▉▇█▊▋
Clean: remove unused NativeList
Tests: none, trivial change
▍▆▆█▉: ▉▄▋▍▆▉▊▍.▊█▋▌▉▌▋▆▇▍▊█▍█▄▄▉ - ▍▆▉██▍▊ ▆▉▍▉▍▄▆▌ █▌▍▆▍▋▆▌▅▌ ▉▇▊▍ ▉▅▍▋█ ▇▇▄▉ ▅▉▅▊▍▌▆▆▇▊▋▍▅▉▋▅▌▊ ▇▇▉▍
- ▊▄▆▄▌▉▆ ▉▍▉▇▇▋▋▌▅▆▄▍▉▆▊▍▍ █▉ ▆▊▊▊▄▊▍▆▍▅▇▍▍▊▍▋▊▅
▊▌▋▍▆: ▊▇▆█ ▄▊▍▄▆
▌▊▌▄▊: ▌▅▋▋▉▄▄▉.▊▄▉▄▇▋▍▍▌▉▍▆▋▋▋▉ - ▍▅▊▋ ▇ ▌▌▄▍▆ ▌▄█▌▄▌▋▅ ▌▄▊█▇█▋█▄▄ ▍▋▍▄ ▇▆▌▇█ ▇▆ ▌▆'▉ ▅▄▍ ▍▉▍▉▄▉▉▌
▊▌█▌▆: ▄▍▋ ▋▄▅▆ ▋▊▅▄▋
▋█▄▅▌: ▇▇▋▆▄▅▍▌.▉▆▄▇▌▊██▌▍▉▌▅▆▆█▋ - ▊▊▅▆█ ▊▊▅▉▉-▍▇▉▊ ▋▅▌▌▋▅
▄▉▉▍▊ ▍.▉▉▆ ▋▄ ▄▇▉ ▇▉▌▉▅▉▇▅
▆▄█▅▆: ▇▋▊▇ █▉▆▊▅
▋▌▊▋▍: ▉█▋▄▆▊▇█.█▌▋▉▊▊▊▅▇▉▌▊▌▉▄▌▄ - ▍▄▇▆▋▉▄▌ ▆██▋ █▇▊█▅▋▉▌▋▊▄
▉▆▇▇▌: ▄▄▄▇ ▍▍▇▉▄
Clean: removing dead code
Tests: compiles
Update: add GamePhysics.TraceSphere and TraceSphereUnordered
- added GamePhysics.Sort(NativeArray...)
- replaced some inline code with TraceSphere call
Works the same as Trace(>0 radius) and TraceUnordered(>0 radius)
Tests: unit tests + staging demo playback
Update: add GamePhysics.TraceRays and TraceRaysUnordered
- works the same as Trace(0 radius) and TraceUnordered(0 radius)
- Replaced some inlined code with a call to TraceRays
Tests: ran unit tests
Optim: use Burst to generate commands in GamePhysics.OverlapSpheres
- It used to be there, but lost it during refactor
Tests: unit tests
Clean: minor changes to GamePhysics
- Renamed batch methods to be plural
- Split GamePhysics.CheckSphere<T> to separate OverlapSpheres
- added profiling scopes
Tests: unit tests
Update: move RemoveTerrainMask to GamePhysics
Tests: unit tests
Update: move GenerateCheckCapsuleQueries to GamePhyics and utilize
Tests: ran unit tests
Update: split GamePhysics.CheckCapsule<T>
- forbid CheckCapsule(batch) from returning ColliderHits - this is to better represent relationship to non-batched CheckCapsule
Tests: unit tests
▊██▌▋▉: ▌██▅▉▆▇▌.█▅▄▋▊▅▄▋▌▆▌▋▄▆▉▉▋ - ▅▅▊▅▊▆▋ ▄▄▊▅▆▋ ▋▅▆▍▋▌▊ ▊▌█▋▍▊▆ ▄▍█▉▌▍█ █▅▊▊▋ ▌▆▋▉ ▉ ▌█▄▉▊▉▅▉▋▌▅.▇▋▌▆▄▄▋▄▊▄▇▇
▇▆▄ ▉▆ ▍▍█▌▆▍ ▍▉▊▋ ▇█▆ ▄▅▅▆▄█▌ █▋ ▋▉▊▍ ██ ▅▊▆▊▄▌ ▉▋ █▆▅▋▌▋▇ ▇▇▊▇▄▅▆
▄▅▉▊▌: ▆▅▍▆ ▇▉█▇▍ █▊▇ ▇█▇▊▄▍▊ ▍▋▇█ ▅▄▉▇▆▌▊▄
▇▇▊▍█▆: ▊█▋▄▆▇▋▉.▊▇▅▄▆▋▅▆█▇█▋▄▊▋▆▉ - █▉▇▆▄▊▆ ▊▅▍▇▆▆▇ ▌█▋▇ ▍▄▇▊ ▉ ▍▄▍▇█▊▆▍▋▉█.▌▌█▆▉▋▌█▅▌▌▄(▆▄▊▇▇) ▆▋▆▆
▌▍▇▆▅ ▇▌▍ ▍ ▍▉▋▋▉▍ ▄█▋▆ ▅▌█ ▋▅▄▊▇▋▇▌▋ ▍▆▅▍ ▍'▄▄ █▇▄█ ▆▌ ▆▆██/▊▇▌██ - ▄█▇▅'▅▅ █▄ ▄▊▄▆▊
█▊▉▄▍: █▇▍▄ █▆▌▌▌ + ▆▌▄▄ ▄▆▉▆▋▊▋▍
Update: adding GamePhysics.CheckCapsule(batch)
Last factored out func - should be able to complete refactor shortly
Tests: none, will integrate to tests next
Bugfix: fixing native allocation leaks in tests
Tests: ran the tests with leak detections enabled
Update: GamePhysics.CheckCapsule<T>(batch) internalized layermask handling
There's room for optims, but not going to pursue them for now - will test later how the perf deteriorates with the new APIs.
Tests: ran relevant unit tests
Update: GamePhysics.CheckSphere(batch) now able to handle mask validation internally
- Renamed GamePhysics.IgnoreCollision to MasksToValidate (prev name could be misleading and confusing)
- undid sphere command building as that wasn't meshing well with MasksToValidate flow
- Added UtrilityJobs.GatherJob<T> (will need to go through other code and clean up similar/same jobs)
I still need to update GamePhysics.CheckCapsule, and replace inlined code with new versions
Tests: all relevant unit tests
Clean: simplify NativeList.CopyFrom<T>(ReadOnly)
Tests: none, trivial change
Update: Rewrite GamePhysics.HandleIgnoreCollision(batch) to allow for explicit control of what exclusion volumes to check
Tests: ran updated test
Update: adding GamePhysics.HandleIgnoreWater
- comes with it's own consistency test
Going to use those to try to refactor some of the existing code and hopefully shrink it
Tests: ran new test
Tests: adding tests that generate various "HandleIgnoreCollision" scenarios
- added TestHandleIgnoreTerrainConsistency
Covers both TerrainCollisionTrigger and WaterVisibilityTrigger.
Tests: ran the new unit test, checked that all paths all covered.
Optim: GamePhysics.HandleIgnoreTerrain - replace const seting managed loop with a Burst job
Saves 0.1ms on 10k test
Tests: ran unit test
Optim: allocate smaller buffers for WaterCollision.GetIgnoreIndirect
- Added a couple profiling scopes
Tests: unit tests
Bugfix: when we're missing TerrainCollision or WaterCollision, run all of the physics checks for trigger volumes
- Added UtilityJobs namespace, moved FillJob<T> to it
- Added a utility extension to NativeList<T> to copy from NativeArray<T>.ReadOnly (surprised it's missing)
Tests: all relevant unit tests
Clean: remove GamePhysics.OverlapSphere(batch) and GamePhysics.OverlapCapsule(batch)
- These have been inlined into CheckSphere<T> and CheckCapsule<T>
- Also updated CoarseQueryGrid.CheckJobIndirect(capsule) (returns JobHandle, works on a NativeList) since I missed it in previous commit
Tests: ran all unit tests
Update: CoarseQueryGrid - add non-indirect CheckJob API
- Also changed the API to return a JobHandle and accept a NativeList
Helps avoid extra busy work when we run direct work
Tests: ran unit tests
Bugfix: prevent WaterCollision.GetIgnore from returning garbage values
Another case that's the same as previous
Tests: none, trivial change
Clean: move all CoarseQueryGridJobs to it's own namespace
- rename the jobs to avoid duplication with namespace
Tests: compiles in editor
Bugfix: make sure TerrainCollision.GetIgnore doesn't return garbage values
Same bug as in WaterCollision that I fixed last friday.
Tests: none, trivial change
Bugfix: WaterCollision.GetIgnoreIndirect properly fills entire result set
Tests: ran unit tests + staging demo playback
Tests: adding TestWaterIgnoreConsistency to further narrow down what is going wrong
Tests: ran new unit test, it does fail as begrudgingly expected
▇▋▊▇▍: █▋▅▍▅▊ ▍▋▍██▅▍▉ ▊▋▅▋▌ ▆▉ ▋▉▅█▊▅ ▋▌▌█ ▌▆▉▆▌█▉ ▆▉▌▉ ▍▅▋▉ ▍▋▋▋▆▄▋▅█
- ▋▅▄█▉▉ ▆▌▅▍▉▌ █▇▋▇▉█▇▇ ▄▋▇▇▍ ▊▇ ▄▅▉█▄ ▅▄█▊▇▅ ▋▄▊▋▌▅ ▅▋▉█▍▇, ▋▊█▋▇▍ ▋▊▉▌ ▅▆▊▊ ▉ █▊▇▌▅▍ █▊▆▋▆▍▆▆
▅▅▍▄ ▋▋▋▊█▋ ▉▌▋▉▌▍ █▄ ▅▉▊▄ ▅▉▋█ ▇▍▆▍▅ ▍▉ █▇▋▅▅▍ ▌ ▋▌▆▊▇▇▆▌ ▋▇▇▆'▋ ▊▉▅▍█▇▇█▌█ ▉▉▉▆▆ ▅▅ ▋▆▅▇ ▋▌▌▉▅█▅, █▆▌▉▌ ▅▍ ▍▆▌▋▌▉█▍█ ▊▄▌▄ ▍▋▊▉▄▅ █▌▋▆█▆▌▅. ▍▉▉ ▍▋▇▇ ▇▍ ▆▄█▉, ▌▌ ▇▅█▇ █▅ ▋▊ ▆█▋▋▄▅▍ ██▍ █▉▇▌ ▋▇▉▊▊/▋▇█▊▊▊▄▇▅ ▍▌▇▍▅▍▆. █▄▊▆, ▅▍▌▉ █▅▇███▅ ▌▌▉▍▆▋▌▅▄▄ ▌▌█▊▉ - █▇▇▊▆▆▍▇█▌█▍▅.
▉▆▉▌▊: ▋▄▉ █▆▋ █▊▍▉▆▇▅▇ ▍▍▊▄▄
▇▍▉█▊▇: █▉▅▊▊▍▍▍▇▄█▋▍▋▋█▌ - ▌▍ ▋▍▇▋▍▅▄█ ▇▋█▌▊▉ ▅▅▄█▊█▉▋▉▍▊▍, ▊▄▄▅ ▍▅▋█ ▌█ ▅▌▅▉ ▊▉ ▊▆▌ ▆▌▅ ▋▉▊▄ ▅█▇
▄▇▇▄▄: ▉▄█▅▌▆ ▄▅▋▋ ▄▅▆▅▋▄▅ ▇▄█▄
▅█▅▌▅▌: ▄▉▊▆▌▊▊▋.▍▊█▆▉▄▅▉▋▊▋▄▊ - ▌█▇▊ ▌▊▄▉ ▍▌ █▉▇▍▊▉▇▄▄▊█▋▅▉▆▆▉▋▉▊▉
▄▅▆▅ ▅▇▉▍▍▊▅ ▄ ▋▍▋▆▅ █▍ █▉▋█▆
▅▇▋█▉: ▄▆▄▆▇▇▇ ▄▋▉▆ ▋▅▄▄▆▋▇▉
Optim: FinalizeTickParallel - use a burst job to gather players to validate for tick history
- Cleaned up a bunch of code by switching to NativeList from NativeArray
- more TickInterpolatorCache usage
Tests: staging demo playback
▍▅▉▅▉: ▌█▉▊▆▍▇▅▉▇▊▄▇▇▍▄▉ - █▌▄▍▋▍▆ ▌▋▋█▌▋▉▆ ▍▅▋ ▌█▍█▌▍ ▍▆▍▄▉ ▊█▍▅ ▇▊▋▅▊ ▅▉▇▋
▉▅▍'▇ ▋▋▇ ▄▅▉▅ ▉▉ ▄▍ ▄▍█▍▅▆ ▅▇█▊█▌▉ ▌█▊▆▅▅▌▋ ▄▉█▆▋▉█ ▍▌▉▋▊ ▋▅▊▊ ▊▅▉▇.
▌█▊▇▌: ▌▆▊▍ ▍█▇▅▆ ▄█▍ ▋█▋▊█▊▅ ▊▆▋▋ ▌▄▊▍▊█▌▉
▇▊▄▄▇: ▉▆▄▄█▆█▋▍▌█▍▆▆▄▇▇▉▄▉▋ █▌▌ ▌▌██▊ ▄▇▅▉▆▍▍ ▄▅▌▆
- ▉▆▅█▇▄▇▌▍ ▅▍▄ ▄▉▊▄█▆ ▆ ▉▋▄▄▍█▇ ▇▍ ▆▄▇▆ ▋▌▍█▆▇█ ▌▉▊█ ▉▄▇▅▄ ▊▌▉▌ ▍▇█▉▅▆ ▄▄ ▊█▉▌▌▋▇▅▊, ▅▌▄▋▇▍▅ ▉█ ▌▅▆▇▆▇ ▉█▆█▇, █▆▍ ▇█▆▅ ▄▉▋▆▍ ▍▇▉▄ █▅▉▇▆▍▋ ▇▌ ▋▆▅ ▅▇▇█▍▋▅▌ ▌▋▇▅▌▄▍ ▋▉ ▅▆▍▊▆▄
▇▋▄▅█▉▊▉▊ ▍▍▌▆▇▋▄ ▆▆▊ ▆▋▋ ██▅▄▍▌▊ ▉▆▉▌▇▄ ▋▌▊▊▆▅▆▊ - ▅▍▆▋▇▋▅▄ ▋▄ ▄▆.▉▇▊(+▍.█▊▌) ▌▅▋ █▍▌▇▄▆ ▉▉ █▄(+▉▅▆)
▉▍▆▉▄: ██▉ █▌▄▉█▆▋ ▅▊▇▇▉
▅▇█▇▋: ▉▊▄▄█▇▆▆▌▆█▊▆▄▍▇▇ - ▆▆▋▉▉▌▊ ▇ ▍▇▆█▆-▄█▅▍█▌ ▌▉▍▄▉▉▄▊▇▄ ▋▄▇▉ ▋ ▄▆▊▅▍▋█▊▉▍▄
▋▉▆▍█▇ ▊.▅█▌ ▆▆ ▆▄ ▉▅▇▇ - ▅▇.▌▍█->▍▆.█▋█, ▄█ ▌█▄█ ▋▉█▇▉█. █▆▄▍▋▍ █▄█ ▊▄▇▇ ▊▅▋ ▄▆▊▍ ▉▅▄▄▍▌▆▋▆ ▄▊ ▍▋▋▍▊.
▌▉▅▇▄: ▊▄█▇ ▉▄▇▇▍ █▅▊ ▊▌▆▅▄▄▌ ▊▋▌█ ▍▅▊▉▋█▌▉