// 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 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++; } } }; }