<div dir="ltr">With Cmake for creating MSVC project file, I need to modify cmakelist in source\gameengine\Ketsji\ :<br><br>Index: CMakeLists.txt<br>===================================================================<br>--- CMakeLists.txt&nbsp;&nbsp;&nbsp; (revision 15969)<br>
+++ CMakeLists.txt&nbsp;&nbsp;&nbsp; (working copy)<br>@@ -60,6 +60,7 @@<br>&nbsp;&nbsp; ../../../extern/bullet2/src<br>&nbsp;&nbsp; ../../../extern/solid<br>&nbsp;&nbsp; ../../../extern/glew/include<br>+&nbsp; ../../../source/blender/python/api2_2x<br>&nbsp;&nbsp; ${PYTHON_INC}<br>
&nbsp;&nbsp; ${SDL_INC}<br>&nbsp;)<br><br>With, blender compiles ok. <br><div class="gmail_quote">2008/8/5 Campbell Barton &lt;<a href="mailto:ideasman42@gmail.com">ideasman42@gmail.com</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Revision: 15967<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&amp;root=bf-blender&amp;revision=15967" target="_blank">http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&amp;root=bf-blender&amp;revision=15967</a><br>

Author: &nbsp; campbellbarton<br>
Date: &nbsp; &nbsp; 2008-08-05 11:35:46 +0200 (Tue, 05 Aug 2008)<br>
<br>
Log Message:<br>
-----------<br>
Added GameLogic.Mathutils so Mathutils and its types can be accessed from blenderplayer.<br>
also changed importText so it dosnt do a malloc<br>
<br>
Modified Paths:<br>
--------------<br>
 &nbsp; &nbsp;trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c<br>
 &nbsp; &nbsp;trunk/blender/source/blender/python/BPY_interface.c<br>
 &nbsp; &nbsp;trunk/blender/source/blender/python/api2_2x/Blender.c<br>
 &nbsp; &nbsp;trunk/blender/source/blender/python/api2_2x/Mathutils.c<br>
 &nbsp; &nbsp;trunk/blender/source/blender/python/api2_2x/Mathutils.h<br>
 &nbsp; &nbsp;trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp<br>
 &nbsp; &nbsp;trunk/blender/source/gameengine/Ketsji/SConscript<br>
<br>
Modified: trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c<br>
===================================================================<br>
--- trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c &nbsp; &nbsp; &nbsp; &nbsp;2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c &nbsp; &nbsp; &nbsp; &nbsp;2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -117,10 +117,14 @@<br>
&nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return 0;<br>
&nbsp;}<br>
+<br>
+/*<br>
&nbsp;int EXPP_dict_set_item_str(struct PyObject *dict, char *key, struct PyObject *value)<br>
&nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return 0;<br>
&nbsp;}<br>
+*/<br>
+<br>
&nbsp;void Node_SetStack(struct BPy_Node *self, struct bNodeStack **stack, int type){}<br>
&nbsp;void InitNode(struct BPy_Node *self, struct bNode *node){}<br>
&nbsp;void Node_SetShi(struct BPy_Node *self, struct ShadeInput *shi){}<br>
<br>
Modified: trunk/blender/source/blender/python/BPY_interface.c<br>
===================================================================<br>
--- trunk/blender/source/blender/python/BPY_interface.c 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/python/BPY_interface.c 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -163,7 +163,7 @@<br>
&nbsp;PyObject *CreateGlobalDictionary( void );<br>
&nbsp;void ReleaseGlobalDictionary( PyObject * dict );<br>
&nbsp;void DoAllScriptsFromList( ListBase * list, short event );<br>
-PyObject *importText( char *name );<br>
+static PyObject *importText( char *name );<br>
&nbsp;void init_ourImport( void );<br>
&nbsp;void init_ourReload( void );<br>
&nbsp;PyObject *blender_import( PyObject * self, PyObject * args );<br>
@@ -1104,12 +1104,10 @@<br>
&nbsp;*****************************************************************************/<br>
&nbsp;void BPY_free_compiled_text( struct Text *text )<br>
&nbsp;{<br>
- &nbsp; &nbsp; &nbsp; if( !text-&gt;compiled )<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br>
- &nbsp; &nbsp; &nbsp; Py_DECREF( ( PyObject * ) text-&gt;compiled );<br>
- &nbsp; &nbsp; &nbsp; text-&gt;compiled = NULL;<br>
-<br>
- &nbsp; &nbsp; &nbsp; return;<br>
+ &nbsp; &nbsp; &nbsp; if( text-&gt;compiled ) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Py_DECREF( ( PyObject * ) text-&gt;compiled );<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text-&gt;compiled = NULL;<br>
+ &nbsp; &nbsp; &nbsp; }<br>
&nbsp;}<br>
<br>
&nbsp;/*****************************************************************************<br>
@@ -2780,48 +2778,38 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return;<br>
&nbsp;}<br>
<br>
-PyObject *importText( char *name )<br>
+static PyObject *importText( char *name )<br>
&nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Text *text;<br>
- &nbsp; &nbsp; &nbsp; char *txtname;<br>
+ &nbsp; &nbsp; &nbsp; char txtname[22]; /* 21+NULL */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;char *buf = NULL;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int namelen = strlen( name );<br>
-<br>
- &nbsp; &nbsp; &nbsp; txtname = malloc( namelen + 3 + 1 );<br>
- &nbsp; &nbsp; &nbsp; if( !txtname )<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return NULL;<br>
-<br>
+<br>
+ &nbsp; &nbsp; &nbsp; if (namelen&gt;21-3) return NULL; /* we know this cant be importable, the name is too long for blender! */<br>
+<br>
 &nbsp; &nbsp; &nbsp; &nbsp;memcpy( txtname, name, namelen );<br>
 &nbsp; &nbsp; &nbsp; &nbsp;memcpy( &amp;txtname[namelen], &quot;.py&quot;, 4 );<br>
<br>
- &nbsp; &nbsp; &nbsp; text = ( Text * ) &amp; ( G.main-&gt;text.first );<br>
-<br>
- &nbsp; &nbsp; &nbsp; while( text ) {<br>
+ &nbsp; &nbsp; &nbsp; for(text = G.main-&gt;text.first; text; text = text-&gt;id.next) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if( !strcmp( txtname, text-&gt;<a href="http://id.name" target="_blank">id.name</a>+2 ) )<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text = text-&gt;id.next;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
- &nbsp; &nbsp; &nbsp; if( !text ) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; free( txtname );<br>
+ &nbsp; &nbsp; &nbsp; if( !text )<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return NULL;<br>
- &nbsp; &nbsp; &nbsp; }<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if( !text-&gt;compiled ) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;buf = txt_to_buf( text );<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text-&gt;compiled =<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Py_CompileString( buf, text-&gt;<a href="http://id.name" target="_blank">id.name</a>+2, Py_file_input );<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text-&gt;compiled = Py_CompileString( buf, text-&gt;<a href="http://id.name" target="_blank">id.name</a>+2, Py_file_input );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MEM_freeN( buf );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if( PyErr_Occurred( &nbsp;) ) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PyErr_Print( &nbsp;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BPY_free_compiled_text( text );<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; free( txtname );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return NULL;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
- &nbsp; &nbsp; &nbsp; free( txtname );<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return PyImport_ExecCodeModule( name, text-&gt;compiled );<br>
&nbsp;}<br>
<br>
<br>
Modified: trunk/blender/source/blender/python/api2_2x/Blender.c<br>
===================================================================<br>
--- trunk/blender/source/blender/python/api2_2x/Blender.c &nbsp; &nbsp; &nbsp; 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/python/api2_2x/Blender.c &nbsp; &nbsp; &nbsp; 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -1074,7 +1074,7 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyDict_SetItemString(dict, &quot;Material&quot;, Material_Init());<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyDict_SetItemString(dict, &quot;Mesh&quot;, Mesh_Init());<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyDict_SetItemString(dict, &quot;Metaball&quot;, Metaball_Init());<br>
- &nbsp; &nbsp; &nbsp; PyDict_SetItemString(dict, &quot;Mathutils&quot;, Mathutils_Init());<br>
+ &nbsp; &nbsp; &nbsp; PyDict_SetItemString(dict, &quot;Mathutils&quot;, Mathutils_Init(&quot;Blender.Mathutils&quot;));<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyDict_SetItemString(dict, &quot;Geometry&quot;, Geometry_Init());<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyDict_SetItemString(dict, &quot;Modifier&quot;, Modifier_Init());<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyDict_SetItemString(dict, &quot;NMesh&quot;, NMesh_Init());<br>
<br>
Modified: trunk/blender/source/blender/python/api2_2x/Mathutils.c<br>
===================================================================<br>
--- trunk/blender/source/blender/python/api2_2x/Mathutils.c &nbsp; &nbsp; 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/python/api2_2x/Mathutils.c &nbsp; &nbsp; 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -106,8 +106,9 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{&quot;Point&quot;, (PyCFunction) M_Mathutils_Point, METH_VARARGS, M_Mathutils_Point_doc},<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{NULL, NULL, 0, NULL}<br>
&nbsp;};<br>
-//----------------------------MODULE INIT-------------------------<br>
-PyObject *Mathutils_Init(void)<br>
+/*----------------------------MODULE INIT-------------------------*/<br>
+/* from can be Blender.Mathutils or GameLogic.Mathutils for the BGE */<br>
+PyObject *Mathutils_Init(char *from)<br>
&nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyObject *submodule;<br>
<br>
@@ -125,8 +126,7 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if( PyType_Ready( &amp;quaternion_Type ) &lt; 0 )<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return NULL;<br>
<br>
- &nbsp; &nbsp; &nbsp; submodule = Py_InitModule3(&quot;Blender.Mathutils&quot;,<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M_Mathutils_methods, M_Mathutils_doc);<br>
+ &nbsp; &nbsp; &nbsp; submodule = Py_InitModule3(from, M_Mathutils_methods, M_Mathutils_doc);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return (submodule);<br>
&nbsp;}<br>
&nbsp;//-----------------------------METHODS----------------------------<br>
<br>
Modified: trunk/blender/source/blender/python/api2_2x/Mathutils.h<br>
===================================================================<br>
--- trunk/blender/source/blender/python/api2_2x/Mathutils.h &nbsp; &nbsp; 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/python/api2_2x/Mathutils.h &nbsp; &nbsp; 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -38,7 +38,7 @@<br>
&nbsp;#include &quot;euler.h&quot;<br>
&nbsp;#include &quot;point.h&quot;<br>
<br>
-PyObject *Mathutils_Init( void );<br>
+PyObject *Mathutils_Init( char * from );<br>
&nbsp;PyObject *row_vector_multiplication(VectorObject* vec, MatrixObject * mat);<br>
&nbsp;PyObject *column_vector_multiplication(MatrixObject * mat, VectorObject* vec);<br>
&nbsp;PyObject *row_point_multiplication(PointObject* pt, MatrixObject * mat);<br>
<br>
Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp<br>
===================================================================<br>
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp &nbsp; &nbsp;2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp &nbsp; &nbsp;2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -62,6 +62,10 @@<br>
<br>
&nbsp;#include &quot;KX_PyMath.h&quot;<br>
<br>
+extern &quot;C&quot; {<br>
+ &nbsp; &nbsp; &nbsp; #include &quot;Mathutils.h&quot; // Blender.Mathutils module copied here so the blenderlayer can use.<br>
+}<br>
+<br>
&nbsp;#include &quot;PHY_IPhysicsEnvironment.h&quot;<br>
&nbsp;// FIXME: Enable for access to blender python modules. &nbsp;This is disabled because<br>
&nbsp;// python has dependencies on a lot of other modules and is a pain to link.<br>
@@ -733,7 +737,10 @@<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;ErrorObject = PyString_FromString(&quot;GameLogic.error&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;PyDict_SetItemString(d, &quot;error&quot;, ErrorObject);<br>
-<br>
+<br>
+ &nbsp; &nbsp; &nbsp; // Add Blender.Mathutils module, duplicate code :/<br>
+ &nbsp; &nbsp; &nbsp; PyDict_SetItemString(d, &quot;Mathutils&quot;, Mathutils_Init(&quot;GameLogic.Mathutils&quot;));<br>
+<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// XXXX Add constants here<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/* To use logic bricks, we need some sort of constants. Here, we associate */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/* constants and sumbolic names. Add them to dictionary d. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */<br>
<br>
Modified: trunk/blender/source/gameengine/Ketsji/SConscript<br>
===================================================================<br>
--- trunk/blender/source/gameengine/Ketsji/SConscript &nbsp; 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/gameengine/Ketsji/SConscript &nbsp; 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -5,7 +5,21 @@<br>
<br>
&nbsp;sources = env.Glob(&#39;*.cpp&#39;)<br>
<br>
-incs = &#39;. #source/kernel/gen_system #intern/string #intern/guardedalloc&#39;<br>
+# Mathutils C files.<br>
+sources.extend([\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/Mathutils.c&#39;,\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/constant.c&#39;,\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/euler.c&#39;,\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/gen_utils.c&#39;,\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/matrix.c&#39;,\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/point.c&#39;,\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/quat.c&#39;,\<br>
+ &nbsp; &nbsp; &nbsp; &#39;#source/blender/python/api2_2x/vector.c&#39;,\<br>
+])<br>
+<br>
+incs = &#39;. #source/blender/python/api2_2x&#39; # Only for Mathutils! - no other deps<br>
+<br>
+incs += &#39; #source/kernel/gen_system #intern/string #intern/guardedalloc&#39;<br>
&nbsp;incs += &#39; #source/gameengine/Rasterizer/RAS_OpenGLRasterizer #intern/bmfont&#39;<br>
&nbsp;incs += &#39; #intern/SoundSystem #intern/SoundSystem/include #intern/SoundSystem/openal&#39;<br>
&nbsp;incs += &#39; #intern/SoundSystem/dummy #intern/SoundSystem/intern #source/gameengine/Converter&#39;<br>
<br>
<br>
_______________________________________________<br>
Bf-blender-cvs mailing list<br>
<a href="mailto:Bf-blender-cvs@blender.org">Bf-blender-cvs@blender.org</a><br>
<a href="http://lists.blender.org/mailman/listinfo/bf-blender-cvs" target="_blank">http://lists.blender.org/mailman/listinfo/bf-blender-cvs</a><br>
</blockquote></div><br></div>