[C++] [ECS archetype] Entityを生成してArchetypeを作成してChunkを生成という処理をどうやって実装したらいいのか知りたい

質問内容

ECS、アーキタイプで実体であるEntityを生成したいのですがどうやればいいのかわかりません。色々考えたのですがシンプルに行く実装方法がわからず、下記のようにアーキタイプに必要なクラスの型を用意してそろからどうやってコードを構築するのがいいのか知りたいです。

知りたいこと

どのようにEntityを生成してArchetypeを作成してChunkを生成っと行った流れを取ればいいのか知りたい
コード構成が知りたい

考えたこと

取りえず。下部のようにアーキタイプに必要な型を定義してそれをどこかのクラスに代入してその型情報からEntityとコンポーネントの実体を作ればいいと思うのですが、それはこのStart()初期化関数で行うのが正解なのかイマイチ何をしたらいいのかわかりません。
また、ComponentManager,EntityManagaer,ArchetypeMangaer,ChunkManager等の管理クラスを作って行うのでしょうか?

ベクターで用意したコンポーネントの配列をArchetypeクラスのコンストラクタに入れるという考えを取りましたがそれだとArchetypeが2つ3つといった状況になったときに、アーキタイプはコンポーネントの実体を持っているのでその際どうすればいいかわからず実装できません。

状況

それぞれのWorldはWorldクラスを継承して利用する形をとっています。

ソースコード

cpp

1#include "SampleWorld.hpp"2#include <vector>3#include <typeindex>4#include "Engine.hpp"5 6SampleWorld::SampleWorld() : World()7{8 9}10 11void SampleWorld::Start()12{13 std::vector<std::type_index> in 14```dex; 15 16 index.push_back(typeid(Engine::Transform));17 index.push_back(typeid(Engine::SpriteRenderer));18 19}

参考画像の説明

Chunkの中にArctypeがありその中に各コンポーネントの実体がそれぞれの組み込み配列になって存在しています
Chunkの中にはEntityが存在していてそれぞれのコンポーネントのポインタを持っています
複数あるChunkをまとめるのはWorldです。

参考画像

イメージ説明

コメントを投稿

0 コメント