[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30711] branches/soc-2010-moguri/source/ gameengine/Ketsji: Adding a BL_BlenderShader Python object which can be accessed through KX_BlenderMaterial .blender_shader.

Mitchell Stokes mogurijin at gmail.com
Sun Jul 25 10:12:07 CEST 2010


Revision: 30711
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30711
Author:   moguri
Date:     2010-07-25 10:12:06 +0200 (Sun, 25 Jul 2010)

Log Message:
-----------
Adding a BL_BlenderShader Python object which can be accessed through KX_BlenderMaterial.blender_shader. However, at the moment the object defines no attributes or methods of it's own.

Modified Paths:
--------------
    branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.cpp
    branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.h
    branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
    branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.h
    branches/soc-2010-moguri/source/gameengine/Ketsji/KX_PythonInitTypes.cpp

Modified: branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.cpp
===================================================================
--- branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.cpp	2010-07-25 07:33:15 UTC (rev 30710)
+++ branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.cpp	2010-07-25 08:12:06 UTC (rev 30711)
@@ -17,7 +17,7 @@
 #include "RAS_IRasterizer.h"
  
 BL_BlenderShader::BL_BlenderShader(KX_Scene *scene, struct Material *ma, int lightlayer)
-:
+:	PyObjectPlus(),
 	mScene(scene),
 	mMat(ma),
 	mLightLayer(lightlayer),
@@ -159,4 +159,41 @@
 	return (blshader && mMat == blshader->mMat && mLightLayer == blshader->mLightLayer);
 }
 
+#ifndef DISABLE_PYTHON
+/* Python interface */
+
+PyMethodDef BL_BlenderShader::Methods[] =
+{
+	{NULL} // Sentinel
+};
+
+PyAttributeDef BL_BlenderShader::Attributes[] =
+{
+	{NULL} // Sentinel
+};
+
+PyTypeObject BL_BlenderShader::Type = {
+	PyVarObject_HEAD_INIT(NULL, 0)
+	"BL_BlenderShader",
+	sizeof(PyObjectPlus_Proxy),
+	0,
+	py_base_dealloc,
+	0,
+	0,
+	0,
+	0,
+	py_base_repr,
+	0,0,0,0,0,0,0,0,0,
+	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+	0,0,0,0,0,0,0,
+	Methods,
+	0,
+	0,
+	&PyObjectPlus::Type,
+	0,0,0,0,0,0,
+	py_base_new
+};
+
+#endif // ndef DISABLE_PYTHON
+
 // eof

Modified: branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.h
===================================================================
--- branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.h	2010-07-25 07:33:15 UTC (rev 30710)
+++ branches/soc-2010-moguri/source/gameengine/Ketsji/BL_BlenderShader.h	2010-07-25 08:12:06 UTC (rev 30711)
@@ -24,8 +24,9 @@
  * BL_BlenderShader
  *  Blender GPU shader material
  */
-class BL_BlenderShader
+class BL_BlenderShader: public PyObjectPlus
 {
+	Py_Header;
 private:
 	KX_Scene		*mScene;
 	struct Scene	*mBlenderScene;
@@ -65,6 +66,11 @@
 
 	bool Equals(BL_BlenderShader *blshader);
 	
+#ifndef DISABLE_PYTHON
+	// -----------------------------
+	virtual PyObject* py_repr(void) { return PyUnicode_FromString("No string representations for objects of type BL_BlenderShader"); }
+	// -----------------------------
+#endif // ndef DISABLE_PYTHON
 	
 #ifdef WITH_CXX_GUARDEDALLOC
 public:

Modified: branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
===================================================================
--- branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.cpp	2010-07-25 07:33:15 UTC (rev 30710)
+++ branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.cpp	2010-07-25 08:12:06 UTC (rev 30711)
@@ -138,6 +138,11 @@
 	return mMaterial->material;
 }
 
+BL_BlenderShader *KX_BlenderMaterial::GetBlenderShader() const
+{
+	return mBlenderShader;
+}
+
 Scene* KX_BlenderMaterial::GetBlenderScene() const
 {
 	return mScene->GetBlenderScene();
@@ -797,6 +802,7 @@
 	//KX_PYATTRIBUTE_TODO("shader"),
 	//KX_PYATTRIBUTE_TODO("materialIndex"),
 	//KX_PYATTRIBUTE_TODO("blending"),
+	KX_PYATTRIBUTE_RO_FUNCTION("blender_shader", KX_BlenderMaterial, pyattr_get_blender_shader),
 	{ NULL }	//Sentinel
 };
 
@@ -822,6 +828,17 @@
 	py_base_new
 };
 
+PyObject* KX_BlenderMaterial::pyattr_get_blender_shader(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+	BL_BlenderShader* shader= self->GetBlenderShader();
+
+	if (shader)
+		return shader->GetProxy();
+
+	Py_RETURN_NONE;
+}
+
 KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
 {
 	if( !GLEW_ARB_fragment_shader) {

Modified: branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.h
===================================================================
--- branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.h	2010-07-25 07:33:15 UTC (rev 30710)
+++ branches/soc-2010-moguri/source/gameengine/Ketsji/KX_BlenderMaterial.h	2010-07-25 08:12:06 UTC (rev 30711)
@@ -71,6 +71,7 @@
 	)const;
 
 	Material* GetBlenderMaterial() const;
+	BL_BlenderShader* GetBlenderShader() const;
 	MTFace* GetMTFace(void) const;
 	unsigned int* GetMCol(void) const;
 	BL_Texture * getTex (unsigned int idx) { 
@@ -105,6 +106,8 @@
 	KX_PYMETHOD_DOC( KX_BlenderMaterial, setTexture );
 
 	KX_PYMETHOD_DOC( KX_BlenderMaterial, setBlending );
+
+	static PyObject* pyattr_get_blender_shader(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 #endif // DISABLE_PYTHON
 
 	// --------------------------------

Modified: branches/soc-2010-moguri/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
===================================================================
--- branches/soc-2010-moguri/source/gameengine/Ketsji/KX_PythonInitTypes.cpp	2010-07-25 07:33:15 UTC (rev 30710)
+++ branches/soc-2010-moguri/source/gameengine/Ketsji/KX_PythonInitTypes.cpp	2010-07-25 08:12:06 UTC (rev 30711)
@@ -176,6 +176,7 @@
 	for(int init_getset= 1; init_getset > -1; init_getset--) { /* run twice, once to init the getsets another to run PyType_Ready */
 		PyType_Ready_Attr(dict, BL_ActionActuator, init_getset);
 		PyType_Ready_Attr(dict, BL_Shader, init_getset);
+		PyType_Ready_Attr(dict, BL_BlenderShader, init_getset);
 		PyType_Ready_Attr(dict, BL_ShapeActionActuator, init_getset);
 		PyType_Ready_Attr(dict, BL_ArmatureObject, init_getset);
 		PyType_Ready_Attr(dict, BL_ArmatureActuator, init_getset);





More information about the Bf-blender-cvs mailing list