Parallel event

This commit is contained in:
2023-04-23 21:43:17 -07:00
parent 7c45d4469a
commit d105f9e4ab
8 changed files with 98 additions and 33 deletions

View File

@@ -0,0 +1,39 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "VNEvent.hpp"
namespace Dawn {
class VNParallelEvent :
public VNEvent,
public IVNEventParent
{
public:
std::vector<VNEvent*> events;
protected:
int32_t eventCount;
int32_t eventCompleteCount;
void onStart() override {
eventCount = 0;
eventCompleteCount = 0;
auto itEvents = this->events.begin();
while(itEvents != this->events.end()) {
auto event = *itEvents;
event->start(this, this);
eventCount++;
useEvent([&]{
eventCompleteCount++;
if(eventCompleteCount >= eventCount) this->next();
}, event->eventFinished);
itEvents++;
}
}
};
}