From 3c8f4bd63b85a6e8c0b159d28408c85c0b40e8b9 Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 15 May 2017 23:03:01 -0600 Subject: [PATCH] World:getGravity; World:setGravity; --- src/api/types/world.c | 21 +++++++++++++++++++++ src/physics/physics.c | 12 ++++++++++++ src/physics/physics.h | 2 ++ 3 files changed, 35 insertions(+) diff --git a/src/api/types/world.c b/src/api/types/world.c index d0950c8c..518f30f9 100644 --- a/src/api/types/world.c +++ b/src/api/types/world.c @@ -1,6 +1,27 @@ #include "api/lovr.h" #include "physics/physics.h" +int l_lovrWorldGetGravity(lua_State* L) { + World* world = luax_checktype(L, 1, World); + float x, y, z; + lovrWorldGetGravity(world, &x, &y, &z); + lua_pushnumber(L, x); + lua_pushnumber(L, y); + lua_pushnumber(L, z); + return 3; +} + +int l_lovrWorldSetGravity(lua_State* L) { + World* world = luax_checktype(L, 1, World); + float x = luaL_checknumber(L, 2); + float y = luaL_checknumber(L, 3); + float z = luaL_checknumber(L, 4); + lovrWorldSetGravity(world, x, y, z); + return 0; +} + const luaL_Reg lovrWorld[] = { + { "getGravity", l_lovrWorldGetGravity }, + { "setGravity", l_lovrWorldSetGravity }, { NULL, NULL } }; diff --git a/src/physics/physics.c b/src/physics/physics.c index 49e723ab..a6645bdb 100644 --- a/src/physics/physics.c +++ b/src/physics/physics.c @@ -29,3 +29,15 @@ void lovrWorldDestroy(const Ref* ref) { dWorldDestroy(world->id); free(world); } + +void lovrWorldGetGravity(World* world, float* x, float* y, float* z) { + dReal gravity[3]; + dWorldGetGravity(world->id, gravity); + *x = gravity[0]; + *y = gravity[1]; + *z = gravity[2]; +} + +void lovrWorldSetGravity(World* world, float x, float y, float z) { + dWorldSetGravity(world->id, x, y, z); +} diff --git a/src/physics/physics.h b/src/physics/physics.h index 7bc2a615..ba2f2db5 100644 --- a/src/physics/physics.h +++ b/src/physics/physics.h @@ -11,3 +11,5 @@ void lovrPhysicsDestroy(); World* lovrWorldCreate(); void lovrWorldDestroy(const Ref* ref); +void lovrWorldGetGravity(World* world, float* x, float* y, float* z); +void lovrWorldSetGravity(World* world, float x, float y, float z);