Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Loop function
- static void engine_draw_frame(struct engine* engine) {
- if (lastDTE == 0)
- lastDTE = clock();
- if (engine->display == NULL) {
- // No display.
- return;
- }
- glViewport(0, 0, engine->width, engine->height);
- glClearColor(0.0, 0.0, 0.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT);
- unsigned long startDraw = GetTimeMs64();
- clock_t curTime = clock();
- double elapsedTime = ((float) (curTime - lastDTE) / CLOCKS_PER_SEC);
- state->calculateNextFrame(elapsedTime);
- lastDTE = curTime;
- state->draw();
- checkGlError("draw");
- unsigned long endDraw = GetTimeMs64() - startDraw;
- unsigned long start = GetTimeMs64();
- eglSwapBuffers(engine->display, engine->surface);
- unsigned long end = GetTimeMs64() - start;
- //Drawing
- void Gamestate::draw() {
- clock_t start = clock();
- //background->draw();
- mapController->draw();
- lights->draw();
- enemyManager->draw();
- powerupManager->draw();
- //Controls
- moveControl->draw();
- rotateControl->draw();
- curElement->draw();
- player->draw();
- //LOGI("Draw time : %f", ((float) (clock() - start) / CLOCKS_PER_SEC * 1000));
- }
- //Logic
- void Gamestate::calculateNextFrame(float dt) {
- int region = lights->getActiveColor(player->getX(), player->getY());
- if (region == 0) {
- curElement->setTexture(Engine::getTextureByResource("fire.png"));
- } else if (region == 1) {
- curElement->setTexture(Engine::getTextureByResource("water.png"));
- } else if (region == 2) {
- curElement->setTexture(Engine::getTextureByResource("earth.png"));
- } else if (region == 3) {
- curElement->setTexture(Engine::getTextureByResource("air.png"));
- }
- powerupManager->tick(dt);
- enemyManager->update(dt);
- player->update(dt);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement