sculpto
Public Member Functions | List of all members
scl::scene_hierarchy_window Class Reference

#include <scene_hierarchy_window.h>

Public Member Functions

 scene_hierarchy_window (scene *Scene, const std::function< void(scene_object)> &OnObjectSelect)
 
void Draw ()
 

Detailed Description

Scene hierarchy GUI window class.

Definition at line 17 of file scene_hierarchy_window.h.

Constructor & Destructor Documentation

◆ scene_hierarchy_window()

scl::scene_hierarchy_window::scene_hierarchy_window ( scene Scene,
const std::function< void(scene_object)> &  OnObjectSelect 
)
  • Scene hierarchy window default constructor.
Parameters
Scene- scene to display hierarchy tree of.
SelectedSceneObject- pointer to variable to set selecting itmes in.

Definition at line 17 of file scene_hierarchy_window.cpp.

17 :
18 Scene(Scene), OnObjectSelect(OnObjectSelect) {}

Member Function Documentation

◆ Draw()

void scl::scene_hierarchy_window::Draw ( )
  • Draw scene hierarchy window function.
Parameters
None.
Returns
None.

Definition at line 20 of file scene_hierarchy_window.cpp.

21{
22 if (Scene == nullptr) return;
23
24 ImGui::Begin("Scene Hierarchy");
25 ImGuiTreeNodeFlags node_flags = ImGuiTreeNodeFlags_OpenOnArrow
26 | ImGuiTreeNodeFlags_OpenOnDoubleClick
27 | ImGuiTreeNodeFlags_SpanAvailWidth;
28 for (auto &&[entity, tag] : Scene->Registry.view<name_component>().each())
29 {
30 if (ImGui::Selectable(tag.Name.c_str(), entity == SelectedObject, ImGuiSelectableFlags_None,
31 { entity == SelectedObject ? ImGui::GetWindowWidth() * 0.6f - 10 : 0, 20 }))
32 {
33 SelectedObject = scene_object { entity, Scene };
34 OnObjectSelect(SelectedObject);
35 }
36
37 if (entity == SelectedObject)
38 {
39 ImGui::SameLine(ImGui::GetWindowWidth() * 0.6f + 5);
40 if (ImGui::Button("Delete##delete_object", { ImGui::GetWindowWidth() * 0.4f - 10, 0 }))
41 Scene->RemoveObject(SelectedObject);
42 }
43 }
44
45 ImGui::SetNextItemWidth(ImGui::GetWindowWidth() * 0.6f - 5);
46 ImGui::InputText("##adding_object_name", ObjectCreationNameTextBuffer, 128);
47 ImGui::SameLine(ImGui::GetWindowWidth() * 0.6f + 5);
48 if (ImGui::Button("Add new object", { ImGui::GetWindowWidth() * 0.4f - 10, 0 }))
49 Scene->CreateObject(std::string(ObjectCreationNameTextBuffer)), memset(ObjectCreationNameTextBuffer, 0, 128);
50 ImGui::End();
51}
scene_object CreateObject(const std::string &Name="")
Definition: scene.cpp:107
void RemoveObject(scene_object &Object)
Definition: scene.cpp:126

The documentation for this class was generated from the following files: