[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