Files
Dawn/src/dawn/games/vn/events/VNParallelEvent.hpp

40 lines
871 B
C++

// 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;
eventCount++;
useEvent([&]{
eventCompleteCount++;
if(eventCompleteCount >= eventCount) this->next();
}, event->eventFinished);
event->start(this, this);
itEvents++;
}
}
};
}