diff options
author | Campbell Barton <ideasman42@gmail.com> | 2008-12-09 07:13:23 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2008-12-09 07:13:23 +0300 |
commit | 1adb5b5442a38b577a1827c8edd5a7fc2ea5655e (patch) | |
tree | 38e4605112bdd5a29088e3a3479ca8f50a2ab33d /source/gameengine/Ketsji | |
parent | cac797eff6c8d618c78ec6d5492c85a7665c37fd (diff) |
patch from Mitchell Stokes
#18045] [patch] A patch that exposes the rest of the motion functions of KX_GameObject to Python.
*applyForce => setForce
*applyTorque => setTorque
*applyRotation => setDRot
*applyMovement => setDLoc
Diffstat (limited to 'source/gameengine/Ketsji')
-rw-r--r-- | source/gameengine/Ketsji/KX_GameObject.cpp | 64 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_GameObject.h | 4 |
2 files changed, 68 insertions, 0 deletions
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index a168beb9a70..e4a37b589a8 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -615,6 +615,7 @@ void KX_GameObject::setAngularVelocity(const MT_Vector3& ang_vel,bool local) m_pPhysicsController1->SetAngularVelocity(ang_vel,local); } + void KX_GameObject::ResolveCombinedVelocities( const MT_Vector3 & lin_vel, const MT_Vector3 & ang_vel, @@ -969,6 +970,10 @@ PyMethodDef KX_GameObject::Methods[] = { {"getPosition", (PyCFunction) KX_GameObject::sPyGetPosition, METH_NOARGS}, {"setPosition", (PyCFunction) KX_GameObject::sPySetPosition, METH_O}, {"setWorldPosition", (PyCFunction) KX_GameObject::sPySetWorldPosition, METH_O}, + {"applyForce", (PyCFunction) KX_GameObject::sPyApplyForce, METH_VARARGS}, + {"applyTorque", (PyCFunction) KX_GameObject::sPyApplyTorque, METH_VARARGS}, + {"applyRotation", (PyCFunction) KX_GameObject::sPyApplyRotation, METH_VARARGS}, + {"applyMovement", (PyCFunction) KX_GameObject::sPyApplyMovement, METH_VARARGS}, {"getLinearVelocity", (PyCFunction) KX_GameObject::sPyGetLinearVelocity, METH_VARARGS}, {"setLinearVelocity", (PyCFunction) KX_GameObject::sPySetLinearVelocity, METH_VARARGS}, {"getAngularVelocity", (PyCFunction) KX_GameObject::sPyGetAngularVelocity, METH_VARARGS}, @@ -1261,6 +1266,65 @@ int KX_GameObject::_setattr(const STR_String& attr, PyObject *value) // _setattr return SCA_IObject::_setattr(attr, value); } +PyObject* KX_GameObject::PyApplyForce(PyObject* self, PyObject* args) +{ + int local = 0; + PyObject* pyvect; + + if (PyArg_ParseTuple(args, "O|i", &pyvect, &local)) { + MT_Vector3 force; + if (PyVecTo(pyvect, force)) { + ApplyForce(force, (local!=0)); + Py_RETURN_NONE; + } + } + return NULL; +} + +PyObject* KX_GameObject::PyApplyTorque(PyObject* self, PyObject* args) +{ + int local = 0; + PyObject* pyvect; + + if (PyArg_ParseTuple(args, "O|i", &pyvect, &local)) { + MT_Vector3 torque; + if (PyVecTo(pyvect, torque)) { + ApplyTorque(torque, (local!=0)); + Py_RETURN_NONE; + } + } + return NULL; +} + +PyObject* KX_GameObject::PyApplyRotation(PyObject* self, PyObject* args) +{ + int local = 0; + PyObject* pyvect; + + if (PyArg_ParseTuple(args, "O|i", &pyvect, &local)) { + MT_Vector3 rotation; + if (PyVecTo(pyvect, rotation)) { + ApplyRotation(rotation, (local!=0)); + Py_RETURN_NONE; + } + } + return NULL; +} + +PyObject* KX_GameObject::PyApplyMovement(PyObject* self, PyObject* args) +{ + int local = 0; + PyObject* pyvect; + + if (PyArg_ParseTuple(args, "O|i", &pyvect, &local)) { + MT_Vector3 movement; + if (PyVecTo(pyvect, movement)) { + ApplyMovement(movement, (local!=0)); + Py_RETURN_NONE; + } + } + return NULL; +} PyObject* KX_GameObject::PyGetLinearVelocity(PyObject* self, PyObject* args) { diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h index 20b15787d27..4f26031356f 100644 --- a/source/gameengine/Ketsji/KX_GameObject.h +++ b/source/gameengine/Ketsji/KX_GameObject.h @@ -772,6 +772,10 @@ public: KX_PYMETHOD_NOARGS(KX_GameObject,GetPosition); KX_PYMETHOD_O(KX_GameObject,SetPosition); KX_PYMETHOD_O(KX_GameObject,SetWorldPosition); + KX_PYMETHOD_VARARGS(KX_GameObject, ApplyForce); + KX_PYMETHOD_VARARGS(KX_GameObject, ApplyTorque); + KX_PYMETHOD_VARARGS(KX_GameObject, ApplyRotation); + KX_PYMETHOD_VARARGS(KX_GameObject, ApplyMovement); KX_PYMETHOD_VARARGS(KX_GameObject,GetLinearVelocity); KX_PYMETHOD_VARARGS(KX_GameObject,SetLinearVelocity); KX_PYMETHOD_VARARGS(KX_GameObject,GetAngularVelocity); |