From b0e9313df0090f336947da8d5ca46abf7060bd51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Semp=C3=A9?= <58790905+lsemp3d@users.noreply.github.com> Date: Thu, 11 Nov 2021 15:26:41 -0800 Subject: [PATCH] Script Canvas added text generation for BehaviorContext properties (#5568) Added generation and navigation options for BehaviorProperty items --- .../GeneralNodePaletteTreeItemTypes.cpp | 21 ++++++ .../GeneralNodePaletteTreeItemTypes.h | 4 ++ .../ScriptCanvasNodePaletteDockWidget.cpp | 2 +- .../Code/Tools/TranslationGeneration.cpp | 65 +++++++++++++++++++ .../Code/Tools/TranslationGeneration.h | 6 ++ 5 files changed, 97 insertions(+), 1 deletion(-) diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp index d73fe8a91b..b66286c322 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp @@ -180,6 +180,27 @@ namespace ScriptCanvasEditor return m_methodName; } + AZ::IO::Path GlobalMethodEventPaletteTreeItem::GetTranslationDataPath() const + { + AZStd::string propertyName = m_methodName; + AZ::StringFunc::Replace(propertyName, "::Getter", ""); + AZ::StringFunc::Replace(propertyName, "::Setter", ""); + + AZStd::string filename = GraphCanvas::TranslationKey::Sanitize(propertyName); + + return AZ::IO::Path("Properties") / filename; + } + + void GlobalMethodEventPaletteTreeItem::GenerateTranslationData() + { + AZStd::string propertyName = m_methodName; + AZ::StringFunc::Replace(propertyName, "::Getter", ""); + AZ::StringFunc::Replace(propertyName, "::Setter", ""); + + ScriptCanvasEditorTools::TranslationGeneration translation; + translation.TranslateBehaviorProperty(propertyName); + } + ////////////////////////////// // CreateCustomNodeMimeEvent ////////////////////////////// diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h index f41e236577..65a5e10cf7 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h @@ -121,6 +121,10 @@ namespace ScriptCanvasEditor const AZStd::string& GetMethodName() const; + AZ::IO::Path GetTranslationDataPath() const override; + void GenerateTranslationData() override; + + private: AZStd::string m_methodName; }; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp index 5b7d7a885f..9b97d707d0 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp @@ -710,7 +710,7 @@ namespace ScriptCanvasEditor { m_openTranslationData = new QAction(treeView); - m_openTranslationData->setText("Open Translation Data"); + m_openTranslationData->setText("Explore Translation Data"); treeView->addAction(m_openTranslationData); QObject::connect(m_openTranslationData, &QAction::triggered, this, &NodePaletteDockWidget::OpenTranslationData); diff --git a/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.cpp b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.cpp index c99d6b8c29..7a6edeef04 100644 --- a/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.cpp +++ b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.cpp @@ -730,6 +730,71 @@ namespace ScriptCanvasEditorTools SaveJSONData("Types/OnDemandReflectedTypes", translationRoot); } + void TranslationGeneration::TranslateBehaviorGlobals() + { + for (const auto& [propertyName, behaviorProperty] : m_behaviorContext->m_properties) + { + TranslateBehaviorProperty(propertyName); + } + } + + void TranslationGeneration::TranslateBehaviorProperty(const AZStd::string& propertyName) + { + const auto behaviorPropertyEntry = m_behaviorContext->m_properties.find(propertyName); + if (behaviorPropertyEntry == m_behaviorContext->m_properties.end()) + { + return; + } + + const AZ::BehaviorProperty* behaviorProperty = behaviorPropertyEntry->second; + + TranslationFormat translationRoot; + + if (behaviorProperty->m_getter && !behaviorProperty->m_setter) + { + Entry entry; + entry.m_context = "Constant"; + entry.m_key = propertyName; + + auto methodName = behaviorProperty->m_getter->m_name; + entry.m_details.m_name = methodName; + entry.m_details.m_tooltip = behaviorProperty->m_getter->m_debugDescription ? behaviorProperty->m_getter->m_debugDescription : ""; + entry.m_details.m_category = "Constants"; + + translationRoot.m_entries.push_back(entry); + } + else + { + Entry entry; + entry.m_context = "BehaviorMethod"; + + if (behaviorProperty->m_getter) + { + entry.m_key = propertyName; + + auto methodName = behaviorProperty->m_getter->m_name; + entry.m_details.m_name = methodName; + entry.m_details.m_tooltip = behaviorProperty->m_getter->m_debugDescription ? behaviorProperty->m_getter->m_debugDescription : ""; + + translationRoot.m_entries.push_back(entry); + } + + if (behaviorProperty->m_setter) + { + entry.m_key = propertyName; + + auto methodName = behaviorProperty->m_setter->m_name; + entry.m_details.m_name = methodName; + entry.m_details.m_tooltip = behaviorProperty->m_setter->m_debugDescription ? behaviorProperty->m_getter->m_debugDescription : ""; + + translationRoot.m_entries.push_back(entry); + } + } + + AZStd::string fileName = AZStd::string::format("Properties/%s", behaviorProperty->m_name.c_str()); + SaveJSONData(fileName, translationRoot); + } + bool TranslationGeneration::TranslateEBusHandler(const AZ::BehaviorEBus* behaviorEbus, TranslationFormat& translationRoot) { // Must be a valid ebus handler diff --git a/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.h b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.h index 7df567d9a1..cff78e5165 100644 --- a/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.h +++ b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.h @@ -121,6 +121,12 @@ namespace ScriptCanvasEditorTools //! Generate the translation data for on-demand reflected types void TranslateOnDemandReflectedTypes(TranslationFormat& translationRoot); + //! Generates the translation data for all global properties and methods in the BehaviorContext + void TranslateBehaviorGlobals(); + + //! Generates the translation data for the specified property in the BehaviorContext + void TranslateBehaviorProperty(const AZStd::string& propertyName); + private: //! Generates the translation data for a BehaviorEBus that has an BehaviorEBusHandler