在大多數情況下,我很高興通過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