@@ -33,6 +33,7 @@ void scene::select(glm::vec2 pt) {
33
33
if (obj->hit (pt_to_world (pt))) {
34
34
obj->set_color (RED);
35
35
selected_object = v;
36
+ selected_object->select ();
36
37
return ;
37
38
}
38
39
}
@@ -41,6 +42,7 @@ void scene::select(glm::vec2 pt) {
41
42
if (obj->hit (pt_to_world (pt))) {
42
43
obj->set_color (RED);
43
44
selected_object = e;
45
+ selected_object->select ();
44
46
return ;
45
47
}
46
48
}
@@ -80,19 +82,23 @@ void scene::draw() {
80
82
for (const auto & [i, e] : this ->g ->get_edges ()) {
81
83
if (e != selected_object) {
82
84
e->get_component ()->draw (view, projection);
83
- draw_text (" edge" + std::to_string (i) , e->label (), pt_to_screen ( e->get_component ()->get_center () ), 0 );
85
+ draw_text (" edge" + std::to_string (e-> get_id ()) , e->label (), e->get_component ()->get_center (), 0 );
84
86
}
85
87
}
88
+ if (std::dynamic_pointer_cast<edge>(selected_object) != nullptr ) {
89
+ selected_object->get_component ()->draw (view, projection);
90
+ draw_text (" edge" + std::to_string (selected_object->get_id ()), selected_object->label (), selected_object->get_component ()->get_center (), 0 );
91
+ }
92
+
86
93
for (const auto & [i, v] : this ->g ->get_nodes ()) {
87
94
if (v != selected_object) {
88
95
v->get_component ()->draw (view, projection);
89
- draw_text (" node" + std::to_string (i) , v->label (), pt_to_screen ( v->get_component ()->get_center () ), 0 );
96
+ draw_text (" node" + std::to_string (v-> get_id ()) , v->label (), v->get_component ()->get_center (), 0 );
90
97
}
91
98
}
92
-
93
- if (selected_object != nullptr ) {
99
+ if (std::dynamic_pointer_cast<node>(selected_object) != nullptr ) {
94
100
selected_object->get_component ()->draw (view, projection);
95
- draw_text (" s " + std::to_string (selected_object->get_id ()), selected_object->label (), pt_to_screen ( selected_object->get_component ()->get_center () ), 0 );
101
+ draw_text (" node " + std::to_string (selected_object->get_id ()), selected_object->label (), selected_object->get_component ()->get_center (), 0 );
96
102
}
97
103
}
98
104
@@ -143,7 +149,7 @@ void scene::draw_text(std::string label, std::string text, glm::vec2 pos, int si
143
149
ImGui::PushStyleVar (ImGuiStyleVar_WindowPadding, ImVec2 (0 .0f , 0 .0f ));
144
150
ImGui::PushStyleVar (ImGuiStyleVar_FramePadding, ImVec2 (0 .0f , 0 .0f ));
145
151
ImGui::PushStyleVar (ImGuiStyleVar_WindowBorderSize, 0 .0f );
146
- ImGui::SetNextWindowPos (pos - (glm::vec2) ImGui::CalcTextSize (text.c_str ()) / 2 .0f );
152
+ ImGui::SetNextWindowPos (pt_to_screen ( pos) - (glm::vec2) ImGui::CalcTextSize (text.c_str ()) / 2 .0f );
147
153
148
154
ImGui::Begin (label.c_str (), nullptr , ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoSavedSettings|ImGuiWindowFlags_NoInputs);
149
155
0 commit comments