[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16098] trunk/blender/source/gameengine: game engine python api

Campbell Barton ideasman42 at gmail.com
Thu Aug 14 05:23:36 CEST 2008


Revision: 16098
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16098
Author:   campbellbarton
Date:     2008-08-14 05:23:36 +0200 (Thu, 14 Aug 2008)

Log Message:
-----------
game engine python api
* removed macros that were not used much, some misleading.
* removed error string setting calls that overwrote the error set by PyArg_ParseTuple with a less useful one.
* use python macros Py_RETURN_NONE, Py_RETURN_TRUE, Py_RETURN_FALSE

Modified Paths:
--------------
    trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp
    trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
    trunk/blender/source/gameengine/Expressions/InputParser.cpp
    trunk/blender/source/gameengine/Expressions/ListValue.cpp
    trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp
    trunk/blender/source/gameengine/Expressions/PyObjectPlus.h
    trunk/blender/source/gameengine/Expressions/Value.cpp
    trunk/blender/source/gameengine/Expressions/Value.h
    trunk/blender/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
    trunk/blender/source/gameengine/Ketsji/BL_Shader.cpp
    trunk/blender/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
    trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_MeshProxy.cpp
    trunk/blender/source/gameengine/Ketsji/KX_ObjectActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
    trunk/blender/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
    trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
    trunk/blender/source/gameengine/Ketsji/KX_VehicleWrapper.cpp

Modified: trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp	2008-08-14 03:05:13 UTC (rev 16097)
+++ trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp	2008-08-14 03:23:36 UTC (rev 16098)
@@ -484,17 +484,10 @@
 PyObject* BL_ActionActuator::PyGetAction(PyObject* self, 
 										 PyObject* args, 
 										 PyObject* kwds) {
-	PyObject *result;
-	
 	if (m_action){
-		result = Py_BuildValue("s", m_action->id.name+2);
+		return PyString_FromString(m_action->id.name+2);
 	}
-	else{
-		Py_INCREF(Py_None);
-		result = Py_None;
-	}
-	
-	return result;
+	Py_RETURN_NONE;
 }
 
 /*     getProperty                                                             */
@@ -640,8 +633,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setStart                                                              */
@@ -662,8 +654,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setEnd                                                                */
@@ -684,8 +675,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setBlendin                                                            */
@@ -707,8 +697,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setBlendtime                                                          */
@@ -735,8 +724,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setPriority                                                           */
@@ -759,8 +747,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setFrame                                                              */
@@ -785,8 +772,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setProperty                                                           */
@@ -808,8 +794,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setFrameProperty                                                          */
@@ -830,8 +815,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*
@@ -848,8 +832,7 @@
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 */
 
@@ -934,8 +917,7 @@
 		}
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /* getType */

Modified: trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp	2008-08-14 03:05:13 UTC (rev 16097)
+++ trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp	2008-08-14 03:23:36 UTC (rev 16098)
@@ -464,17 +464,10 @@
 "\tReturns a string containing the name of the current action.\n";
 
 PyObject* BL_ShapeActionActuator::PyGetAction(PyObject* self) {
-	PyObject *result;
-	
 	if (m_action){
-		result = Py_BuildValue("s", m_action->id.name+2);
+		return PyString_FromString(m_action->id.name+2);
 	}
-	else{
-		Py_INCREF(Py_None);
-		result = Py_None;
-	}
-	
-	return result;
+	Py_RETURN_NONE;
 }
 
 /*     getProperty                                                             */
@@ -590,13 +583,11 @@
 				m_blendframe = 0.f;
 		}
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setStart                                                              */
@@ -613,13 +604,11 @@
 	{
 		m_startframe = start;
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setEnd                                                                */
@@ -636,13 +625,11 @@
 	{
 		m_endframe = end;
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setBlendin                                                            */
@@ -660,13 +647,11 @@
 	{
 		m_blendin = blendin;
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setBlendtime                                                          */
@@ -689,13 +674,11 @@
 		if (m_blendframe>m_blendin)
 			m_blendframe = m_blendin;
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setPriority                                                           */
@@ -714,13 +697,11 @@
 	{
 		m_priority = priority;
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setFrame                                                              */
@@ -741,13 +722,11 @@
 		else if (m_localtime>m_endframe)
 			m_localtime=m_endframe;
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /*     setProperty                                                           */
@@ -765,13 +744,11 @@
 	{
 		m_propname = string;
 	}
-	else {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
+	else {
 		return NULL;
 	}
 	
-	Py_INCREF(Py_None);
-	return Py_None;
+	Py_RETURN_NONE;
 }
 
 /* getType */
@@ -793,7 +770,6 @@
 	short typeArg;
                                                                                                              
     if (!PyArg_ParseTuple(args, "h", &typeArg)) {
-		PyErr_SetString(PyExc_TypeError, "Invalid arguments");
         return NULL;
     }
 

Modified: trunk/blender/source/gameengine/Expressions/InputParser.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/InputParser.cpp	2008-08-14 03:05:13 UTC (rev 16097)
+++ trunk/blender/source/gameengine/Expressions/InputParser.cpp	2008-08-14 03:23:36 UTC (rev 16098)
@@ -631,7 +631,8 @@
 PyObject*	CParserPyMake(PyObject* ignored,PyObject* args)
 {
 	char* txt;
-	Py_Try(PyArg_ParseTuple(args,"s",&txt));
+	if (!PyArg_ParseTuple(args,"s",&txt))
+		return NULL;
 	CParser parser;
 	CExpression* expr = parser.ProcessText(txt);
 	CValue* val = expr->Calculate();
@@ -641,7 +642,7 @@
 
 static PyMethodDef	CParserMethods[] = 
 {
-	{ "calc", CParserPyMake , Py_NEWARGS},
+	{ "calc", CParserPyMake , METH_VARARGS},
 	{ NULL,NULL}	// Sentinel
 };
 

Modified: trunk/blender/source/gameengine/Expressions/ListValue.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/ListValue.cpp	2008-08-14 03:05:13 UTC (rev 16097)
+++ trunk/blender/source/gameengine/Expressions/ListValue.cpp	2008-08-14 03:23:36 UTC (rev 16098)
@@ -43,7 +43,7 @@
 			return ((CListValue*) list)->GetValue(index)->AddRef();
 
 	}
-	Py_Error(PyExc_IndexError, "Python ListIndex out of range");  
+	PyErr_SetString(PyExc_IndexError, "Python ListIndex out of range");
 	return NULL;
 }
 
@@ -130,9 +130,10 @@
 			}
 		}
 
-		if (error)
-			Py_Error(PyExc_SystemError, "Python Error: couldn't add one or more items to a list");  
-		
+		if (error) {
+			PyErr_SetString(PyExc_SystemError, "Python Error: couldn't add one or more items to a list");
+			return NULL;
+		}
 
 	} else
 	{
@@ -155,8 +156,8 @@
 				listval->Add(objval);
 			} else
 			{
-				Py_Error(PyExc_SystemError, "Python Error: couldn't add item to a list");  
-				// bad luck
+				PyErr_SetString(PyExc_SystemError, "Python Error: couldn't add item to a list");  
+				return NULL;
 			}
 		}
 	}

Modified: trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp	2008-08-14 03:05:13 UTC (rev 16097)
+++ trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp	2008-08-14 03:23:36 UTC (rev 16098)
@@ -94,7 +94,7 @@
  * PyObjectPlus Methods 	-- Every class, even the abstract one should have a Methods
 ------------------------------*/
 PyMethodDef PyObjectPlus::Methods[] = {
-  {"isA",		 (PyCFunction) sPy_isA,			Py_NEWARGS},
+  {"isA",		 (PyCFunction) sPy_isA,			METH_VARARGS},
   {NULL, NULL}		/* Sentinel */
 };
 
@@ -134,7 +134,8 @@
 ------------------------------*/
 PyObject *PyObjectPlus::_repr(void)
 {
-  Py_Error(PyExc_SystemError, "Representation not overridden by object.");  
+	PyErr_SetString(PyExc_SystemError, "Representation not overridden by object.");  
+	return NULL;
 }
 
 /*------------------------------
@@ -164,11 +165,12 @@
 PyObject *PyObjectPlus::Py_isA(PyObject *args)		// Python wrapper for isA
 {
   char *mytypename;
-  Py_Try(PyArg_ParseTuple(args, "s", &mytypename));
+  if (!PyArg_ParseTuple(args, "s", &mytypename))
+    return NULL;
   if(isA(mytypename))
-    {Py_INCREF(Py_True); return Py_True;}
+    Py_RETURN_TRUE;
   else
-    {Py_INCREF(Py_False); return Py_False;};
+    Py_RETURN_FALSE;
 }
 
 #endif //NO_EXP_PYTHON_EMBEDDING

Modified: trunk/blender/source/gameengine/Expressions/PyObjectPlus.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/PyObjectPlus.h	2008-08-14 03:05:13 UTC (rev 16097)
+++ trunk/blender/source/gameengine/Expressions/PyObjectPlus.h	2008-08-14 03:23:36 UTC (rev 16098)
@@ -44,23 +44,8 @@
 ------------------------------*/
 
 								// some basic python macros
-#define Py_NEWARGS 1			
 #define Py_Return { Py_INCREF(Py_None); return Py_None;}
-static inline PyObject* Py_Success(bool truth)
-{
-	if (truth)
-	{
-		Py_INCREF(Py_True);
-		return Py_True;
-	}
-	Py_INCREF(Py_False);
-	return Py_False;
-}
 
-#define Py_Error(E, M)   {PyErr_SetString(E, M); return NULL;}
-#define Py_Try(F) {if (!(F)) return NULL;}
-#define Py_Assert(A,E,M) {if (!(A)) {PyErr_SetString(E, M); return NULL;}}
-
 static inline void Py_Fatal(char *M) {
 	//cout << M << endl; 
 	exit(-1);

Modified: trunk/blender/source/gameengine/Expressions/Value.cpp
===================================================================

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list