2010-12-11 16 views
1

我目前製作的遊戲有一個簡單的實體系統。我有CEntity類(不使用繼承,基於組件)和實體管理器。Lua:綁定我的遊戲實體系統的問題

CEntity綁定到Lua,並且在Lua中創建一個新的實體時,在分配的用戶數據中創建一個新的實體。

因此,這將是所有罰款,但是我所遇到的一個很大的問題:

  • 如何實現類似ents.GetByID()?

ents.GetByID()應返回對ID爲x的實體的引用。我目前的工作:創建一個新的用戶數據,填入現有實體x的memcpy()。

但是這顯然不起作用:首先,它擾亂了實體管理器,第二:如果我更改「參考」實體,實際實體保持不變 - 實際上我有兩個獨立的實體。

  • 如何將參考推送到堆棧上的現有userdatum?
+0

OP要求刪除問題,並清除內容。 @Cats:爲什麼? – Eric 2010-12-11 15:05:46

回答

0

基本上,你要做的就是將Lua註冊表中的特定鍵(比如ID)綁定到用戶數據。另外,memcpy = bad,mmkay?

如果您編寫了一個簡單的C函數來返回Lua註冊表表,那麼在Lua端寫這段代碼將會非常簡單而且容易。

make_entity = function(ID, ...) 
    local entity = CreateEntity(...); 
    get_registry().EntityIDMap[ID] = entity; 
    return entity; 
end 

get_entity = function(ID) 
    return get_registry().EntityIDMap[ID]; 
end