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

This commit is contained in:
Benoit Bolsee 2009-03-29 15:17:55 +00:00
parent 02191a1d39
commit d57811ada1
9 changed files with 195 additions and 52 deletions

@ -98,7 +98,7 @@ bool KX_CDActuator::Update()
SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL); SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
SND_CDObject::Instance()->SetTrack(1); SND_CDObject::Instance()->SetTrack(1);
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY); SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
result = true; //result = true;
break; break;
} }
case KX_CDACT_PLAY_TRACK: case KX_CDACT_PLAY_TRACK:
@ -106,7 +106,7 @@ bool KX_CDActuator::Update()
SND_CDObject::Instance()->SetPlaymode(SND_CD_TRACK); SND_CDObject::Instance()->SetPlaymode(SND_CD_TRACK);
SND_CDObject::Instance()->SetTrack(m_track); SND_CDObject::Instance()->SetTrack(m_track);
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY); SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
result = true; //result = true;
break; break;
} }
case KX_CDACT_LOOP_TRACK: case KX_CDACT_LOOP_TRACK:
@ -114,7 +114,7 @@ bool KX_CDActuator::Update()
SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL); SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
SND_CDObject::Instance()->SetTrack(m_track); SND_CDObject::Instance()->SetTrack(m_track);
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY); SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
result = true; //result = true;
break; break;
} }
case KX_CDACT_STOP: case KX_CDACT_STOP:
@ -125,19 +125,19 @@ bool KX_CDActuator::Update()
case KX_CDACT_PAUSE: case KX_CDACT_PAUSE:
{ {
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE); SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE);
result = true; //result = true;
break; break;
} }
case KX_CDACT_RESUME: case KX_CDACT_RESUME:
{ {
SND_CDObject::Instance()->SetPlaystate(SND_MUST_RESUME); SND_CDObject::Instance()->SetPlaystate(SND_MUST_RESUME);
result = true; //result = true;
break; break;
} }
case KX_CDACT_VOLUME: case KX_CDACT_VOLUME:
{ {
SND_CDObject::Instance()->SetGain(m_gain); SND_CDObject::Instance()->SetGain(m_gain);
result = true; //result = true;
break; break;
} }
default: default:
@ -189,53 +189,116 @@ PyParentObject KX_CDActuator::Parents[] = {
PyMethodDef KX_CDActuator::Methods[] = { PyMethodDef KX_CDActuator::Methods[] = {
{"startCD",(PyCFunction) KX_CDActuator::sPyStartCD,METH_VARARGS,NULL}, // Deprecated ----->
{"pauseCD",(PyCFunction) KX_CDActuator::sPyPauseCD,METH_VARARGS,NULL},
{"stopCD",(PyCFunction) KX_CDActuator::sPyStopCD,METH_VARARGS,NULL},
{"setGain",(PyCFunction) KX_CDActuator::sPySetGain,METH_VARARGS,NULL}, {"setGain",(PyCFunction) KX_CDActuator::sPySetGain,METH_VARARGS,NULL},
{"getGain",(PyCFunction) KX_CDActuator::sPyGetGain,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 {NULL,NULL,NULL,NULL} //Sentinel
}; };
PyAttributeDef KX_CDActuator::Attributes[] = { 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 { 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* KX_CDActuator::_getattr(const char *attr)
{ {
PyObject* object = _getattr_self(Attributes, this, attr);
if (object != NULL)
return object;
_getattr_up(SCA_IActuator); _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);
}
KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, startCD,
PyObject* KX_CDActuator::PyStartCD(PyObject* self, PyObject* args, PyObject* kwds) "startCD()\n"
"\tStarts the CD playing.\n")
{ {
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY); SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, pauseCD,
PyObject* KX_CDActuator::PyPauseCD(PyObject* self, PyObject* args, PyObject* kwds) "pauseCD()\n"
"\tPauses the CD playing.\n")
{ {
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE); SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE);
Py_RETURN_NONE; 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); SND_CDObject::Instance()->SetPlaystate(SND_MUST_STOP);
Py_RETURN_NONE; 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) PyObject* KX_CDActuator::PySetGain(PyObject* self, PyObject* args, PyObject* kwds)
{ {
float gain = 1.0; float gain = 1.0;
ShowDeprecationWarning("setGain()", "the volume property");
if (!PyArg_ParseTuple(args, "f", &gain)) if (!PyArg_ParseTuple(args, "f", &gain))
return NULL; 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) PyObject* KX_CDActuator::PyGetGain(PyObject* self, PyObject* args, PyObject* kwds)
{ {
float gain = SND_CDObject::Instance()->GetGain(); float gain = SND_CDObject::Instance()->GetGain();
ShowDeprecationWarning("getGain()", "the volume property");
PyObject* result = PyFloat_FromDouble(gain); PyObject* result = PyFloat_FromDouble(gain);
return result; return result;
} }
// <-----

@ -82,12 +82,23 @@ public:
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
virtual PyObject* _getattr(const char *attr); virtual PyObject* _getattr(const char *attr);
virtual int _setattr(const char *attr, PyObject *value);
KX_PYMETHOD(KX_CDActuator,StartCD); // Deprecated ----->
KX_PYMETHOD(KX_CDActuator,PauseCD);
KX_PYMETHOD(KX_CDActuator,StopCD);
KX_PYMETHOD(KX_CDActuator,SetGain); KX_PYMETHOD(KX_CDActuator,SetGain);
KX_PYMETHOD(KX_CDActuator,GetGain); 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 #endif //__KX_CDACTUATOR

@ -166,48 +166,64 @@ PyParentObject KX_ParentActuator::Parents[] = {
}; };
PyMethodDef KX_ParentActuator::Methods[] = { PyMethodDef KX_ParentActuator::Methods[] = {
// ---> deprecated (all) // Deprecated ----->
{"setObject", (PyCFunction) KX_ParentActuator::sPySetObject, METH_O, (PY_METHODCHAR)SetObject_doc}, {"setObject", (PyCFunction) KX_ParentActuator::sPySetObject, METH_O, (PY_METHODCHAR)SetObject_doc},
{"getObject", (PyCFunction) KX_ParentActuator::sPyGetObject, METH_VARARGS, (PY_METHODCHAR)GetObject_doc}, {"getObject", (PyCFunction) KX_ParentActuator::sPyGetObject, METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
// <-----
{NULL,NULL} //Sentinel {NULL,NULL} //Sentinel
}; };
PyAttributeDef KX_ParentActuator::Attributes[] = { PyAttributeDef KX_ParentActuator::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("object", KX_ParentActuator, pyattr_get_object, pyattr_set_object),
{ NULL } //Sentinel { NULL } //Sentinel
}; };
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::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 (actuator->m_ob != NULL)
actuator->m_ob->UnregisterActuator(actuator);
actuator->m_ob = (SCA_IObject*) gameobj;
if (actuator->m_ob)
actuator->m_ob->RegisterActuator(actuator);
return 0;
}
PyObject* KX_ParentActuator::_getattr(const char *attr) { PyObject* KX_ParentActuator::_getattr(const char *attr) {
if (!strcmp(attr, "object")) { PyObject* object = _getattr_self(Attributes, this, attr);
if (!m_ob) Py_RETURN_NONE; if (object != NULL)
else return m_ob->AddRef(); return object;
}
_getattr_up(SCA_IActuator); _getattr_up(SCA_IActuator);
} }
int KX_ParentActuator::_setattr(const char *attr, PyObject* value) { int KX_ParentActuator::_setattr(const char *attr, PyObject* value) {
if (!strcmp(attr, "object")) { int ret = _setattr_self(Attributes, this, attr, value);
KX_GameObject *gameobj; if (ret >= 0)
return ret;
if (!ConvertPythonToGameObject(value, &gameobj, true))
return 1; // ConvertPythonToGameObject sets the error
if (m_ob != NULL)
m_ob->UnregisterActuator(this);
m_ob = (SCA_IObject*)gameobj;
if (m_ob)
m_ob->RegisterActuator(this);
return 0;
}
return SCA_IActuator::_setattr(attr, value); return SCA_IActuator::_setattr(attr, value);
} }
/* Deprecated -----> */
/* 1. setObject */ /* 1. setObject */
const char KX_ParentActuator::SetObject_doc[] = const char KX_ParentActuator::SetObject_doc[] =
"setObject(object)\n" "setObject(object)\n"
@ -255,5 +271,6 @@ PyObject* KX_ParentActuator::PyGetObject(PyObject* self, PyObject* args)
else else
return m_ob->AddRef(); return m_ob->AddRef();
} }
/* <----- */
/* eof */ /* eof */

@ -79,10 +79,14 @@ class KX_ParentActuator : public SCA_IActuator
virtual PyObject* _getattr(const char *attr); virtual PyObject* _getattr(const char *attr);
virtual int _setattr(const char *attr, PyObject* value); 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); KX_PYMETHOD_DOC_O(KX_ParentActuator,SetObject);
/* 2. getObject */
KX_PYMETHOD_DOC_VARARGS(KX_ParentActuator,GetObject); KX_PYMETHOD_DOC_VARARGS(KX_ParentActuator,GetObject);
// <-----
}; /* end of class KX_ParentActuator : public SCA_PropertyActuator */ }; /* end of class KX_ParentActuator : public SCA_PropertyActuator */

@ -121,20 +121,34 @@ KX_VisibilityActuator::Parents[] = {
PyMethodDef PyMethodDef
KX_VisibilityActuator::Methods[] = { KX_VisibilityActuator::Methods[] = {
{"set", (PyCFunction) KX_VisibilityActuator::sPySetVisible, // Deprecated ----->
METH_VARARGS, (PY_METHODCHAR)SetVisible_doc}, {"set", (PyCFunction) KX_VisibilityActuator::sPySetVisible, METH_VARARGS,
(PY_METHODCHAR) SetVisible_doc},
// <-----
{NULL,NULL} //Sentinel {NULL,NULL} //Sentinel
}; };
PyAttributeDef KX_VisibilityActuator::Attributes[] = { PyAttributeDef KX_VisibilityActuator::Attributes[] = {
KX_PYATTRIBUTE_BOOL_RW("visibility", KX_VisibilityActuator, m_visible),
KX_PYATTRIBUTE_BOOL_RW("recursion", KX_VisibilityActuator, m_recursive),
{ NULL } //Sentinel { 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); _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 ---------------------------------------------------------- */ /* set visibility ---------------------------------------------------------- */
@ -149,6 +163,7 @@ KX_VisibilityActuator::PySetVisible(PyObject* self,
PyObject* args, PyObject* args,
PyObject* kwds) { PyObject* kwds) {
int vis; int vis;
ShowDeprecationWarning("SetVisible()", "the visible property");
if(!PyArg_ParseTuple(args, "i", &vis)) { if(!PyArg_ParseTuple(args, "i", &vis)) {
return NULL; return NULL;

@ -68,8 +68,12 @@ class KX_VisibilityActuator : public SCA_IActuator
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
virtual PyObject* _getattr(const char *attr); virtual PyObject* _getattr(const char *attr);
//KX_PYMETHOD_DOC virtual int _setattr(const char *attr, PyObject *value);
// Deprecated ----->
KX_PYMETHOD_DOC(KX_VisibilityActuator,SetVisible); KX_PYMETHOD_DOC(KX_VisibilityActuator,SetVisible);
// <-----
}; };

@ -3,6 +3,13 @@
from SCA_IActuator import * from SCA_IActuator import *
class KX_CDActuator(SCA_IActuator): 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(): def startCD():
""" """
Starts the CD playing. Starts the CD playing.
@ -15,8 +22,21 @@ class KX_CDActuator(SCA_IActuator):
""" """
Pauses the CD. 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): def setGain(gain):
""" """
DEPRECATED: Use the volume property.
Sets the gain (volume) of the CD. Sets the gain (volume) of the CD.
@type gain: float @type gain: float
@ -24,6 +44,7 @@ class KX_CDActuator(SCA_IActuator):
""" """
def getGain(): def getGain():
""" """
DEPRECATED: Use the volume property.
Gets the current gain (volume) of the CD. Gets the current gain (volume) of the CD.
@rtype: float @rtype: float

@ -5,12 +5,12 @@ from SCA_IActuator import *
class KX_ParentActuator(SCA_IActuator): 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. @ivar object: the object this actuator sets the parent too.
@type object: KX_GameObject or None @type object: KX_GameObject or None
""" """
def setObject(object): def setObject(object):
""" """
DEPRECATED: Use the object property.
Sets the object to set as parent. Sets the object to set as parent.
Object can be either a L{KX_GameObject} or the name of the object. 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): def getObject(name_only = 1):
""" """
DEPRECATED: Use the object property.
Returns the name of the object to change to. Returns the name of the object to change to.
@type name_only: bool @type name_only: bool
@param name_only: optional argument, when 0 return a KX_GameObject @param name_only: optional argument, when 0 return a KX_GameObject

@ -5,9 +5,14 @@ from SCA_IActuator import *
class KX_VisibilityActuator(SCA_IActuator): class KX_VisibilityActuator(SCA_IActuator):
""" """
Visibility Actuator. 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): def set(visible):
""" """
DEPRECATED: Use the visibility property instead.
Sets whether the actuator makes its parent object visible or invisible. Sets whether the actuator makes its parent object visible or invisible.
@param visible: - True: Makes its parent visible. @param visible: - True: Makes its parent visible.