From 26591e8c245dd8bbd74471d6ca8d9f028fb6a2cd Mon Sep 17 00:00:00 2001 From: Sri Sham Haran Date: Tue, 1 Nov 2022 19:03:08 +0800 Subject: [PATCH] material inspector --- .../MaterialInspector/SHMaterialInspector.cpp | 81 +++++++++++++++++++ .../MaterialInspector/SHMaterialInspector.h | 28 +++++++ 2 files changed, 109 insertions(+) create mode 100644 SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp create mode 100644 SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.h diff --git a/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp new file mode 100644 index 00000000..c4904533 --- /dev/null +++ b/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp @@ -0,0 +1,81 @@ +#include "SHpch.h" +#include "SHMaterialInspector.h" +#include "Editor/SHImGuiHelpers.hpp" +#include + +//#include "Assets/SHAssetManager.h" +//#include "Graphics/MiddleEnd/Materials/SHMaterialSpec.h" +//#include "Editor/SHEditorWidgets.hpp" +//#include "Resource/SHResourceManager.h" + +namespace SHADE +{ + SHMaterialInspector::SHMaterialInspector() + :SHEditorWindow("Material Inspector", ImGuiWindowFlags_MenuBar)//,isNewMaterial(false), currentViewedMaterial(0) + { + } + + void SHMaterialInspector::OpenMaterial(AssetID const& assetId) noexcept + { + //Get mat data + //isNewMaterial = false; + } + + void SHMaterialInspector::Init() + { + SHEditorWindow::Init(); + } + + void SHMaterialInspector::Update() + { + SHEditorWindow::Update(); + + //if(Begin()) + //{ + // DrawMenuBar(); + + // if(SHEditorWidgets::DragDropReadOnlyField("Vertex Shader", std::to_string(currentMatSpec.vertexShader), [&](){return currentMatSpec.vertexShader;}, [&](AssetID const& id){currentMatSpec.vertexShader = id;}, SHDragDrop::DRAG_RESOURCE)) + // { + // vertShaderHandle = SHResourceManager::LoadOrGet(currentMatSpec.vertexShader); + // } + // if(SHEditorWidgets::DragDropReadOnlyField("Fragment Shader", std::to_string(currentMatSpec.fragShader), [&](){return currentMatSpec.fragShader;}, [&](AssetID const& id){currentMatSpec.fragShader = id;}, SHDragDrop::DRAG_RESOURCE)) + // { + // fragShaderHandle = SHResourceManager::LoadOrGet(currentMatSpec.fragShader); + // } + + // auto vertInterface = vertShaderHandle->GetReflectedData().GetDescriptorBindingInfo().GetShaderBlockInterface(SHGraphicsConstants::DescriptorSetIndex::PER_INSTANCE, SHGraphicsConstants::DescriptorSetBindings::BATCHED_PER_INST_DATA); + + // int const varCount = static_cast(vertInterface->GetVariableCount()); + // + // for(int i = 0; i < varCount; ++i) + // { + // auto variable = vertInterface->GetVariable(i); + // } + + //} + //ImGui::End(); + } + + void SHMaterialInspector::Exit() + { + SHEditorWindow::Exit(); + } + + void SHMaterialInspector::CreateNewMaterial() + { + //isNewMaterial = true; + ////prompt for a name + //currentViewedMaterial = SHAssetManager::CreateNewAsset(AssetType::MATERIAL, "NewMaterial"); + //currentMatSpec = {}; + //vertShaderHandle = {}; + //fragShaderHandle = {}; + } + + void SHMaterialInspector::DrawMenuBar() + { + if(ImGui::BeginMenuBar()) + { + ImGui::EndMenuBar(); + } + } +} diff --git a/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.h b/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.h new file mode 100644 index 00000000..7256a0b6 --- /dev/null +++ b/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.h @@ -0,0 +1,28 @@ +#pragma once +#include "Assets/SHAssetMacros.h" +#include "Editor/EditorWindow/SHEditorWindow.h" + + +namespace SHADE +{ + class SHMaterialInspector final : public SHEditorWindow + { + public: + SHMaterialInspector(); + ~SHMaterialInspector() = default; + + void Init() override; + void Update() override; + void Exit() override; + + void CreateNewMaterial(); + void OpenMaterial(AssetID const& assetId) noexcept; + private: + void DrawMenuBar(); + + //bool isNewMaterial; + //AssetID currentViewedMaterial; + //SHMaterialSpec currentMatSpec; + //Handle vertShaderHandle, fragShaderHandle; + }; +}