Script Canvas added text generation for BehaviorContext properties (#5568)

Added generation and navigation options for BehaviorProperty items
This commit is contained in:
Luis Sempé
2021-11-11 15:26:41 -08:00
committed by GitHub
parent 0af8754d08
commit b0e9313df0
5 changed files with 97 additions and 1 deletions
@@ -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
//////////////////////////////
@@ -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;
};
@@ -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);
@@ -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
@@ -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