159 Commits over 30 Days - 0.22cph!
Get rid of unused overlap and sweep functions from interface
Aggregate CheckShapeOverlap, skip meshes for now
Body Enable, Disable, IsEnabled
Remove GetSimulationTime
Apply flags to collision attributes for toggling touch events
CastShapeSingle
CastShapeMultiple
Use GJK for GetDistanceBetweenHulls
Fully implement CastShapeAgainstShape using TOI, one function vs fuck knows how many
Start supporting CastShapeAgainstShape, starting with ray vs capsule to get hitboxes working
Move TestQuery to world, only physics game system uses this
Create new BVH and swap it out for UpdateMeshShape (probably not fast but never was)
Get rid of orthographic areas (used for drag?)
Only collide on INTERSECTION_PAIR_RESOLVE_CONTACTS
Get rid of CreateMeshShape on the interface, nothing uses it
If we're casting against a sphere or capsule, add on the radius from the proxy
Fix mistake in trace solver when porting over
Cast against hull properly
Add trace solver
Attempt to use trace solver for meshes and hulls
Shape triangulation (tools need this)
Remove IsEntityPairDisabled and DoesEntityHaveCollisionPairs
Get rid of CPhysicsWorld::ShouldHit, only used once in nav runtime gen but I don't think it's enabled or used
Remove unused shit from util_trace
Support body AddMeshShape
Support 2 body overlap check
Remove joint Activate and Deactivate, unused and no longer a thing
Fix crash when removing contacts, sometimes the next contact can be null?
Remove contacts if we disable joint collision
Allow joint collision to be toggled (do we need to update contacts?)
Filter out shapes on sphere and box queries
Add CWorldCastMultipleCallback for multiple casts
Add a should collide callback so we can hijack the simulation filtering (naughty)
Move cast callback to physicsfilter
Remove collision function mask stuff on body, only used on shape
Use our custom cast callback using physics filter for single casts to test
Setting collision attributes with no tags will add solid by default, important!
Add CPhysicsFilter which is just our modified CRnCollisionFilter, we'll fork the physics library slightly to perform our own filtering
Surfaces properties instead of material on CShapeCastResult
Get cast result surface properties from per triangle material indices if we trace a mesh
Store per triangle material indices on shape so we can get them back on collision event
Do the same for CastSphereMultiple
CastBoxMultiple too while we're at it
Add a cast callback that collects all intersections to support CastRayMultiple https://files.facepunch.com/layla/1b0711b1/sbox_0053.mp4
Remove linear and angular drag, no longer a thing
Get rid of unused query functions on interface
Fix shape CastSphere and CastBox (probably)
Downgrade CastSphereSingle to CastRaySingle if radius is zero
Mesh shape CastRay is getting -1 for best triangle sometimes so ignore it to avoid crash
Do sphere and bounds shape overlap tests properly by copying how testbed does shape casts
Sphere query will perform a shape overlap if we're testing for shapes and not proxies https://files.facepunch.com/layla/1b0711b1/sbox_0048.mp4
Add sphere query to dynamic tree
World sphere query (needs testing)
AddBoxShape and AddHullShape that C# use
Get rid of UTIL_TraceModel
CastRaySingleBody, CastSphereSingleBody, CastBoxSingleBody, probably not fully correct but only markup volume uses it and we'll probably get rid of this
Remove some unused cast functions from interface
Delete our joints and shapes before removing body from world