让我们把KBEngine玩坏吧!如何定制我们自己的C++函数(一)

为什么不更新kbe warring的代码解读了,因为在我看来那个demo讲完了实体就没东西可讲了,如果专心的看官方文档和PPT的话demo的代码后面没任何难点了已经,单纯的复制黏贴代码实在太过无聊。程序员一定要做点好玩的事情才行~

好吧,今天开始想法直接改引擎底层,争取把引擎底层直接玩坏(*^__^*) 

另外因为平时工作比较忙,这个系列会不定期的更新。

从自己的HelloWorld写起

先来点简单的,baseapp脚本层调用一个自定义的C++函数,输出helloworld!

因为是baseapp的特有C++函数,所以我们需要打开baseapp项目的文件进行修改,这里我选baseapp.h和baseapp.cpp

为避免复制黏贴多余的代码,所以只写核心部分

baseapp.h

复制代码

class Baseapp :    public EntityApp<Base>, 
                public Singleton<Baseapp>
{
public:
    //added by lsm
    static PyObject* __py_findAvatarByName(PyObject* self, PyObject* args);
protected:
}

复制代码

baseapp.cpp

复制代码

//-------------------------------------------------------------------------------------
bool Baseapp::installPyModules()
{
    Base::installScript(getScript().getModule());
    Proxy::installScript(getScript().getModule());
    GlobalDataClient::installScript(getScript().getModule());

    registerScript(Base::getScriptType());
    registerScript(Proxy::getScriptType());

    // 将app标记注册到脚本
    std::map<uint32, std::string> flagsmaps = createAppFlagsMaps();
    std::map<uint32, std::string>::iterator fiter = flagsmaps.begin();
    for (; fiter != flagsmaps.end(); ++fiter)
    {
        if (PyModule_AddIntConstant(getScript().getModule(), fiter->second.c_str(), fiter->first))
        {
            ERROR_MSG(fmt::format("Baseapp::onInstallPyModules: Unable to set KBEngine.{}.\n", fiter->second));
        }
    }

    // 注册创建entity的方法到py 
    APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(),        time,                            __py_gametime,                                                METH_VARARGS,            0);
    APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(),        createBase,                        __py_createBase,                                            METH_VARARGS,            0);
    APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(),        createBaseLocally,                __py_createBase,                                            METH_VARARGS,            0);
    APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(),        createEntity,                    __py_createBase,                                            METH_VARARGS,            0);
    APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(),         createBaseAnywhere,                __py_createBaseAnywhere,                                    METH_VARARGS,            0);
    APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(),        createBaseRemotely,                __py_createBaseRemotely,                                    METH_VARARGS,            0);
    APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(),         createBaseFromDBID,                __py_createBaseFromDBID,                           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值