在大多数情况下,我很高兴通过SWIG处理数据的方式,但是我遇到问题并且无法在文档中找到答案。SWIG扩展变量
的所有IM使用痛饮和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 or z
调用SetGravity
?
或者能够为每个组件实现我自己的wrap功能版本,如:_wrap_World_gravity_set_x
这将分配我在后台调用SetGravity
。
如果你想'world.gravity.x'是可变的,那么为什么'world.gravity'标记为不可变?如果一个对象被标记为不可变,那么你不应该设计使它的一部分变为可变的黑客。有些事情是不对的,也许描述你想如何使用重力和约束。 – Schollii
需要注意的一点是:如果您展示说明问题所需的最少但仍然完整的代码量,则可以更轻松地回答这样的问题。当我开始回答时,我不得不重新发明你已经得到的东西。一般来说,如果你坚持这一点,你会得到更多更好的答案。 – Flexo