终于将代码用swig包装成了lua,执行指令是:
./swig -lua -c++ -o ../sedge_wrap.c sedge.module
我的module象这样:
%module SEDGE
%import sio2.module
%import ../../../../Project/MainSource/Control/GamePad.h
%{
  #include "Singleton.h"
  #include "Game/IMove.h"
  #include "Sedge.h"
  #include "Game/Cube.h"
  #include "Game/CubeFactory.h"
  #include "Game/CameraFactory.h"
  #include "Utility/PVInter/OGLES/OGLESTools.h"
  /*
  #include
  #include
  #include "sio2.h"
  */
%}


namespace Sedge {
......
......
}

刚刚还在窃喜可以用lua来写关卡了,突然想到lua里如果获取GameObject的话是全局的,也就是在sio2的resourceDispatchStream的时候就load和compile了,那么GameObject的create需要在lua脚本load之前进行,还好sio2提供了custom object load,我只需要在场景里指明哪个sio2 object需要create GameObject,然后修改sio2_export.py,将这个信息导出到object文件里,然后写好自己的custom object load函数来create GameObject,这样在sio2 object load完成后,这些GameObject就create好了,之后lua script里的变量就可以绑定到GameObject上对其进行操作。
在open sio2文件之前调用:
sio2->_SIO2resource->_SIO2entry[ SIO2_OBJECT ].custom = custom_parser;
另外我将sio2_export.py的property parser放在了最后,保证sio2 object都load了之后才create gameobject