From 5fcf39d2a5db1d536e9fbfa52edb2bcdc40d8e29 Mon Sep 17 00:00:00 2001 From: Kester Maddock Date: Sun, 16 Jan 2005 05:55:04 +0000 Subject: [PATCH] Added getDistanceTo Python method (thanks Charlie C) --- source/gameengine/Ketsji/KX_GameObject.cpp | 23 +++++++++++++++++++++- source/gameengine/Ketsji/KX_GameObject.h | 1 + source/gameengine/PyDoc/KX_GameObject.py | 8 ++++++++ source/gameengine/PyDoc/WhatsNew.py | 3 +++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index 896da63ea04..d6f9b62f222 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -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(pyother); + return PyFloat_FromDouble(NodeGetWorldPosition().distance(other->NodeGetWorldPosition())); + } + + return NULL; +} + + /* --------------------------------------------------------------------- * Some stuff taken from the header * --------------------------------------------------------------------- */ diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h index 2918fb1a3b6..27451f637db 100644 --- a/source/gameengine/Ketsji/KX_GameObject.h +++ b/source/gameengine/Ketsji/KX_GameObject.h @@ -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 : diff --git a/source/gameengine/PyDoc/KX_GameObject.py b/source/gameengine/PyDoc/KX_GameObject.py index a19e36d6dd0..d3428915f25 100644 --- a/source/gameengine/PyDoc/KX_GameObject.py +++ b/source/gameengine/PyDoc/KX_GameObject.py @@ -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 + """ diff --git a/source/gameengine/PyDoc/WhatsNew.py b/source/gameengine/PyDoc/WhatsNew.py index 883c51dd16d..023d568a052 100644 --- a/source/gameengine/PyDoc/WhatsNew.py +++ b/source/gameengine/PyDoc/WhatsNew.py @@ -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)