mirror of
https://github.com/love2d/love-android.git
synced 2026-08-20 12:40:28 +02:00
Using latest changeset 593639000823 of love-android
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright (c) 2006-2014 LOVE Development Team
|
||||
* Copyright (c) 2006-2015 LOVE Development Team
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
@@ -21,6 +21,7 @@
|
||||
// LOVE
|
||||
#include "wrap_Joint.h"
|
||||
#include "common/StringMap.h"
|
||||
#include "Body.h"
|
||||
|
||||
namespace love
|
||||
{
|
||||
@@ -29,6 +30,40 @@ namespace physics
|
||||
namespace box2d
|
||||
{
|
||||
|
||||
void luax_pushjoint(lua_State *L, Joint *j)
|
||||
{
|
||||
if (j == nullptr)
|
||||
return lua_pushnil(L);
|
||||
|
||||
switch (j->getType())
|
||||
{
|
||||
case Joint::JOINT_DISTANCE:
|
||||
return luax_pushtype(L, "DistanceJoint", PHYSICS_DISTANCE_JOINT_T, j);
|
||||
case Joint::JOINT_REVOLUTE:
|
||||
return luax_pushtype(L, "RevoluteJoint", PHYSICS_REVOLUTE_JOINT_T, j);
|
||||
case Joint::JOINT_PRISMATIC:
|
||||
return luax_pushtype(L, "PrismaticJoint", PHYSICS_PRISMATIC_JOINT_T, j);
|
||||
case Joint::JOINT_MOUSE:
|
||||
return luax_pushtype(L, "MouseJoint", PHYSICS_MOUSE_JOINT_T, j);
|
||||
case Joint::JOINT_PULLEY:
|
||||
return luax_pushtype(L, "PulleyJoint", PHYSICS_PULLEY_JOINT_T, j);
|
||||
case Joint::JOINT_GEAR:
|
||||
return luax_pushtype(L, "GearJoint", PHYSICS_GEAR_JOINT_T, j);
|
||||
case Joint::JOINT_FRICTION:
|
||||
return luax_pushtype(L, "FrictionJoint", PHYSICS_FRICTION_JOINT_T, j);
|
||||
case Joint::JOINT_WELD:
|
||||
return luax_pushtype(L, "WeldJoint", PHYSICS_WELD_JOINT_T, j);
|
||||
case Joint::JOINT_WHEEL:
|
||||
return luax_pushtype(L, "WheelJoint", PHYSICS_WHEEL_JOINT_T, j);
|
||||
case Joint::JOINT_ROPE:
|
||||
return luax_pushtype(L, "RopeJoint", PHYSICS_ROPE_JOINT_T, j);
|
||||
case Joint::JOINT_MOTOR:
|
||||
return luax_pushtype(L, "MotorJoint", PHYSICS_MOTOR_JOINT_T, j);
|
||||
default:
|
||||
return lua_pushnil(L);
|
||||
}
|
||||
}
|
||||
|
||||
Joint *luax_checkjoint(lua_State *L, int idx)
|
||||
{
|
||||
Joint *t = luax_checktype<Joint>(L, idx, "Joint", PHYSICS_JOINT_T);
|
||||
@@ -46,6 +81,22 @@ int w_Joint_getType(lua_State *L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int w_Joint_getBodies(lua_State *L)
|
||||
{
|
||||
Joint *t = luax_checkjoint(L, 1);
|
||||
Body *b1 = nullptr;
|
||||
Body *b2 = nullptr;
|
||||
|
||||
luax_catchexcept(L, [&]() {
|
||||
b1 = t->getBodyA();
|
||||
b2 = t->getBodyB();
|
||||
});
|
||||
|
||||
luax_pushtype(L, "Body", PHYSICS_BODY_T, b1);
|
||||
luax_pushtype(L, "Body", PHYSICS_BODY_T, b2);
|
||||
return 2;
|
||||
}
|
||||
|
||||
int w_Joint_getAnchors(lua_State *L)
|
||||
{
|
||||
Joint *t = luax_checkjoint(L, 1);
|
||||
@@ -96,9 +147,17 @@ int w_Joint_destroy(lua_State *L)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w_Joint_isDestroyed(lua_State *L)
|
||||
{
|
||||
Joint *t = luax_checktype<Joint>(L, 1, "Joint", PHYSICS_JOINT_T);
|
||||
luax_pushboolean(L, !t->isValid());
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const luaL_Reg functions[] =
|
||||
{
|
||||
{ "getType", w_Joint_getType },
|
||||
{ "getBodies", w_Joint_getBodies },
|
||||
{ "getAnchors", w_Joint_getAnchors },
|
||||
{ "getReactionForce", w_Joint_getReactionForce },
|
||||
{ "getReactionTorque", w_Joint_getReactionTorque },
|
||||
@@ -106,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 }
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user