Revision: 19483
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19483
Author:   ben2610
Date:     2009-03-31 23:03:15 +0200 (Tue, 31 Mar 2009)

Log Message:
-----------
BGE API cleanup: DynamicActuator, ReplaceMeshActuator, TrackToActuator.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
    trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
    trunk/blender/source/gameengine/Ketsji/KX_TrackToActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_TrackToActuator.h
    trunk/blender/source/gameengine/PyDoc/GameLogic.py
    trunk/blender/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py
    trunk/blender/source/gameengine/PyDoc/KX_TrackToActuator.py

Added Paths:
-----------
    trunk/blender/source/gameengine/PyDoc/KX_SCA_DynamicActuator.py

Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp    2009-03-31 
19:39:17 UTC (rev 19482)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp    2009-03-31 
21:03:15 UTC (rev 19483)
@@ -49,6 +49,7 @@
 #include "KX_KetsjiEngine.h"
 #include "KX_RadarSensor.h"
 #include "KX_RaySensor.h"
+#include "KX_SCA_DynamicActuator.h"
 
 #include "SCA_IInputDevice.h"
 #include "SCA_PropertySensor.h"
@@ -1079,6 +1080,13 @@
        KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_NEG_Y, 
KX_RaySensor::KX_RAY_AXIS_NEG_X);
        KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_NEG_Z, 
KX_RaySensor::KX_RAY_AXIS_NEG_Z);
 
+       /* Dynamic actuator */
+       KX_MACRO_addTypesToDict(d, KX_DYN_RESTORE_DYNAMICS, 
KX_SCA_DynamicActuator::KX_DYN_RESTORE_DYNAMICS);
+       KX_MACRO_addTypesToDict(d, KX_DYN_DISABLE_DYNAMICS, 
KX_SCA_DynamicActuator::KX_DYN_DISABLE_DYNAMICS);
+       KX_MACRO_addTypesToDict(d, KX_DYN_ENABLE_RIGID_BODY, 
KX_SCA_DynamicActuator::KX_DYN_ENABLE_RIGID_BODY);
+       KX_MACRO_addTypesToDict(d, KX_DYN_DISABLE_RIGID_BODY, 
KX_SCA_DynamicActuator::KX_DYN_DISABLE_RIGID_BODY);
+       KX_MACRO_addTypesToDict(d, KX_DYN_SET_MASS, 
KX_SCA_DynamicActuator::KX_DYN_SET_MASS);
+
        // Check for errors
        if (PyErr_Occurred())
     {

Modified: trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp   
2009-03-31 19:39:17 UTC (rev 19482)
+++ trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp   
2009-03-31 21:03:15 UTC (rev 19483)
@@ -36,6 +36,7 @@
 // Please look here for revision history.
 
 #include "KX_SCA_DynamicActuator.h"
+#include "blendef.h"
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -80,21 +81,34 @@
 
 
 PyMethodDef KX_SCA_DynamicActuator::Methods[] = {
+       // ---> deprecated
        KX_PYMETHODTABLE(KX_SCA_DynamicActuator, setOperation),
        KX_PYMETHODTABLE(KX_SCA_DynamicActuator, getOperation),
        {NULL,NULL} //Sentinel
 };
 
 PyAttributeDef KX_SCA_DynamicActuator::Attributes[] = {
+       
KX_PYATTRIBUTE_SHORT_RW("operation",0,4,false,KX_SCA_DynamicActuator,m_dyn_operation),
+       
KX_PYATTRIBUTE_FLOAT_RW("mass",0.0,MAXFLOAT,KX_SCA_DynamicActuator,m_setmass),
        { NULL }        //Sentinel
 };
 
 
 PyObject* KX_SCA_DynamicActuator::_getattr(const char *attr)
 {
-  _getattr_up(SCA_IActuator);
+       PyObject* object = _getattr_self(Attributes, this, attr);
+       if (object != NULL)
+               return object;
+       _getattr_up(SCA_IActuator);
 }
 
+int KX_SCA_DynamicActuator::_setattr(const char *attr, PyObject* value)
+{
+       int ret = _setattr_self(Attributes, this, attr, value);
+       if (ret >= 0)
+               return ret;
+       return SCA_IActuator::_setattr(attr, value);
+}
 
 
 /* 1. setOperation */
@@ -107,6 +121,7 @@
 "\t                3 = disable rigid body\n"
 "Change the dynamic status of the parent object.\n")
 {
+       ShowDeprecationWarning("setOperation()", "the operation property");
        int dyn_operation;
        
        if (!PyArg_ParseTuple(args, "i", &dyn_operation))
@@ -126,6 +141,7 @@
 "Returns the operation type of this actuator.\n"
 )
 {
+       ShowDeprecationWarning("getOperation()", "the operation property");
        return PyInt_FromLong((long)m_dyn_operation);
 }
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h     
2009-03-31 19:39:17 UTC (rev 19482)
+++ trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h     
2009-03-31 21:03:15 UTC (rev 19483)
@@ -64,7 +64,18 @@
        virtual bool 
        Update();
 
+       //Python Interface
+       enum DynamicOperation {
+               KX_DYN_RESTORE_DYNAMICS = 0,
+               KX_DYN_DISABLE_DYNAMICS,
+               KX_DYN_ENABLE_RIGID_BODY,
+               KX_DYN_DISABLE_RIGID_BODY,
+               KX_DYN_SET_MASS,
+       };
+
+
        virtual PyObject* _getattr(const char *attr);
+       virtual int _setattr(const char *attr, PyObject *value);
 
        /* 1. setOperation */
        KX_PYMETHOD_DOC(KX_SCA_DynamicActuator,setOperation);

Modified: trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp       
2009-03-31 19:39:17 UTC (rev 19482)
+++ trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp       
2009-03-31 21:03:15 UTC (rev 19483)
@@ -82,24 +82,63 @@
 
 
 PyMethodDef KX_SCA_ReplaceMeshActuator::Methods[] = {
+       KX_PYMETHODTABLE(KX_SCA_ReplaceMeshActuator, instantReplaceMesh),
+       // Deprecated ----->
        {"setMesh", (PyCFunction) KX_SCA_ReplaceMeshActuator::sPySetMesh, 
METH_O, (PY_METHODCHAR)SetMesh_doc},
-       
-       KX_PYMETHODTABLE(KX_SCA_ReplaceMeshActuator, instantReplaceMesh),
        KX_PYMETHODTABLE(KX_SCA_ReplaceMeshActuator, getMesh),
        {NULL,NULL} //Sentinel
 };
 
 PyAttributeDef KX_SCA_ReplaceMeshActuator::Attributes[] = {
+       KX_PYATTRIBUTE_RW_FUNCTION("mesh", KX_SCA_ReplaceMeshActuator, 
pyattr_get_mesh, pyattr_set_mesh),
        { NULL }        //Sentinel
 };
 
 PyObject* KX_SCA_ReplaceMeshActuator::_getattr(const char *attr)
 {
-  _getattr_up(SCA_IActuator);
+       PyObject* object = _getattr_self(Attributes, this, attr);
+       if (object != NULL)
+               return object;
+       _getattr_up(SCA_IActuator);
 }
 
+int KX_SCA_ReplaceMeshActuator::_setattr(const char *attr, PyObject* value) 
+{
+       int ret = _setattr_self(Attributes, this, attr, value);
+       if (ret >= 0)
+               return ret;
+       return SCA_IActuator::_setattr(attr, value);
+}
 
+PyObject* KX_SCA_ReplaceMeshActuator::pyattr_get_mesh(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef)
+{
+       KX_SCA_ReplaceMeshActuator* actuator = 
static_cast<KX_SCA_ReplaceMeshActuator*>(self);
+       if (!actuator->m_mesh)
+               Py_RETURN_NONE;
+       return PyString_FromString(const_cast<char 
*>(actuator->m_mesh->GetName().ReadPtr()));
+}
 
+int KX_SCA_ReplaceMeshActuator::pyattr_set_mesh(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+       KX_SCA_ReplaceMeshActuator* actuator = 
static_cast<KX_SCA_ReplaceMeshActuator*>(self);
+       if (value == Py_None) {
+               actuator->m_mesh = NULL;
+       } else {
+               char* meshname = PyString_AsString(value);
+               if (!meshname) {
+                       PyErr_SetString(PyExc_ValueError, "Expected the name of 
a mesh or None");
+                       return 1;
+               }
+               void* mesh = 
SCA_ILogicBrick::m_sCurrentLogicManager->GetMeshByName(STR_String(meshname));
+               if (mesh==NULL) {
+                       PyErr_SetString(PyExc_ValueError, "The mesh name given 
does not exist");
+                       return 1;
+               }
+               actuator->m_mesh= (class RAS_MeshObject*)mesh;
+       }
+       return 0;
+}
+
 /* 1. setMesh */
 const char KX_SCA_ReplaceMeshActuator::SetMesh_doc[] = 
        "setMesh(name)\n"
@@ -108,6 +147,7 @@
 
 PyObject* KX_SCA_ReplaceMeshActuator::PySetMesh(PyObject* self, PyObject* 
value)
 {
+       ShowDeprecationWarning("setMesh()", "the mesh property");
        if (value == Py_None) {
                m_mesh = NULL;
        } else {
@@ -133,6 +173,7 @@
 "Returns the name of the mesh to be substituted.\n"
 )
 {
+       ShowDeprecationWarning("getMesh()", "the mesh property");
        if (!m_mesh)
                Py_RETURN_NONE;
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h 
2009-03-31 19:39:17 UTC (rev 19482)
+++ trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h 
2009-03-31 21:03:15 UTC (rev 19483)
@@ -69,9 +69,14 @@
        virtual bool 
        Update();
 
-       virtual PyObject* _getattr(const char *attr);
        void    InstantReplaceMesh();
 
+       virtual PyObject* _getattr(const char *attr);
+       virtual int _setattr(const char *attr, PyObject* value);
+
+       static PyObject* pyattr_get_mesh(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef);
+       static int pyattr_set_mesh(void *self, const struct KX_PYATTRIBUTE_DEF 
*attrdef, PyObject *value);
+
        /* 1. setMesh */
        KX_PYMETHOD_DOC_O(KX_SCA_ReplaceMeshActuator,SetMesh);
        KX_PYMETHOD_DOC(KX_SCA_ReplaceMeshActuator,getMesh);

Modified: trunk/blender/source/gameengine/Ketsji/KX_TrackToActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_TrackToActuator.cpp       
2009-03-31 19:39:17 UTC (rev 19482)
+++ trunk/blender/source/gameengine/Ketsji/KX_TrackToActuator.cpp       
2009-03-31 21:03:15 UTC (rev 19483)
@@ -402,7 +402,7 @@
                        // set the models tranformation properties
                        curobj->NodeSetLocalOrientation(mat);
                        curobj->NodeSetLocalPosition(localpos);
-                       curobj->UpdateTransform();
+                       //curobj->UpdateTransform();
                }
                else
                {
@@ -456,12 +456,11 @@
 
 
 PyMethodDef KX_TrackToActuator::Methods[] = {
+       // ---> deprecated
        {"setTime", (PyCFunction) KX_TrackToActuator::sPySetTime, METH_VARARGS, 
(PY_METHODCHAR)SetTime_doc},
        {"getTime", (PyCFunction) KX_TrackToActuator::sPyGetTime, METH_VARARGS, 
(PY_METHODCHAR)GetTime_doc},
        {"setUse3D", (PyCFunction) KX_TrackToActuator::sPySetUse3D, 
METH_VARARGS, (PY_METHODCHAR)SetUse3D_doc},
        {"getUse3D", (PyCFunction) KX_TrackToActuator::sPyGetUse3D, 
METH_VARARGS, (PY_METHODCHAR)GetUse3D_doc},
-       
-       // ---> deprecated
        {"setObject", (PyCFunction) KX_TrackToActuator::sPySetObject, METH_O, 
(PY_METHODCHAR)SetObject_doc},
        {"getObject", (PyCFunction) KX_TrackToActuator::sPyGetObject, 
METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
        
@@ -469,39 +468,55 @@
 };
 
 PyAttributeDef KX_TrackToActuator::Attributes[] = {
+       KX_PYATTRIBUTE_INT_RW("time",0,1000,true,KX_TrackToActuator,m_time),
+       KX_PYATTRIBUTE_BOOL_RW("user3D",KX_TrackToActuator,m_allow3D),
+       KX_PYATTRIBUTE_RW_FUNCTION("object", KX_TrackToActuator, 
pyattr_get_object, pyattr_set_object),
+
        { NULL }        //Sentinel
 };
 
-
-PyObject* KX_TrackToActuator::_getattr(const char *attr)
+PyObject* KX_TrackToActuator::pyattr_get_object(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef)
 {
-       if (!strcmp(attr, "object")) {
-               if (!m_object)          Py_RETURN_NONE;
-               else                            return m_object->AddRef();
-       }
-       
-       _getattr_up(SCA_IActuator);
+       KX_TrackToActuator* actuator = static_cast<KX_TrackToActuator*>(self);
+       if (!actuator->m_object)        
+               Py_RETURN_NONE;
+       else
+               return actuator->m_object->AddRef();
 }
 
-int KX_TrackToActuator::_setattr(const char *attr, PyObject* value)
+int KX_TrackToActuator::pyattr_set_object(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
 {
-       if (!strcmp(attr, "object")) {
-               KX_GameObject *gameobj;
+       KX_TrackToActuator* actuator = static_cast<KX_TrackToActuator*>(self);
+       KX_GameObject *gameobj;
                

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to