mirror of
https://github.com/love2d/love.git
synced 2026-08-20 04:30:09 +02:00
Update Joint APIs
--HG-- branch : box2d-update
This commit is contained in:
@@ -31,12 +31,12 @@ namespace physics
|
|||||||
{
|
{
|
||||||
namespace box2d
|
namespace box2d
|
||||||
{
|
{
|
||||||
PulleyJoint::PulleyJoint(Body * body1, Body * body2, b2Vec2 groundAnchor1, b2Vec2 groundAnchor2, b2Vec2 anchor1, b2Vec2 anchor2, float ratio, bool collideConnected)
|
PulleyJoint::PulleyJoint(Body * bodyA, Body * bodyB, b2Vec2 groundAnchorA, b2Vec2 groundAnchorB, b2Vec2 anchorA, b2Vec2 anchorB, float ratio, bool collideConnected)
|
||||||
: Joint(body1, body2), joint(NULL)
|
: Joint(bodyA, bodyB), joint(NULL)
|
||||||
{
|
{
|
||||||
b2PulleyJointDef def;
|
b2PulleyJointDef def;
|
||||||
def.Initialize(body1->body, body2->body, Physics::scaleDown(groundAnchor1), Physics::scaleDown(groundAnchor2), \
|
def.Initialize(bodyA->body, bodyB->body, Physics::scaleDown(groundAnchorA), Physics::scaleDown(groundAnchorB), \
|
||||||
Physics::scaleDown(anchor1), Physics::scaleDown(anchor2), ratio);
|
Physics::scaleDown(anchorA), Physics::scaleDown(anchorB), ratio);
|
||||||
def.collideConnected = collideConnected;
|
def.collideConnected = collideConnected;
|
||||||
|
|
||||||
joint = (b2PulleyJoint*)createJoint(&def);
|
joint = (b2PulleyJoint*)createJoint(&def);
|
||||||
@@ -57,14 +57,14 @@ namespace box2d
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
float PulleyJoint::getLength1() const
|
float PulleyJoint::getLengthA() const
|
||||||
{
|
{
|
||||||
return Physics::scaleUp(joint->GetLength1());
|
return Physics::scaleUp(joint->GetLengthA());
|
||||||
}
|
}
|
||||||
|
|
||||||
float PulleyJoint::getLength2() const
|
float PulleyJoint::getLengthB() const
|
||||||
{
|
{
|
||||||
return Physics::scaleUp(joint->GetLength2());
|
return Physics::scaleUp(joint->GetLengthB());
|
||||||
}
|
}
|
||||||
|
|
||||||
float PulleyJoint::getRatio() const
|
float PulleyJoint::getRatio() const
|
||||||
|
|||||||
@@ -44,9 +44,9 @@ namespace box2d
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a PulleyJoint connecting body1 to body2.
|
* Creates a PulleyJoint connecting bodyA to bodyB.
|
||||||
**/
|
**/
|
||||||
PulleyJoint(Body * body1, Body * body2, b2Vec2 groundAnchor1, b2Vec2 groundAnchor2, b2Vec2 anchor1, b2Vec2 anchor2, float ratio, bool collideConnected);
|
PulleyJoint(Body * bodyA, Body * bodyB, b2Vec2 groundAnchorA, b2Vec2 groundAnchorB, b2Vec2 anchorA, b2Vec2 anchorB, float ratio, bool collideConnected);
|
||||||
|
|
||||||
virtual ~PulleyJoint();
|
virtual ~PulleyJoint();
|
||||||
|
|
||||||
@@ -57,14 +57,14 @@ namespace box2d
|
|||||||
int getGroundAnchors(lua_State * L);
|
int getGroundAnchors(lua_State * L);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current length of the segment attached to body1.
|
* Gets the current length of the segment attached to bodyA.
|
||||||
**/
|
**/
|
||||||
float getLength1() const;
|
float getLengthA() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current length of the segment attached to body2.
|
* Gets the current length of the segment attached to bodyB.
|
||||||
**/
|
**/
|
||||||
float getLength2() const;
|
float getLengthB() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the pulley ratio.
|
* Gets the pulley ratio.
|
||||||
|
|||||||
@@ -83,9 +83,9 @@ namespace box2d
|
|||||||
return joint->GetMotorSpeed();
|
return joint->GetMotorSpeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
float RevoluteJoint::getMotorTorque() const
|
float RevoluteJoint::getMotorTorque(float inv_dt) const
|
||||||
{
|
{
|
||||||
return joint->GetMotorTorque();
|
return joint->GetMotorTorque(inv_dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RevoluteJoint::enableLimit(bool limit)
|
void RevoluteJoint::enableLimit(bool limit)
|
||||||
|
|||||||
@@ -87,8 +87,9 @@ namespace box2d
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the current motor torque, usually in N-m.
|
* Get the current motor torque, usually in N-m.
|
||||||
|
* @param inv_dt The inverse timestep.
|
||||||
**/
|
**/
|
||||||
float getMotorTorque() const;
|
float getMotorTorque(float inv_dt) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable/disable the joint limit.
|
* Enable/disable the joint limit.
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ namespace box2d
|
|||||||
int w_Joint_getReactionTorque(lua_State * L)
|
int w_Joint_getReactionTorque(lua_State * L)
|
||||||
{
|
{
|
||||||
Joint * t = luax_checkjoint(L, 1);
|
Joint * t = luax_checkjoint(L, 1);
|
||||||
lua_pushnumber(L, t->getReactionTorque());
|
float inv_dt = (float)luaL_checknumber(L, 2);
|
||||||
|
lua_pushnumber(L, t->getReactionTorque(inv_dt));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,8 @@ namespace box2d
|
|||||||
int w_PrismaticJoint_getMotorForce(lua_State * L)
|
int w_PrismaticJoint_getMotorForce(lua_State * L)
|
||||||
{
|
{
|
||||||
PrismaticJoint * t = luax_checkprismaticjoint(L, 1);
|
PrismaticJoint * t = luax_checkprismaticjoint(L, 1);
|
||||||
lua_pushnumber(L, t->getMotorForce());
|
float inv_dt = (float)luaL_checknumber(L, 2);
|
||||||
|
lua_pushnumber(L, t->getMotorForce(inv_dt));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,17 +38,17 @@ namespace box2d
|
|||||||
return t->getGroundAnchors(L);
|
return t->getGroundAnchors(L);
|
||||||
}
|
}
|
||||||
|
|
||||||
int w_PulleyJoint_getLength1(lua_State * L)
|
int w_PulleyJoint_getLengthA(lua_State * L)
|
||||||
{
|
{
|
||||||
PulleyJoint * t = luax_checkpulleyjoint(L, 1);
|
PulleyJoint * t = luax_checkpulleyjoint(L, 1);
|
||||||
lua_pushnumber(L, t->getLength1());
|
lua_pushnumber(L, t->getLengthA());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int w_PulleyJoint_getLength2(lua_State * L)
|
int w_PulleyJoint_getLengthB(lua_State * L)
|
||||||
{
|
{
|
||||||
PulleyJoint * t = luax_checkpulleyjoint(L, 1);
|
PulleyJoint * t = luax_checkpulleyjoint(L, 1);
|
||||||
lua_pushnumber(L, t->getLength2());
|
lua_pushnumber(L, t->getLengthB());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,8 +61,8 @@ namespace box2d
|
|||||||
|
|
||||||
static const luaL_Reg functions[] = {
|
static const luaL_Reg functions[] = {
|
||||||
{ "getGroundAnchors", w_PulleyJoint_getGroundAnchors },
|
{ "getGroundAnchors", w_PulleyJoint_getGroundAnchors },
|
||||||
{ "getLength1", w_PulleyJoint_getLength1 },
|
{ "getLengthA", w_PulleyJoint_getLengthA },
|
||||||
{ "getLength2", w_PulleyJoint_getLength2 },
|
{ "getLengthB", w_PulleyJoint_getLengthB },
|
||||||
{ "getRatio", w_PulleyJoint_getRatio },
|
{ "getRatio", w_PulleyJoint_getRatio },
|
||||||
// From Joint.
|
// From Joint.
|
||||||
{ "getType", w_Joint_getType },
|
{ "getType", w_Joint_getType },
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ namespace box2d
|
|||||||
{
|
{
|
||||||
PulleyJoint * luax_checkpulleyjoint(lua_State * L, int idx);
|
PulleyJoint * luax_checkpulleyjoint(lua_State * L, int idx);
|
||||||
int w_PulleyJoint_getGroundAnchors(lua_State * L);
|
int w_PulleyJoint_getGroundAnchors(lua_State * L);
|
||||||
int w_PulleyJoint_getLength1(lua_State * L);
|
int w_PulleyJoint_getLengthA(lua_State * L);
|
||||||
int w_PulleyJoint_getLength2(lua_State * L);
|
int w_PulleyJoint_getLengthB(lua_State * L);
|
||||||
int w_PulleyJoint_getRatio(lua_State * L);
|
int w_PulleyJoint_getRatio(lua_State * L);
|
||||||
int luaopen_pulleyjoint(lua_State * L);
|
int luaopen_pulleyjoint(lua_State * L);
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,8 @@ namespace box2d
|
|||||||
int w_RevoluteJoint_getMotorTorque(lua_State * L)
|
int w_RevoluteJoint_getMotorTorque(lua_State * L)
|
||||||
{
|
{
|
||||||
RevoluteJoint * t = luax_checkrevolutejoint(L, 1);
|
RevoluteJoint * t = luax_checkrevolutejoint(L, 1);
|
||||||
lua_pushnumber(L, t->getMotorTorque());
|
float inv_dt = (float)luaL_checknumber(L, 2);
|
||||||
|
lua_pushnumber(L, t->getMotorTorque(inv_dt));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user