Added getDistanceTo Python method (thanks Charlie C)
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>
Sun, 16 Jan 2005 05:55:04 +0000 (05:55 +0000)
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>
Sun, 16 Jan 2005 05:55:04 +0000 (05:55 +0000)
source/gameengine/Ketsji/KX_GameObject.cpp
source/gameengine/Ketsji/KX_GameObject.h
source/gameengine/PyDoc/KX_GameObject.py
source/gameengine/PyDoc/WhatsNew.py

index 896da63ea040ebed1744773edfe7d908df7a5796..d6f9b62f222ee37a0b1e349e0f96bf5f13aa98b6 100644 (file)
@@ -621,7 +621,7 @@ PyMethodDef KX_GameObject::Methods[] = {
        {"getParent", (PyCFunction)KX_GameObject::sPyGetParent,METH_VARARGS},
        {"getMesh", (PyCFunction)KX_GameObject::sPyGetMesh,METH_VARARGS},
        {"getPhysicsId", (PyCFunction)KX_GameObject::sPyGetPhysicsId,METH_VARARGS},
-       
+       KX_PYMETHODTABLE(KX_GameObject, getDistanceTo),
        
        {NULL,NULL} //Sentinel
 };
@@ -1100,6 +1100,27 @@ PyObject* KX_GameObject::PyGetPhysicsId(PyObject* self,
        return PyInt_FromLong(physid);
 }
 
+KX_PYMETHODDEF_DOC(KX_GameObject, getDistanceTo,
+"getDistanceTo(other): get distance to another point/KX_GameObject")
+{
+       MT_Point3 b;
+       if (PyVecArgTo(args, b))
+       {
+               return PyFloat_FromDouble(NodeGetWorldPosition().distance(b));
+       }
+       PyErr_Clear();
+       
+       PyObject *pyother;
+       if (PyArg_ParseTuple(args, "O!", &KX_GameObject::Type, &pyother))
+       {
+               KX_GameObject *other = static_cast<KX_GameObject*>(pyother);
+               return PyFloat_FromDouble(NodeGetWorldPosition().distance(other->NodeGetWorldPosition()));
+       }
+       
+       return NULL;
+}
+
+
 /* --------------------------------------------------------------------- 
  * Some stuff taken from the header
  * --------------------------------------------------------------------- */
index 2918fb1a3b683258c723a4810e2a7ee42509892b..27451f637db48450f4787f771ee0829b7f141ef1 100644 (file)
@@ -613,6 +613,7 @@ public:
        KX_PYMETHOD(KX_GameObject,GetMesh);
        KX_PYMETHOD(KX_GameObject,GetParent);
        KX_PYMETHOD(KX_GameObject,GetPhysicsId);
+       KX_PYMETHOD_DOC(KX_GameObject,getDistanceTo);
 
 private :
 
index a19e36d6dd0604edc63cdd542d7a02761e72bedc..d3428915f25c4608c4644c1fb9edc4843c5ffc86 100644 (file)
@@ -148,3 +148,11 @@ class KX_GameObject:
                """
                Returns the user data object associated with this game object's physics controller.
                """
+       def getDistanceTo(other):
+               """
+               Returns the distance to another object or point.
+               
+               @param other: a point or another L{KX_GameObject} to measure the distance to.
+               @type other: L{KX_GameObject} or list [x, y, z]
+               @rtype: float
+               """
index 883c51dd16d28271cbdb182470d840b7b0395e56..023d568a052d3a1b00137434b175041057f04f68 100644 (file)
@@ -5,6 +5,9 @@ New Python Functionality in this Version of Blender
 
 This document lists what has been changed in the Game Engine Python API.
 
+Blender CVS
+       - Added L{KX_GameObject}.getDistanceTo() method. (thanks Charlie C)
+
 Blender 2.36
 ------------
        - Added L{KX_CameraActuator} methods (thanks snail)