diff --git a/src/modules/physics/box2d/wrap_Body.cpp b/src/modules/physics/box2d/wrap_Body.cpp
index 5180f5afa..786fe9cb9 100644
--- a/src/modules/physics/box2d/wrap_Body.cpp
+++ b/src/modules/physics/box2d/wrap_Body.cpp
@@ -564,6 +564,13 @@ int w_Body_destroy(lua_State *L)
return 0;
}
+int w_Body_isDestroyed(lua_State *L)
+{
+ Body *b = luax_checktype
(L, 1, "Body", PHYSICS_BODY_T);
+ luax_pushboolean(L, b->body == nullptr);
+ return 1;
+}
+
int w_Body_setUserData(lua_State *L)
{
Body *t = luax_checkbody(L, 1);
@@ -635,6 +642,7 @@ static const luaL_Reg functions[] =
{ "getJointList", w_Body_getJointList },
{ "getContactList", w_Body_getContactList },
{ "destroy", w_Body_destroy },
+ { "isDestroyed", w_Body_isDestroyed },
{ "setUserData", w_Body_setUserData },
{ "getUserData", w_Body_getUserData },
{ 0, 0 }
diff --git a/src/modules/physics/box2d/wrap_Body.h b/src/modules/physics/box2d/wrap_Body.h
index 439027ec0..fb28a3dc9 100644
--- a/src/modules/physics/box2d/wrap_Body.h
+++ b/src/modules/physics/box2d/wrap_Body.h
@@ -88,6 +88,7 @@ int w_Body_getFixtureList(lua_State *L);
int w_Body_getJointList(lua_State *L);
int w_Body_getContactList(lua_State *L);
int w_Body_destroy(lua_State *L);
+int w_Body_isDestroyed(lua_State *L);
int w_Body_setUserData(lua_State *L);
int w_Body_getUserData(lua_State *L);
extern "C" int luaopen_body(lua_State *L);
diff --git a/src/modules/physics/box2d/wrap_Contact.cpp b/src/modules/physics/box2d/wrap_Contact.cpp
index 3bc1b25db..bb02f60ca 100644
--- a/src/modules/physics/box2d/wrap_Contact.cpp
+++ b/src/modules/physics/box2d/wrap_Contact.cpp
@@ -151,6 +151,13 @@ int w_Contact_getFixtures(lua_State *L)
return 2;
}
+int w_Contact_isDestroyed(lua_State *L)
+{
+ Contact *c = luax_checktype(L, 1, "Contact", PHYSICS_CONTACT_T);
+ luax_pushboolean(L, !c->isValid());
+ return 1;
+}
+
extern "C" int luaopen_contact(lua_State *L)
{
static const luaL_Reg functions[] =
@@ -170,6 +177,7 @@ extern "C" int luaopen_contact(lua_State *L)
{ "getTangentSpeed", w_Contact_getTangentSpeed },
{ "getChildren", w_Contact_getChildren },
{ "getFixtures", w_Contact_getFixtures },
+ { "isDestroyed", w_Contact_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_Contact.h b/src/modules/physics/box2d/wrap_Contact.h
index bb0e42e68..602d57bcc 100644
--- a/src/modules/physics/box2d/wrap_Contact.h
+++ b/src/modules/physics/box2d/wrap_Contact.h
@@ -48,6 +48,7 @@ int w_Contact_setTangentSpeed(lua_State *L);
int w_Contact_getTangentSpeed(lua_State *L);
int w_Contact_getChildren(lua_State *L);
int w_Contact_getFixtures(lua_State *L);
+int w_Contact_isDestroyed(lua_State *L);
extern "C" int luaopen_contact(lua_State *L);
} // box2d
diff --git a/src/modules/physics/box2d/wrap_DistanceJoint.cpp b/src/modules/physics/box2d/wrap_DistanceJoint.cpp
index c1fc612a9..1d16d967c 100644
--- a/src/modules/physics/box2d/wrap_DistanceJoint.cpp
+++ b/src/modules/physics/box2d/wrap_DistanceJoint.cpp
@@ -98,6 +98,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_Fixture.cpp b/src/modules/physics/box2d/wrap_Fixture.cpp
index d03f3bb2d..907cf14be 100644
--- a/src/modules/physics/box2d/wrap_Fixture.cpp
+++ b/src/modules/physics/box2d/wrap_Fixture.cpp
@@ -262,6 +262,13 @@ int w_Fixture_destroy(lua_State *L)
return 0;
}
+int w_Fixture_isDestroyed(lua_State *L)
+{
+ Fixture *f = luax_checktype(L, 1, "Fixture", PHYSICS_FIXTURE_T);
+ luax_pushboolean(L, !f->isValid());
+ return 1;
+}
+
static const luaL_Reg functions[] =
{
{ "getType", w_Fixture_getType },
@@ -290,6 +297,7 @@ static const luaL_Reg functions[] =
{ "getGroupIndex", w_Fixture_getGroupIndex },
{ "setGroupIndex", w_Fixture_setGroupIndex },
{ "destroy", w_Fixture_destroy },
+ { "isDestroyed", w_Fixture_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_Fixture.h b/src/modules/physics/box2d/wrap_Fixture.h
index f52290c15..7c6f9a0fe 100644
--- a/src/modules/physics/box2d/wrap_Fixture.h
+++ b/src/modules/physics/box2d/wrap_Fixture.h
@@ -60,6 +60,7 @@ int w_Fixture_getMassData(lua_State *L);
int w_Fixture_getGroupIndex(lua_State *L);
int w_Fixture_setGroupIndex(lua_State *L);
int w_Fixture_destroy(lua_State *L);
+int w_Fixture_isDestroyed(lua_State *L);
extern "C" int luaopen_fixture(lua_State *L);
} // box2d
diff --git a/src/modules/physics/box2d/wrap_FrictionJoint.cpp b/src/modules/physics/box2d/wrap_FrictionJoint.cpp
index 8651b36c8..94de9bb1c 100644
--- a/src/modules/physics/box2d/wrap_FrictionJoint.cpp
+++ b/src/modules/physics/box2d/wrap_FrictionJoint.cpp
@@ -82,6 +82,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_GearJoint.cpp b/src/modules/physics/box2d/wrap_GearJoint.cpp
index e01b3c12b..117331982 100644
--- a/src/modules/physics/box2d/wrap_GearJoint.cpp
+++ b/src/modules/physics/box2d/wrap_GearJoint.cpp
@@ -82,6 +82,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_Joint.cpp b/src/modules/physics/box2d/wrap_Joint.cpp
index 643603a25..2f7026bde 100644
--- a/src/modules/physics/box2d/wrap_Joint.cpp
+++ b/src/modules/physics/box2d/wrap_Joint.cpp
@@ -147,6 +147,13 @@ int w_Joint_destroy(lua_State *L)
return 0;
}
+int w_Joint_isDestroyed(lua_State *L)
+{
+ Joint *t = luax_checktype(L, 1, "Joint", PHYSICS_JOINT_T);
+ luax_pushboolean(L, !t->isValid());
+ return 1;
+}
+
static const luaL_Reg functions[] =
{
{ "getType", w_Joint_getType },
@@ -158,6 +165,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_Joint.h b/src/modules/physics/box2d/wrap_Joint.h
index 112700781..4bdb44441 100644
--- a/src/modules/physics/box2d/wrap_Joint.h
+++ b/src/modules/physics/box2d/wrap_Joint.h
@@ -43,6 +43,7 @@ int w_Joint_getCollideConnected(lua_State *L);
int w_Joint_setUserData(lua_State *L);
int w_Joint_getUserData(lua_State *L);
int w_Joint_destroy(lua_State *L);
+int w_Joint_isDestroyed(lua_State *L);
extern "C" int luaopen_joint(lua_State *L);
} // box2d
diff --git a/src/modules/physics/box2d/wrap_MotorJoint.cpp b/src/modules/physics/box2d/wrap_MotorJoint.cpp
index 2c10f8a7b..e9ad2bc0a 100644
--- a/src/modules/physics/box2d/wrap_MotorJoint.cpp
+++ b/src/modules/physics/box2d/wrap_MotorJoint.cpp
@@ -132,6 +132,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_MouseJoint.cpp b/src/modules/physics/box2d/wrap_MouseJoint.cpp
index bce542f36..5caa42db9 100644
--- a/src/modules/physics/box2d/wrap_MouseJoint.cpp
+++ b/src/modules/physics/box2d/wrap_MouseJoint.cpp
@@ -116,6 +116,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_PrismaticJoint.cpp b/src/modules/physics/box2d/wrap_PrismaticJoint.cpp
index b9c26911d..04f3c6e43 100644
--- a/src/modules/physics/box2d/wrap_PrismaticJoint.cpp
+++ b/src/modules/physics/box2d/wrap_PrismaticJoint.cpp
@@ -193,6 +193,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_PulleyJoint.cpp b/src/modules/physics/box2d/wrap_PulleyJoint.cpp
index 43f1ed94f..18a7bb883 100644
--- a/src/modules/physics/box2d/wrap_PulleyJoint.cpp
+++ b/src/modules/physics/box2d/wrap_PulleyJoint.cpp
@@ -79,6 +79,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_RevoluteJoint.cpp b/src/modules/physics/box2d/wrap_RevoluteJoint.cpp
index c4a9534fd..f61a991fa 100644
--- a/src/modules/physics/box2d/wrap_RevoluteJoint.cpp
+++ b/src/modules/physics/box2d/wrap_RevoluteJoint.cpp
@@ -193,6 +193,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_RopeJoint.cpp b/src/modules/physics/box2d/wrap_RopeJoint.cpp
index b64a59493..76635873c 100644
--- a/src/modules/physics/box2d/wrap_RopeJoint.cpp
+++ b/src/modules/physics/box2d/wrap_RopeJoint.cpp
@@ -55,6 +55,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_WeldJoint.cpp b/src/modules/physics/box2d/wrap_WeldJoint.cpp
index bcea8ec93..5c4a2a6d4 100644
--- a/src/modules/physics/box2d/wrap_WeldJoint.cpp
+++ b/src/modules/physics/box2d/wrap_WeldJoint.cpp
@@ -81,6 +81,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_WheelJoint.cpp b/src/modules/physics/box2d/wrap_WheelJoint.cpp
index 47c6ac0ae..8ccea3a1a 100644
--- a/src/modules/physics/box2d/wrap_WheelJoint.cpp
+++ b/src/modules/physics/box2d/wrap_WheelJoint.cpp
@@ -157,6 +157,7 @@ static const luaL_Reg functions[] =
{ "setUserData", w_Joint_setUserData },
{ "getUserData", w_Joint_getUserData },
{ "destroy", w_Joint_destroy },
+ { "isDestroyed", w_Joint_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_World.cpp b/src/modules/physics/box2d/wrap_World.cpp
index 051d643a1..7b433425b 100644
--- a/src/modules/physics/box2d/wrap_World.cpp
+++ b/src/modules/physics/box2d/wrap_World.cpp
@@ -189,6 +189,13 @@ int w_World_destroy(lua_State *L)
return 0;
}
+int w_World_isDestroyed(lua_State *L)
+{
+ World *w = luax_checktype(L, 1, "World", PHYSICS_WORLD_T);
+ luax_pushboolean(L, !w->isValid());
+ return 1;
+}
+
static const luaL_Reg functions[] =
{
@@ -212,6 +219,7 @@ static const luaL_Reg functions[] =
{ "queryBoundingBox", w_World_queryBoundingBox },
{ "rayCast", w_World_rayCast },
{ "destroy", w_World_destroy },
+ { "isDestroyed", w_World_isDestroyed },
{ 0, 0 }
};
diff --git a/src/modules/physics/box2d/wrap_World.h b/src/modules/physics/box2d/wrap_World.h
index 247ab2d09..c09dff7a1 100644
--- a/src/modules/physics/box2d/wrap_World.h
+++ b/src/modules/physics/box2d/wrap_World.h
@@ -55,6 +55,7 @@ int w_World_getContactList(lua_State *L);
int w_World_queryBoundingBox(lua_State *L);
int w_World_rayCast(lua_State *L);
int w_World_destroy(lua_State *L);
+int w_World_isDestroyed(lua_State *L);
extern "C" int luaopen_world(lua_State *L);
} // box2d