SWIG %extend 变量

在大多数情况下,我对SWIG处理数据的方式很满意,但我面临一个问题,在文档中找不到答案。首先,我正在使用SWIG与Lua,并包装以下结构:

typedef struct { %mutable; float x,y,z; ... ... } Vector3;

typedef struct { ... ... %immutable; Vector3 gravity; ... ... %extend{ void SetGravity(Vector3 gravity){ WorldSetGravity($self,gravity); } }; } World;

如您所见,重力XYZ可以通过调用“SetGravity”函数受到影响,并且它很好用。但是,为了更直观和更易于使用,我想给用户提供在组件(XY或Z)独立设置的机会,例如:world.gravity.x=-10; 但是,我需要在后台调用“SetGravity”以便能够向物理引擎发送正确的值(该引擎未公开给Lua)。我想知道是否有一种“%extend”变量的方法,使我能够在调用“world.gravity.xy或z”时调用“SetGravity”? 或者能够为每个组件实现自己版本的包装函数,例如:_wrap_World_gravity_set_x,这将允许我在后台调用“SetGravity”。

点赞