From aaac317c67da406d1a9ccb64918ba958ef1d55e5 Mon Sep 17 00:00:00 2001 From: Josip Miskovic Date: Thu, 11 Apr 2024 20:28:36 +0200 Subject: [PATCH 1/2] Fix setMass allocation on user side --- src/modules/physics/physics_jolt.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/physics/physics_jolt.c b/src/modules/physics/physics_jolt.c index 4b6bfdfd..5ae4121d 100644 --- a/src/modules/physics/physics_jolt.c +++ b/src/modules/physics/physics_jolt.c @@ -623,10 +623,10 @@ float lovrColliderGetMass(Collider* collider) { void lovrColliderSetMass(Collider* collider, float mass) { JPH_MotionProperties* motionProperties = JPH_Body_GetMotionProperties(collider->body); Shape* shape = collider->shape; - JPH_MassProperties* massProperties; - JPH_Shape_GetMassProperties(shape->shape, massProperties); - JPH_MassProperties_ScaleToMass(massProperties, mass); - JPH_MotionProperties_SetMassProperties(motionProperties, JPH_AllowedDOFs_All, massProperties); + JPH_MassProperties massProperties; + JPH_Shape_GetMassProperties(shape->shape, &massProperties); + JPH_MassProperties_ScaleToMass(&massProperties, mass); + JPH_MotionProperties_SetMassProperties(motionProperties, JPH_AllowedDOFs_All, &massProperties); } void lovrColliderGetMassData(Collider* collider, float centerOfMass[3], float* mass, float inertia[6]) { From 2302c51952862fcbd0ce512cb1b1388f0c5063f4 Mon Sep 17 00:00:00 2001 From: Josip Miskovic Date: Thu, 11 Apr 2024 20:48:36 +0200 Subject: [PATCH 2/2] Fix terrain generation horizontal increment --- src/api/l_physics_shapes.c | 4 ++-- src/modules/physics/physics_jolt.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/api/l_physics_shapes.c b/src/api/l_physics_shapes.c index d923d7fd..66e4a7ae 100644 --- a/src/api/l_physics_shapes.c +++ b/src/api/l_physics_shapes.c @@ -114,8 +114,8 @@ Shape* luax_newterrainshape(lua_State* L, int index) { uint32_t n = luax_optu32(L, index + 1, 100); float* vertices = lovrMalloc(sizeof(float) * n * n); for (uint32_t i = 0; i < n * n; i++) { - float x = scaleXZ * (-.5f + ((float) (i % n)) / n); - float z = scaleXZ * (-.5f + ((float) (i / n)) / n); + float x = scaleXZ * (-.5f + ((float) (i % n)) / (n - 1)); + float z = scaleXZ * (-.5f + ((float) (i / n)) / (n - 1)); lua_pushvalue(L, index); lua_pushnumber(L, x); lua_pushnumber(L, z); diff --git a/src/modules/physics/physics_jolt.c b/src/modules/physics/physics_jolt.c index 5ae4121d..9fb560d6 100644 --- a/src/modules/physics/physics_jolt.c +++ b/src/modules/physics/physics_jolt.c @@ -964,9 +964,9 @@ TerrainShape* lovrTerrainShapeCreate(float* vertices, uint32_t n, float scaleXZ, .z = -.5f * scaleXZ }; const JPH_Vec3 scale = { - .x = scaleXZ / n, + .x = scaleXZ / (n - 1), .y = scaleY, - .z = scaleXZ / n + .z = scaleXZ / (n - 1) }; JPH_HeightFieldShapeSettings* shape_settings = JPH_HeightFieldShapeSettings_Create(vertices, &offset, &scale, n);