Polyphase Game Engine
Loading...
Searching...
No Matches
SpinBox.h
Go to the documentation of this file.
1#pragma once
2
4
5class Texture;
6class Quad;
7class Text;
8class Button;
9class InputField;
10
12{
13public:
14
16
17 virtual void Create() override;
18 virtual void GatherProperties(std::vector<Property>& props) override;
19 virtual void Tick(float deltaTime) override;
20 virtual void EditorTick(float deltaTime) override;
21 virtual void PreRender() override;
22
23 // Value
24 void SetValue(float value);
25 float GetValue() const;
26 void SetMinValue(float min);
27 float GetMinValue() const;
28 void SetMaxValue(float max);
29 float GetMaxValue() const;
30 void SetStep(float step);
31 float GetStep() const;
32
33 // Display
34 void SetPrefix(const std::string& prefix);
35 const std::string& GetPrefix() const;
36 void SetSuffix(const std::string& suffix);
37 const std::string& GetSuffix() const;
38
39 // Visual
40 void SetBackgroundColor(glm::vec4 color);
41 glm::vec4 GetBackgroundColor();
42 void SetTextColor(glm::vec4 color);
43 glm::vec4 GetTextColor();
44 void SetButtonColor(glm::vec4 color);
45 glm::vec4 GetButtonColor();
46
47 // Edit mode
48 void BeginEditing();
49 void CommitEditing();
50 void CancelEditing();
51 bool IsEditing() const;
52 InputField* GetInputField();
53
54 // Children
55 Quad* GetBackground();
56 Text* GetTextWidget();
57 Button* GetIncrementButton();
58 Button* GetDecrementButton();
59
60protected:
61
62 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
63
64 void UpdateAppearance();
65 void Increment();
66 void Decrement();
67
68 // Value
69 float mValue = 0.0f;
70 float mMinValue = 0.0f;
71 float mMaxValue = 100.0f;
72 float mStep = 1.0f;
73
74 // Display
75 std::string mPrefix;
76 std::string mSuffix;
77 int32_t mDecimalPlaces = 0;
78
79 // Visual
81 glm::vec4 mBackgroundColor = { 0.2f, 0.2f, 0.2f, 1.0f };
82 glm::vec4 mTextColor = { 1.0f, 1.0f, 1.0f, 1.0f };
83 glm::vec4 mButtonColor = { 0.35f, 0.35f, 0.35f, 1.0f };
84 float mButtonWidth = 20.0f;
85
86 // Edit mode
87 InputField* mInputField = nullptr;
88 bool mEditing = false;
89 float mValueBeforeEdit = 0.0f;
90
91 // Children
92 Quad* mBackground = nullptr;
93 Text* mText = nullptr;
94 Button* mIncrementButton = nullptr;
95 Button* mDecrementButton = nullptr;
96};
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition AssetRef.h:18
Definition Button.h:21
Definition Datum.h:164
Definition InputField.h:10
virtual void EditorTick(float deltaTime)
Definition Node.cpp:563
virtual void Create()
Definition Node.cpp:220
virtual void Tick(float deltaTime)
Definition Node.cpp:558
Definition Quad.h:20
Definition SpinBox.h:12
TextureRef mBackgroundTexture
Definition SpinBox.h:80
std::string mPrefix
Definition SpinBox.h:75
DECLARE_NODE(SpinBox, Widget)
std::string mSuffix
Definition SpinBox.h:76
Definition Text.h:24
Definition Texture.h:10
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