基于模板参数而非争论的多类型填充数据

问题描述

我正在尝试开发基本的ECS,目前正在研究视图 到目前为止,我有

//Grabs a ECSView (underlying vector of tuples) of components in the scene of Type T
ECSView<ComponentType> view  a = m_Scene.View<ComponentType>();
//usage example TransformComponent
ECSView<TransformComponent> transformView = m_ECSEntityRegistry.View<TransformComponent>();

如何扩展此功能以在模板中采用多种类型。即返回元组中的组件(都连接到实体),我不知道如何收集数据。我可以设置ECSView并运行,但是我不知道是否可以遍历模板的类型?

//For example
ECSView<TransformComponent,MeshRenderer> transformView = m_ECSEntityRegistry.View<TransformComponent,MeshRenderer>();

这是我的代码

template<typename ...Types>
        ECSView<Types...> View()
        {

            //works
            ECSView<Types...> view;

            //FOREACH TYPE IN TYPES
            //collect the data and add to the view

            
            //when done
            //the underlying vec of tuples would be
            [0] -> std::tuple<TransformComponent,MeshRenderer>
            [1] -> std::tuple<TransformComponent,MeshRenderer>
            ....
            return view;
        }

我的ECSView供参考

template<class... Types>
    class ECSView
    {
    public:

        //*******

        std::vector< std::tuple<Types*...>> sets;


        //*******
    };

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)