4,336 Commits over 1,552 Days - 0.12cph!
Rename IVPhysics2World to IPhysicsWorld
Rename IVPhysics2 to IPhysicsSystem
Rename g_pVPhysics2 to g_pPhysicsSystem
Build aggregate constraints
Debug draw constraints https://files.facepunch.com/layla/1b0911b1/sbox_0088.mp4
Use distance constraint for weld joint for now so physgun sort of works, I don't think jolt weld is a soft constraint - https://files.facepunch.com/layla/1b0911b1/sbox_0081.mp4
Create new joints so game has valid joint handles
Remove GetLocalInertiaInv
Impl GetBodyTransform for aggregate
PhysicsWorld::AddBody creates body with empty mutable compound shape, mostly to stop game complaining about invalid bodies
Only destroy jolt bodies that are ready to be deleted. Make sure to call ReadyDelayedDeleteObjects in ClearIntersectionNotifications
Move client side kinematics (UpdateShadow, but we don't have shadows yet)
Remove GetPhysicalMassInv
Do the delayed delete shit instead of deleting straight away
Remove even more junk from the interfaces
Remove ApplyPositionImpulseAt, ApplyOrienationOmega
Return normal for CastRaySingle https://files.facepunch.com/layla/1b0911b1/sbox_0049.mp4
CastRaySingle
SetGameSceneNodeHandle, GetGameSceneNodeHandle, GetEntityID - https://files.facepunch.com/layla/1b0811b1/sbox_0003.mp4
Linear and angular damping
Add step listener to call PrePhysicsStep
Impl parts of physicsaggregate that are not api specific
Impl DestroyAggregateInstance, RemoveBody etc
Only destroy aggregate in SetupPhysicsFromUnscaledModel if we're not already SOLID_VPHYSICS - avoids recreating the aggregate when we shouldn't need to
Add command line switch to change physics module
Disable collision for kinematics for now, many intersecting kinematics (server side bodies on client) seem to be completely fucking up the simulation, causing everything to fall through world https://files.facepunch.com/layla/1b0711b1/sbox_0061_Trim.mp4
Init debug renderer so we have all the geometry batches for primitives
batch debug drawing properly
make a start on debug rendering so i can see what the fuck is going on
Remove wokeup and asleep lists from world step results, shouldn't have to need these
Remove GetSphereRadius and SetSphereRadius
Same for drag and damping
Impl a few velocity related functions in physics aggregate
Create physics shapes for each jolt subshape
Override mass if provided, set inertia scale if provided
Use a rotated translated shape for single spheres and capsules so they can be offset
Rotate capsule using the two center points
Aggregates build body and shapes with a single BodyCreationSettings - rubikon could create a body and add shapes at will, jolt doesn't work that way :(
Make all bodies with compounds for now so we can collide with world
Alloc phys data
Set shape userdata
SetAngularVelocity, GetAngularVelocity
ApplyLinearImpulse, ApplyLinearImpulseAtWorldSpace
ApplyAngularImpulse
ApplyForce, ApplyForceAt
Set motion type of aggregate (on client, networked bodies get set to keyframed) this fixes SetLinearVelocity etc https://files.facepunch.com/layla/1b0511b1/sbox_0036.mp4
Add collision shapes to body
Move surface property manager and phys data manager to their own file
Create a temp box shape so we have something to collide with