Elaztek Developer Hub
Blamite Game Engine - blam!  00346.12.11.21.0529.blamite
The core library for the Blamite Game Engine.
ui.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 #include <vector>
6 #include <string>
7 
8 #ifndef BLAM
9 #define BLAM
10 #endif
11 
12 class BlamUIWidget_Group;
13 
15 {
16  class BlamUIEditor;
17 }
18 
19 enum class BlamWidgetAnchor
20 {
21  TopCenter,
22  Center,
24 
25  TopLeft,
26  CenterLeft,
27  BottomLeft,
28 
29  TopRight,
32 
33  TopFill,
34  LeftFill,
35  RightFill,
36  BottomFill,
37  Fill
38 };
39 
40 enum class BlamWidgetType
41 {
44  //Basic_Line,
45  //Basic_Text,
46  Group,
48 };
49 
51 {
52 private:
55 
56  void ShowAnchorChangeButton(BlamWidgetAnchor new_anchor, int height_mul, int width_mul, bool text_multiline);
57 
58 protected:
59  BlamVector2 position_absolute = { 0, 0 };
60  BlamVector2 size_absolute = { 100, 100 };
61 
62 public:
63  std::string display_name = "unnamed";
64  std::string description = "";
65 
66  BlamVector2 position = { 0, 0 };
67  BlamVector2 size = { 100, 100 };
68  float rotation = 0.0f;
69  bool hidden = false;
70 
72 
75 
76  virtual void Draw() {};
77  virtual void ShowImGuiPropertyEditor();
78 
80 
81  virtual void RefreshRelativePosition();
82  void RefreshRelativePosition(int viewport_width, int viewport_height, BlamVector2 initial_position);
83 
84  void SetSize(BlamVector2 new_size);
85  void SetPosition(BlamVector2 new_position);
86  void SetRotation(float new_rotation);
87  void SetAnchorPosition(BlamWidgetAnchor new_anchor_position);
88 
89  BlamVector2 GetAbsolutePosition();
90 };
91 
93 {
94 private:
95  Blam::DebugUI::Windows::BlamUIEditor* editor_window = nullptr;
96 
97 public:
98  std::vector<BlamUIWidget*> children = std::vector<BlamUIWidget*>();
99 
102 
103  void Draw();
106 
107  void ShowImGuiEditorWindow();
108 };
109 
111 {
112 public:
114 
115  void Draw();
116 };
117 
121 namespace Blam::UI
122 {
123  BLAM bool Initialize();
124  BLAM void Render();
125  BLAM void Shutdown();
126 
128 
129  BLAM std::string GetWidgetAnchorLabel(BlamWidgetAnchor anchor_position);
130 }
BlamUIWidget::hidden
bool hidden
Definition: ui.h:69
BlamWidgetAnchor::LeftFill
@ LeftFill
BlamUIWidget::BlamUIWidget
BlamUIWidget(BlamWidgetType type)
Definition: BlamUIWidget.cpp:35
BlamWidgetAnchor::BottomRight
@ BottomRight
BlamWidgetAnchor::CenterLeft
@ CenterLeft
BlamUIWidget_Group
Definition: ui.h:92
BlamWidgetAnchor::CenterRight
@ CenterRight
BlamUIWidget::position
BlamVector2 position
Definition: ui.h:66
Blam::UI::GetWidgetAnchorLabel
BLAM std::string GetWidgetAnchorLabel(BlamWidgetAnchor anchor_position)
Definition: ui.cpp:52
BlamUIWidget_BasicRectangle::Draw
void Draw()
Definition: BlamUIWidget_BasicRectangle.cpp:10
Blam::UI::GetUIRoot
BLAM BlamUIWidget_Group * GetUIRoot()
Definition: ui.cpp:47
BlamWidgetAnchor::BottomFill
@ BottomFill
BlamUIWidget::parent
BlamUIWidget_Group * parent
Definition: ui.h:71
BlamUIWidget::rotation
float rotation
Definition: ui.h:68
BlamUIWidget_Group::RefreshRelativePosition
void RefreshRelativePosition()
Definition: BlamUIWidget_Group.cpp:75
BlamWidgetType::Basic_Rectangle
@ Basic_Rectangle
BlamWidgetType::Basic_Ellipse
@ Basic_Ellipse
world.h
BlamUIWidget_Group::ShowImGuiEditorWindow
void ShowImGuiEditorWindow()
Definition: BlamUIWidget_Group.cpp:90
BlamWidgetAnchor::Center
@ Center
BlamPluginFieldType::Unspecified
@ Unspecified
BlamUIWidget::GetType
BlamWidgetType GetType()
Definition: BlamUIWidget.cpp:147
BlamUIWidget::size
BlamVector2 size
Definition: ui.h:67
BlamWidgetAnchor::TopCenter
@ TopCenter
BlamUIWidget::Draw
virtual void Draw()
Definition: ui.h:76
Blam::UI
Namespace containing functions relating to the Blamite UI system.
Definition: ui.h:121
BlamWidgetAnchor::Fill
@ Fill
BlamUIWidget_Group::~BlamUIWidget_Group
~BlamUIWidget_Group()
Definition: BlamUIWidget_Group.cpp:13
BlamUIWidget::SetPosition
void SetPosition(BlamVector2 new_position)
Definition: BlamUIWidget.cpp:288
BlamUIWidget::ShowImGuiPropertyEditor
virtual void ShowImGuiPropertyEditor()
Definition: BlamUIWidget.cpp:57
BlamUIWidget_Group::children
std::vector< BlamUIWidget * > children
Definition: ui.h:98
BlamUIWidget::display_name
std::string display_name
Definition: ui.h:63
Blam::UI::Render
BLAM void Render()
Definition: ui.cpp:24
BlamUIWidget::SetSize
void SetSize(BlamVector2 new_size)
Definition: BlamUIWidget.cpp:281
BlamWidgetAnchor::TopLeft
@ TopLeft
Blam::UI::Shutdown
BLAM void Shutdown()
Definition: ui.cpp:38
BlamWidgetAnchor
BlamWidgetAnchor
Definition: ui.h:19
BlamWidgetAnchor::BottomLeft
@ BottomLeft
BlamUIWidget_BasicRectangle
Definition: ui.h:110
BlamUIWidget_Group::Draw
void Draw()
Definition: BlamUIWidget_Group.cpp:28
Blam::DebugUI::Windows::BlamUIEditor
Class for the Blam UI Editor debug utility.
Definition: blam_ui_editor.hpp:12
BlamUIWidget
Definition: ui.h:50
BLAM
#define BLAM
Definition: ui.h:9
BlamUIWidget::RefreshRelativePosition
virtual void RefreshRelativePosition()
Definition: BlamUIWidget.cpp:152
BlamWidgetType::Group
@ Group
BlamUIWidget::description
std::string description
Definition: ui.h:64
BlamWidgetAnchor::TopFill
@ TopFill
BlamUIWidget_Group::ShowImGuiPropertyEditor
void ShowImGuiPropertyEditor()
Definition: BlamUIWidget_Group.cpp:42
BlamWidgetType
BlamWidgetType
Definition: ui.h:40
Blam::UI::Initialize
BLAM bool Initialize()
Definition: ui.cpp:9
Blam::DebugUI::Windows
Legacy namespace to contain data for the legacy ImGUI console.
Definition: ui.h:14
BlamUIWidget_Group::BlamUIWidget_Group
BlamUIWidget_Group(BlamUIWidget_Group *_parent)
Definition: BlamUIWidget_Group.cpp:8
BlamUIWidget::position_absolute
BlamVector2 position_absolute
Definition: ui.h:59
BlamWidgetAnchor::RightFill
@ RightFill
BlamUIWidget::size_absolute
BlamVector2 size_absolute
Definition: ui.h:60
BlamUIWidget_BasicRectangle::BlamUIWidget_BasicRectangle
BlamUIWidget_BasicRectangle(BlamUIWidget_Group *_parent)
Definition: BlamUIWidget_BasicRectangle.cpp:5
BlamWidgetAnchor::BottomCenter
@ BottomCenter
BlamWidgetAnchor::TopRight
@ TopRight
BlamWidgetType::Unspecified
@ Unspecified
BlamUIWidget::GetAbsolutePosition
BlamVector2 GetAbsolutePosition()
Definition: BlamUIWidget.cpp:307
BlamUIWidget::SetAnchorPosition
void SetAnchorPosition(BlamWidgetAnchor new_anchor_position)
Definition: BlamUIWidget.cpp:301
BlamUIWidget::SetRotation
void SetRotation(float new_rotation)
Definition: BlamUIWidget.cpp:295