4,312 Commits over 1,552 Days - 0.12cph!
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
Just return true in our layer filters for now because we obviously haven't set up layers yet
Impl SetLinearVelocity https://files.facepunch.com/layla/1b0511b1/sbox_0017.mp4
Temp disable player physics hull so we don't fly through the world
Impl aggregate instance GetRootTransform so we can start to sync jolt bodies to entities
Return all bodies as awake in StepEndReadOnlyGetResults for now
remove physics body GetUid - unused
Impl SetEntityHandle, GetEntityHandle, GetEntityID
Impl Get/Set AggregateInstance for body
Impl body GetVelocity
Impl aggregate instance add part etc
Impl aggregate instance IsDynamic
Impl aggregate instance GetOrigin
Imp aggregate instance GetBodyHandle
Build bodies for aggregate but don't set shapes yet
Add managed handle to physics aggregate instance
PhysAggregateInstance stubs
Create temp allocator and job system so we can start to update the physics system
Add a empty mutable compound shape to new bodies
Few more null checks to get us into the game
Edit jolt to not set position and rotation of body on creation (jolt bodies need a shape, which is really shit)
Don't assert in GetProfileStats - who cares
Add and release ref of aggregate data
Impl CreateAggregateDataFromDiskData
Return our surface property controller
Few null checks in places that are popping up while joining game with mostly unimplemented physics interface
Register default allocator for jolt, create factory, register types etc
Allocate managed handle after we init jolt physics system
Create a bullshit surface property manager for now
Install surface property and phys data type managers
Get dependencies for jolt physics interface
interface init, preshutdown, shutdown stuff