Implement Set, Refactor Map into Tree
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user