Integrating github/staging through commit ab87ed9

This commit is contained in:
alexpete
2021-04-09 11:27:37 -07:00
parent ae62a97894
commit 1044dc3da1
1582 changed files with 29374 additions and 519051 deletions
@@ -97,7 +97,6 @@ namespace ScriptCanvasEditor
AZ::Data::AssetInfo GetSourceInfoByProductId(AZ::Data::AssetId assetId, AZ::Data::AssetType assetType)
{
bool infoFound = false;
AZStd::string watchFolder;
AZ::Data::AssetInfo assetInfo;
const AZStd::string platformName = ""; // Empty for default
@@ -583,7 +583,7 @@ namespace ScriptCanvasEditor
AZStd::string tempPath = AZStd::string::format("@usercache@/scriptcanvas/%s.temp", tempFilename.data());
AZStd::array<char, AZ::IO::MaxPathLength> resolvedPath{};
AZ::IO::FileIOBase::GetInstance()->ResolvePath(tempPath.data(), resolvedPath.data(), resolvedPath.size());
fileIO->ResolvePath(tempPath.data(), resolvedPath.data(), resolvedPath.size());
return resolvedPath.data();
}
@@ -714,7 +714,7 @@ namespace ScriptCanvasEditor
AZStd::string tempPath = AZStd::string::format("@usercache@/scriptcanvas/%s.temp", tempFilename.data());
AZStd::array<char, AZ::IO::MaxPathLength> resolvedPath{};
AZ::IO::FileIOBase::GetInstance()->ResolvePath(tempPath.data(), resolvedPath.data(), resolvedPath.size());
fileIO->ResolvePath(tempPath.data(), resolvedPath.data(), resolvedPath.size());
return resolvedPath.data();
}
@@ -438,7 +438,7 @@ namespace ScriptCanvasEditor
AZ::EntityId newConnectionId;
GraphCanvas::SlotRequestBus::EventResult(newConnectionId, newEndpoint.m_slotId, &GraphCanvas::SlotRequests::CreateConnectionWithEndpoint, targetEndpoint);
bool created = graph->CreateConnection(newConnectionId, newEndpoint, targetEndpoint);
[[maybe_unused]] bool created = graph->CreateConnection(newConnectionId, newEndpoint, targetEndpoint);
AZ_Warning("ScriptCanvas", created, "Failed to created connection between migrated endpoints, despite valid connection check.");
}
}
@@ -635,7 +635,6 @@ namespace ScriptCanvasEditor
if (variable)
{
// functions 2.0 set variable scope to function
auto connectionType = slot->GetConnectionType();
if (variable->GetScope() != ScriptCanvas::VariableFlags::Scope::Function)
{
variable->SetScope(ScriptCanvas::VariableFlags::Scope::Function);
@@ -2270,12 +2269,24 @@ namespace ScriptCanvasEditor
ScriptCanvas::GraphVariableManagerRequestBus::EventResult(nameAvailable, GetScriptCanvasId(), &ScriptCanvas::GraphVariableManagerRequests::IsNameAvailable, variableName);
}
int nameCount = 0;
while (!nameAvailable)
{
variableName.append(" (duplicate)");
if (nameCount == 0)
{
variableName.append(AZStd::string::format(" (%d)", ++nameCount));
}
else
{
AZ::StringFunc::Replace(variableName, AZStd::string::format("(%d)", nameCount-1).c_str(), AZStd::string::format("(%d)", nameCount).c_str());
++nameCount;
}
ScriptCanvas::GraphVariableManagerRequestBus::EventResult(nameAvailable, GetScriptCanvasId(), &ScriptCanvas::GraphVariableManagerRequests::IsNameAvailable, variableName);
}
activeSlot->Rename(variableName);
ScriptCanvas::Datum variableDatum;
if (activeDatum)
@@ -568,8 +568,6 @@ namespace ScriptCanvasEditor
void Skip::Run()
{
EditorGraphUpgradeMachine* sm = GetStateMachine<EditorGraphUpgradeMachine>();
Log("Up to date (skipped)\n");
}
@@ -154,8 +154,6 @@ namespace ScriptCanvasEditor
loadResult.m_graphPath = asset.GetHint().c_str();
loadResult.m_editorAsset = asset;
AZ::EntityId scriptCanvasId;
auto* sourceAsset = asset.GetAs<ScriptCanvasAsset>();
AZ::Entity* scriptCanvasEntity = sourceAsset->GetScriptCanvasEntity();
loadResult.m_entity = AZStd::make_unique<AZ::Entity>("Loaded test graph");
loadResult.m_runtimeAsset = runtimeAsset;
@@ -96,7 +96,13 @@ namespace ScriptCanvasEditor
bool FunctionDefinitionNodeDescriptorComponent::OnMouseDoubleClick(const QGraphicsSceneMouseEvent*)
{
return RenameDialog(this);
bool rename = RenameDialog(this);
ScriptCanvas::ScriptCanvasId activeScriptCanvasId;
ScriptCanvasEditor::GeneralRequestBus::BroadcastResult(activeScriptCanvasId, &ScriptCanvasEditor::GeneralRequests::GetActiveScriptCanvasId);
GeneralRequestBus::Broadcast(&GeneralRequests::PostUndoPoint, activeScriptCanvasId);
return rename;
}
}
@@ -38,13 +38,22 @@ namespace ScriptCanvasEditor::Nodes
NodeIdPair CreateFunctionDefinitionNode(const ScriptCanvas::ScriptCanvasId& scriptCanvasId, bool isInput, AZStd::string rootName)
{
ScriptCanvasEditor::Nodes::StyleConfiguration styleConfiguration;
auto nodeAndPair = CreateAndGetNode(azrtti_typeid<ScriptCanvas::Nodes::Core::FunctionDefinitionNode>(), scriptCanvasId, styleConfiguration);
auto nodeAndPair = CreateAndGetNode(azrtti_typeid<ScriptCanvas::Nodes::Core::FunctionDefinitionNode>(), scriptCanvasId, styleConfiguration, [isInput](ScriptCanvas::Node* node)
{
ScriptCanvas::Nodes::Core::FunctionDefinitionNode* fdn = azrtti_cast<ScriptCanvas::Nodes::Core::FunctionDefinitionNode*>(node);
if (!isInput)
{
fdn->MarkExecutionExit();
}
}
);
NodeIdPair createdPair = nodeAndPair.second;
auto functionDefinitionNode = azrtti_cast<ScriptCanvas::Nodes::Core::FunctionDefinitionNode*>(nodeAndPair.first);
if (functionDefinitionNode && createdPair.m_scriptCanvasId.IsValid())
{
AZStd::unordered_set<AZStd::string> nodelingNames;
auto enumerationFunction = [&nodelingNames, scriptCanvasId](ScriptCanvas::NodelingRequests* nodelingRequests)
@@ -83,24 +92,6 @@ namespace ScriptCanvasEditor::Nodes
GraphCanvas::NodeTitleRequestBus::Event(createdPair.m_graphCanvasId, &GraphCanvas::NodeTitleRequests::SetSubTitle, "Function");
// Because of how the extender slots are registered, there isn't an easy way to only create one or the other based on
// the type of nodeling, so instead they both get created and we need to remove the inapplicable one
GraphCanvas::ConnectionType typeToRemove = (isInput) ? GraphCanvas::CT_Input : GraphCanvas::CT_Output;
AZStd::vector<GraphCanvas::SlotId> extenderSlotIds, executionSlotIds;
GraphCanvas::NodeRequestBus::EventResult(extenderSlotIds, createdPair.m_graphCanvasId, &GraphCanvas::NodeRequests::FindVisibleSlotIdsByType, typeToRemove, GraphCanvas::SlotTypes::ExtenderSlot);
if (!extenderSlotIds.empty())
{
GraphCanvas::NodeRequestBus::Event(createdPair.m_graphCanvasId, &GraphCanvas::NodeRequests::RemoveSlot, *extenderSlotIds.begin());
}
GraphCanvas::NodeRequestBus::EventResult(executionSlotIds, createdPair.m_graphCanvasId, &GraphCanvas::NodeRequests::FindVisibleSlotIdsByType, typeToRemove, GraphCanvas::SlotTypes::ExecutionSlot);
if (!executionSlotIds.empty())
{
GraphCanvas::NodeRequestBus::Event(createdPair.m_graphCanvasId, &GraphCanvas::NodeRequests::RemoveSlot, *executionSlotIds.begin());
}
}
return createdPair;
@@ -111,7 +102,7 @@ namespace ScriptCanvasEditor::Nodes
return CreateAndGetNode(classId, scriptCanvasId, styleConfiguration).second;
}
AZStd::pair<ScriptCanvas::Node*, NodeIdPair> CreateAndGetNode(const AZ::Uuid& classId, const ScriptCanvas::ScriptCanvasId& scriptCanvasId, const StyleConfiguration& styleConfiguration)
AZStd::pair<ScriptCanvas::Node*, NodeIdPair> CreateAndGetNode(const AZ::Uuid& classId, const ScriptCanvas::ScriptCanvasId& scriptCanvasId, const StyleConfiguration& styleConfiguration, AZStd::function<void(ScriptCanvas::Node*)> onCreateCallback)
{
AZ_PROFILE_TIMER("ScriptCanvas", __FUNCTION__);
NodeIdPair nodeIdPair;
@@ -121,6 +112,10 @@ namespace ScriptCanvasEditor::Nodes
scriptCanvasEntity->Init();
nodeIdPair.m_scriptCanvasId = scriptCanvasEntity->GetId();
ScriptCanvas::SystemRequestBus::BroadcastResult(node, &ScriptCanvas::SystemRequests::CreateNodeOnEntity, scriptCanvasEntity->GetId(), scriptCanvasId, classId);
if (onCreateCallback)
{
onCreateCallback(node);
}
scriptCanvasEntity->SetName(AZStd::string::format("SC-Node(%s)", scriptCanvasEntity->GetName().data()));
AZ::EntityId graphCanvasGraphId;
@@ -242,7 +237,7 @@ namespace ScriptCanvasEditor::Nodes
ScriptCanvas::NamespacePath emptyNamespacePath;
methodNode->InitializeFree(emptyNamespacePath, methodName);
AZStd::string_view displayName = methodNode->GetName();
AZStd::string displayName = methodNode->GetName();
scriptCanvasEntity->SetName(AZStd::string::format("SC-Node(%.*s)", aznumeric_cast<int>(displayName.size()), displayName.data()));
AZ::EntityId graphCanvasGraphId;
@@ -31,7 +31,7 @@ namespace ScriptEvents
namespace ScriptCanvasEditor::Nodes
{
// Specific create methods which will also handle displaying the node.
AZStd::pair<ScriptCanvas::Node*, NodeIdPair> CreateAndGetNode(const AZ::Uuid& classData, const ScriptCanvas::ScriptCanvasId& scriptCanvasId, const StyleConfiguration& styleConfiguration);
AZStd::pair<ScriptCanvas::Node*, NodeIdPair> CreateAndGetNode(const AZ::Uuid& classData, const ScriptCanvas::ScriptCanvasId& scriptCanvasId, const StyleConfiguration& styleConfiguration, AZStd::function<void(ScriptCanvas::Node*)> = nullptr);
NodeIdPair CreateNode(const AZ::Uuid& classData, const ScriptCanvas::ScriptCanvasId& scriptCanvasId, const StyleConfiguration& styleConfiguration);
NodeIdPair CreateEntityNode(const AZ::EntityId& sourceId, const ScriptCanvas::ScriptCanvasId& scriptCanvasId);
NodeIdPair CreateObjectMethodNode(AZStd::string_view className, AZStd::string_view methodName, const ScriptCanvas::ScriptCanvasId& scriptCanvasId);
@@ -330,8 +330,7 @@ namespace ScriptCanvasEditor::Nodes
contextGroup = TranslationContextGroup::ClassMethod;
break;
default:
// Unsupported?
AZ_Warning("NodeUtils", false, "Invalid node type?");
AZ_Assert(false, "Invalid node type");
}
graphCanvasEntity->Init();
@@ -360,7 +359,6 @@ namespace ScriptCanvasEditor::Nodes
GraphCanvas::TranslationKeyedString tooltipKeyedString(AZStd::string(), translationContext);
tooltipKeyedString.m_key = TranslationHelper::GetKey(contextGroup, className, methodName, TranslationItemType::Node, TranslationKeyId::Tooltip);
int offset = methodNode->HasBusID() ? 1 : 0;
int paramIndex = 0;
int outputIndex = 0;
@@ -411,6 +409,25 @@ namespace ScriptCanvasEditor::Nodes
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedSubTitle, classKeyedString);
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetPaletteOverride, "MethodNodeTitlePalette");
// Override the title if it has the Setter or Getter suffixes
AZStd::string title;
GraphCanvas::NodeTitleRequestBus::EventResult(title, graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::GetTitle);
if (!title.empty())
{
if (title.ends_with("::Getter"))
{
AZ::StringFunc::Replace(title, "::Getter", "");
}
if (displayName.ends_with("::Setter"))
{
AZ::StringFunc::Replace(title, "::Setter", "");
}
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTitle, title);
}
return graphCanvasNodeId;
}
@@ -789,15 +806,6 @@ namespace ScriptCanvasEditor::Nodes
return graphCanvasNodeId;
}
const ScriptEvents::ScriptEvent& definition = senderNode->GetScriptEvent();
const AZStd::string& className = definition.GetName();
const AZStd::string& methodName = senderNode->GetEventName();
int offset = senderNode->HasBusID() ? 1 : 0;
int paramIndex = 0;
int outputIndex = 0;
auto busId = senderNode->GetBusSlotId();
for (const auto& slot : senderNode->GetSlots())
{
@@ -895,13 +903,13 @@ namespace ScriptCanvasEditor::Nodes
return graphCanvasNodeId;
}
AZ::EntityId DisplayFunctionDefinitionNode(AZ::EntityId graphCanvasGraphId, const ScriptCanvas::Nodes::Core::FunctionDefinitionNode* nodeling)
AZ::EntityId DisplayFunctionDefinitionNode(AZ::EntityId graphCanvasGraphId, const ScriptCanvas::Nodes::Core::FunctionDefinitionNode* functionDefinitionNode)
{
NodeConfiguration nodeConfiguration;
nodeConfiguration.PopulateComponentDescriptors<IconComponent, FunctionDefinitionNodeDescriptorComponent>();
if (nodeling->RequiresDynamicSlotOrdering())
if (functionDefinitionNode->RequiresDynamicSlotOrdering())
{
nodeConfiguration.PopulateComponentDescriptors<DynamicOrderingDynamicSlotComponent>();
}
@@ -912,15 +920,14 @@ namespace ScriptCanvasEditor::Nodes
nodeConfiguration.m_nodeSubStyle = ".nodeling";
nodeConfiguration.m_titlePalette = "NodelingTitlePalette";
nodeConfiguration.m_scriptCanvasId = nodeling->GetEntityId();
nodeConfiguration.m_scriptCanvasId = functionDefinitionNode->GetEntityId();
AZ::SerializeContext* serializeContext = nullptr;
AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext);
AZ_Assert(serializeContext, "Failed to acquire application serialize context.");
const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(azrtti_typeid(nodeling));
if (classData)
if (const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(azrtti_typeid(functionDefinitionNode)))
{
AZStd::string nodeContext = GetContextName(*classData);
nodeConfiguration.m_translationContext = TranslationHelper::GetUserDefinedContext(nodeContext);
@@ -942,7 +949,7 @@ namespace ScriptCanvasEditor::Nodes
ScriptCanvas::GraphScopedNodeId nodelingId;
nodelingId.m_identifier = nodeConfiguration.m_scriptCanvasId;
nodelingId.m_scriptCanvasId = nodeling->GetOwningScriptCanvasId();
nodelingId.m_scriptCanvasId = functionDefinitionNode->GetOwningScriptCanvasId();
AZStd::string nodelingName;
ScriptCanvas::NodelingRequestBus::EventResult(nodelingName, nodelingId, &ScriptCanvas::NodelingRequests::GetDisplayName);
@@ -966,7 +973,27 @@ namespace ScriptCanvasEditor::Nodes
nodeConfiguration.m_subtitleFallback = "";
return DisplayGeneralScriptCanvasNode(graphCanvasGraphId, nodeling, nodeConfiguration);
// Because of how the extender slots are registered, there isn't an easy way to only create one or the other based on
// the type of nodeling, so instead they both get created and we need to remove the inapplicable one
GraphCanvas::ConnectionType typeToRemove = (functionDefinitionNode->IsExecutionEntry()) ? GraphCanvas::CT_Input : GraphCanvas::CT_Output;
AZ::EntityId graphCanvasNodeId = DisplayGeneralScriptCanvasNode(graphCanvasGraphId, functionDefinitionNode, nodeConfiguration);
AZStd::vector<GraphCanvas::SlotId> extenderSlotIds, executionSlotIds;
GraphCanvas::NodeRequestBus::EventResult(extenderSlotIds, graphCanvasNodeId, &GraphCanvas::NodeRequests::FindVisibleSlotIdsByType, typeToRemove, GraphCanvas::SlotTypes::ExtenderSlot);
if (!extenderSlotIds.empty())
{
GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::RemoveSlot, *extenderSlotIds.begin());
}
GraphCanvas::NodeRequestBus::EventResult(executionSlotIds, graphCanvasNodeId, &GraphCanvas::NodeRequests::FindVisibleSlotIdsByType, typeToRemove, GraphCanvas::SlotTypes::ExecutionSlot);
if (!executionSlotIds.empty())
{
GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::RemoveSlot, *executionSlotIds.begin());
}
return graphCanvasNodeId;
}
AZ::EntityId DisplayNodeling(AZ::EntityId graphCanvasGraphId, const ScriptCanvas::Nodes::Core::Internal::Nodeling* nodeling)
@@ -382,9 +382,9 @@ namespace ScriptCanvasEditor
{
if (const AZ::BehaviorClass* behaviorClass = AZ::BehaviorContextHelper::GetClass(behaviorContext, ScriptCanvas::Data::ToAZType(scType.first)))
{
// BehaviorContext classes with the ExcludeFrom attribute with a value of the ExcludeFlags::Preview are not added to the list of
// BehaviorContext classes with the ExcludeFrom attribute with a value of the ExcludeFlags::All are not added to the list of
// types that can be created in the editor
const AZ::u64 exclusionFlags = AZ::Script::Attributes::ExcludeFlags::Preview;
const AZ::u64 exclusionFlags = AZ::Script::Attributes::ExcludeFlags::All;
auto excludeClassAttributeData = azrtti_cast<const AZ::Edit::AttributeData<AZ::Script::Attributes::ExcludeFlags>*>(AZ::FindAttribute(AZ::Script::Attributes::ExcludeFrom, behaviorClass->m_attributes));
if (excludeClassAttributeData && (excludeClassAttributeData->Get(nullptr) & exclusionFlags))
{
@@ -371,7 +371,7 @@ namespace ScriptCanvasEditor
while (m_ui->typeSelectionFrame->layout()->count() > 0)
{
QLayoutItem* layoutItem = m_ui->typeSelectionFrame->layout()->takeAt(0);
m_ui->typeSelectionFrame->layout()->takeAt(0);
}
for (ContainerTypeLineEdit* lineEdit : m_containerTypeLineEdit)
@@ -621,4 +621,4 @@ namespace ScriptCanvasEditor
}
}
#include <Editor/View/Dialogs/ContainerWizard/moc_ContainerWizard.cpp>
#include <Editor/View/Dialogs/ContainerWizard/moc_ContainerWizard.cpp>
@@ -89,7 +89,7 @@ namespace
AZ::Uuid type = dataModel->data(index, CommandListDataModel::CustomRole::Types).value<AZ::Uuid>();
const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(type);
[[maybe_unused]] const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(type);
AZ_Assert(classData, "Failed to find ClassData for ID: %s", type.ToString<AZStd::string>().data());
ScriptCanvasEditor::Nodes::StyleConfiguration styleConfiguration;
@@ -131,7 +131,6 @@ namespace ScriptCanvasEditor
{
ExecutionLogTreeItem* treeItem = nullptr;
bool signalChanged = false;
if (m_updatePolicy == UpdatePolicy::Batched)
{
if (!m_additionTimer.isActive())
@@ -254,8 +254,6 @@ namespace ScriptCanvasEditor
QAbstractItemModel* model = sourceModel();
QModelIndex index = model->index(sourceRow, PivotTreeItem::Column::Name, sourceParent);
PivotTreeItem* basePivotTreeItem = static_cast<PivotTreeItem*>(index.internalPointer());
QString test = model->data(index, Qt::DisplayRole).toString();
bool showRow = test.lastIndexOf(m_filterRegex) >= 0;
@@ -70,17 +70,6 @@ namespace
return false;
}
// Used for changing the node's style to identify as a preview node.
bool IsPreviewNode(const AZ::Edit::AttributeData<AZ::Script::Attributes::ExcludeFlags>* excludeAttributeData)
{
if (excludeAttributeData)
{
return (static_cast<AZ::u64>(excludeAttributeData->Get(nullptr)) & AZ::Script::Attributes::ExcludeFlags::Preview) != 0; // warning C4800: 'AZ::u64': forcing value to bool 'true' or 'false' (performance warning)
}
return false;
}
bool HasExcludeFromNodeListAttribute(const AZ::SerializeContext* serializeContext, const AZ::Uuid& typeId)
{
const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(typeId);
@@ -200,6 +189,11 @@ namespace
return;
}
if (!AZ::Internal::IsInScope(behaviorMethod.m_attributes, AZ::Script::Attributes::ScopeFlags::Common))
{
return; // skip this method
}
// If the reflected method returns an AZ::Event, reflect it to the SerializeContext
if (AZ::MethodReturnsAzEventByReferenceOrPointer(behaviorMethod))
{
@@ -306,7 +300,6 @@ namespace
{
ScriptCanvasEditor::CategoryInformation categoryInfo;
bool isDeprecated = false;
AZStd::string categoryPath = classData->m_editData ? classData->m_editData->m_name : classData->m_name;
if (classData->m_editData)
@@ -345,8 +338,6 @@ namespace
// Children
for (auto& node : ScriptCanvas::Library::LibraryDefinition::GetNodes(classData->m_typeId))
{
GraphCanvas::NodePaletteTreeItem* nodeParent = nullptr;
if (HasExcludeFromNodeListAttribute(&serializeContext, node.first))
{
continue;
@@ -391,7 +382,6 @@ namespace
void PopulateVariablePalette()
{
auto dataRegistry = ScriptCanvas::GetDataRegistry();
const auto& typeIdTraitMap = dataRegistry->m_typeIdTraitMap;
for (auto& type : dataRegistry->m_creatableTypes)
{
@@ -454,14 +444,23 @@ namespace
continue;
}
if (behaviorProperty->m_getter)
if (behaviorProperty->m_getter && !behaviorProperty->m_setter)
{
RegisterGlobalMethod(nodePaletteModel, behaviorContext, *behaviorProperty->m_getter);
nodePaletteModel.RegisterGlobalConstant(behaviorContext, *behaviorProperty->m_getter);
}
if (behaviorProperty->m_setter)
else
{
RegisterGlobalMethod(nodePaletteModel, behaviorContext, *behaviorProperty->m_setter);
if (behaviorProperty->m_getter)
{
RegisterGlobalMethod(nodePaletteModel, behaviorContext, *behaviorProperty->m_getter);
}
if (behaviorProperty->m_setter)
{
RegisterGlobalMethod(nodePaletteModel, behaviorContext, *behaviorProperty->m_setter);
}
}
}
}
@@ -956,10 +955,6 @@ namespace ScriptCanvasEditor
customNodeInformation->m_displayName = name;
bool isToolTipSet(false);
bool isMissingEntry(false);
bool isMissingTooltip(false);
bool isDeprecated(false);
if (classData && classData->m_editData && classData->m_editData->m_name)
@@ -1105,6 +1100,48 @@ namespace ScriptCanvasEditor
}
}
void NodePaletteModel::RegisterGlobalConstant(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod)
{
// Construct Node Identifier using the BehaviorMethod name and the ScriptCanvas Method typeid
ScriptCanvas::NodeTypeIdentifier nodeIdentifier =
ScriptCanvas::NodeUtils::ConstructGlobalMethodNodeIdentifier(behaviorMethod.m_name);
// Register the methodModelInformation if not already registered
if (auto registerIter = m_registeredNodes.find(nodeIdentifier); registerIter == m_registeredNodes.end())
{
auto methodModelInformation = AZStd::make_unique<GlobalMethodNodeModelInformation>();
methodModelInformation->m_methodName = behaviorMethod.m_name;
methodModelInformation->m_nodeIdentifier = nodeIdentifier;
methodModelInformation->m_titlePaletteOverride = "MethodNodeTitlePalette";
methodModelInformation->m_displayName = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName,
TranslationItemType::Node, TranslationKeyId::Name);
methodModelInformation->m_toolTip = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName,
TranslationItemType::Node, TranslationKeyId::Tooltip);
methodModelInformation->m_categoryPath = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName,
TranslationItemType::Node, TranslationKeyId::Category);
if (methodModelInformation->m_displayName.empty())
{
methodModelInformation->m_displayName = methodModelInformation->m_methodName;
}
if (methodModelInformation->m_categoryPath.empty())
{
methodModelInformation->m_categoryPath = GetCategoryPath(behaviorMethod.m_attributes, behaviorContext);
// Default to making the Category for Global Methods to be informative that the method
// is registered with the Behavior Context
if (methodModelInformation->m_categoryPath.empty())
{
methodModelInformation->m_categoryPath = "Constants";
}
}
m_registeredNodes.emplace(nodeIdentifier, methodModelInformation.release());
}
}
void NodePaletteModel::RegisterMethodNode(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod)
{
// Construct Node Identifier using the BehaviorMethod name and the ScriptCanvas Method typeid
@@ -85,6 +85,7 @@ namespace ScriptCanvasEditor
void RegisterCustomNode(AZStd::string_view categoryPath, const AZ::Uuid& uuid, AZStd::string_view name, const AZ::SerializeContext::ClassData* classData);
void RegisterClassNode(const AZStd::string& categoryPath, const AZStd::string& methodClass, const AZStd::string& methodName, const AZ::BehaviorMethod* behaviorMethod, const AZ::BehaviorContext* behaviorContext, bool isOverload);
void RegisterMethodNode(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod);
void RegisterGlobalConstant(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod);
void RegisterEBusHandlerNodeModelInformation(AZStd::string_view categoryPath, AZStd::string_view busName, AZStd::string_view eventName, const ScriptCanvas::EBusBusId& busId, const AZ::BehaviorEBusHandler::BusForwarderEvent& forwardEvent);
void RegisterEBusSenderNodeModelInformation(AZStd::string_view categoryPath, AZStd::string_view busName, AZStd::string_view eventName, const ScriptCanvas::EBusBusId& busId, const ScriptCanvas::EBusEventId& eventId, const AZ::BehaviorEBusEventSender& eventSender, bool isOverload);
@@ -158,8 +158,10 @@ namespace ScriptCanvasEditor
}
const ScriptEvents::ScriptEvent& definition = data->m_definition;
#if defined(AZ_ENABLE_TRACING)
bool recategorize = previousDefinition ? definition.GetCategory().compare(previousDefinition->GetCategory()) != 0 : false;
#endif
AZ_Warning("ScriptCanvas", !recategorize, "Unable to recategorize ScriptEvents events while open. Please close and re-open the Script Canvas Editor to see the new categorization");
if (definition.GetName().empty())
@@ -746,7 +746,9 @@ namespace ScriptCanvasEditor
{
break;
}
} while (componentNode = componentNode->GetParent());
componentNode = componentNode->GetParent();
}
while (componentNode);
if (!componentNode)
{
@@ -83,8 +83,6 @@ namespace ScriptCanvasEditor
ScriptCanvasRootPaletteTreeItem* root = aznew ScriptCanvasRootPaletteTreeItem(nodePaletteModel, assetModel);
{
GraphCanvas::NodePaletteTreeItem* utilitiesRoot = root->GetCategoryNode("Utilities");
GraphCanvas::NodePaletteTreeItem* variablesRoot = root->CreateChildNode<LocalVariablesListNodePaletteTreeItem>("Variables");
root->RegisterCategoryNode(variablesRoot, "Variables");
@@ -605,7 +603,6 @@ namespace ScriptCanvasEditor
AZStd::vector<const ScriptCanvas::Grammar::In*> onNodeIns;
AZStd::vector<const ScriptCanvas::Grammar::In*> pureIns;
auto onNodeParent = parent;
auto pureParent = functionCategory;
for (auto& in : ins)
@@ -769,8 +766,6 @@ namespace ScriptCanvasEditor
AZStd::unordered_set< ScriptCanvas::VariableId > variableSet;
GraphCanvas::NodePaletteWidget* paletteWidget = GetNodePaletteWidget();
QModelIndexList indexList = GetTreeView()->selectionModel()->selectedRows();
if (indexList.size() == 1)
@@ -626,7 +626,6 @@ namespace ScriptCanvasEditor
QMimeData* GraphVariablesModel::mimeData(const QModelIndexList &indexes) const
{
QMimeData* mimeData = nullptr;
GraphCanvas::GraphCanvasMimeContainer container;
bool isSet = ((QApplication::keyboardModifiers() & Qt::Modifier::ALT) != 0);
@@ -197,6 +197,7 @@ namespace ScriptCanvasEditor
const AZStd::unordered_map<ScriptCanvas::VariableId, ScriptCanvas::GraphVariable>* properties = nullptr;
ScriptCanvas::GraphVariableManagerRequestBus::EventResult(properties, m_scriptCanvasId, &ScriptCanvas::GraphVariableManagerRequests::GetVariables);
int numInUse = 0;
if (properties)
{
for (const auto& variablePair : (*properties))
@@ -205,7 +206,7 @@ namespace ScriptCanvasEditor
if (testName.compare(variablePair.second.GetVariableName()) == 0)
{
nameInUse = true;
break;
++numInUse;
}
}
}
@@ -214,7 +215,7 @@ namespace ScriptCanvasEditor
if (nameInUse)
{
m_slotName.append(" (duplicate)");
m_slotName.append(AZStd::string::format(" (%d)", numInUse));
ui->slotName->setText(m_slotName.c_str());
}
}
@@ -1174,6 +1174,8 @@ namespace ScriptCanvasEditor
}
else
{
delete m_slotTypeSelector;
return false;
}
@@ -3973,7 +3975,6 @@ namespace ScriptCanvasEditor
if (mimeEvent)
{
bool isValid = false;
NodeIdPair finalNode = ProcessCreateNodeMimeEvent(mimeEvent, graphCanvasGraphId, AZ::Vector2(aznumeric_cast<float>(scenePoint.x()), aznumeric_cast<float>(scenePoint.y())));
if (finalNode.m_graphCanvasId.IsValid())
@@ -4225,7 +4226,6 @@ namespace ScriptCanvasEditor
if (mimeEvent)
{
bool isValid = false;
NodeIdPair finalNode = ProcessCreateNodeMimeEvent(mimeEvent, graphCanvasGraphId, AZ::Vector2(aznumeric_cast<float>(scenePoint.x()), aznumeric_cast<float>(scenePoint.y())));
GraphCanvas::Endpoint sourceEndpoint;
@@ -278,7 +278,6 @@ namespace ScriptCanvasEditor
if (GraphCanvas::GraphUtils::IsSlot(m_targetId))
{
bool isDataSlot = false;
GraphCanvas::SlotType slotType = GraphCanvas::SlotTypes::Invalid;
GraphCanvas::SlotRequestBus::EventResult(slotType, m_targetId, &GraphCanvas::SlotRequests::GetSlotType);
@@ -786,7 +785,6 @@ namespace ScriptCanvasEditor
if (GraphCanvas::GraphUtils::IsSlot(targetId))
{
// Extract the GraphCanvas Slot Type and complete endpoint from using the targetId
bool isDataSlot{};
GraphCanvas::SlotType slotType = GraphCanvas::SlotTypes::Invalid;
GraphCanvas::Endpoint endpoint;
auto GetGraphCanvasEndpoint = [&slotType, &endpoint](GraphCanvas::SlotRequests* slotRequests)
@@ -668,8 +668,6 @@ namespace ScriptCanvasEditor
AZ_Assert(graphComponent, "The Script Canvas entity must have a Graph component");
bool isLatest = graphComponent->GetVersion().IsLatest();
bool onlyShowOutdatedGraphs = m_ui->onlyShowOutdated->isChecked();
if (onlyShowOutdatedGraphs && graphComponent->GetVersion().IsLatest())
@@ -837,7 +835,6 @@ namespace ScriptCanvasEditor
const QTextCursor oldCursor = m_ui->textEdit->textCursor();
QScrollBar* scrollBar = m_ui->textEdit->verticalScrollBar();
const int oldScrollValue = scrollBar->value();
bool scrolledOffBottom = oldScrollValue != scrollBar->maximum();
m_ui->textEdit->moveCursor(QTextCursor::End);
QTextCursor textCursor = m_ui->textEdit->textCursor();