Program Listing for File systemManager.cpp

Return to documentation for file (PrismEngine/src/systemManager.cpp)

#include "systemManager.h"

void prism::scene::SystemManager::enableSystem(SystemId systemId)
{
    if (systemId < systems.size() && !systems[systemId]->isEnabled()) {
        systems[systemId]->enabled = true;
        activeSystems.push_back(systems[systemId].get());
    }
}

void prism::scene::SystemManager::disableSystem(SystemId systemId)
{
    if (systemId < systems.size() && systems[systemId]->isEnabled()) {
        systems[systemId]->enabled = false;
        auto it = std::find(activeSystems.begin(), activeSystems.end(), systems[systemId].get());
        if (it != activeSystems.end()) activeSystems.erase(it);
    }
}

void prism::scene::SystemManager::update()
{
    for (auto& system : activeSystems) {
        if (!system->isStarted()) {
            system->start();
            system->started = true;
        }
        system->update();
    }
}