Collider:destroy;

This commit is contained in:
bjorn 2017-05-19 22:14:20 -06:00
parent 5640b1d048
commit 6ef9c6e475
3 changed files with 16 additions and 1 deletions

View File

@ -1,6 +1,12 @@
#include "api/lovr.h"
#include "physics/physics.h"
int l_lovrColliderDestroy(lua_State* L) {
Collider* collider = luax_checktype(L, 1, Collider);
lovrColliderDestroyData(collider);
return 0;
}
int l_lovrColliderGetWorld(lua_State* L) {
Collider* collider = luax_checktype(L, 1, Collider);
luax_pushtype(L, World, lovrColliderGetWorld(collider));
@ -385,6 +391,7 @@ int l_lovrColliderGetLinearVelocityFromWorldPoint(lua_State* L) {
}
const luaL_Reg lovrCollider[] = {
{ "destroy", l_lovrColliderDestroy },
{ "getWorld", l_lovrColliderGetWorld },
{ "addShape", l_lovrColliderAddShape },
{ "removeShape", l_lovrColliderRemoveShape },

View File

@ -169,10 +169,17 @@ Collider* lovrColliderCreate(World* world) {
void lovrColliderDestroy(const Ref* ref) {
Collider* collider = containerof(ref, Collider);
dBodyDestroy(collider->body);
lovrColliderDestroyData(collider);
free(collider);
}
void lovrColliderDestroyData(Collider* collider) {
if (collider->body) {
dBodyDestroy(collider->body);
collider->body = NULL;
}
}
World* lovrColliderGetWorld(Collider* collider) {
return collider->world;
}

View File

@ -65,6 +65,7 @@ void lovrWorldSetSleepingAllowed(World* world, int allowed);
Collider* lovrColliderCreate();
void lovrColliderDestroy(const Ref* ref);
void lovrColliderDestroyData(Collider* collider);
World* lovrColliderGetWorld(Collider* collider);
void lovrColliderAddShape(Collider* collider, Shape* shape);
void lovrColliderRemoveShape(Collider* collider, Shape* shape);