[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31234] branches/soc-2010-nexyon/source/ gameengine: Blender Py API: Implemented missing KX_PYATTRIBUTE_TODOs and -DUMMYs.

Joerg Mueller nexyon at gmail.com
Wed Aug 11 12:36:17 CEST 2010


Revision: 31234
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31234
Author:   nexyon
Date:     2010-08-11 12:36:16 +0200 (Wed, 11 Aug 2010)

Log Message:
-----------
Blender Py API: Implemented missing KX_PYATTRIBUTE_TODOs and -DUMMYs.

Modified Paths:
--------------
    branches/soc-2010-nexyon/source/gameengine/Expressions/PyObjectPlus.h
    branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.cpp
    branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.h
    branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.h
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.h
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_PolyProxy.cpp
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_PolyProxy.h
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_VertexProxy.cpp
    branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_VertexProxy.h

Modified: branches/soc-2010-nexyon/source/gameengine/Expressions/PyObjectPlus.h
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/Expressions/PyObjectPlus.h	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/Expressions/PyObjectPlus.h	2010-08-11 10:36:16 UTC (rev 31234)
@@ -319,9 +319,6 @@
 	} m_typeCheck;
 } PyAttributeDef;
 
-#define KX_PYATTRIBUTE_DUMMY(name) \
-	{ name, KX_PYATTRIBUTE_TYPE_DUMMY, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, false, 0, 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, NULL, NULL} }
-
 #define KX_PYATTRIBUTE_BOOL_RW(name,object,field) \
 	{ name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL, NULL, NULL} }
 #define KX_PYATTRIBUTE_BOOL_RW_CHECK(name,object,field,function) \

Modified: branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.cpp
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.cpp	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.cpp	2010-08-11 10:36:16 UTC (rev 31234)
@@ -357,9 +357,8 @@
 	KX_PYATTRIBUTE_RO_FUNCTION("triggered", SCA_ISensor, pyattr_get_triggered),
 	KX_PYATTRIBUTE_RO_FUNCTION("positive", SCA_ISensor, pyattr_get_positive),
 	KX_PYATTRIBUTE_RO_FUNCTION("status", SCA_ISensor, pyattr_get_status),
-	//KX_PYATTRIBUTE_TODO("links"),
-	//KX_PYATTRIBUTE_TODO("posTicks"),
-	//KX_PYATTRIBUTE_TODO("negTicks"),
+	KX_PYATTRIBUTE_RO_FUNCTION("pos_ticks", SCA_ISensor, pyattr_get_posTicks),
+	KX_PYATTRIBUTE_RO_FUNCTION("neg_ticks", SCA_ISensor, pyattr_get_negTicks),
 	{ NULL }	//Sentinel
 };
 
@@ -401,6 +400,18 @@
 	return PyLong_FromSsize_t(status);
 }
 
+PyObject* SCA_ISensor::pyattr_get_posTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+	return PyLong_FromLong(self->GetPosTicks());
+}
+
+PyObject* SCA_ISensor::pyattr_get_negTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+	return PyLong_FromLong(self->GetNegTicks());
+}
+
 int SCA_ISensor::pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
 {
 	SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);

Modified: branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.h
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.h	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_ISensor.h	2010-08-11 10:36:16 UTC (rev 31234)
@@ -167,6 +167,18 @@
 		return m_prev_state;
 	}
 
+	/** get the number of ticks since the last positive pulse */
+	int GetPosTicks()
+	{
+		return m_pos_ticks;
+	}
+
+	/** get the number of ticks since the last negative pulse */
+	int GetNegTicks()
+	{
+		return m_neg_ticks;
+	}
+
 	/** Resume sensing. */
 	void Resume();
 
@@ -185,6 +197,9 @@
 	static PyObject*	pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	static PyObject*	pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	static PyObject*	pyattr_get_status(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+	static PyObject*	pyattr_get_posTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+	static PyObject*	pyattr_get_negTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
 	static int          pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	static int          pyattr_check_tap(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	

Modified: branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_JoystickSensor.cpp	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/GameLogic/SCA_JoystickSensor.cpp	2010-08-11 10:36:16 UTC (rev 31234)
@@ -290,7 +290,6 @@
 	KX_PYATTRIBUTE_RO_FUNCTION("numButtons",	SCA_JoystickSensor, pyattr_get_num_buttons),
 	KX_PYATTRIBUTE_RO_FUNCTION("numHats",		SCA_JoystickSensor, pyattr_get_num_hats),
 	KX_PYATTRIBUTE_RO_FUNCTION("connected",		SCA_JoystickSensor, pyattr_get_connected),
-	//KX_PYATTRIBUTE_TODO("events"),
 	{ NULL }	//Sentinel
 };
 

Modified: branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.cpp	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.cpp	2010-08-11 10:36:16 UTC (rev 31234)
@@ -794,9 +794,9 @@
 };
 
 PyAttributeDef KX_BlenderMaterial::Attributes[] = {
-	//KX_PYATTRIBUTE_TODO("shader"),
-	//KX_PYATTRIBUTE_TODO("materialIndex"),
-	//KX_PYATTRIBUTE_TODO("blending"),
+	KX_PYATTRIBUTE_RO_FUNCTION("shader", KX_BlenderMaterial, pyattr_get_shader),
+	KX_PYATTRIBUTE_RO_FUNCTION("material_index", KX_BlenderMaterial, pyattr_get_materialIndex),
+	KX_PYATTRIBUTE_RW_FUNCTION("blending", KX_BlenderMaterial, pyattr_get_blending, pyattr_set_blending),
 	{ NULL }	//Sentinel
 };
 
@@ -822,6 +822,37 @@
 	py_base_new
 };
 
+PyObject* KX_BlenderMaterial::pyattr_get_shader(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+	return self->PygetShader(NULL, NULL);
+}
+
+PyObject* KX_BlenderMaterial::pyattr_get_materialIndex(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+	return PyLong_FromSsize_t(self->GetMaterialIndex());
+}
+
+PyObject* KX_BlenderMaterial::pyattr_get_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+	unsigned int* bfunc = self->getBlendFunc();
+	return Py_BuildValue("(ll)", (long int)bfunc[0], (long int)bfunc[1]);
+}
+
+int KX_BlenderMaterial::pyattr_set_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+	KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+	PyObject* obj = self->PysetBlending(value, NULL);
+	if(obj)
+	{
+		Py_DECREF(obj);
+		return 0;
+	}
+	return -1;
+}
+
 KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
 {
 	if( !GLEW_ARB_fragment_shader) {

Modified: branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.h
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.h	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_BlenderMaterial.h	2010-08-11 10:36:16 UTC (rev 31234)
@@ -79,6 +79,9 @@
 	Image * getImage (unsigned int idx) { 
 		return (idx < MAXTEX && mMaterial) ? mMaterial->img[idx] : NULL; 
 	}
+	unsigned int* getBlendFunc() {
+		return mBlendFunc;
+	}
 	// for ipos
 	void UpdateIPO(
 		MT_Vector4 rgba, MT_Vector3 specrgb,
@@ -99,6 +102,11 @@
 	// --------------------------------
 	virtual PyObject* py_repr(void) { return PyUnicode_FromString(mMaterial->matname.ReadPtr()); }
 
+	static PyObject* pyattr_get_shader(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+	static PyObject* pyattr_get_materialIndex(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+	static PyObject* pyattr_get_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+	static int       pyattr_set_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
 	KX_PYMETHOD_DOC( KX_BlenderMaterial, getShader );
 	KX_PYMETHOD_DOC( KX_BlenderMaterial, getMaterialIndex );
 	KX_PYMETHOD_DOC( KX_BlenderMaterial, getTexture );

Modified: branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp	2010-08-11 10:36:16 UTC (rev 31234)
@@ -110,8 +110,14 @@
 };
 
 PyAttributeDef KX_ConstraintWrapper::Attributes[] = {
-	//KX_PYATTRIBUTE_TODO("constraintId"),
+	KX_PYATTRIBUTE_RO_FUNCTION("constraint_id", KX_ConstraintWrapper, pyattr_get_constraintId),
 	{ NULL }	//Sentinel
 };
 
+PyObject* KX_ConstraintWrapper::pyattr_get_constraintId(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	KX_ConstraintWrapper* self= static_cast<KX_ConstraintWrapper*>(self_v);
+	return self->PyGetConstraintId();
+}
+
 #endif // DISABLE_PYTHON

Modified: branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.h
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.h	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_ConstraintWrapper.h	2010-08-11 10:36:16 UTC (rev 31234)
@@ -44,6 +44,8 @@
 	KX_PYMETHOD_NOARGS(KX_ConstraintWrapper,GetConstraintId);
 	KX_PYMETHOD(KX_ConstraintWrapper,SetParam);
 	KX_PYMETHOD(KX_ConstraintWrapper,GetParam);
+
+	static PyObject* pyattr_get_constraintId(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 #endif
 
 private:

Modified: branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_PolyProxy.cpp
===================================================================
--- branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_PolyProxy.cpp	2010-08-11 08:23:48 UTC (rev 31233)
+++ branches/soc-2010-nexyon/source/gameengine/Ketsji/KX_PolyProxy.cpp	2010-08-11 10:36:16 UTC (rev 31234)
@@ -72,90 +72,19 @@
 };
 
 PyAttributeDef KX_PolyProxy::Attributes[] = {
-	/* All dummy's so they come up in a dir() */
-	//KX_PYATTRIBUTE_TODO("DummyProps"),
-	KX_PYATTRIBUTE_DUMMY("matname"),
-	KX_PYATTRIBUTE_DUMMY("texture"),
-	KX_PYATTRIBUTE_DUMMY("material"),
-	KX_PYATTRIBUTE_DUMMY("matid"),
-	KX_PYATTRIBUTE_DUMMY("v1"),
-	KX_PYATTRIBUTE_DUMMY("v2"),
-	KX_PYATTRIBUTE_DUMMY("v3"),
-	KX_PYATTRIBUTE_DUMMY("v4"),
-	KX_PYATTRIBUTE_DUMMY("visible"),
-	KX_PYATTRIBUTE_DUMMY("collide"),
+	KX_PYATTRIBUTE_RO_FUNCTION("material_name", KX_PolyProxy, pyattr_get_material_name),

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list