|
|
@@ -99,6 +99,13 @@ static void RegisterCollisionShape(asIScriptEngine* engine)
|
|
|
engine->RegisterObjectMethod("Variant", "CollisionShape@+ GetCollisionShape() const", asFUNCTION(GetVariantPtr<CollisionShape>), asCALL_CDECL_OBJLAST);
|
|
|
}
|
|
|
|
|
|
+static CScriptArray* RigidBodyGetCollidingBodies(RigidBody* ptr)
|
|
|
+{
|
|
|
+ PODVector<RigidBody*> result;
|
|
|
+ ptr->GetCollidingBodies(result);
|
|
|
+ return VectorToHandleArray<RigidBody>(result, "Array<RigidBody@>");
|
|
|
+}
|
|
|
+
|
|
|
static void RegisterRigidBody(asIScriptEngine* engine)
|
|
|
{
|
|
|
engine->RegisterEnum("CollisionEventMode");
|
|
|
@@ -160,6 +167,7 @@ static void RegisterRigidBody(asIScriptEngine* engine)
|
|
|
engine->RegisterObjectMethod("RigidBody", "uint get_collisionMask() const", asMETHOD(RigidBody, GetCollisionMask), asCALL_THISCALL);
|
|
|
engine->RegisterObjectMethod("RigidBody", "void set_collisionEventMode(CollisionEventMode)", asMETHOD(RigidBody, SetCollisionEventMode), asCALL_THISCALL);
|
|
|
engine->RegisterObjectMethod("RigidBody", "CollisionEventMode get_collisionEventMode() const", asMETHOD(RigidBody, GetCollisionEventMode), asCALL_THISCALL);
|
|
|
+ engine->RegisterObjectMethod("RigidBody", "Array<RigidBody@>@ get_collidingBodies() const", asFUNCTION(RigidBodyGetCollidingBodies), asCALL_CDECL_OBJLAST);
|
|
|
|
|
|
// Register Variant GetPtr() for RigidBody
|
|
|
engine->RegisterObjectMethod("Variant", "RigidBody@+ GetRigidBody() const", asFUNCTION(GetVariantPtr<RigidBody>), asCALL_CDECL_OBJLAST);
|
|
|
@@ -234,6 +242,13 @@ static CScriptArray* PhysicsWorldGetRigidBodiesBox(const BoundingBox& box, unsig
|
|
|
return VectorToHandleArray<RigidBody>(result, "Array<RigidBody@>");
|
|
|
}
|
|
|
|
|
|
+static CScriptArray* PhysicsWorldGetRigidBodiesBody(RigidBody* body, PhysicsWorld* ptr)
|
|
|
+{
|
|
|
+ PODVector<RigidBody*> result;
|
|
|
+ ptr->GetRigidBodies(result, body);
|
|
|
+ return VectorToHandleArray<RigidBody>(result, "Array<RigidBody@>");
|
|
|
+}
|
|
|
+
|
|
|
static void RegisterPhysicsWorld(asIScriptEngine* engine)
|
|
|
{
|
|
|
engine->RegisterObjectType("PhysicsRaycastResult", sizeof(PhysicsRaycastResult), asOBJ_VALUE | asOBJ_APP_CLASS_C);
|
|
|
@@ -253,6 +268,7 @@ static void RegisterPhysicsWorld(asIScriptEngine* engine)
|
|
|
engine->RegisterObjectMethod("PhysicsWorld", "PhysicsRaycastResult SphereCast(const Ray&in, float, float maxDistance = M_INFINITY, uint collisionMask = 0xffff)", asFUNCTION(PhysicsWorldSphereCast), asCALL_CDECL_OBJLAST);
|
|
|
engine->RegisterObjectMethod("PhysicsWorld", "Array<RigidBody@>@ GetRigidBodies(const Sphere&in, uint collisionMask = 0xffff)", asFUNCTION(PhysicsWorldGetRigidBodiesSphere), asCALL_CDECL_OBJLAST);
|
|
|
engine->RegisterObjectMethod("PhysicsWorld", "Array<RigidBody@>@ GetRigidBodies(const BoundingBox&in, uint collisionMask = 0xffff)", asFUNCTION(PhysicsWorldGetRigidBodiesBox), asCALL_CDECL_OBJLAST);
|
|
|
+ engine->RegisterObjectMethod("PhysicsWorld", "Array<RigidBody@>@ GetRigidBodies(RigidBody@+)", asFUNCTION(PhysicsWorldGetRigidBodiesBody), asCALL_CDECL_OBJLAST);
|
|
|
engine->RegisterObjectMethod("PhysicsWorld", "void DrawDebugGeometry(bool)", asMETHODPR(PhysicsWorld, DrawDebugGeometry, (bool), void), asCALL_THISCALL);
|
|
|
engine->RegisterObjectMethod("PhysicsWorld", "void set_gravity(Vector3)", asMETHOD(PhysicsWorld, SetGravity), asCALL_THISCALL);
|
|
|
engine->RegisterObjectMethod("PhysicsWorld", "Vector3 get_gravity() const", asMETHOD(PhysicsWorld, GetGravity), asCALL_THISCALL);
|