[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