[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19447] trunk/blender/source/gameengine: BGE API cleanup: CDActuator, ParentActuator, VisibilityActuator done.

Benoit Bolsee benoit.bolsee at online.be
Sun Mar 29 17:17:55 CEST 2009


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




More information about the Bf-blender-cvs mailing list