From 88c0f476f58a699de67881ca7cf2b60dcc007ddc Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Wed, 21 Oct 2020 22:49:59 +1100 Subject: [PATCH] Draw active regions for two of the directions --- src/Screens.c | 2 +- src/Widgets.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Screens.c b/src/Screens.c index c2ced7d36..a55e5b256 100644 --- a/src/Screens.c +++ b/src/Screens.c @@ -2024,7 +2024,7 @@ static void TouchScreen_Layout(void* screen) { Widget_Layout(&s->btns[i]); } - Widget_SetLocation(&s->thumbstick, ANCHOR_MIN, ANCHOR_MAX, 30, 30); + Widget_SetLocation(&s->thumbstick, ANCHOR_MIN, ANCHOR_MAX, 30, 70); } static const struct ScreenVTABLE TouchScreen_VTABLE = { diff --git a/src/Widgets.c b/src/Widgets.c index 888c91170..f9a7cf63e 100644 --- a/src/Widgets.c +++ b/src/Widgets.c @@ -2516,9 +2516,15 @@ static void ThumbstickWidget_BuildMesh(void* widget, struct VertexTextured** ver Gfx_Make2DQuad(&tex, PACKEDCOL_WHITE, vertices); /* The 4 sides.. not done */ + /* Side 1 */ + tex.Width /= 2; tex.uv.U1 = 0.75f; - tex.uv.U2 = 1.0f; + tex.uv.U2 = 1.00f; Gfx_Make2DQuad(&tex, PACKEDCOL_WHITE, vertices); + /* Side 2 */ + tex.X += tex.Width; + tex.uv.U1 = 1.00f; + tex.uv.U2 = 0.75f; Gfx_Make2DQuad(&tex, PACKEDCOL_WHITE, vertices); Gfx_Make2DQuad(&tex, PACKEDCOL_WHITE, vertices); Gfx_Make2DQuad(&tex, PACKEDCOL_WHITE, vertices); @@ -2552,9 +2558,14 @@ static int ThumbstickWidget_CalcDirs(struct ThumbstickWidget* w) { static int ThumbstickWidget_Render2(void* widget, int offset) { struct ThumbstickWidget* w = (struct ThumbstickWidget*)widget; + int flags = ThumbstickWidget_CalcDirs(w); + if (Gui.TouchTex) { Gfx_BindTexture(Gui.TouchTex); Gfx_DrawVb_IndexedTris_Range(4, offset); + + if (flags & DIR_XMIN) Gfx_DrawVb_IndexedTris_Range(4, offset + 4); + if (flags & DIR_XMAX) Gfx_DrawVb_IndexedTris_Range(4, offset + 8); } return offset + 20; }