<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 (revision 15969)<br>
+++ CMakeLists.txt (working copy)<br>@@ -60,6 +60,7 @@<br> ../../../extern/bullet2/src<br> ../../../extern/solid<br> ../../../extern/glew/include<br>+ ../../../source/blender/python/api2_2x<br> ${PYTHON_INC}<br>
${SDL_INC}<br> )<br><br>With, blender compiles ok. <br><div class="gmail_quote">2008/8/5 Campbell Barton <<a href="mailto:ideasman42@gmail.com">ideasman42@gmail.com</a>>:<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>
<a href="http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15967" target="_blank">http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15967</a><br>
Author: campbellbarton<br>
Date: 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>
trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c<br>
trunk/blender/source/blender/python/BPY_interface.c<br>
trunk/blender/source/blender/python/api2_2x/Blender.c<br>
trunk/blender/source/blender/python/api2_2x/Mathutils.c<br>
trunk/blender/source/blender/python/api2_2x/Mathutils.h<br>
trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp<br>
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 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -117,10 +117,14 @@<br>
{<br>
return 0;<br>
}<br>
+<br>
+/*<br>
int EXPP_dict_set_item_str(struct PyObject *dict, char *key, struct PyObject *value)<br>
{<br>
return 0;<br>
}<br>
+*/<br>
+<br>
void Node_SetStack(struct BPy_Node *self, struct bNodeStack **stack, int type){}<br>
void InitNode(struct BPy_Node *self, struct bNode *node){}<br>
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>
PyObject *CreateGlobalDictionary( void );<br>
void ReleaseGlobalDictionary( PyObject * dict );<br>
void DoAllScriptsFromList( ListBase * list, short event );<br>
-PyObject *importText( char *name );<br>
+static PyObject *importText( char *name );<br>
void init_ourImport( void );<br>
void init_ourReload( void );<br>
PyObject *blender_import( PyObject * self, PyObject * args );<br>
@@ -1104,12 +1104,10 @@<br>
*****************************************************************************/<br>
void BPY_free_compiled_text( struct Text *text )<br>
{<br>
- if( !text->compiled )<br>
- return;<br>
- Py_DECREF( ( PyObject * ) text->compiled );<br>
- text->compiled = NULL;<br>
-<br>
- return;<br>
+ if( text->compiled ) {<br>
+ Py_DECREF( ( PyObject * ) text->compiled );<br>
+ text->compiled = NULL;<br>
+ }<br>
}<br>
<br>
/*****************************************************************************<br>
@@ -2780,48 +2778,38 @@<br>
return;<br>
}<br>
<br>
-PyObject *importText( char *name )<br>
+static PyObject *importText( char *name )<br>
{<br>
Text *text;<br>
- char *txtname;<br>
+ char txtname[22]; /* 21+NULL */<br>
char *buf = NULL;<br>
int namelen = strlen( name );<br>
-<br>
- txtname = malloc( namelen + 3 + 1 );<br>
- if( !txtname )<br>
- return NULL;<br>
-<br>
+<br>
+ if (namelen>21-3) return NULL; /* we know this cant be importable, the name is too long for blender! */<br>
+<br>
memcpy( txtname, name, namelen );<br>
memcpy( &txtname[namelen], ".py", 4 );<br>
<br>
- text = ( Text * ) & ( G.main->text.first );<br>
-<br>
- while( text ) {<br>
+ for(text = G.main->text.first; text; text = text->id.next) {<br>
if( !strcmp( txtname, text-><a href="http://id.name" target="_blank">id.name</a>+2 ) )<br>
break;<br>
- text = text->id.next;<br>
}<br>
<br>
- if( !text ) {<br>
- free( txtname );<br>
+ if( !text )<br>
return NULL;<br>
- }<br>
<br>
if( !text->compiled ) {<br>
buf = txt_to_buf( text );<br>
- text->compiled =<br>
- Py_CompileString( buf, text-><a href="http://id.name" target="_blank">id.name</a>+2, Py_file_input );<br>
+ text->compiled = Py_CompileString( buf, text-><a href="http://id.name" target="_blank">id.name</a>+2, Py_file_input );<br>
MEM_freeN( buf );<br>
<br>
if( PyErr_Occurred( ) ) {<br>
PyErr_Print( );<br>
BPY_free_compiled_text( text );<br>
- free( txtname );<br>
return NULL;<br>
}<br>
}<br>
<br>
- free( txtname );<br>
return PyImport_ExecCodeModule( name, text->compiled );<br>
}<br>
<br>
<br>
Modified: trunk/blender/source/blender/python/api2_2x/Blender.c<br>
===================================================================<br>
--- trunk/blender/source/blender/python/api2_2x/Blender.c 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/python/api2_2x/Blender.c 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -1074,7 +1074,7 @@<br>
PyDict_SetItemString(dict, "Material", Material_Init());<br>
PyDict_SetItemString(dict, "Mesh", Mesh_Init());<br>
PyDict_SetItemString(dict, "Metaball", Metaball_Init());<br>
- PyDict_SetItemString(dict, "Mathutils", Mathutils_Init());<br>
+ PyDict_SetItemString(dict, "Mathutils", Mathutils_Init("Blender.Mathutils"));<br>
PyDict_SetItemString(dict, "Geometry", Geometry_Init());<br>
PyDict_SetItemString(dict, "Modifier", Modifier_Init());<br>
PyDict_SetItemString(dict, "NMesh", 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 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/python/api2_2x/Mathutils.c 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -106,8 +106,9 @@<br>
{"Point", (PyCFunction) M_Mathutils_Point, METH_VARARGS, M_Mathutils_Point_doc},<br>
{NULL, NULL, 0, NULL}<br>
};<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>
{<br>
PyObject *submodule;<br>
<br>
@@ -125,8 +126,7 @@<br>
if( PyType_Ready( &quaternion_Type ) < 0 )<br>
return NULL;<br>
<br>
- submodule = Py_InitModule3("Blender.Mathutils",<br>
- M_Mathutils_methods, M_Mathutils_doc);<br>
+ submodule = Py_InitModule3(from, M_Mathutils_methods, M_Mathutils_doc);<br>
return (submodule);<br>
}<br>
//-----------------------------METHODS----------------------------<br>
<br>
Modified: trunk/blender/source/blender/python/api2_2x/Mathutils.h<br>
===================================================================<br>
--- trunk/blender/source/blender/python/api2_2x/Mathutils.h 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/blender/python/api2_2x/Mathutils.h 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -38,7 +38,7 @@<br>
#include "euler.h"<br>
#include "point.h"<br>
<br>
-PyObject *Mathutils_Init( void );<br>
+PyObject *Mathutils_Init( char * from );<br>
PyObject *row_vector_multiplication(VectorObject* vec, MatrixObject * mat);<br>
PyObject *column_vector_multiplication(MatrixObject * mat, VectorObject* vec);<br>
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 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -62,6 +62,10 @@<br>
<br>
#include "KX_PyMath.h"<br>
<br>
+extern "C" {<br>
+ #include "Mathutils.h" // Blender.Mathutils module copied here so the blenderlayer can use.<br>
+}<br>
+<br>
#include "PHY_IPhysicsEnvironment.h"<br>
// FIXME: Enable for access to blender python modules. This is disabled because<br>
// python has dependencies on a lot of other modules and is a pain to link.<br>
@@ -733,7 +737,10 @@<br>
<br>
ErrorObject = PyString_FromString("GameLogic.error");<br>
PyDict_SetItemString(d, "error", ErrorObject);<br>
-<br>
+<br>
+ // Add Blender.Mathutils module, duplicate code :/<br>
+ PyDict_SetItemString(d, "Mathutils", Mathutils_Init("GameLogic.Mathutils"));<br>
+<br>
// XXXX Add constants here<br>
/* To use logic bricks, we need some sort of constants. Here, we associate */<br>
/* constants and sumbolic names. Add them to dictionary d. */<br>
<br>
Modified: trunk/blender/source/gameengine/Ketsji/SConscript<br>
===================================================================<br>
--- trunk/blender/source/gameengine/Ketsji/SConscript 2008-08-05 06:51:03 UTC (rev 15966)<br>
+++ trunk/blender/source/gameengine/Ketsji/SConscript 2008-08-05 09:35:46 UTC (rev 15967)<br>
@@ -5,7 +5,21 @@<br>
<br>
sources = env.Glob('*.cpp')<br>
<br>
-incs = '. #source/kernel/gen_system #intern/string #intern/guardedalloc'<br>
+# Mathutils C files.<br>
+sources.extend([\<br>
+ '#source/blender/python/api2_2x/Mathutils.c',\<br>
+ '#source/blender/python/api2_2x/constant.c',\<br>
+ '#source/blender/python/api2_2x/euler.c',\<br>
+ '#source/blender/python/api2_2x/gen_utils.c',\<br>
+ '#source/blender/python/api2_2x/matrix.c',\<br>
+ '#source/blender/python/api2_2x/point.c',\<br>
+ '#source/blender/python/api2_2x/quat.c',\<br>
+ '#source/blender/python/api2_2x/vector.c',\<br>
+])<br>
+<br>
+incs = '. #source/blender/python/api2_2x' # Only for Mathutils! - no other deps<br>
+<br>
+incs += ' #source/kernel/gen_system #intern/string #intern/guardedalloc'<br>
incs += ' #source/gameengine/Rasterizer/RAS_OpenGLRasterizer #intern/bmfont'<br>
incs += ' #intern/SoundSystem #intern/SoundSystem/include #intern/SoundSystem/openal'<br>
incs += ' #intern/SoundSystem/dummy #intern/SoundSystem/intern #source/gameengine/Converter'<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>