From 7c953d833740d5d6139e0fbbc61ae22819dee3b5 Mon Sep 17 00:00:00 2001 From: Pavle Date: Sat, 14 Feb 2026 13:11:49 +0100 Subject: [PATCH] Add shader parameter name to property tooltip --- .../Src/Components/EntityProperties.cpp | 47 ++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/Mods/Editor/Src/Components/EntityProperties.cpp b/Mods/Editor/Src/Components/EntityProperties.cpp index 9636fd6a..04d7cd57 100644 --- a/Mods/Editor/Src/Components/EntityProperties.cpp +++ b/Mods/Editor/Src/Components/EntityProperties.cpp @@ -10,6 +10,7 @@ #include "Logging.h" #include "Glacier/ZPhysics.h" #include +#include "Glacier/ZRender.h" void Editor::DrawEntityProperties() { auto s_ImgGuiIO = ImGui::GetIO(); @@ -131,6 +132,9 @@ void Editor::DrawEntityProperties() { ImGui::Separator(); + std::string s_ReferencedTemplateFactoryType; + ZRuntimeResourceID s_ReferencedTemplateFactory; + { std::shared_lock s_TreeLock(m_CachedEntityTreeMutex); @@ -167,7 +171,6 @@ void Editor::DrawEntityProperties() { if (s_Iterator2 != m_EntityRefToFactoryRuntimeResourceIDs.end()) { const auto [s_TemplateFactoryRuntimeResourceID, s_ParentTemplateFactoryRuntimeResourceID] = s_Iterator2->second; - std::string s_ReferencedTemplateFactoryType; if (s_EntityTreeNode->ReferencedBlueprintFactoryType == "TBLU") { s_ReferencedTemplateFactoryType = "TEMP"; @@ -197,6 +200,8 @@ void Editor::DrawEntityProperties() { s_ReferencedTemplateFactoryType = "WSGT"; } + s_ReferencedTemplateFactory = s_TemplateFactoryRuntimeResourceID; + ImGui::TextUnformatted( fmt::format("{}: {:016X}", s_ReferencedTemplateFactoryType, s_TemplateFactoryRuntimeResourceID.GetID() ).c_str()); @@ -441,6 +446,26 @@ void Editor::DrawEntityProperties() { ImGui::Separator(); + ZRenderMaterialInstance* s_RenderMaterialInstance = nullptr; + + if (s_ReferencedTemplateFactoryType == "MATT") { + TResourcePtr s_MaterialEntityResourcePtr; + + Globals::ResourceManager->GetResourcePtr(s_MaterialEntityResourcePtr, s_ReferencedTemplateFactory, 0); + + ZRenderMaterialEntityFactory* s_RenderMaterialEntityFactory = s_MaterialEntityResourcePtr.GetResource(); + + TResourcePtr s_RenderMaterialInstanceResourcePtr; + + Globals::ResourceManager->GetResourcePtr( + s_RenderMaterialInstanceResourcePtr, + s_RenderMaterialEntityFactory->m_ridMaterialInstance, + 0 + ); + + s_RenderMaterialInstance = s_RenderMaterialInstanceResourcePtr.GetResource(); + } + const auto s_EntityType = s_SelectedEntity->GetType(); if (s_EntityType && s_EntityType->m_pPropertyData) { @@ -509,7 +534,25 @@ void Editor::DrawEntityProperties() { } if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("%s", s_PropertyInfo->m_propertyInfo.m_Type->GetTypeInfo()->pszTypeName); + const char* s_TypeName = s_PropertyInfo->m_propertyInfo.m_Type->GetTypeInfo()->pszTypeName; + + const char* s_ShaderParameterName = nullptr; + + if (s_RenderMaterialInstance && s_RenderMaterialInstance->m_pEffect) { + for (const auto& s_SemanticStringPair : s_RenderMaterialInstance->m_pEffect->m_SemanticStringPairs) { + if (s_PropertyName == s_SemanticStringPair.m_MaterialPropertyName) { + s_ShaderParameterName = s_SemanticStringPair.m_ShaderParameterName.c_str(); + break; + } + } + } + + if (s_ShaderParameterName) { + ImGui::SetTooltip("%s\n%s", s_TypeName, s_ShaderParameterName); + } + else { + ImGui::SetTooltip("%s", s_TypeName); + } } ImGui::PopFont();