[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31079] branches/soc-2010-moguri-2/source/ gameengine/Ketsji: Py API updates:

Mitchell Stokes mogurijin at gmail.com
Thu Aug 5 21:01:59 CEST 2010


Revision: 31079
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31079
Author:   moguri
Date:     2010-08-05 21:01:59 +0200 (Thu, 05 Aug 2010)

Log Message:
-----------
Py API updates:
  * When getting a PythonShader from a material the PythonShader's uniform list is populated
  * PythonUniforms now get their type from their constructor (constants still need to be added)

Current problems:
  * Text datablocks are no longer being set (not sure how that happened)
  * Getting errors when compiling GLSL shaders set through PythonShader.fragment, et al.
  * I'm almost certain I have some memory leaks

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

Modified: branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_PythonShaders.cpp
===================================================================
--- branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_PythonShaders.cpp	2010-08-05 18:17:17 UTC (rev 31078)
+++ branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_PythonShaders.cpp	2010-08-05 19:01:59 UTC (rev 31079)
@@ -35,6 +35,7 @@
 #include "KX_PythonShaders.h"
 #include "KX_BlenderMaterial.h"
 #include "BL_BlenderShader.h"
+#include "DNA_material_types.h"
 
 /**
  * The Shader type
@@ -59,6 +60,14 @@
 	m_vert = vert;
 	m_geom = geom;
 	m_frag = frag;
+
+	CustomUniform *cu = static_cast<CustomUniform*>(material->GetBlenderMaterial()->csi.uniforms.first);
+
+	while (cu)
+	{
+		m_uniforms.push_back(new KX_PythonUniform(cu));
+		cu = cu->next;
+	}
 }
 
 KX_PythonShader::~KX_PythonShader()
@@ -189,14 +198,23 @@
  * The Uniform type
  */
 
-KX_PythonUniform::KX_PythonUniform(char* name)
+KX_PythonUniform::KX_PythonUniform(char* name, short type)
 	: PyObjectPlus(),
-	m_type(0),
+	m_name(name),
+	m_type(type),
 	m_data(NULL)
 {
-	m_name = name;
 }
 
+KX_PythonUniform::KX_PythonUniform(CustomUniform *cu)
+	: PyObjectPlus()
+{
+	m_name = cu->name;
+	m_type = cu->type;
+	m_data = cu->data;
+}
+
+
 KX_PythonUniform::~KX_PythonUniform()
 {
 }
@@ -204,11 +222,12 @@
 PyObject *KX_PythonUniform::py_uniform_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 {
 	char *name;
+	short type_const;
 
-	if (!PyArg_ParseTuple(args, "s:Uniform", &name))
+	if (!PyArg_ParseTuple(args, "sh:Uniform", &name, &type_const))
 		return NULL;
 
-	KX_PythonUniform* pyuniform = new KX_PythonUniform(name);
+	KX_PythonUniform* pyuniform = new KX_PythonUniform(name, type_const);
 	return pyuniform->NewProxy(true);
 }
 
@@ -240,6 +259,7 @@
 
 PyAttributeDef KX_PythonUniform::Attributes[] = {
 	KX_PYATTRIBUTE_STRING_RO("name", KX_PythonUniform, m_name),
+	KX_PYATTRIBUTE_SHORT_RO("type", KX_PythonUniform, m_type),
 	{NULL}	//Sentinel
 };
 #endif // ndef DISABLE_PYTHON
\ No newline at end of file

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-05 18:17:17 UTC (rev 31078)
+++ branches/soc-2010-moguri-2/source/gameengine/Ketsji/KX_PythonShaders.h	2010-08-05 19:01:59 UTC (rev 31079)
@@ -72,7 +72,8 @@
 	void *m_data;
 
 public:
-	KX_PythonUniform(char* name);
+	KX_PythonUniform(char* name, short type);
+	KX_PythonUniform(struct CustomUniform *cu);
 	~KX_PythonUniform();
 
 	STR_String& GetName() {return m_name;}





More information about the Bf-blender-cvs mailing list