From 3b4c5b5153c30120dc7d2f1c4ff7a6e85396a23f Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Thu, 30 Apr 2026 23:34:32 -0500 Subject: [PATCH] Added FPS meter --- assets/entities/cube.js | 14 ++++++-------- src/dusk/console/console.c | 6 +++--- src/dusk/display/text/text.c | 10 +++++----- src/dusk/display/text/text.h | 4 ++-- src/dusk/entity/entitybase.h | 4 ++-- src/dusk/scene/scene.c | 19 +++++++++++++++++++ 6 files changed, 37 insertions(+), 20 deletions(-) diff --git a/assets/entities/cube.js b/assets/entities/cube.js index 06caa60a..cff9748d 100644 --- a/assets/entities/cube.js +++ b/assets/entities/cube.js @@ -1,8 +1,6 @@ function CubeEntity() { Entity.call(this); - this.add(POSITION); - this.position.position = new Vec3(1, 0, 0); this.add(MESH); this.add(MATERIAL); } @@ -11,12 +9,12 @@ CubeEntity.prototype = Object.create(Entity.prototype); CubeEntity.prototype.constructor = CubeEntity; CubeEntity.prototype.update = function() { - var speed = 3.0; - var move = Input.axis2D(INPUT_ACTION_LEFT, INPUT_ACTION_RIGHT, INPUT_ACTION_UP, INPUT_ACTION_DOWN); - this.position.position.x += move.x * speed * TIME.delta; - this.position.position.z += move.y * speed * TIME.delta; - this.position.rotation.x += 3 * TIME.delta; - this.position.rotation.z += 2 * TIME.delta; + // var speed = 3.0; + // var move = Input.axis2D(INPUT_ACTION_LEFT, INPUT_ACTION_RIGHT, INPUT_ACTION_UP, INPUT_ACTION_DOWN); + // this.position.position.x += move.x * speed * TIME.delta; + // this.position.position.z += move.y * speed * TIME.delta; + // this.position.rotation.x += 3 * TIME.delta; + // this.position.rotation.z += 2 * TIME.delta; this.material.setColor(Color.rainbow()); }; diff --git a/src/dusk/console/console.c b/src/dusk/console/console.c index 59aadcc7..0cd83d72 100644 --- a/src/dusk/console/console.c +++ b/src/dusk/console/console.c @@ -419,11 +419,11 @@ errorret_t consoleDraw() { for(uint32_t i = 0; i < CONSOLE_HISTORY_MAX; i++) { errorChain(textDraw( - 0, DEFAULT_FONT_TILESET.tileHeight * i, + 0, FONT_TILESET_DEFAULT.tileHeight * i, CONSOLE.line[i], COLOR_WHITE, - &DEFAULT_FONT_TILESET, - &DEFAULT_FONT_TEXTURE + &FONT_TILESET_DEFAULT, + &FONT_TEXTURE_DEFAULT )); } errorChain(spriteBatchFlush()); diff --git a/src/dusk/display/text/text.c b/src/dusk/display/text/text.c index 98e23776..f2eef696 100644 --- a/src/dusk/display/text/text.c +++ b/src/dusk/display/text/text.c @@ -13,19 +13,19 @@ #include "asset/loader/display/assettilesetloader.h" #include "display/shader/shaderunlit.h" -texture_t DEFAULT_FONT_TEXTURE; -tileset_t DEFAULT_FONT_TILESET; +texture_t FONT_TEXTURE_DEFAULT; +tileset_t FONT_TILESET_DEFAULT; errorret_t textInit(void) { errorChain(assetTextureLoad( - "ui/minogram.png", &DEFAULT_FONT_TEXTURE, TEXTURE_FORMAT_RGBA + "ui/minogram.png", &FONT_TEXTURE_DEFAULT, TEXTURE_FORMAT_RGBA )); - errorChain(assetTilesetLoad("ui/minogram.dtf", &DEFAULT_FONT_TILESET)); + errorChain(assetTilesetLoad("ui/minogram.dtf", &FONT_TILESET_DEFAULT)); errorOk(); } errorret_t textDispose(void) { - errorChain(textureDispose(&DEFAULT_FONT_TEXTURE)); + errorChain(textureDispose(&FONT_TEXTURE_DEFAULT)); errorOk(); } diff --git a/src/dusk/display/text/text.h b/src/dusk/display/text/text.h index 5944e205..a70b8df0 100644 --- a/src/dusk/display/text/text.h +++ b/src/dusk/display/text/text.h @@ -12,8 +12,8 @@ #define TEXT_CHAR_START '!' -extern texture_t DEFAULT_FONT_TEXTURE; -extern tileset_t DEFAULT_FONT_TILESET; +extern texture_t FONT_TEXTURE_DEFAULT; +extern tileset_t FONT_TILESET_DEFAULT; /** * Initializes the text system. diff --git a/src/dusk/entity/entitybase.h b/src/dusk/entity/entitybase.h index d14cf6c6..66a67ed5 100644 --- a/src/dusk/entity/entitybase.h +++ b/src/dusk/entity/entitybase.h @@ -8,8 +8,8 @@ #pragma once #include "dusk.h" -#define ENTITY_COUNT_MAX 6 -#define ENTITY_COMPONENT_COUNT_MAX 6 +#define ENTITY_COUNT_MAX 20 +#define ENTITY_COMPONENT_COUNT_MAX 8 typedef uint8_t entityid_t; typedef uint8_t componentid_t; diff --git a/src/dusk/scene/scene.c b/src/dusk/scene/scene.c index f83ebfe0..a33734e8 100644 --- a/src/dusk/scene/scene.c +++ b/src/dusk/scene/scene.c @@ -46,6 +46,8 @@ errorret_t sceneUpdate(void) { errorOk(); } +dusktimeepoch_t LAST; + errorret_t sceneRender(void) { entityid_t camEnts[ENTITY_COUNT_MAX]; componentid_t camComps[ENTITY_COUNT_MAX]; @@ -141,6 +143,23 @@ errorret_t sceneRender(void) { errorChain(shaderSetMatrix(&SHADER_UNLIT, SHADER_UNLIT_MODEL, model)); errorChain(consoleDraw()); + // FPS + char_t fpsText[32]; + + dusktimeepoch_t now = timeGetEpoch(); + double_t delta = now.time - LAST.time; + LAST = now; + double_t fps = delta > 0 ? 1.0 / delta : 0.0; + snprintf(fpsText, sizeof(fpsText), "FPS: %.2f", fps); + + errorChain(spriteBatchFlush()); + errorChain(textDraw( + 0, 0, + fpsText, COLOR_WHITE, + &FONT_TILESET_DEFAULT, &FONT_TEXTURE_DEFAULT + )); + errorChain(spriteBatchFlush()); + errorOk(); }