BGE patch #10492 approved: getLinearVelocity() now can provide local velocity as well. This patch is harmless and backward compatible; it can go safely into 2.46 release

This commit is contained in:
Benoit Bolsee 2008-05-06 20:55:55 +00:00
parent 917865b504
commit 881802d8a3
3 changed files with 33 additions and 9 deletions

@ -581,16 +581,27 @@ void KX_GameObject::SetObjectColor(const MT_Vector4& rgbavec)
MT_Vector3 KX_GameObject::GetLinearVelocity()
MT_Vector3 KX_GameObject::GetLinearVelocity(bool local)
{
MT_Vector3 velocity(0.0,0.0,0.0);
MT_Matrix3x3 ori, locvel;
int i, j;
if (m_pPhysicsController1)
{
velocity = m_pPhysicsController1->GetLinearVelocity();
if (local)
{
ori = GetSGNode()->GetWorldOrientation();
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
locvel[i][j]= velocity[i]*ori[i][j];
for(i=0; i < 3; i++)
velocity[i] = locvel[0][i] + locvel[1][i] + locvel[2][i];
}
}
return velocity;
return velocity;
}
@ -948,7 +959,15 @@ PyObject* KX_GameObject::PyGetLinearVelocity(PyObject* self,
PyObject* kwds)
{
// only can get the velocity if we have a physics object connected to us...
return PyObjectFrom(GetLinearVelocity());
int local = 0;
if (PyArg_ParseTuple(args,"|i",&local))
{
return PyObjectFrom(GetLinearVelocity((local!=0)));
}
else
{
return NULL;
}
}

@ -252,8 +252,9 @@ public:
/**
* Return the linear velocity of the game object.
*/
MT_Vector3
MT_Vector3
GetLinearVelocity(
bool local=false
);
/**

@ -58,15 +58,16 @@ class KX_GameObject:
@rtype: 3x3 rotation matrix
@return: The game object's rotation matrix
"""
def getLinearVelocity():
def getLinearVelocity(local):
"""
Gets the game object's linear velocity.
This method returns the game object's velocity through it's centre of mass,
ie no angular velocity component.
cf getVelocity()
@type local: boolean
@param local: - False: you get the "global" velocity ie: relative to world orientation.
- True: you get the "local" velocity ie: relative to object orientation.
@rtype: list [vx, vy, vz]
@return: the object's linear velocity.
"""
@ -138,6 +139,9 @@ class KX_GameObject:
def setParent(parent):
"""
Sets this object's parent.
@type parent: L{KX_GameObject}
@param parent: new parent object.
"""
def removeParent():
"""