From b8552330bde733cf4744d7dd9fee9e5729601ab9 Mon Sep 17 00:00:00 2001 From: h4570 Date: Sun, 6 Dec 2020 00:00:35 +0100 Subject: [PATCH 1/2] fixed rendering for non square sprites --- src/engine/modules/renderer.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/engine/modules/renderer.cpp b/src/engine/modules/renderer.cpp index c5b2a8e..ab0d4e9 100644 --- a/src/engine/modules/renderer.cpp +++ b/src/engine/modules/renderer.cpp @@ -102,10 +102,16 @@ void Renderer::changeTexture(Texture *t_tex) void Renderer::draw(Sprite &t_sprite) { texrect_t rect; - rect.t0.s = t_sprite.isFlippedHorizontally() ? 128.0F : 0.0F; - rect.t0.t = t_sprite.isFlippedVertically() ? 128.0F : 0.0F; - rect.t1.s = t_sprite.isFlippedHorizontally() ? 0.0F : 128.0F; - rect.t1.t = t_sprite.isFlippedVertically() ? 0.0F : 128.0F; + float texS = 128.0F; + float texT = 128.0F; + if (t_sprite.size.x > t_sprite.size.y) + texT = 128.0F / (t_sprite.size.x / t_sprite.size.y); + else if (t_sprite.size.y > t_sprite.size.x) + texS = 128.0F / (t_sprite.size.y / t_sprite.size.x); + rect.t0.s = t_sprite.isFlippedHorizontally() ? texS : 0.0F; + rect.t0.t = t_sprite.isFlippedVertically() ? texT : 0.0F; + rect.t1.s = t_sprite.isFlippedHorizontally() ? 0.0F : texS; + rect.t1.t = t_sprite.isFlippedVertically() ? 0.0F : texT; rect.color.r = t_sprite.color.r; rect.color.g = t_sprite.color.g; rect.color.b = t_sprite.color.b; From 67a10cb72400cda0add0e3f70ba6476304b28afa Mon Sep 17 00:00:00 2001 From: h4570 Date: Sun, 6 Dec 2020 00:13:37 +0100 Subject: [PATCH 2/2] Added tex max check --- src/engine/modules/renderer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/engine/modules/renderer.cpp b/src/engine/modules/renderer.cpp index ab0d4e9..7bd7a60 100644 --- a/src/engine/modules/renderer.cpp +++ b/src/engine/modules/renderer.cpp @@ -102,12 +102,13 @@ void Renderer::changeTexture(Texture *t_tex) void Renderer::draw(Sprite &t_sprite) { texrect_t rect; - float texS = 128.0F; - float texT = 128.0F; + float texMax = t_sprite.size.x > t_sprite.size.y ? t_sprite.size.x : t_sprite.size.y; + float texS = texMax; + float texT = texMax; if (t_sprite.size.x > t_sprite.size.y) - texT = 128.0F / (t_sprite.size.x / t_sprite.size.y); + texT = texMax / (t_sprite.size.x / t_sprite.size.y); else if (t_sprite.size.y > t_sprite.size.x) - texS = 128.0F / (t_sprite.size.y / t_sprite.size.x); + texS = texMax / (t_sprite.size.y / t_sprite.size.x); rect.t0.s = t_sprite.isFlippedHorizontally() ? texS : 0.0F; rect.t0.t = t_sprite.isFlippedVertically() ? texT : 0.0F; rect.t1.s = t_sprite.isFlippedHorizontally() ? 0.0F : texS;