Revision: 19447
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19447
Author:   ben2610
Date:     2009-03-29 17:17:55 +0200 (Sun, 29 Mar 2009)

Log Message:
-----------
BGE API cleanup: CDActuator, ParentActuator, VisibilityActuator done. Thanks to 
Andre.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_CDActuator.h
    trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.h
    trunk/blender/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_VisibilityActuator.h
    trunk/blender/source/gameengine/PyDoc/KX_CDActuator.py
    trunk/blender/source/gameengine/PyDoc/KX_ParentActuator.py
    trunk/blender/source/gameengine/PyDoc/KX_VisibilityActuator.py

Modified: trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp    2009-03-29 
08:40:43 UTC (rev 19446)
+++ trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp    2009-03-29 
15:17:55 UTC (rev 19447)
@@ -98,7 +98,7 @@
                                
SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
                                SND_CDObject::Instance()->SetTrack(1);
                                
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
-                               result = true;
+                               //result = true;
                                break;
                        }
                case KX_CDACT_PLAY_TRACK:
@@ -106,7 +106,7 @@
                                
SND_CDObject::Instance()->SetPlaymode(SND_CD_TRACK);
                                SND_CDObject::Instance()->SetTrack(m_track);
                                
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
-                               result = true;
+                               //result = true;
                                break;
                        }
                case KX_CDACT_LOOP_TRACK:
@@ -114,7 +114,7 @@
                                
SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
                                SND_CDObject::Instance()->SetTrack(m_track);
                                
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
-                               result = true;
+                               //result = true;
                                break;
                        }
                case KX_CDACT_STOP:
@@ -125,19 +125,19 @@
                case KX_CDACT_PAUSE:
                        {
                                
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE);
-                               result = true;
+                               //result = true;
                                break;
                        }
                case KX_CDACT_RESUME:
                        {
                                
SND_CDObject::Instance()->SetPlaystate(SND_MUST_RESUME);
-                               result = true;
+                               //result = true;
                                break;
                        }
                case KX_CDACT_VOLUME:
                        {
                                SND_CDObject::Instance()->SetGain(m_gain);
-                               result = true;
+                               //result = true;
                                break;
                        }
                default:
@@ -189,53 +189,116 @@
 
 
 PyMethodDef KX_CDActuator::Methods[] = {
-       {"startCD",(PyCFunction) KX_CDActuator::sPyStartCD,METH_VARARGS,NULL},
-       {"pauseCD",(PyCFunction) KX_CDActuator::sPyPauseCD,METH_VARARGS,NULL},
-       {"stopCD",(PyCFunction) KX_CDActuator::sPyStopCD,METH_VARARGS,NULL},
+       // Deprecated ----->
        {"setGain",(PyCFunction) KX_CDActuator::sPySetGain,METH_VARARGS,NULL},
        {"getGain",(PyCFunction) KX_CDActuator::sPyGetGain,METH_VARARGS,NULL},
+       // <-----
+       KX_PYMETHODTABLE_NOARGS(KX_CDActuator, startCD),
+       KX_PYMETHODTABLE_NOARGS(KX_CDActuator, pauseCD),
+       KX_PYMETHODTABLE_NOARGS(KX_CDActuator, resumeCD),
+       KX_PYMETHODTABLE_NOARGS(KX_CDActuator, stopCD),
+       KX_PYMETHODTABLE_NOARGS(KX_CDActuator, playAll),
+       KX_PYMETHODTABLE_O(KX_CDActuator, playTrack),
        {NULL,NULL,NULL,NULL} //Sentinel
 };
 
 PyAttributeDef KX_CDActuator::Attributes[] = {
+       KX_PYATTRIBUTE_FLOAT_RW_CHECK("volume", 0.0, 1.0, KX_CDActuator, 
m_gain,pyattr_setGain),
+       KX_PYATTRIBUTE_INT_RW("track", 1, 99, false, KX_CDActuator, m_track),
        { NULL }        //Sentinel
 };
 
+int KX_CDActuator::pyattr_setGain(void *self, const struct KX_PYATTRIBUTE_DEF 
*attrdef)
+{
+       KX_CDActuator* act = static_cast<KX_CDActuator*>(self);
+       SND_CDObject::Instance()->SetGain(act->m_gain);
+       return 0;
+}
+
 PyObject* KX_CDActuator::_getattr(const char *attr)
 {
+       PyObject* object = _getattr_self(Attributes, this, attr);
+       if (object != NULL)
+               return object;
        _getattr_up(SCA_IActuator);
 }
 
+int KX_CDActuator::_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_CDActuator::PyStartCD(PyObject* self, PyObject* args, PyObject* 
kwds)
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, startCD,
+"startCD()\n"
+"\tStarts the CD playing.\n")
 {
        SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
        Py_RETURN_NONE;
 }         
 
 
-
-PyObject* KX_CDActuator::PyPauseCD(PyObject* self, PyObject* args, PyObject* 
kwds)
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, pauseCD,
+"pauseCD()\n"
+"\tPauses the CD playing.\n")
 {
        SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE);
        Py_RETURN_NONE;
 } 
 
 
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, resumeCD,
+"resumeCD()\n"
+"\tResumes the CD playing.\n")
+{
+       SND_CDObject::Instance()->SetPlaystate(SND_MUST_RESUME);
+       Py_RETURN_NONE;
+} 
 
-PyObject* KX_CDActuator::PyStopCD(PyObject* self, PyObject* args, PyObject* 
kwds)
+
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, stopCD,
+"stopCD()\n"
+"\tStops the CD playing.\n")
 {
        SND_CDObject::Instance()->SetPlaystate(SND_MUST_STOP);
        Py_RETURN_NONE;
 }
 
 
+KX_PYMETHODDEF_DOC_O(KX_CDActuator, playTrack,
+"playTrack(trackNumber)\n"
+"\tPlays the track selected.\n")
+{
+       if (PyInt_Check(value)) {
+               int track = PyInt_AsLong(value);
+               SND_CDObject::Instance()->SetPlaymode(SND_CD_TRACK);
+               SND_CDObject::Instance()->SetTrack(track);
+               SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
+       }
+       Py_RETURN_NONE;
+}
 
+
+
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, playAll,
+"playAll()\n"
+"\tPlays the CD from the beginning.\n")
+{
+       SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
+       SND_CDObject::Instance()->SetTrack(1);
+       SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
+       Py_RETURN_NONE;
+}     
+
+// Deprecated ----->
 PyObject* KX_CDActuator::PySetGain(PyObject* self, PyObject* args, PyObject* 
kwds)
 {
        float gain = 1.0;
+       ShowDeprecationWarning("setGain()", "the volume property");
        if (!PyArg_ParseTuple(args, "f", &gain))
                return NULL;
        
@@ -249,7 +312,9 @@
 PyObject* KX_CDActuator::PyGetGain(PyObject* self, PyObject* args, PyObject* 
kwds)
 {
        float gain = SND_CDObject::Instance()->GetGain();
+       ShowDeprecationWarning("getGain()", "the volume property");
        PyObject* result = PyFloat_FromDouble(gain);
        
        return result;
 }
+// <-----

Modified: trunk/blender/source/gameengine/Ketsji/KX_CDActuator.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_CDActuator.h      2009-03-29 
08:40:43 UTC (rev 19446)
+++ trunk/blender/source/gameengine/Ketsji/KX_CDActuator.h      2009-03-29 
15:17:55 UTC (rev 19447)
@@ -82,12 +82,23 @@
        /* -------------------------------------------------------------------- 
*/
 
        virtual PyObject*  _getattr(const char *attr);
+       virtual int _setattr(const char *attr, PyObject *value);
 
-       KX_PYMETHOD(KX_CDActuator,StartCD);
-       KX_PYMETHOD(KX_CDActuator,PauseCD);
-       KX_PYMETHOD(KX_CDActuator,StopCD);
+       // Deprecated ----->
        KX_PYMETHOD(KX_CDActuator,SetGain);
        KX_PYMETHOD(KX_CDActuator,GetGain);
+       // <-----
+
+       KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, startCD);
+       KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, pauseCD);
+       KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, resumeCD);
+       KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, stopCD);
+       KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, playAll);
+       KX_PYMETHOD_DOC_O(KX_CDActuator, playTrack);
+
+       static int pyattr_setGain(void *self, const struct KX_PYATTRIBUTE_DEF 
*attrdef);
+
+
 };
 
 #endif //__KX_CDACTUATOR

Modified: trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.cpp        
2009-03-29 08:40:43 UTC (rev 19446)
+++ trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.cpp        
2009-03-29 15:17:55 UTC (rev 19447)
@@ -166,48 +166,64 @@
 };
 
 PyMethodDef KX_ParentActuator::Methods[] = {
-       // ---> deprecated (all)
-       {"setObject",         (PyCFunction) KX_ParentActuator::sPySetObject, 
METH_O, (PY_METHODCHAR)SetObject_doc},
-       {"getObject",         (PyCFunction) KX_ParentActuator::sPyGetObject, 
METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
+       // Deprecated ----->
+       {"setObject", (PyCFunction) KX_ParentActuator::sPySetObject, METH_O, 
(PY_METHODCHAR)SetObject_doc},
+       {"getObject", (PyCFunction) KX_ParentActuator::sPyGetObject, 
METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
+       // <-----
        {NULL,NULL} //Sentinel
 };
 
 PyAttributeDef KX_ParentActuator::Attributes[] = {
+       KX_PYATTRIBUTE_RW_FUNCTION("object", KX_ParentActuator, 
pyattr_get_object, pyattr_set_object),
        { NULL }        //Sentinel
 };
 
-PyObject* KX_ParentActuator::_getattr(const char *attr) {      
-       
-       if (!strcmp(attr, "object")) {
-               if (!m_ob)      Py_RETURN_NONE;
-               else            return m_ob->AddRef();
-       }
-       
-       _getattr_up(SCA_IActuator);
+PyObject* KX_ParentActuator::pyattr_get_object(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef)
+{
+       KX_ParentActuator* actuator = static_cast<KX_ParentActuator*>(self);
+       if (!actuator->m_ob)    
+               Py_RETURN_NONE;
+       else
+               return actuator->m_ob->AddRef();
 }
 
-int KX_ParentActuator::_setattr(const char *attr, PyObject* value) {
-       
-       if (!strcmp(attr, "object")) {
-               KX_GameObject *gameobj;
+int KX_ParentActuator::pyattr_set_object(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+       KX_ParentActuator* actuator = static_cast<KX_ParentActuator*>(self);
+       KX_GameObject *gameobj;
                
-               if (!ConvertPythonToGameObject(value, &gameobj, true))
-                       return 1; // ConvertPythonToGameObject sets the error
+       if (!ConvertPythonToGameObject(value, &gameobj, true))
+               return 1; // ConvertPythonToGameObject sets the error
                
-               if (m_ob != NULL)
-                       m_ob->UnregisterActuator(this); 
+       if (actuator->m_ob != NULL)
+               actuator->m_ob->UnregisterActuator(actuator);   
 
-               m_ob = (SCA_IObject*)gameobj;
+       actuator->m_ob = (SCA_IObject*) gameobj;
                
-               if (m_ob)
-                       m_ob->RegisterActuator(this);
+       if (actuator->m_ob)
+               actuator->m_ob->RegisterActuator(actuator);
                
-               return 0;
-       }
+       return 0;
+}
+
+
+PyObject* KX_ParentActuator::_getattr(const char *attr) {      
        
+       PyObject* object = _getattr_self(Attributes, this, attr);
+       if (object != NULL)
+               return object;
+       _getattr_up(SCA_IActuator);
+}
+
+int KX_ParentActuator::_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);
 }
 
+/* Deprecated -----> */
 /* 1. setObject                                                            */
 const char KX_ParentActuator::SetObject_doc[] = 
 "setObject(object)\n"
@@ -255,5 +271,6 @@
        else
                return m_ob->AddRef();
 }
+/* <----- */
 
 /* eof */

Modified: trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.h  2009-03-29 
08:40:43 UTC (rev 19446)
+++ trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.h  2009-03-29 
15:17:55 UTC (rev 19447)
@@ -79,10 +79,14 @@
        virtual PyObject* _getattr(const char *attr);
        virtual int _setattr(const char *attr, PyObject* value);
 
-       /* 1. setObject                                                         
   */
+       /* These are used to get and set m_ob */
+       static PyObject* pyattr_get_object(void *self, const struct 
KX_PYATTRIBUTE_DEF *attrdef);

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