これは、Lua C API を使用して C++ で実行したいことです。
ユーザーデータを基本ユーザーデータオブジェクトから派生させる良い方法を見つけようとしています。
私はこれを行うことができるようにしたい:
local item = me:GetCurrentItem()
print(item:GetPos())
それ以外の:
local item = me:GetCurrentItem()
print(item:GetBaseObject():GetPos())
これらの例では、me:GetCurrentItem() はいくつかの関数でユーザーデータを返しますが、item:GetBaseObject() が返す基本関数がありません。
学習目的で Crysis Wars SDK に Lua をバインドしています。SDK は、構造体である基本エンティティへのインターフェイスを提供します。IItem 構造体 (me:GetCurrentItem()) は同じです。これらは構造体であるため、それらを基本構造体にキャストしたり、その基本関数を呼び出したりすることはできません。IEntity *GetEntity() 関数を使用する必要があります。
__index で自己ポインタを変更しようとしましたが、ローカル変数「item」が「entity」になるのは明らかですが、GetPos 関数を呼び出した後に元に戻したいのですが、これはどういうわけか非論理的です。
誰かがこの問題の良い解決策を持っていますか?