Esempio n. 1
0
int Engine::Run() {

    if (!valid) return -1;



    if (quit == true) {
        Console::Error()<<("A component of Dynacoe has requested early termination of the instance")<< Console::End;;
        return -2;
    }

    Console::OverlayMessageMode(Console::MessageMode::Disabled);
    Console::Info() << "Dynacoe " << Version() << "\n\n";
    Console::Info() << "Johnathan Corkery, 2018\nhttps://jcorks.github.io/Dynacoe/\n_________________________\n\nRegistered modules:\n\n";
    for(int i = 0; i < modules.size(); ++i) {
        Backend * b;
        Console::Info() << "-  " << modules[i]->GetName().c_str() << ": ";
        if ((b = modules[i]->GetBackend())) {
            Console::Info() << b->Name()    << " [" <<
                               b->Version() << "]";

        } else {
            Console::Info() << "[Default]";
        }
        Console::Info() << "\n";
    }
    Console::Info() << "\n";
    Console::OverlayMessageMode(Console::MessageMode::Standard);



    while (!(quit)) {

        if (frameTime.GetTimeSince() >= 1000) {
            frameTime.Reset();

            diagnostics.drawTimeMS = drawTime.GetTimeSince() / (float)frameCount;
            diagnostics.stepTimeMS = runTime.GetTimeSince() / (float)frameCount;
            diagnostics.systemTimeMS = sysTime.GetTimeSince() / (float)frameCount;
            diagnostics.engineRealTimeMS = engineTime.GetTimeSince() / (float) frameCount;

            //if (lastDrawTime >4) cout << lastDrawTime << endl;

            diagnostics.currentFPS = frameCount;
            frameCount = 0;


            sysTime.Set();
            drawTime.Set();
            runTime.Set();
            debugTime.Set();
            engineTime.Set();

        }

        update();
        render();



        engineTime.Pause();
        if (GetMaxFPS() >= 0) {
            Engine::Wait(GetMaxFPS());
        } else {
            return -3;
        }
        engineTime.Resume();


        drawTime.Pause();
        runTime.Pause();
        debugTime.Pause();

        frameCount++;
    }


    return 0;

}