From d57811ada14ad3f9833e77b2cff0d624c7e1ff89 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Sun, 29 Mar 2009 15:17:55 +0000 Subject: BGE API cleanup: CDActuator, ParentActuator, VisibilityActuator done. Thanks to Andre. --- source/gameengine/Ketsji/KX_CDActuator.cpp | 91 ++++++++++++++++++---- source/gameengine/Ketsji/KX_CDActuator.h | 17 +++- source/gameengine/Ketsji/KX_ParentActuator.cpp | 65 ++++++++++------ source/gameengine/Ketsji/KX_ParentActuator.h | 8 +- source/gameengine/Ketsji/KX_VisibilityActuator.cpp | 23 +++++- source/gameengine/Ketsji/KX_VisibilityActuator.h | 6 +- source/gameengine/PyDoc/KX_CDActuator.py | 21 +++++ source/gameengine/PyDoc/KX_ParentActuator.py | 5 +- source/gameengine/PyDoc/KX_VisibilityActuator.py | 7 +- 9 files changed, 193 insertions(+), 50 deletions(-) diff --git a/source/gameengine/Ketsji/KX_CDActuator.cpp b/source/gameengine/Ketsji/KX_CDActuator.cpp index ef7883910fd..98f76dbee54 100644 --- a/source/gameengine/Ketsji/KX_CDActuator.cpp +++ b/source/gameengine/Ketsji/KX_CDActuator.cpp @@ -98,7 +98,7 @@ bool KX_CDActuator::Update() 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 @@ bool KX_CDActuator::Update() 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 @@ bool KX_CDActuator::Update() 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 @@ bool KX_CDActuator::Update() 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 @@ PyParentObject KX_CDActuator::Parents[] = { 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(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::PySetGain(PyObject* self, PyObject* args, PyObject* kwd 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; } +// <----- diff --git a/source/gameengine/Ketsji/KX_CDActuator.h b/source/gameengine/Ketsji/KX_CDActuator.h index 393c49083f9..08ca6a82db3 100644 --- a/source/gameengine/Ketsji/KX_CDActuator.h +++ b/source/gameengine/Ketsji/KX_CDActuator.h @@ -82,12 +82,23 @@ public: /* -------------------------------------------------------------------- */ 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 diff --git a/source/gameengine/Ketsji/KX_ParentActuator.cpp b/source/gameengine/Ketsji/KX_ParentActuator.cpp index 84d7ccb9c05..fc5d679f200 100644 --- a/source/gameengine/Ketsji/KX_ParentActuator.cpp +++ b/source/gameengine/Ketsji/KX_ParentActuator.cpp @@ -166,48 +166,64 @@ PyParentObject KX_ParentActuator::Parents[] = { }; 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(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(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 @@ PyObject* KX_ParentActuator::PyGetObject(PyObject* self, PyObject* args) else return m_ob->AddRef(); } +/* <----- */ /* eof */ diff --git a/source/gameengine/Ketsji/KX_ParentActuator.h b/source/gameengine/Ketsji/KX_ParentActuator.h index c974001c0d0..c647e6cc8a9 100644 --- a/source/gameengine/Ketsji/KX_ParentActuator.h +++ b/source/gameengine/Ketsji/KX_ParentActuator.h @@ -79,10 +79,14 @@ class KX_ParentActuator : public SCA_IActuator 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); + static int pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); + + // Deprecated -----> KX_PYMETHOD_DOC_O(KX_ParentActuator,SetObject); - /* 2. getObject */ KX_PYMETHOD_DOC_VARARGS(KX_ParentActuator,GetObject); + // <----- }; /* end of class KX_ParentActuator : public SCA_PropertyActuator */ diff --git a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp index 0ec280080bd..6d3c4e79280 100644 --- a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp +++ b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp @@ -121,20 +121,34 @@ KX_VisibilityActuator::Parents[] = { PyMethodDef KX_VisibilityActuator::Methods[] = { - {"set", (PyCFunction) KX_VisibilityActuator::sPySetVisible, - METH_VARARGS, (PY_METHODCHAR)SetVisible_doc}, + // Deprecated -----> + {"set", (PyCFunction) KX_VisibilityActuator::sPySetVisible, METH_VARARGS, + (PY_METHODCHAR) SetVisible_doc}, + // <----- {NULL,NULL} //Sentinel }; PyAttributeDef KX_VisibilityActuator::Attributes[] = { + KX_PYATTRIBUTE_BOOL_RW("visibility", KX_VisibilityActuator, m_visible), + KX_PYATTRIBUTE_BOOL_RW("recursion", KX_VisibilityActuator, m_recursive), { NULL } //Sentinel }; -PyObject* KX_VisibilityActuator::_getattr(const char *attr) +PyObject* KX_VisibilityActuator::_getattr(const char *attr) { + PyObject* object = _getattr_self(Attributes, this, attr); + if (object != NULL) + return object; _getattr_up(SCA_IActuator); -}; +} +int KX_VisibilityActuator::_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); +} /* set visibility ---------------------------------------------------------- */ @@ -149,6 +163,7 @@ KX_VisibilityActuator::PySetVisible(PyObject* self, PyObject* args, PyObject* kwds) { int vis; + ShowDeprecationWarning("SetVisible()", "the visible property"); if(!PyArg_ParseTuple(args, "i", &vis)) { return NULL; diff --git a/source/gameengine/Ketsji/KX_VisibilityActuator.h b/source/gameengine/Ketsji/KX_VisibilityActuator.h index 323280de8cb..2e2a5957777 100644 --- a/source/gameengine/Ketsji/KX_VisibilityActuator.h +++ b/source/gameengine/Ketsji/KX_VisibilityActuator.h @@ -68,8 +68,12 @@ class KX_VisibilityActuator : public SCA_IActuator /* --------------------------------------------------------------------- */ virtual PyObject* _getattr(const char *attr); - //KX_PYMETHOD_DOC + virtual int _setattr(const char *attr, PyObject *value); + + // Deprecated -----> KX_PYMETHOD_DOC(KX_VisibilityActuator,SetVisible); + // <----- + }; diff --git a/source/gameengine/PyDoc/KX_CDActuator.py b/source/gameengine/PyDoc/KX_CDActuator.py index 2c202476584..ffc8ddefa43 100644 --- a/source/gameengine/PyDoc/KX_CDActuator.py +++ b/source/gameengine/PyDoc/KX_CDActuator.py @@ -3,6 +3,13 @@ from SCA_IActuator import * class KX_CDActuator(SCA_IActuator): + """ + CD Controller actuator. + @ivar volume: controls the volume to set the CD to. 0.0 = silent, 1.0 = max volume. + @type volume: float + @ivar track: the track selected to be played + @type track: integer + """ def startCD(): """ Starts the CD playing. @@ -15,8 +22,21 @@ class KX_CDActuator(SCA_IActuator): """ Pauses the CD. """ + def resumeCD(): + """ + Resumes the CD after a pause. + """ + def playAll(): + """ + Plays the CD from the beginning. + """ + def playTrack(trackNumber): + """ + Plays the track selected. + """ def setGain(gain): """ + DEPRECATED: Use the volume property. Sets the gain (volume) of the CD. @type gain: float @@ -24,6 +44,7 @@ class KX_CDActuator(SCA_IActuator): """ def getGain(): """ + DEPRECATED: Use the volume property. Gets the current gain (volume) of the CD. @rtype: float diff --git a/source/gameengine/PyDoc/KX_ParentActuator.py b/source/gameengine/PyDoc/KX_ParentActuator.py index 7b5625ec82d..76252e5cfad 100644 --- a/source/gameengine/PyDoc/KX_ParentActuator.py +++ b/source/gameengine/PyDoc/KX_ParentActuator.py @@ -4,13 +4,13 @@ from SCA_IActuator import * class KX_ParentActuator(SCA_IActuator): """ - The parent actuator can set or remove an objects parent object. - + The parent actuator can set or remove an objects parent object. @ivar object: the object this actuator sets the parent too. @type object: KX_GameObject or None """ def setObject(object): """ + DEPRECATED: Use the object property. Sets the object to set as parent. Object can be either a L{KX_GameObject} or the name of the object. @@ -19,6 +19,7 @@ class KX_ParentActuator(SCA_IActuator): """ def getObject(name_only = 1): """ + DEPRECATED: Use the object property. Returns the name of the object to change to. @type name_only: bool @param name_only: optional argument, when 0 return a KX_GameObject diff --git a/source/gameengine/PyDoc/KX_VisibilityActuator.py b/source/gameengine/PyDoc/KX_VisibilityActuator.py index 22499f25d81..17d22fa5f83 100644 --- a/source/gameengine/PyDoc/KX_VisibilityActuator.py +++ b/source/gameengine/PyDoc/KX_VisibilityActuator.py @@ -5,13 +5,18 @@ from SCA_IActuator import * class KX_VisibilityActuator(SCA_IActuator): """ Visibility Actuator. + @ivar visibility: whether the actuator makes its parent object visible or invisible + @type visibility: boolean + @ivar recursion: whether the visibility/invisibility should be propagated to all children of the object + @type recursion: boolean """ def set(visible): """ + DEPRECATED: Use the visibility property instead. Sets whether the actuator makes its parent object visible or invisible. @param visible: - True: Makes its parent visible. - False: Makes its parent invisible. """ - \ No newline at end of file + -- cgit v1.2.3