Parallel event
This commit is contained in:
39
src/dawn/games/vn/events/VNParallelEvent.hpp
Normal file
39
src/dawn/games/vn/events/VNParallelEvent.hpp
Normal 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++;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user