/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "position.h" positiondebug_t positionDebugCreate( primitive_t *debugPrimitive, texture_t *fontTexture, tileset_t *fontTileset ) { positiondebug_t debug = { .primitive = debugPrimitive, .textTexture = fontTexture, .textTileset = fontTileset, .x = 0, .y = 0, .z = 0, .pitch = 0, .yaw = 0, .roll = 0, .scaleX = 1, .scaleY = 1, .scaleZ = 1 }; debug.textBatch = spriteBatchCreate(POSITION_DEBUG_FONT_CHARS_MAX); return debug; } void positionDebugRender(shader_t *shader, positiondebug_t *debug) { float speed = 0.5; // Update values. if(inputIsDown(INPUT_DEBUG_FINE)) speed *= 0.1; if(inputIsDown(INPUT_DEBUG_UP)) debug->z -= TIME_STATE.delta * speed; if(inputIsDown(INPUT_DEBUG_DOWN)) debug->z += TIME_STATE.delta * speed; if(inputIsDown(INPUT_DEBUG_LEFT)) debug->x -= TIME_STATE.delta * speed; if(inputIsDown(INPUT_DEBUG_RIGHT)) debug->x += TIME_STATE.delta * speed; if(inputIsDown(INPUT_DEBUG_LOWER)) debug->y -= TIME_STATE.delta * speed; if(inputIsDown(INPUT_DEBUG_RAISE)) debug->y += TIME_STATE.delta * speed; if(inputIsDown(INPUT_DEBUG_MINUS)) { debug->scaleX -= TIME_STATE.delta * speed; debug->scaleY -= TIME_STATE.delta * speed; debug->scaleZ -= TIME_STATE.delta * speed; } if(inputIsDown(INPUT_DEBUG_PLUS)) { debug->scaleX += TIME_STATE.delta * speed; debug->scaleY += TIME_STATE.delta * speed; debug->scaleZ += TIME_STATE.delta * speed; } // Render object shaderUsePositionAndScale(shader, debug->x, debug->y, debug->z, mathDeg2Rad(debug->pitch),mathDeg2Rad(debug->yaw),mathDeg2Rad(debug->roll), debug->scaleX, debug->scaleY, debug->scaleZ ); primitiveDraw(debug->primitive, 0, -1); // Render debug text char text[POSITION_DEBUG_FONT_CHARS_MAX]; sprintf(text, "%.2f, %.2f, %.2f\n%.2f, %.2f, %.2f \n%.2f, %.2f, %.2f", debug->x, debug->y, debug->z, debug->pitch, debug->yaw, debug->roll, debug->scaleX, debug->scaleY, debug->scaleZ ); shaderUseTexture(shader, debug->textTexture); shaderUsePosition(shader, 0, 1, 0, mathDeg2Rad(-90), mathDeg2Rad(0), 0 ); spriteBatchFlush(debug->textBatch); fontSpriteBatchBuffer(debug->textBatch, debug->textTileset, text, FONT_CENTER_X, FONT_CENTER_Y, 0, -1, 0.1 ); spriteBatchDraw(debug->textBatch, 0, -1); } void positionDebugDispose(positiondebug_t *debug) { spriteBatchDispose(debug->textBatch); }