Skip to content

Tune HavokWrapper - #4

Open
SpaceGT wants to merge 1 commit into
mainfrom
havok-tuning
Open

Tune HavokWrapper#4
SpaceGT wants to merge 1 commit into
mainfrom
havok-tuning

Conversation

@SpaceGT

@SpaceGT SpaceGT commented Jul 30, 2026

Copy link
Copy Markdown
Member

This replaces the generated Havok thunk pools and runtime slot registry with bridges scoped by callback role and lifetime rather than raw C signature. Rooted callbacks for activation, constraints, contacts, entities, jobs, profiling, uniform grids, wheels, worlds, and AABB phantoms now use fixed bridges that Havok calls directly, without allocating or looking up slots. This is safe because each role reuses the same rooted managed delegate, and registration rejects unexpected target changes.

Phantom callbacks need instance scope, so three shared bridges use the shape handle to find the correct callbacks. Constraint reading and shape-buffer cleanup only live for one native call; each publishes its target under a dedicated mutex, Havok invokes it synchronously, and the wrapper clears it before releasing the lock. Matching each bridge to its real scope removes 33,221 compiled slots and reduces code size, stale targets, and concurrency risks under CoreCLR.

@SpaceGT
SpaceGT requested a review from viktor-ferenczi July 30, 2026 15:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant