[Bf-python] GameEngine GetGameObject() Patch

maci_ray maci_ray at yahoo.de
Thu Sep 4 20:42:40 CEST 2003


First posted to bf-committers list...

Hi Blenders,

attached a little patch, which enables a method GetGameObject()
in GameLogic module. It has the same functionality as the Object.Get()
Method from ExpPython.

Please check and commit if you like it.

Maci_Ray.


Index: KX_PythonInit.cpp
===================================================================
RCS file:
/cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_PythonInit.cpp,v
retrieving revision 1.3
diff -r1.3 KX_PythonInit.cpp
46a47
> #include "KX_GameObject.h"
225a227,279
> // Inspired by http://www.elysiun.com/forum/viewtopic.php?t=3245 and
> // my own needs.
> // Based on EXPython Object.c/M_Object_Get() by Michel Selten.
> 
> static PyObject *gPyGetGameObject(PyObject *self, PyObject *args)
> {
>  CListValue *kx_list = gp_KetsjiScene->GetObjectList();
>     char       *name = NULL;
> 
>     PyArg_ParseTuple(args, "|s", &name);
> 
>     if(name != NULL)
>  { // prepend with OB for internal identifier
>   STR_String exp_name = "OB";
>   exp_name += name;
> 
>   KX_GameObject *game_object = 
>    (KX_GameObject *)kx_list->FindValue(exp_name);
> 
>         if(game_object == NULL)
>         { // No object exists with the name specified in the argument name.
>             return NULL;
>         }
>   return game_object->AddRef();
>     }
>     else
>     {   // No argument has been given. Return a list of all objects.
>         PyObject *py_list;
>         py_list = PyList_New(kx_list->GetCount() );
> 
>         if(py_list == NULL)
>         { return NULL;
>         }
> 
>   // iterate through all KX_GameObjects and set list elements
>   // (maybe a copy list would work also?)
>   for(int index = 0; index < kx_list->GetCount(); ++index)
>   {
>    KX_GameObject *game_object = 
>     (KX_GameObject *)kx_list->GetValue(index);
> 
>             PyList_SetItem(py_list, index, game_object->AddRef() );
>   }
>   return py_list;
>     }
> }
> 
> 
> 
> static char gPyGetGameObject_doc[] =
> "(name) - return the object with the name 'name', returns None if not
found.\n\
> If 'name' is not specified, it returns a list of all gameobjects in the\n\
> current scene.";
231c285
<  {"addActiveActuator",(PyCFunction)
SCA_PythonController::sPyAddActiveActuator,
---
> 
{"addActiveActuator",(PyCFunction)SCA_PythonController::sPyAddActiveActuator,
235,237c289,292
<  {"setGravity",(PyCFunction) gPySetGravity, METH_VARARGS,"set
Gravitation"},
<  {"getSpectrum",(PyCFunction) gPyGetSpectrum, METH_VARARGS,"get audio
spectrum"},
<  {"stopDSP",(PyCFunction) gPyStopDSP, METH_VARARGS,"stop using the audio
dsp (for performance reasons)"},
---
>  {"setGravity",(PyCFunction) gPySetGravity, METH_VARARGS, "set
Gravitation"},
>  {"getSpectrum",(PyCFunction) gPyGetSpectrum, METH_VARARGS, "get audio
spectrum"},
>  {"stopDSP",(PyCFunction) gPyStopDSP, METH_VARARGS, "stop using the audio
dsp (for performance reasons)"},
>  {"GetGameObject",(PyCFunction) gPyGetGameObject, METH_VARARGS,
gPyGetGameObject_doc},
 

__________________________________________________________________

Gesendet von Yahoo! Mail - http://mail.yahoo.de
Logos und Klingeltöne fürs Handy bei http://sms.yahoo.de



More information about the Bf-python mailing list