mirror of
https://github.com/bjornbytes/lovr.git
synced 2024-07-05 13:53:38 +00:00
Add Contact to enter callback;
This commit is contained in:
parent
6b18734e83
commit
b05c7a1c63
|
@ -96,7 +96,7 @@ static bool filterCallback(void* userdata, World* world, Collider* a, Collider*
|
|||
return true;
|
||||
}
|
||||
|
||||
static void enterCallback(void* userdata, World* world, Collider* a, Collider* b) {
|
||||
static void enterCallback(void* userdata, World* world, Collider* a, Collider* b, Contact* contact) {
|
||||
lua_State* L = userdata;
|
||||
luax_pushstash(L, "lovr.world.enter");
|
||||
luax_pushtype(L, World, world);
|
||||
|
@ -104,7 +104,8 @@ static void enterCallback(void* userdata, World* world, Collider* a, Collider* b
|
|||
lua_remove(L, -2);
|
||||
luax_pushtype(L, Collider, a);
|
||||
luax_pushtype(L, Collider, b);
|
||||
if (lua_pcall(L, 2, 0, 0)) {
|
||||
luax_pushtype(L, Contact, contact);
|
||||
if (lua_pcall(L, 3, 0, 0)) {
|
||||
lua_settop(L, 3); // Only keep first error
|
||||
}
|
||||
}
|
||||
|
|
|
@ -243,7 +243,11 @@ static void onContactAdded(void* userdata, const JPH_Body* body1, const JPH_Body
|
|||
Collider* b = (Collider*) (uintptr_t) JPH_Body_GetUserData((JPH_Body*) body2);
|
||||
mtx_lock(&world->lock);
|
||||
thread.locked = true;
|
||||
world->callbacks.enter(world->callbacks.userdata, world, a, b);
|
||||
world->contact.colliderA = a;
|
||||
world->contact.colliderB = b;
|
||||
world->contact.manifold = manifold;
|
||||
world->contact.settings = settings;
|
||||
world->callbacks.enter(world->callbacks.userdata, world, a, b, &world->contact);
|
||||
thread.locked = false;
|
||||
mtx_unlock(&world->lock);
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ void lovrPhysicsDestroy(void);
|
|||
|
||||
typedef struct {
|
||||
bool (*filter)(void* userdata, World* world, Collider* a, Collider* b);
|
||||
void (*enter)(void* userdata, World* world, Collider* a, Collider* b);
|
||||
void (*enter)(void* userdata, World* world, Collider* a, Collider* b, Contact* contact);
|
||||
void (*exit)(void* userdata, World* world, Collider* a, Collider* b);
|
||||
void (*contact)(void* userdata, World* world, Collider* a, Collider* b, Contact* contact);
|
||||
void* userdata;
|
||||
|
|
Loading…
Reference in a new issue