Polyphase Game Engine
Loading...
Searching...
No Matches
Button.h
Go to the documentation of this file.
1#pragma once
2
4#include "ScriptFunc.h"
5
6class Texture;
7class Quad;
8class Text;
9
10enum class ButtonState : uint8_t
11{
12 Normal,
13 Hovered,
14 Pressed,
15 Locked,
16
17 Count
18};
19
21{
22public:
23
25
26 virtual void Create() override;
27 virtual void GatherProperties(std::vector<Property>& props) override;
28 virtual void Tick(float deltaTime) override;
29 virtual void PreRender() override;
30 void UpdateAppearance();
31
32 bool IsSelected() const;
33 virtual void Activate();
34
35 ButtonState GetState();
36 virtual void SetState(ButtonState newState);
37
38 void SetNormalTexture(Texture* texture);
39 void SetHoveredTexture(Texture* texture);
40 void SetPressedTexture(Texture* texture);
41 void SetLockedTexture(Texture* texture);
42
43 Texture* GetNormalTexture();
44 Texture* GetHoveredTexture();
45 Texture* GetPressedTexture();
46 Texture* GetLockedTexture();
47
48 void SetNormalColor(glm::vec4 color);
49 void SetHoveredColor(glm::vec4 color);
50 void SetPressedColor(glm::vec4 color);
51 void SetLockedColor(glm::vec4 color);
52
53 glm::vec4 GetNormalColor();
54 glm::vec4 GetHoveredColor();
55 glm::vec4 GetPressedColor();
56 glm::vec4 GetLockedColor();
57
58 void SetUseQuadStateColor(bool inUse);
59 void SetUseTextStateColor(bool inUse);
60 static void SetHandleMouse(bool inHandle);
61 static void SetHandleGamepad(bool inHandle);
62 static void SetHandleKeyboard(bool inHandle);
63
64 void EnableRightClickPress(bool enable);
65 bool IsRightClickPressEnabled();
66
67 virtual void SetTextString(const std::string& newTextString);
68 const std::string& GetTextString() const;
69
70 void SetNavUp(Node* up);
71 void SetNavDown(Node* down);
72 void SetNavLeft(Node* left);
73 void SetNavRight(Node* right);
74
75 Node* GetNavUp();
76 Node* GetNavDown();
77 Node* GetNavLeft();
78 Node* GetNavRight();
79
80 Text* GetText();
81 Quad* GetQuad();
82
83 void SetUvScale(glm::vec2 scale);
84 glm::vec2 GetUvScale() const;
85 void SetUvOffset(glm::vec2 offset);
86 glm::vec2 GetUvOffset() const;
87
88#if EDITOR
89 virtual bool DrawCustomProperty(Property& prop) override;
90#endif
91
92 static Button* GetSelectedButton();
93 static void SetSelectedButton(Button* button);
94
95 static void StaticUpdate();
96
97protected:
98
99 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
100
105
106 glm::vec4 mNormalColor = { 0.5f, 0.5f, 0.5f, 1.0f };
107 glm::vec4 mHoveredColor = { 0.6f, 0.6f, 0.6f, 1.0f };
108 glm::vec4 mPressedColor = { 0.4, 0.4f, 0.4f, 1.0f };
109 glm::vec4 mLockedColor = { 0.2f, 0.2f, 0.2f, 1.0f };
110
112
113 glm::vec2 mUvScale = glm::vec2(1.0f, 1.0f);
114 glm::vec2 mUvOffset = glm::vec2(0.0f, 0.0f);
115
116 bool mUseTextStateColor = false;
117 bool mUseQuadStateColor = true;
118 bool mAutoSizeText = false;
119 bool mRightClickPress = false;
120 glm::vec2 mTextPaddingRatio = { 0.035f, 0.05f };
121
126
127 Quad* mQuad = nullptr;
128 Text* mText = nullptr;
129
132
133 static bool sHandleMouseInput;
136};
ButtonState
Definition Button.h:11
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition AssetRef.h:18
Definition Button.h:21
WeakPtr< Button > mNavUp
Definition Button.h:122
TextureRef mPressedTexture
Definition Button.h:103
DECLARE_NODE(Button, Widget)
static bool sHandleMouseInput
Definition Button.h:133
static WeakPtr< Button > sSelectedButton
Definition Button.h:130
TextureRef mHoveredTexture
Definition Button.h:102
static bool sHandleGamepadInput
Definition Button.h:134
TextureRef mLockedTexture
Definition Button.h:104
static bool sHandleKeyboardInput
Definition Button.h:135
WeakPtr< Button > mNavRight
Definition Button.h:125
TextureRef mNormalTexture
Definition Button.h:101
WeakPtr< Button > mNavLeft
Definition Button.h:124
static bool sSelButtonChangedThisFrame
Definition Button.h:131
WeakPtr< Button > mNavDown
Definition Button.h:123
Definition Datum.h:164
Definition Node.h:67
virtual void Create()
Definition Node.cpp:220
virtual void Tick(float deltaTime)
Definition Node.cpp:558
virtual bool DrawCustomProperty(Property &prop)
Definition Object.h:46
Definition Property.h:14
Definition Quad.h:20
Definition Text.h:24
Definition Texture.h:10
Definition SmartPointer.h:312
Definition Widget.h:53
static bool HandlePropChange(Datum *datum, uint32_t index, const void *newValue)
Definition Widget.cpp:45
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Widget.cpp:115
virtual void PreRender()
Definition Widget.cpp:226