现代跨平台C ++引擎 Shiva

MIT
C/C++
跨平台
2019-07-27
红薯

Shiva 是一个具有模块化特性的现代跨平台C ++引擎。Shiva 用C++17编写,它通过在编译时使用最多的功能,同时在运行时保持可扩展性,旨在在运行时非常快。它基于可单独使用或一起使用的模块体系结构。

示例代码:

#include <shiva/world/world.hpp>

namespace my_game::systems
{
    class bar : public shiva::ecs::pre_update_system<bar>
    {
    public:
        bar(shiva::entt::dispatcher &dispatcher, shiva::entt::entity_registry &registry,
            const float &fixed_delta_time) :
            system(dispatcher, registry, fixed_delta_time)
        {
        }

        void update() noexcept final
        {
            std::cout << __FUNCTION__ << " name: " << class_name() << std::endl;
        }

        reflect_class(bar);

        static constexpr auto reflected_functions() noexcept
        {
            return shiva::meta::makeMap();
        }

        static constexpr auto reflected_members() noexcept
        {
            return shiva::meta::makeMap();
        }
    };

    class foo : public shiva::ecs::logic_update_system<foo>
    {
    public:
        foo(shiva::entt::dispatcher &dispatcher, shiva::entt::entity_registry &registry,
            const float &fixed_delta_time) :
            system(dispatcher, registry, fixed_delta_time)
        {
        }

        void update() noexcept final
        {
            std::cout << __FUNCTION__ << " name: " << class_name() << std::endl;
        }

        reflect_class(foo);

        static constexpr auto reflected_functions() noexcept
        {
            return shiva::meta::makeMap();
        }

        static constexpr auto reflected_members() noexcept
        {
            return shiva::meta::makeMap();
        }
    };

    class folk : public shiva::ecs::post_update_system<folk>
    {
    public:
        folk(shiva::entt::dispatcher &dispatcher, shiva::entt::entity_registry &registry,
             const float &fixed_delta_time) :
            system(dispatcher, registry, fixed_delta_time)
        {
        }

        void update() noexcept final
        {
            if (counter == 10) {
                this->dispatcher_.trigger<shiva::event::quit_game>(0);
            }
            std::cout << __FUNCTION__ << " system: " << class_name() << std::endl;
            counter++;
        }

        reflect_class(folk);

        static constexpr auto reflected_functions() noexcept
        {
            return shiva::meta::makeMap();
        }

        static constexpr auto reflected_members() noexcept
        {
            return shiva::meta::makeMap();
        }

    private:
        size_t counter{0};
    };
}

namespace my_game
{
    class my_world : public shiva::world
    {
    public:
        my_world()
        {
            system_manager_.load_systems<my_game::systems::foo, my_game::systems::bar, my_game::systems::folk>();
        }
    };
}

int main()
{
    my_game::my_world world;
    return world.run();
}

 

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

美研究人员开发出移动传感系统 可持续跟踪员工表现

网易科技讯7月1日消息,美国多家大学研究人员日前联合开发出一种移动传感系统,它可以结合智能手机、健身设备以及定制应用程序,跟踪并评估员工的工作表现。 这套移动传感系统能够对表现优异...

07/05 18:19
3
0
邮件安全的历史

邮件安全是一个历史遗留问题 1982 年 8 月 30 日,互联网上最常用的一个复合词首次进入公众视野。当时,一名 16 岁的年轻人希瓦·阿亚杜拉 (Shiva Ayyadurai) 获得了计算机程序‘EMAIL’的...

03/22 18:53
2
0
牛逼的项目一定要有个牛逼的名字

好久没写博客了,前一阵子搞晋升,最近在搞新项目。对啊。卤煮才开始晋升啊。。。吐槽完毕 本文一点技术含量都没有,纯装X用。话说以前做过几个名字听起来就很拉风的项目,比如summer(没错s...

2013/03/26 21:52
1K
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部