[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31230] branches/soc-2010-moguri-2/source/ gameengine/Ketsji: Setting KX_BlenderMaterial. blender_shader now sets the sources of the underlying BL_BlenderShader.

Mitchell Stokes mogurijin at gmail.com
Wed Aug 11 07:12:00 CEST 2010


Revision: 31230
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31230
Author:   moguri
Date:     2010-08-11 07:11:43 +0200 (Wed, 11 Aug 2010)

Log Message:
-----------
Setting KX_BlenderMaterial.blender_shader now sets the sources of the underlying BL_BlenderShader. It looks like all that is left for the API is changing the Uniform's value. That and anything else Dalai deems necessary. :)

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

Modified: branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
===================================================================
--- branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_BlenderMaterial.cpp	2010-08-11 03:31:56 UTC (rev 31229)
+++ branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_BlenderMaterial.cpp	2010-08-11 05:11:43 UTC (rev 31230)
@@ -861,8 +861,22 @@
 {
 	KX_BlenderMaterial* self = static_cast<KX_BlenderMaterial*>(self_v);
 
+	if (!PyType_IsSubtype(&KX_PythonShader::Type, Py_TYPE(value)))
+	{
+		PyErr_SetString(PyExc_TypeError, "expected a Shader object");
+		return NULL;
+	}
+
+	KX_PythonShader *pyshader = static_cast<KX_PythonShader*>BGE_PROXY_REF(value);
+
 	BL_BlenderShader* shader = new BL_BlenderShader(self->mScene, self->GetBlenderMaterial(), self->mLightLayer);
 	self->SetBlenderShader(shader);
+
+	shader->SetSources (
+					pyshader->GetVertex().Ptr(),
+					pyshader->GetGeometry().Ptr(),
+					pyshader->GetFragment().Ptr());
+
 	return PY_SET_ATTR_SUCCESS;
 }
 

Modified: branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_PythonShaders.h
===================================================================
--- branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_PythonShaders.h	2010-08-11 03:31:56 UTC (rev 31229)
+++ branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_PythonShaders.h	2010-08-11 05:11:43 UTC (rev 31230)
@@ -49,11 +49,12 @@
 	KX_PythonShader(class KX_BlenderMaterial *material);
 	~KX_PythonShader();
 
-	UniformList& GetUniforms()
-	{
-		return m_uniforms;
-	}
+	STR_String& GetVertex() { return m_vert; }
+	STR_String& GetGeometry() { return m_geom; }
+	STR_String& GetFragment() { return m_frag; }
 
+	UniformList& GetUniforms() { return m_uniforms; }
+
 	static PyObject* py_shader_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
 
 	KX_PYMETHOD_DOC_O(KX_PythonShader, addUniform);





More information about the Bf-blender-cvs mailing list