Commit Graph

21 Commits

Author SHA1 Message Date
bjorn 0f2717850e Collider shape is required I think;
Jolt doesn't really support bodies without shapes.
2024-04-05 11:29:26 -07:00
bjorn d48af00156 Add Collider:get/setShapeOffset; 2024-04-05 11:29:26 -07:00
bjorn 8e0aceadbf World queries return collider/shapeindex instead of Shape; 2024-04-05 11:29:26 -07:00
bjorn 1998439083 Require frozen CompoundShapes to have at least 2 children;
If you create a StaticCompoundShape with 1 child, Jolt creates a
RotatedTranslatedShape.  It would be a pain to have to branch on that,
so let's just require 2 children.
2024-04-05 11:29:26 -07:00
bjorn efba985973 rm Shape setters;
Jolt doesn't support this and requires you to recreate the shape.  Since
the shape -> collider relationship is 1:N, we can't really create a new
shape because we'd have to figure out which colliders/compoundshapes to
assign it to, which isn't feasible.
2024-04-05 11:29:26 -07:00
bjorn 68fc69e4c5 CompoundShape fixes; 2024-04-05 11:29:26 -07:00
bjorn 0feceb7e6e Shapes set their userdata; 2024-04-05 11:29:26 -07:00
bjorn 200cdebd46 CompoundShape API; 2024-04-05 11:29:26 -07:00
bjorn e0687b33af Start CompoundShape; 2024-04-05 11:29:26 -07:00
bjorn 6b86cecb4c Colliders can only have 1 shape; rm shape pose; 2024-04-05 11:29:26 -07:00
bjorn ecbd331552 Details; 2024-04-01 20:49:50 -07:00
bjorn fdba60214c Fix Collider/Shape/Joint UserData leak;
refs are cumbersome because they require storing an int and they require
manual cleanup when the object is destroyed.

Instead, we'll go with a pure Lua solution using a table in the
registry.  The table has weak keys containing the LÖVR object, and the
values are the userdata.  This doesn't require any manual cleanup,
reduces the size of objects by 8 bytes, and is about 25% faster.
2024-04-01 16:03:42 -07:00
bjorn cdecc1bae7 Add defer system; Rework exceptions; util cleanup;
Defer can be used to clean up resources when an error occurs.
2024-03-29 18:10:22 -07:00
bjorn b7e1b5111e jolt: fix some shape memory leaks; 2024-03-29 15:26:10 -07:00
bjorn c5d6bb6b48 jolt: rm matrix copies;
JoltC now uses floats for its RVec/RMatrix structs in single precision
mode, so we can operate on them as mat4's directly, copy/cast them, etc.
2024-03-29 15:26:03 -07:00
bjorn 87cd13d95c jolt: adjust includes; 2024-03-29 15:25:41 -07:00
bjorn d097d9819d Add wrappers for malloc functions; 2024-03-11 14:38:00 -07:00
bjorn 2d7b636a90 Change more asserts to checks; 2024-03-11 00:58:21 -07:00
Josip Miskovic 47c9b20542 Jolt world-level damping and sleeping allowed
The damping 0.05 value comes from Jolt's BodyCreationSettings.h.
2024-02-13 19:18:57 +01:00
Josip Miskovic 431062c345 Increase Jolt body & constraint limits
The new values come from comments in the official HelloWorld.cpp. After
the changes the any increase of memory consumption is within the
measurement error.
2024-02-13 17:25:43 +01:00
Josip Miskovic 1ad8f23fb8 Jolt physics engine integration 2024-01-30 18:22:27 +01:00