我目前正在构建一个简单的游戏引擎/基本库。现在,我正在研究脚本支持。因为我一直更喜欢 JavaScript,比如 Lua 或 Python,所以我考虑使用它作为我的主要脚本语言。Google V8 首先让我印象深刻,它具有良好的性能和相对简单的暴露类的方法——大量使用模板。但是,我似乎无法在 Windows 上使用 MinGW 编译 V8 - 它只是不想。然后我看了看 ChaiScript,它也很有趣——尤其是因为它比 V8 更先进了嵌入。然而,这不是我的第一选择。
现在,我的问题如下。如何实现将复杂的 C++ 类暴露给 duktape?我知道这个问题,但它只使用一个非常简单的类 foobar 类。说我有这门课:
class Entity
{
public:
Entity(std::string name_item)
~Entity();
size_t getID();
bool hasComponent(size_t componentid_item);
EntityComponent* getComponent(size_t componentid_item);
void addComponent(EntityComponent* component_item);
EntityComponent* removeComponent(size_t componentid_item);
void deleteComponent(size_t componentid_item);
private:
unsigned long long m_ID;
std::unordered_map<size_t, EntityComponent*> m_Components;
};
我将如何公开它,以便duktape可以使用它?此外,我可以通过使用模板(尤其是 ChaiScript(尤其是)和 Google V8 如此重用吗?)以某种方式自动化(或更容易)这个过程吗?