Olympe Engine
2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
Source
Editor
Panels
VariablePropertyPanel.cpp
Go to the documentation of this file.
1
/**
2
* @file VariablePropertyPanel.cpp
3
* @brief Implementation of VariablePropertyPanel.
4
* @author Olympe Engine
5
* @date 2026-03-20
6
*
7
* Phase 24.1: Data Pure Nodes
8
*
9
* C++14 compliant.
10
*/
11
12
#include "
VariablePropertyPanel.h
"
13
#include "../../third_party/imgui/imgui.h"
14
#include "../../system/system_utils.h"
15
16
namespace
Olympe
{
17
18
VariablePropertyPanel::VariablePropertyPanel
()
19
: m_template(
nullptr
)
20
, m_dirty(
false
)
21
{
22
}
23
24
void
VariablePropertyPanel::SetNodeName
(
const
std::string& name)
25
{
26
m_nodeName
= name;
27
}
28
29
void
VariablePropertyPanel::SetTemplate
(
const
TaskGraphTemplate
*
tmpl
)
30
{
31
m_template
=
tmpl
;
32
RebuildVariableList
();
33
}
34
35
void
VariablePropertyPanel::SetBBKey
(
const
std::string&
key
)
36
{
37
if
(
m_selectedBBKey
!=
key
)
38
{
39
m_selectedBBKey
=
key
;
40
m_dirty
=
true
;
41
}
42
}
43
44
const
std::string&
VariablePropertyPanel::GetBBKey
()
const
45
{
46
return
m_selectedBBKey
;
47
}
48
49
void
VariablePropertyPanel::RebuildVariableList
()
50
{
51
m_availableVariables
.clear();
52
53
if
(
m_template
==
nullptr
)
54
return
;
55
56
for
(
size_t
i
= 0;
i
<
m_template
->
Blackboard
.size(); ++
i
)
57
{
58
const
BlackboardEntry
&
entry
=
m_template
->
Blackboard
[
i
];
59
m_availableVariables
.push_back(
entry
.Key);
60
}
61
}
62
63
void
VariablePropertyPanel::Render
()
64
{
65
if
(
m_template
==
nullptr
)
66
{
67
ImGui::TextColored(
ImVec4
(1, 0, 0, 1),
"No template loaded"
);
68
return
;
69
}
70
71
ImGui::Spacing();
72
ImGui::Separator();
73
ImGui::Text(
"Variable: %s"
,
m_nodeName
.c_str());
74
ImGui::Separator();
75
ImGui::Spacing();
76
77
ImGui::TextUnformatted(
"Select Variable:"
);
78
79
// Dropdown for variable selection
80
if
(ImGui::BeginCombo(
"##variable_selector"
,
m_selectedBBKey
.c_str()))
81
{
82
for
(
size_t
i
= 0;
i
<
m_availableVariables
.size(); ++
i
)
83
{
84
const
std::string&
varName
=
m_availableVariables
[
i
];
85
bool
isSelected = (
m_selectedBBKey
==
varName
);
86
87
if
(ImGui::Selectable(
varName
.c_str(), isSelected))
88
{
89
SetBBKey
(
varName
);
90
}
91
92
if
(isSelected)
93
ImGui::SetItemDefaultFocus();
94
}
95
ImGui::EndCombo();
96
}
97
98
ImGui::Spacing();
99
100
// Show variable info if selected
101
if
(!
m_selectedBBKey
.empty() &&
m_template
!=
nullptr
)
102
{
103
for
(
size_t
i
= 0;
i
<
m_template
->
Blackboard
.size(); ++
i
)
104
{
105
const
BlackboardEntry
&
entry
=
m_template
->
Blackboard
[
i
];
106
if
(
entry
.Key ==
m_selectedBBKey
)
107
{
108
ImGui::TextDisabled(
"Type: %s"
,
109
(
entry
.Type ==
VariableType::Bool
?
"Bool"
:
110
entry
.Type ==
VariableType::Int
?
"Int"
:
111
entry
.Type ==
VariableType::Float
?
"Float"
:
112
entry
.Type ==
VariableType::Vector
?
"Vector"
:
113
entry
.Type ==
VariableType::EntityID
?
"EntityID"
:
114
entry
.Type ==
VariableType::String
?
"String"
:
"Unknown"
));
115
break
;
116
}
117
}
118
}
119
}
120
121
}
// namespace Olympe
122
GetComponentTypeID_Static
ComponentTypeID GetComponentTypeID_Static()
Definition
ECS_Entity.h:56
VariablePropertyPanel.h
UI Properties panel for a Variable node – variable selector.
Olympe::TaskGraphTemplate
Immutable, shareable task graph asset.
Definition
TaskGraphTemplate.h:178
Olympe::TaskGraphTemplate::Blackboard
std::vector< BlackboardEntry > Blackboard
Local blackboard declared in this graph.
Definition
TaskGraphTemplate.h:200
Olympe::VariablePropertyPanel::m_nodeName
std::string m_nodeName
Definition
VariablePropertyPanel.h:96
Olympe::VariablePropertyPanel::m_availableVariables
std::vector< std::string > m_availableVariables
Definition
VariablePropertyPanel.h:100
Olympe::VariablePropertyPanel::GetBBKey
const std::string & GetBBKey() const
Returns the current (possibly modified) BB key.
Definition
VariablePropertyPanel.cpp:44
Olympe::VariablePropertyPanel::m_selectedBBKey
std::string m_selectedBBKey
Definition
VariablePropertyPanel.h:97
Olympe::VariablePropertyPanel::Render
void Render()
Renders the panel into the current ImGui context.
Definition
VariablePropertyPanel.cpp:63
Olympe::VariablePropertyPanel::m_dirty
bool m_dirty
Definition
VariablePropertyPanel.h:99
Olympe::VariablePropertyPanel::RebuildVariableList
void RebuildVariableList()
Rebuilds the list of available blackboard variables.
Definition
VariablePropertyPanel.cpp:49
Olympe::VariablePropertyPanel::m_template
const TaskGraphTemplate * m_template
Definition
VariablePropertyPanel.h:98
Olympe::VariablePropertyPanel::SetBBKey
void SetBBKey(const std::string &key)
Sets the currently selected BB key.
Definition
VariablePropertyPanel.cpp:35
Olympe::VariablePropertyPanel::SetTemplate
void SetTemplate(const TaskGraphTemplate *tmpl)
Sets the template reference for blackboard variable lookup.
Definition
VariablePropertyPanel.cpp:29
Olympe::VariablePropertyPanel::VariablePropertyPanel
VariablePropertyPanel()
Constructs the panel.
Definition
VariablePropertyPanel.cpp:18
Olympe::VariablePropertyPanel::SetNodeName
void SetNodeName(const std::string &name)
Sets the node name displayed in the title section.
Definition
VariablePropertyPanel.cpp:24
Olympe
< Provides AssetID and INVALID_ASSET_ID
Definition
BTEditorCommand.cpp:16
Olympe::VariableType::Int
@ Int
32-bit signed integer
Olympe::VariableType::Float
@ Float
Single-precision float.
Olympe::VariableType::String
@ String
std::string
Olympe::VariableType::Vector
@ Vector
3-component vector (Vector from vector.h)
Olympe::VariableType::Bool
@ Bool
Boolean.
Olympe::VariableType::EntityID
@ EntityID
Entity identifier (uint64_t)
Olympe::BlackboardEntry
Single entry in the graph's declared blackboard schema (local or global).
Definition
TaskGraphTemplate.h:91
Generated on Mon Apr 13 2026 08:15:20 for Olympe Engine by
1.9.8