From ec8045c4f4cb11f5db76518f3fc391fc77486fb5 Mon Sep 17 00:00:00 2001 From: Nigel Barink Date: Sun, 7 May 2023 15:25:31 +0200 Subject: [PATCH] Added Asset selection in Render3D component view (Not functional yet!) --- Editor/src/PropertyPanels/Inspector.cpp | 52 +++++++++++++++++++++---- YoggieEngine/src/Graphics/Renderer.cpp | 3 ++ 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/Editor/src/PropertyPanels/Inspector.cpp b/Editor/src/PropertyPanels/Inspector.cpp index e910e9d..95cc04e 100644 --- a/Editor/src/PropertyPanels/Inspector.cpp +++ b/Editor/src/PropertyPanels/Inspector.cpp @@ -8,24 +8,40 @@ void Inspector::Draw() ShowComponents(); } } +void AddComponent(YoggieEngine::Entity selected , int i) { + switch (i) { + case 0: + selected.AddComponent(); + break; + case 1: + selected.AddComponent(); + break; + case 2: + selected.AddComponent(); + break; + case 3: + selected.AddComponent(); + default: + break; + } +} void Inspector::AddComponentDropDown() { - static char* names[] = { "Script Component", "Camera Component", "Light Component" }; + static char* names[] = { "Script Component", "Camera Component", "Light Component", "Render3D"}; if (ImGui::Button("Add Component")) ImGui::OpenPopup("Component picker"); ImGui::SameLine(); if (ImGui::BeginPopup("Component picker")) { - for (int i = 0; i < IM_ARRAYSIZE(names); i++) - if (ImGui::MenuItem(names[i])) { - std::cout << "Add a " << names[i] << " to " - << selected.GetComponent().name << std::endl; - } - + for (int i = 0; i < IM_ARRAYSIZE(names); i++) { + if (ImGui::MenuItem(names[i])) + AddComponent(selected, i); + } ImGui::EndPopup(); + } ImGui::NewLine(); } @@ -63,13 +79,35 @@ void Inspector::ShowComponents() if (selected.HasComponent()) { auto& render3d = selected.GetComponent(); + const char* AssetNames[]{ "Asset1" , "Asset2" }; if (ImGui::CollapsingHeader("Render3D", ImGuiTreeNodeFlags_DefaultOpen)) { + + if (ImGui::Button("Select Renderable Asset")) + ImGui::OpenPopup("Renderable_list_popup"); + ImGui::SameLine(); + ImGui::TextUnformatted(render3d.mesh.elements.empty() ? "" : "ASSET_GUID_OR_ID"); + if (ImGui::BeginPopup("Renderable_list_popup")) { + ImGui::Text("None"); + ImGui::Separator(); + for (int i = 0; i < IM_ARRAYSIZE(AssetNames); i++) { + if(ImGui::Selectable(AssetNames[i])) + { } + } + ImGui::EndPopup(); + + } + + + + ImGui::ColorEdit3("Colour", glm::value_ptr(render3d.color)); ImGui::Checkbox("Use static rendering:", &render3d.isStatic); } } static bool deferred = true; + + if (selected.HasComponent()) { auto& light = selected.GetComponent(); if (ImGui::CollapsingHeader("Light", ImGuiTreeNodeFlags_DefaultOpen)) { diff --git a/YoggieEngine/src/Graphics/Renderer.cpp b/YoggieEngine/src/Graphics/Renderer.cpp index 0404e36..456bc4a 100644 --- a/YoggieEngine/src/Graphics/Renderer.cpp +++ b/YoggieEngine/src/Graphics/Renderer.cpp @@ -187,6 +187,9 @@ void SubmitVegetationDemo() { } void Renderer::Submit( Render3DComponent& renderComponent, TransformComponent& transform) { + if (renderComponent.mesh.elements.empty()) + return; + if (renderComponent.VAO == 0 || renderComponent.IBO == 0) { if (renderComponent.VAO != 0)