Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
DockedWindow.cpp
Go to the documentation of this file.
2
6
11#include <IconsForkAwesome.h>
12#include <IEntity.h>
13#include <imgui.h>
14
15namespace Divide {
16
18 : _parent(parent),
19 _descriptor(MOV(descriptor))
20 {
21 }
22
24 {
26 }
27
29 {
31
32 ImGui::SetNextWindowPos(_descriptor.position, ImGuiCond_FirstUseEver);
33 ImGui::SetNextWindowSize(_descriptor.size, ImGuiCond_FirstUseEver);
34 ImGui::SetNextWindowSizeConstraints(_descriptor.minSize, _descriptor.maxSize);
35 ImGui::PushStyleVar(ImGuiStyleVar_WindowMinSize, _descriptor.minSize);
36 ImGui::GetStyle().WindowMenuButtonPosition = _descriptor.showCornerButton ? ImGuiDir_Left : ImGuiDir_None;
37
38
39 if (ImGui::Begin(_descriptor.name.c_str(), nullptr, windowFlags() | _descriptor.flags)) [[likely]]
40 {
41 _visible = true;
42 _focused = ImGui::IsWindowFocused();
43 _hovered = ImGui::IsWindowHovered(ImGuiHoveredFlags_RootAndChildWindows);
44 if (enabled()) [[likely]]
45 {
47 }
48 }
49 else
50 {
51 _visible = false;
52 _focused = false;
53 _hovered = false;
54 }
55 ImGui::PopStyleVar();
56 ImGui::End();
57 }
58
59
60 const char* DockedWindow::getIconForNode(const SceneGraphNode* sgn) noexcept
61 {
62 switch (sgn->getNode().type())
63 {
64 case SceneNodeType::TYPE_WATER: return ICON_FK_SHIP;
65 case SceneNodeType::TYPE_PARTICLE_EMITTER: return ICON_FK_FIRE;
66 case SceneNodeType::TYPE_SKY: return ICON_FK_CLOUD;
67 case SceneNodeType::TYPE_INFINITEPLANE: return ICON_FK_ARROWS;
68 case SceneNodeType::TYPE_VEGETATION: return ICON_FK_TREE;
69 case SceneNodeType::TYPE_SPHERE_3D: return ICON_FK_CIRCLE;
70 case SceneNodeType::TYPE_BOX_3D: return ICON_FK_CUBE;
71 case SceneNodeType::TYPE_QUAD_3D: return ICON_FK_SQUARE;
72 case SceneNodeType::TYPE_MESH: return ICON_FK_BUILDING;
73 case SceneNodeType::TYPE_SUBMESH: return ICON_FK_PUZZLE_PIECE;
74 case SceneNodeType::TYPE_TERRAIN: return ICON_FK_TREE;
76 {
77 if (sgn->HasComponents(ComponentType::DIRECTIONAL_LIGHT))
78 {
79 return ICON_FK_SUN;
80 }
81 else if (sgn->HasComponents(ComponentType::POINT_LIGHT))
82 {
83 return ICON_FK_LIGHTBULB_O;
84 }
85 else if (sgn->HasComponents(ComponentType::SPOT_LIGHT))
86 {
87 return ICON_FK_DOT_CIRCLE_O;
88 }
89 else if (sgn->HasComponents(ComponentType::SCRIPT))
90 {
91 return ICON_FK_FILE_TEXT;
92 }
93 else if (sgn->HasComponents(ComponentType::ENVIRONMENT_PROBE))
94 {
95 return ICON_FK_GLOBE;
96 }
97 else if (sgn->HasComponents(ComponentType::UNIT))
98 {
99 const UnitComponent* comp = sgn->GetComponent<UnitComponent>();
100 if (comp->getUnit() != nullptr)
101 {
102 switch(comp->getUnit()->type())
103 {
105 {
106 switch (comp->getUnit<Character>()->characterType())
107 {
108 case Character::CharacterType::CHARACTER_TYPE_NPC: return ICON_FK_FEMALE;
109 case Character::CharacterType::CHARACTER_TYPE_PLAYER: return ICON_FK_GAMEPAD;
110 default: break;
111 }
112 } break;
114 {
115 return ICON_FK_CAR;
116 }
117 default: break;
118 }
119 }
120 }
121 return ICON_FK_ARROWS;
122 }
123
124 default: break;
125 }
126
127 return ICON_FK_QUESTION;
128 }
129} //namespace Divide
#define MOV(...)
#define PROFILE_SCOPE_AUTO(CATEGORY)
Definition: Profiler.h:87
@ CHARACTER_TYPE_PLAYER
user controlled character
@ CHARACTER_TYPE_NPC
non-user(player) character
virtual void backgroundUpdateInternal()
Definition: DockedWindow.h:81
virtual void drawInternal()=0
DockedWindow(Editor &parent, Descriptor descriptor) noexcept
Descriptor _descriptor
Definition: DockedWindow.h:87
const char * getIconForNode(const SceneGraphNode *sgn) noexcept
std::shared_ptr< T > getUnit() const noexcept
Definition: UnitComponent.h:49
constexpr Optick::Category::Type GUI
Definition: Profiler.h:64
Handle console commands that start with a forward slash.
Definition: AIProcessor.cpp:7
@ UNIT_TYPE_VEHICLE
e.g. Cars, planes, ships etc
@ UNIT_TYPE_CHARACTER
"Living beings"
Project & parent
Definition: DefaultScene.h:41