我目前正在构建一个简单的游戏引擎/基本库。 现在,我正在开发脚本支持。因为我总是比Lua或Python更喜欢JavaScript,所以我想用它作为我的主要脚本语言。谷歌V8首先让我感到震惊,凭借其良好的性能和相对简单的暴露方法 - 通过大量使用模板。但是,我似乎无法在Windows上使用MinGW编译V8 - 它只是不想。然后我看了ChaiScript,这也很有趣 - 特别是因为它与V8相比需要向前迈进一步。然而,这不是我的第一选择。
现在,我的问题如下。如何实现将复杂的C ++类暴露给duktape?我知道this问题,但它只使用一个非常简单的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)以某种方式自动化(或使其更容易)这个过程吗?