81 lines
2.5 KiB
C
81 lines
2.5 KiB
C
/**
|
|
* 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);
|
|
} |