Commit Graph

5344 Commits

Author SHA1 Message Date
bjorn 907d89c913 Add Collider:getShapes for backcompat; 2024-04-07 13:47:52 -07:00
bjorn ff0f39fc7b rm unused shape prototypes; 2024-04-07 13:47:52 -07:00
bjorn b809db1d83 ODE compatibility; 2024-04-07 13:47:52 -07:00
bjorn 051266f8ea Collider shape is required I think;
Jolt doesn't really support bodies without shapes.
2024-04-07 13:47:52 -07:00
bjorn 930e713079 Add Collider:get/setShapeOffset; 2024-04-07 13:47:52 -07:00
bjorn 4f26182595 World queries return collider/shapeindex instead of Shape; 2024-04-07 13:47:52 -07:00
bjorn 8cbdda00f3 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-07 13:47:52 -07:00
bjorn 10f965d69e 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-07 13:47:52 -07:00
bjorn a7bf4ca2a4 CompoundShape fixes; 2024-04-07 13:47:52 -07:00
bjorn c27694fd8e Shapes set their userdata; 2024-04-07 13:47:52 -07:00
bjorn b3e9e55b8a CompoundShape API; 2024-04-07 13:47:52 -07:00
bjorn 6f0b6391df Start CompoundShape; 2024-04-07 13:47:52 -07:00
bjorn ce58619094 Colliders can only have 1 shape; rm shape pose; 2024-04-07 13:47:52 -07:00
bjorn 9b6f58ac1e Update Jolt; 2024-04-07 13:47:52 -07:00
bjorn f4d1161a3d Disable Jolt profiler and debug renderer; 2024-04-07 13:46:57 -07:00
bjorn f4d5c0d758 Add assert for body count; 2024-04-06 00:47:31 -07:00
bjorn 38a68dc4e5 TerrainShape image must be square; 2024-04-06 00:12:50 -07:00
bjorn 5e521b7698 Collider:applyLinear/AngularImpulse; 2024-04-05 19:16:39 -07:00
bjorn fb6b402034 Add Collider:is/setContinuous; 2024-04-05 19:05:25 -07:00
bjorn e9fe088521 Add Collider:get/setGravityScale; Deprecate Collider:get/setGravityIgnored; 2024-04-05 14:22:02 -07:00
bjorn 01194a80c7 Deprecate several World methods;
They still work on ODE, and Jolt makes a best-effort attempt to support
them, but they will be removed in a future version.

- Damping should be set explicitly on colliders.
- Tightness and response time will be supported via spring forces, and
  also some global settings in newWorld will affect joints too.
- Step count will be added to :update soon.  Since the correct value is
  dt-dependent in Jolt, a persistent accessor doesn't make sense.
- Sleeping allowed will be an immutable setting in newWorld soon, but
  otherwise should be changed per-collider.
2024-04-05 14:07:56 -07:00
bjorn ffc23497a9 Details; 2024-04-05 13:58:28 -07:00
bjorn d756cc2b1d Add variant of newWorld that takes an options table; 2024-04-05 13:25:32 -07:00
bjorn 77abad4e21 Merge branch 'stable' into dev 2024-04-05 11:42:18 -07:00
bjorn 40879f383a Fix possible crash when using math module in multiple threads; 2024-04-05 11:41:51 -07:00
bjorn 8596bb06a0 Fix OBJ triangulation for faces with more than 4 vertices; 2024-04-04 17:34:04 -07:00
bjorn 3dd641c02d Undo accidental jolt submodule bump; 2024-04-04 17:31:42 -07:00
bjorn 01a0df37cc Fix OBJ triangulation for faces with more than 4 vertices; 2024-04-04 17:28:05 -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 243b6ae21a Use lovrDefer more; 2024-04-01 15:32:06 -07:00
bjorn 1c070990de Add support for Lua 5.4 <close> variables;
Taken from LÖVE.
2024-03-30 09:53:01 -07:00
bjorn 458e7b176c rm job system error handling;
Having it in the job system is too gross.  Use lovrTry instead.
2024-03-29 18:11:21 -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 67e228125b Add d24 TextureFormat;
LÖVR uses d32f by default, but that's not guaranteed to be supported.

However, GPUs must support either d32f or d24, so we can fall back to
d24 reliably.
2024-03-29 18:07:25 -07:00
bjorn c37cd3852f tup: add -Wno-strict-prototypes for now;
glslang and ODE are the troublemakers.  I updated glslang but I'm too
lazy to update ODE, so I'm just gonna wait until we switch to jolt.
2024-03-29 18:04:42 -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 822eb94993 CMake: rm physics library log messages; 2024-03-29 14:54:35 -07:00
bjorn cfd2374449 Update Jolt; 2024-03-29 14:50:00 -07:00
bjorn 55f0da97ce Update glslang; 2024-03-28 21:00:24 -07:00
bjorn e7d0764e49 Update Jolt;
Also disable the HelloWorldNative sample...
2024-03-28 15:28:40 -07:00
bjorn f4553075cb Upgrade Jolt;
Seems we can add the root CMake project directly now.
2024-03-28 12:58:33 -07:00
bjorn fd7fe08055 Upgrade lovr-http; 2024-03-28 12:47:35 -07:00
bjorn 8ec7a18c28 Update lua-enet; 2024-03-28 12:46:20 -07:00
bjorn 7373bb6b83 Bump minimum CMake version;
Newer versions of CMake show a deprecation warning that < 3.5 will be
unsupported soon.
2024-03-28 12:42:22 -07:00
bjorn abd2eddf0d Fix some strict prototype warnings; 2024-03-23 13:12:26 -07:00
bjorn 70e4b9fd7b actions: Adjust MoltenVK paths for newer SDK version;
The MoltenVK folder was removed from the SDK in favor of the macOS folder.
2024-03-17 21:37:48 -07:00
bjorn 8fc5d4fd24 actions: Update macOS Vulkan SDK version;
This version includes VK_KHR_synchronization2, which LÖVR uses now.
2024-03-17 20:42:25 -07:00