[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20273] trunk/blender/source/gameengine: BGE Py API

Campbell Barton ideasman42 at gmail.com
Tue May 19 09:16:40 CEST 2009


Revision: 20273
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20273
Author:   campbellbarton
Date:     2009-05-19 09:16:40 +0200 (Tue, 19 May 2009)

Log Message:
-----------
BGE Py API
use PY_SET_ATTR_FAIL and PY_SET_ATTR_SUCCESS return values so the fake subclassing can know if a value failed to be set or if it was missing from the type. (with PY_SET_ATTR_MISSING)

Also noticed some other mistakes.
- KX_LightObject, setting the type didnt check for an int.
- KX_SoundActuator, didnt return an error when assigning an invalid orientation value
- KX_GameObject, worldOrientation didnt return an error value.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp
    trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_PythonController.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_RandomActuator.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_RandomSensor.cpp
    trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp
    trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Light.cpp
    trunk/blender/source/gameengine/Ketsji/KX_ParentActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_TrackToActuator.cpp

Modified: trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -1037,7 +1037,7 @@
 	if (!PyString_Check(value))
 	{
 		PyErr_SetString(PyExc_ValueError, "actuator.action = val: Action Actuator, expected the string name of the action");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 
 	bAction *action= NULL;
@@ -1049,11 +1049,11 @@
 		if (!action)
 		{
 			PyErr_SetString(PyExc_ValueError, "actuator.action = val: Action Actuator, action not found!");
-			return 1;
+			return PY_SET_ATTR_FAIL;
 		}
 	}
 	
 	self->SetAction(action);
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 
 }

Modified: trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -870,7 +870,7 @@
 	if (!PyString_Check(value))
 	{
 		PyErr_SetString(PyExc_ValueError, "actuator.action = val: Shape Action Actuator, expected the string name of the action");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 
 	bAction *action= NULL;
@@ -882,11 +882,11 @@
 		if (action==NULL)
 		{
 			PyErr_SetString(PyExc_ValueError, "actuator.action = val: Shape Action Actuator, action not found!");
-			return 1;
+			return PY_SET_ATTR_FAIL;
 		}
 	}
 	
 	self->SetAction(action);
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 
 }

Modified: trunk/blender/source/gameengine/GameLogic/SCA_PythonController.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_PythonController.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/GameLogic/SCA_PythonController.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -563,14 +563,14 @@
 	
 	if (scriptArg==NULL) {
 		PyErr_SetString(PyExc_TypeError, "controller.script = string: Python Controller, expected a string script text");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 
 	/* set scripttext sets m_bModified to true, 
 		so next time the script is needed, a reparse into byte code is done */
 	self->SetScriptText(scriptArg);
 		
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 

Modified: trunk/blender/source/gameengine/GameLogic/SCA_RandomActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_RandomActuator.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/GameLogic/SCA_RandomActuator.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -387,10 +387,10 @@
 	if (PyInt_Check(value))	{
 		int ival = PyInt_AsLong(value);
 		act->m_base->SetSeed(ival);
-		return 0;
+		return PY_SET_ATTR_SUCCESS;
 	} else {
 		PyErr_SetString(PyExc_TypeError, "actuator.seed = int: Random Actuator, expected an integer");
-		return 1;
+		return PY_SET_ATTR_FAIL;
 	}
 }
 

Modified: trunk/blender/source/gameengine/GameLogic/SCA_RandomSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_RandomSensor.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/GameLogic/SCA_RandomSensor.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -236,10 +236,10 @@
 	SCA_RandomSensor* self= static_cast<SCA_RandomSensor*>(self_v);
 	if (!PyInt_Check(value)) {
 		PyErr_SetString(PyExc_TypeError, "sensor.seed = int: Random Sensor, expected an integer");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 	self->m_basegenerator->SetSeed(PyInt_AsLong(value));
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 /* eof */

Modified: trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/Ketsji/KX_CDActuator.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -214,7 +214,7 @@
 {
 	KX_CDActuator* act = static_cast<KX_CDActuator*>(self);
 	SND_CDObject::Instance()->SetGain(act->m_gain);
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_CDActuator::py_getattro(PyObject *attr)

Modified: trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -806,11 +806,11 @@
 	int param = PyObject_IsTrue( value );
 	if (param == -1) {
 		PyErr_SetString(PyExc_AttributeError, "camera.perspective = bool: KX_Camera, expected True/False or 0/1");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 	
 	self->m_camdata.m_perspective= param;
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_Camera::pyattr_get_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -825,12 +825,12 @@
 	float param = PyFloat_AsDouble(value);
 	if (param == -1) {
 		PyErr_SetString(PyExc_AttributeError, "camera.lens = float: KX_Camera, expected a float greater then zero");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 	
 	self->m_camdata.m_lens= param;
 	self->m_set_projection_matrix = false;
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_Camera::pyattr_get_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -845,12 +845,12 @@
 	float param = PyFloat_AsDouble(value);
 	if (param == -1) {
 		PyErr_SetString(PyExc_AttributeError, "camera.near = float: KX_Camera, expected a float greater then zero");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 	
 	self->m_camdata.m_clipstart= param;
 	self->m_set_projection_matrix = false;
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_Camera::pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -865,12 +865,12 @@
 	float param = PyFloat_AsDouble(value);
 	if (param == -1) {
 		PyErr_SetString(PyExc_AttributeError, "camera.far = float: KX_Camera, expected a float greater then zero");
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	}
 	
 	self->m_camdata.m_clipend= param;
 	self->m_set_projection_matrix = false;
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 
@@ -886,10 +886,10 @@
 	int param = PyObject_IsTrue( value );
 	if (param == -1) {
 		PyErr_SetString(PyExc_AttributeError, "camera.useViewport = bool: KX_Camera, expected True or False");
-		return 1;
+		return PY_SET_ATTR_FAIL;
 	}
 	self->EnableViewport((bool)param);
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 
@@ -904,10 +904,10 @@
 	KX_Camera* self= static_cast<KX_Camera*>(self_v);
 	MT_Matrix4x4 mat;
 	if (!PyMatTo(value, mat)) 
-		return -1;
+		return PY_SET_ATTR_FAIL;
 	
 	self->SetProjectionMatrix(mat);
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_Camera::pyattr_get_modelview_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)

Modified: trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -597,7 +597,7 @@
 	KX_GameObject *gameobj;
 	
 	if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_CameraActuator"))
-		return 1; // ConvertPythonToGameObject sets the error
+		return PY_SET_ATTR_FAIL; // ConvertPythonToGameObject sets the error
 	
 	if (self->m_ob)
 		self->m_ob->UnregisterActuator(self);	
@@ -605,7 +605,7 @@
 	if ((self->m_ob = (SCA_IObject*)gameobj))
 		self->m_ob->RegisterActuator(self);
 	
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 /* eof */

Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp	2009-05-19 06:48:36 UTC (rev 20272)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp	2009-05-19 07:16:40 UTC (rev 20273)
@@ -1468,13 +1468,13 @@
 	MT_Scalar val = PyFloat_AsDouble(value);
 	if (val < 0.0f) { /* also accounts for non float */
 		PyErr_SetString(PyExc_AttributeError, "gameOb.mass = float: KX_GameObject, expected a float zero or above");
-		return 1;
+		return PY_SET_ATTR_FAIL;
 	}
 
 	if (spc)
 		spc->SetMass(val);
 
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_GameObject::pyattr_get_lin_vel_min(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1491,13 +1491,13 @@
 	MT_Scalar val = PyFloat_AsDouble(value);
 	if (val < 0.0f) { /* also accounts for non float */
 		PyErr_SetString(PyExc_AttributeError, "gameOb.linVelocityMin = float: KX_GameObject, expected a float zero or above");
-		return 1;
+		return PY_SET_ATTR_FAIL;
 	}
 
 	if (spc)
 		spc->SetLinVelocityMin(val);
 
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_GameObject::pyattr_get_lin_vel_max(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1514,13 +1514,13 @@
 	MT_Scalar val = PyFloat_AsDouble(value);
 	if (val < 0.0f) { /* also accounts for non float */
 		PyErr_SetString(PyExc_AttributeError, "gameOb.linVelocityMax = float: KX_GameObject, expected a float zero or above");
-		return 1;
+		return PY_SET_ATTR_FAIL;
 	}
 
 	if (spc)
 		spc->SetLinVelocityMax(val);
 
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 
@@ -1536,12 +1536,12 @@
 	int param = PyObject_IsTrue( value );
 	if (param == -1) {
 		PyErr_SetString(PyExc_AttributeError, "gameOb.visible = bool: KX_GameObject, expected True or False");
-		return 1;
+		return PY_SET_ATTR_FAIL;
 	}
 
 	self->SetVisible(param, false);
 	self->UpdateBuckets(false);
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_GameObject::pyattr_get_worldPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1555,11 +1555,11 @@
 	KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
 	MT_Point3 pos;
 	if (!PyVecTo(value, pos))
-		return 1;
+		return PY_SET_ATTR_FAIL;
 	
 	self->NodeSetWorldPosition(pos);
 	self->NodeUpdateGS(0.f);
-	return 0;
+	return PY_SET_ATTR_SUCCESS;
 }
 
 PyObject* KX_GameObject::pyattr_get_localPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1576,11 +1576,11 @@

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list