Revision: 19530
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19530
Author:   campbellbarton
Date:     2009-04-04 04:57:35 +0200 (Sat, 04 Apr 2009)

Log Message:
-----------
moved more attributes from getattr into PyAttributeDef's

Modified Paths:
--------------
    trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp
    trunk/blender/source/gameengine/Converter/BL_ActionActuator.h
    trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
    trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.h
    trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_ISensor.h
    trunk/blender/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_JoystickSensor.h
    trunk/blender/source/gameengine/GameLogic/SCA_PythonController.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_PythonController.h
    trunk/blender/source/gameengine/GameLogic/SCA_RandomSensor.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_RandomSensor.h
    trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.h
    trunk/blender/source/gameengine/Ketsji/KX_TouchSensor.cpp
    trunk/blender/source/gameengine/Ketsji/KX_TouchSensor.h

Modified: trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp     
2009-04-04 02:05:57 UTC (rev 19529)
+++ trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp     
2009-04-04 02:57:35 UTC (rev 19530)
@@ -1025,6 +1025,7 @@
        KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ActionActuator, 
m_startframe),
        KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ActionActuator, 
m_endframe),
        KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, BL_ActionActuator, 
m_blendin),
+       KX_PYATTRIBUTE_RW_FUNCTION("action", BL_ActionActuator, 
pyattr_get_action, pyattr_set_action),
        KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, BL_ActionActuator, 
m_priority),
        KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, BL_ActionActuator, 
m_localtime, CheckFrame),
        KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, BL_ActionActuator, 
m_propname),
@@ -1036,10 +1037,6 @@
 };
 
 PyObject* BL_ActionActuator::py_getattro(PyObject *attr) {
-       char *attr_str= PyString_AsString(attr);
-       if (!strcmp(attr_str, "action"))
-               return PyString_FromString(m_action->id.name+2);
-
        PyObject* object = py_getattro_self(Attributes, this, attr);
        if (object != NULL)
                return object;
@@ -1047,39 +1044,44 @@
 }
 
 int BL_ActionActuator::py_setattro(PyObject *attr, PyObject* value) {
-       char *attr_str= PyString_AsString(attr);
-       if (!strcmp(attr_str, "action"))
-       {
-               if (!PyString_Check(value))
-               {
-                       PyErr_SetString(PyExc_ValueError, "expected a string");
-                       return 1;
-               }
+       int ret = py_setattro_self(Attributes, this, attr, value);
+       if (ret >= 0)
+               return ret;
+       return SCA_IActuator::py_setattro(attr, value);
+}
 
-               STR_String val = PyString_AsString(value);
-               
-               if (val == "")
-               {
-                       m_action = NULL;
-                       return 0;
-               }
 
-               bAction *action;
-               
-               action = 
(bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
-               
 
+PyObject* BL_ActionActuator::pyattr_get_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef)
+{
+       BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);
+       return PyString_FromString(self->GetAction()->id.name+2);
+}
+
+int BL_ActionActuator::pyattr_set_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+       BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);
+       
+       if (!PyString_Check(value))
+       {
+               PyErr_SetString(PyExc_ValueError, "expected the string name of 
the action");
+               return -1;
+       }
+
+       bAction *action= NULL;
+       STR_String val = PyString_AsString(value);
+       
+       if (val != "")
+       {
+               
(bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
                if (!action)
                {
                        PyErr_SetString(PyExc_ValueError, "action not found!");
                        return 1;
                }
+       }
+       
+       self->SetAction(action);
+       return 0;
 
-               m_action = action;
-               return 0;
-       }
-       int ret = py_setattro_self(Attributes, this, attr, value);
-       if (ret >= 0)
-               return ret;
-       return SCA_IActuator::py_setattro(attr, value);
-}
\ No newline at end of file
+}

Modified: trunk/blender/source/gameengine/Converter/BL_ActionActuator.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ActionActuator.h       
2009-04-04 02:05:57 UTC (rev 19529)
+++ trunk/blender/source/gameengine/Converter/BL_ActionActuator.h       
2009-04-04 02:57:35 UTC (rev 19530)
@@ -81,6 +81,9 @@
        virtual void ProcessReplica();
        
        void SetBlendTime (float newtime);
+       
+       bAction*        GetAction() { return m_action; }
+       void            SetAction(bAction* act) { m_action= act; }
 
        //Deprecated ----->
        KX_PYMETHOD_DOC(BL_ActionActuator,SetAction);
@@ -113,6 +116,9 @@
        virtual PyObject* py_getattro(PyObject* attr);
        virtual int py_setattro(PyObject* attr, PyObject* value);
 
+       static PyObject*        pyattr_get_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef);
+       static int                      pyattr_set_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
        /* attribute check */
        static int CheckFrame(void *self, const PyAttributeDef*)
        {
@@ -151,8 +157,8 @@
                                PyErr_SetString(PyExc_ValueError, "invalid type 
supplied");
                                return 1;
                }
-
        }
+       
 protected:
 
        void SetStartTime(float curtime);

Modified: trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp        
2009-04-04 02:05:57 UTC (rev 19529)
+++ trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp        
2009-04-04 02:57:35 UTC (rev 19530)
@@ -474,6 +474,7 @@
        KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ShapeActionActuator, 
m_startframe),
        KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ShapeActionActuator, 
m_endframe),
        KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, 
BL_ShapeActionActuator, m_blendin),
+       KX_PYATTRIBUTE_RW_FUNCTION("action", BL_ShapeActionActuator, 
pyattr_get_action, pyattr_set_action),
        KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, 
BL_ShapeActionActuator, m_priority),
        KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, 
BL_ShapeActionActuator, m_localtime, CheckFrame),
        KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, 
BL_ShapeActionActuator, m_propname),
@@ -485,9 +486,6 @@
 
 
 PyObject* BL_ShapeActionActuator::py_getattro(PyObject* attr) {
-       char *attr_str= PyString_AsString(attr);
-       if (!strcmp(attr_str, "action"))
-               return PyString_FromString(m_action->id.name+2);
        PyObject* object = py_getattro_self(Attributes, this, attr);
        if (object != NULL)
                return object;
@@ -495,37 +493,6 @@
 }
 
 int BL_ShapeActionActuator::py_setattro(PyObject *attr, PyObject* value) {
-       char *attr_str= PyString_AsString(attr);
-       if (!strcmp(attr_str, "action"))
-       {
-               if (!PyString_Check(value))
-               {
-                       PyErr_SetString(PyExc_ValueError, "expected a string");
-                       return 1;
-               }
-
-               STR_String val = PyString_AsString(value);
-               
-               if (val == "")
-               {
-                       m_action = NULL;
-                       return 0;
-               }
-
-               bAction *action;
-               
-               action = 
(bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
-               
-
-               if (!action)
-               {
-                       PyErr_SetString(PyExc_ValueError, "action not found!");
-                       return 1;
-               }
-
-               m_action = action;
-               return 0;
-       }
        int ret = py_setattro_self(Attributes, this, attr, value);
        if (ret >= 0)
                return ret;
@@ -916,3 +883,36 @@
     Py_RETURN_NONE;
 }
 
+PyObject* BL_ShapeActionActuator::pyattr_get_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef)
+{
+       BL_ShapeActionActuator* self= 
static_cast<BL_ShapeActionActuator*>(self_v);
+       return PyString_FromString(self->GetAction()->id.name+2);
+}
+
+int BL_ShapeActionActuator::pyattr_set_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+       BL_ShapeActionActuator* self= 
static_cast<BL_ShapeActionActuator*>(self_v);
+       /* exact copy of BL_ActionActuator's function from here down */
+       if (!PyString_Check(value))
+       {
+               PyErr_SetString(PyExc_ValueError, "expected the string name of 
the action");
+               return -1;
+       }
+
+       bAction *action= NULL;
+       STR_String val = PyString_AsString(value);
+       
+       if (val != "")
+       {
+               
(bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
+               if (action==NULL)
+               {
+                       PyErr_SetString(PyExc_ValueError, "action not found!");
+                       return 1;
+               }
+       }
+       
+       self->SetAction(action);
+       return 0;
+
+}

Modified: trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.h  
2009-04-04 02:05:57 UTC (rev 19529)
+++ trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.h  
2009-04-04 02:57:35 UTC (rev 19530)
@@ -79,6 +79,9 @@
        
        void SetBlendTime (float newtime);
        void BlendShape(struct Key* key, float weigth);
+       
+       bAction*        GetAction() { return m_action; }
+       void            SetAction(bAction* act) { m_action= act; }
 
        KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetAction);
        KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetBlendin);
@@ -106,6 +109,9 @@
        virtual PyObject* py_getattro(PyObject* attr);
        virtual int py_setattro(PyObject* attr, PyObject* value);
 
+       static PyObject*        pyattr_get_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef);
+       static int                      pyattr_set_action(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
        static int CheckBlendTime(void *self, const PyAttributeDef*)
        {
                BL_ShapeActionActuator* act = 
reinterpret_cast<BL_ShapeActionActuator*>(self);

Modified: trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp   2009-04-04 
02:05:57 UTC (rev 19529)
+++ trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp   2009-04-04 
02:57:35 UTC (rev 19530)
@@ -454,9 +454,8 @@
        
KX_PYATTRIBUTE_INT_RW("frequency",0,100000,true,SCA_ISensor,m_pulse_frequency),
        KX_PYATTRIBUTE_BOOL_RW("invert",SCA_ISensor,m_invert),
        KX_PYATTRIBUTE_BOOL_RW("level",SCA_ISensor,m_level),
-       // make these properties read-only in _setaddr, must still implement 
them in py_getattro
-       KX_PYATTRIBUTE_DUMMY("triggered"),
-       KX_PYATTRIBUTE_DUMMY("positive"),
+       KX_PYATTRIBUTE_RO_FUNCTION("triggered", SCA_ISensor, 
pyattr_get_triggered),
+       KX_PYATTRIBUTE_RO_FUNCTION("positive", SCA_ISensor, 
pyattr_get_positive),
        { NULL }        //Sentinel
 };
 
@@ -466,20 +465,6 @@
        PyObject* object = py_getattro_self(Attributes, this, attr);
        if (object != NULL)
                return object;
-       
-       char *attr_str= PyString_AsString(attr);
-       if (!strcmp(attr_str, "triggered"))
-       {
-               int retval = 0;
-               if (SCA_PythonController::m_sCurrentController)
-                       retval = 
SCA_PythonController::m_sCurrentController->IsTriggered(this);
-               return PyInt_FromLong(retval);
-       }
-       if (!strcmp(attr_str, "positive"))
-       {       
-               int retval = IsPositiveTrigger();
-               return PyInt_FromLong(retval);
-       }
        py_getattro_up(SCA_ILogicBrick);
 }
 
@@ -490,4 +475,20 @@
                return ret;
        return SCA_ILogicBrick::py_setattro(attr, value);
 }
+
+PyObject* SCA_ISensor::pyattr_get_triggered(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef)
+{
+       SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+       int retval = 0;
+       if (SCA_PythonController::m_sCurrentController)
+               retval = 
SCA_PythonController::m_sCurrentController->IsTriggered(self);
+       return PyInt_FromLong(retval);
+}
+
+PyObject* SCA_ISensor::pyattr_get_positive(void *self_v, const 
KX_PYATTRIBUTE_DEF *attrdef)
+{
+       SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);

@@ 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