Implement Set, Refactor Map into Tree

This commit is contained in:
Dynamitos
2023-12-22 19:46:07 +01:00
parent ac1d11402e
commit c8f99bb64d
20 changed files with 674 additions and 603 deletions
+3 -18
View File
@@ -23,29 +23,14 @@ public:
{
return Dependencies<>();
}
template<typename... Dep>
auto mergeDependencies(Dep... deps)
{
return (deps | ...);
}
void setupView(Dependencies<>, ThreadPool& pool)
{
List<std::function<void()>> work;
registry.view<Components...>().each([&](Components&... comp){
work.add([&](){
update(comp...);
});
});
pool.runAndWait(std::move(work));
}
template<typename... Deps>
void setupView(Dependencies<Deps...>, ThreadPool& pool)
{
List<std::function<void()>> work;
registry.view<Components..., Deps...>().each([&](Components&... comp, Deps&... deps){
work.add([&]() {
(accessComponent(deps) + ...);
update((comp,...));
(accessComponent(deps), ...);
update(comp...);
});
});
pool.runAndWait(std::move(work));
@@ -53,7 +38,7 @@ public:
virtual void run(ThreadPool& pool, double delta) override
{
SystemBase::run(pool, delta);
setupView(mergeDependencies((getDependencies<Components>(),...)), pool);
setupView((getDependencies<Components>() | ...), pool);
}
virtual void update() {}
virtual void update(Components&... components) = 0;
+1 -1
View File
@@ -12,7 +12,7 @@ class SystemBase
public:
SystemBase(PScene scene) : registry(scene->registry), scene(scene) {}
virtual ~SystemBase() {}
virtual void run(ThreadPool& pool, double delta)
virtual void run(ThreadPool&, double delta)
{
deltaTime = delta;
update();