Firstly uses Worlds, which contain their self ComponentManager. The ComponentManager has a group of `std::unique_ptr<ComponentSystem<T>>` for each Component we have. When we load a Component will instance its `ComponentSystem<T>`. `ComponentSystem<T>` is based of `BasicComponentSystem<T>` which has its own `std::vector<T>` of Components grouping all the same Components of its own type avoiding branching. The `BasicComponentSystem<T>` is compiled for each Component so when we add a new component to our entity, we don't even need to #include the component, will be only needed to include it when we want to work with that specific component such as call its functions.
0 commit comments