summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-07-23 15:22:37 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-07-23 15:22:37 -0400
commit7d3b7f981998fdeb5375dff70f222821b0cdfc3d (patch)
tree7f0e22f0465ee927c8e0ac9bc21e138c7053e759 /src
parent956f1dfc5c6617827bad4e3ad1938183ff7597a3 (diff)
pke: add PKE_UI_BOX_STATE_FLAG to pke_ui_box
Diffstat (limited to 'src')
-rw-r--r--src/static-ui.hpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/static-ui.hpp b/src/static-ui.hpp
index 947f39f..adc410a 100644
--- a/src/static-ui.hpp
+++ b/src/static-ui.hpp
@@ -20,6 +20,7 @@ struct MSDFGlyphSettings {
TypeSafeInt_H(PKE_UI_BOX_TYPE, uint8_t, 0xFF);
TypeSafeInt_H(PKE_UI_BOX_FLAG, uint64_t, 0xFFFFFFFFFFFFFFFF);
+TypeSafeInt_H(PKE_UI_BOX_STATE_FLAG, uint64_t, 0xFFFFFFFFFFFFFFFF);
// layouts
const PKE_UI_BOX_TYPE PKE_UI_BOX_TYPE_STANDARD
@@ -69,6 +70,19 @@ const PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE
= PKE_UI_BOX_FLAG((1 << 7));
// [10-??]
+// PKE_UI_BOX_STATE_FLAG represent the current state THIS TICK.
+// So, e.g.
+// Did the mouse enter this tick.
+// Is the mouse hovered.
+const PKE_UI_BOX_STATE_FLAG PKE_UI_BOX_STATE_FLAG_NONE
+ = PKE_UI_BOX_STATE_FLAG((PKE_UI_BOX_STATE_FLAG_T(0) << 0));
+const PKE_UI_BOX_STATE_FLAG PKE_UI_BOX_STATE_FLAG_MOUSE_ENTERED
+ = PKE_UI_BOX_STATE_FLAG((PKE_UI_BOX_STATE_FLAG_T(1) << 0));
+const PKE_UI_BOX_STATE_FLAG PKE_UI_BOX_STATE_FLAG_MOUSE_EXITED
+ = PKE_UI_BOX_STATE_FLAG((PKE_UI_BOX_STATE_FLAG_T(1) << 1));
+const PKE_UI_BOX_STATE_FLAG PKE_UI_BOX_STATE_FLAG_MOUSE_HOVER
+ = PKE_UI_BOX_STATE_FLAG((PKE_UI_BOX_STATE_FLAG_T(1) << 2));
+
typedef uint16_t pke_ui_box_count_T;
struct pke_ui_box;
@@ -85,6 +99,7 @@ struct pke_ui_box : public Entity_Base {
glm::vec4 color_border = glm::vec4(1.0, 0.0, 0.0, 1.0);
glm::vec4 color_background = glm::vec4(0.2, 0.3, 0.2, 0.5);
union pke_ui_box_type_data *type_data;
+ PKE_UI_BOX_STATE_FLAG state_flags;
struct pke_ui_box_internals {
// the exact px to translate (shader)
glm::vec2 px_corner;