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
@@ -100,7 +100,7 @@ namespace ScriptCanvasBuilder
// or the fingerprint of the individual job is different.
size_t fingerprint = ScriptCanvas::BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
builderDescriptor.m_analysisFingerprint = AZStd::string(m_scriptCanvasBuilder.GetFingerprintString())
.append(AZStd::string::format("|%lu", static_cast<uint64_t>(fingerprint)));
.append(AZStd::string::format("|%zu", fingerprint));
builderDescriptor.AddFlags(AssetBuilderSDK::AssetBuilderDesc::BF_DeleteLastKnownGoodProductOnFailure, s_scriptCanvasProcessJobKey);
builderDescriptor.m_productsToKeepOnFailure[s_scriptCanvasProcessJobKey] = { AZ_CRC("SubgraphInterface", 0xdfe6dc72) };
m_scriptCanvasBuilder.BusConnect(builderDescriptor.m_busId);
@@ -329,7 +329,7 @@ namespace ScriptCanvasBuilder
}
nodeLookUpMap.erase(nodePair.second->GetId());
size_t eraseCount = compiledGraphData.m_nodes.erase(nodePair.second);
[[maybe_unused]] size_t eraseCount = compiledGraphData.m_nodes.erase(nodePair.second);
AZ_Assert(eraseCount == 1, "Failed to erase node from compiled graph data");
delete node;
@@ -298,7 +298,6 @@ namespace ScriptCanvasBuilder
if (saveRuntimAssetOutcome.IsSuccess())
{
// \todo this file is only required on PC editor builds, cull it in packaging, here or wherever appropriate
ScriptCanvasEditor::ScriptCanvasFunctionDataComponent* sourceDataComponent = asset.Get()->GetFunctionData();
AzFramework::StringFunc::Path::StripExtension(fileNameOnly);
ScriptCanvas::SubgraphInterfaceData functionInterface;
@@ -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();
@@ -75,7 +75,8 @@ public: \
void ConfigureSlots() override; \
bool RequiresDynamicSlotOrdering() const override; \
bool IsDeprecated() const override; \
{% if deprecationUuid is defined %}NodeConfiguration GetReplacementNodeConfiguration() const override; \ {% endif %}
{% if deprecationUuid is defined %} NodeConfiguration GetReplacementNodeConfiguration() const override; \
{% endif %}
using Node::FindDatum; \
{% if Class.attrib['GraphEntryPoint'] is defined %} bool IsEntryPoint() const override { return {%if Class.attrib['GraphEntryPoint'] == True %}true{%else%}false{%endif%}; } \
{% endif %}
@@ -176,10 +176,10 @@ bool {{ Class.attrib['QualifiedName'] }}::IsDeprecated() const
{% set deprecationUuid = Class.attrib['DeprecationUUID'] %}
{% if deprecationUuid is defined %}
NodeConfiguration {{ Class.attrib['QualifiedName'] }}::GetReplacementNodeConfiguration() const
ScriptCanvas::NodeConfiguration {{ Class.attrib['QualifiedName'] }}::GetReplacementNodeConfiguration() const
{
ScriptCanvas::NodeConfiguration nodeConfig{};
nodeConfig.m_type = AZ::Uuid({{ deprecationUuid }});
nodeConfig.m_type = AZ::Uuid("{{ deprecationUuid }}");
{% if Class.attrib['ReplacementMethodName'] is defined %}
nodeConfig.m_methodName = "{{Class.attrib['ReplacementMethodName']}}";
{% endif %}
@@ -1274,7 +1274,6 @@ namespace ScriptCanvas
if (classIter != behaviorContext->m_typeToClassMap.end())
{
BehaviorContextObjectPtr sourceObjectPtr = (*AZStd::any_cast<BehaviorContextObjectPtr>(&source.m_storage));
auto anyCastResult = AZStd::any_cast<BehaviorContextObjectPtr>(&m_storage);
BehaviorContextObjectPtr newObjectPtr = sourceObjectPtr->CloneObject((*classIter->second));
m_storage = AZStd::move(newObjectPtr);
BehaviorContextObjectPtr newSourceObjectPtr = (*AZStd::any_cast<BehaviorContextObjectPtr>(&m_storage));
@@ -119,7 +119,6 @@ namespace ScriptCanvas
void AddMethodOutputSlot(const MethodOutputConfig& outputConfig)
{
const AZ::BehaviorMethod& method = outputConfig.config.m_method;
const AZ::BehaviorClass* bcClass = outputConfig.config.m_class;
// check for checked operation
if (auto checkOpAttribute = AZ::FindAttribute(AZ::ScriptCanvasAttributes::CheckedOperation, method.m_attributes))
@@ -1893,7 +1893,6 @@ namespace ScriptCanvas
if (slotIter != m_slotIdIteratorCache.end())
{
Slot* slot = &(*slotIter->second.m_slotIterator);
if (slotIter->second.HasDatum())
{
@@ -2562,13 +2561,14 @@ namespace ScriptCanvas
for (Slot& slot : m_slots)
{
if (slot.IsDynamicSlot())
if (!slot.IsUserAdded() && slot.IsDynamicSlot())
{
AZ::Crc32 group = slot.GetDynamicGroup();
if (group == AZ::Crc32())
{
auto connectedDisplayType = FindConnectedConcreteDisplayType(slot, exploredGroupCache);
if (!connectedDisplayType.IsValid())
{
slot.ClearDisplayType();
@@ -975,7 +975,7 @@ protected:
virtual void OnInputSignal(const SlotId& /*slot*/) {}
//! Signal sent once the OwningScriptCanvasId is set.
virtual void OnGraphSet() {};
virtual void OnGraphSet() {}
//! Signal sent when a Dynamic Group Display type is changed
void SignalSlotDisplayTypeChanged(const SlotId& slotId, const Data::Type& dataType);
@@ -368,6 +368,7 @@ namespace ScriptCanvas
void NodeableNodeOverloaded::CheckHasSingleOuts()
{
#if defined(AZ_ENABLE_TRACING)
auto& slotExecutionMap = *GetSlotExecutionMap();
auto& ins = slotExecutionMap.GetIns();
@@ -378,6 +379,7 @@ namespace ScriptCanvas
// TODO: Append debugging information
AZ_Error("ScriptCanvas", in.outs.size() <= 1, "Unable to resolve Overloaded Nodeable with multiple outs for a single method.");
}
#endif
}
void NodeableNodeOverloaded::UpdateSlotDisplay()
@@ -449,7 +451,6 @@ namespace ScriptCanvas
NodeableMethodOverloadContractInterface* contractInterface = aznew NodeableMethodOverloadContractInterface((*this), methodIndex);
m_methodOverloadContractInterface.emplace_back(contractInterface);
const OverloadConfiguration& baseConfiguration = (*m_methodConfigurations.begin());
const auto& currentIn = executionIns[methodIndex];
@@ -867,9 +868,6 @@ namespace ScriptCanvas
{
if (outputDataIter->second.contains(dataType))
{
const OverloadConfiguration& overloadConfiguration = m_methodConfigurations[methodIndex];
size_t startIndex = NodeableNodeOverloadedCpp::AdjustForHiddenNodeableThisPointer(overloadConfiguration, 0);
DataIndexMapping inputMapping;
DataIndexMapping outputMapping;
@@ -840,7 +840,6 @@ namespace ScriptCanvas
}
AZ::Outcome<void, AZStd::string> failureReason;
bool contractsAllowType = true;
for (const auto& contract : m_contracts)
{
@@ -170,7 +170,8 @@ namespace ScriptCanvas
parameters.push_back(bvp);
}
for (const auto& entityId : runtimeData.m_input.m_entityIds)
const size_t entityIdSize = runtimeData.m_input.m_entityIds.size();
for (size_t i = 0; i < entityIdSize; ++i)
{
AZ::BehaviorValueParameter bvp;
bvp.m_typeId = azrtti_typeid<Data::EntityIDType>();
@@ -412,7 +412,7 @@ namespace ScriptCanvas
AZ_Assert(lua_isuserdata(lua, -2) && !lua_islightuserdata(lua, -2), "Error in compiled lua file, 1st argument to OverrideNodeableMetatable is not userdata (Nodeable)");
AZ_Assert(lua_istable(lua, -1), "Error in compiled lua file, 2nd argument to OverrideNodeableMetatable is not a Lua table");
auto userData = reinterpret_cast<AZ::LuaUserData*>(lua_touserdata(lua, -2));
[[maybe_unused]] auto userData = reinterpret_cast<AZ::LuaUserData*>(lua_touserdata(lua, -2));
AZ_Assert(userData && userData->magicData == AZ_CRC_CE("AZLuaUserData"), "this isn't user data");
// Lua: LuaUserData::nodeable, class_mt
lua_newtable(lua);
@@ -189,7 +189,7 @@ namespace ScriptCanvas
void OutInterpretedUserSubgraph::operator()(AZ::BehaviorValueParameter* /*resultBVP*/, AZ::BehaviorValueParameter* /*argsBVPs*/, int argsCount)
{
// Lua: executionState, outKey, args...
auto behaviorContext = AZ::ScriptContext::FromNativeContext(m_lua)->GetBoundContext();
/*auto behaviorContext =*/ AZ::ScriptContext::FromNativeContext(m_lua)->GetBoundContext();
lua_rawgeti(m_lua, LUA_REGISTRYINDEX, m_lambdaRegistryIndex);
// Lua: executionState, outKey, args..., lambda
lua_remove(m_lua, 1);
@@ -1497,7 +1497,6 @@ namespace ScriptCanvas
while (outputSource)
{
AZ::s32 firstFoundIndex = 0;
// check every connected SC Node
for (const auto& scNodeAndOutputSlot : scriptCanvasNodesConnectedToInput)
{
@@ -2612,7 +2611,6 @@ namespace ScriptCanvas
void AbstractCodeModel::ParseConstructionInputVariables()
{
AZ::SerializeContext* serializeContext = AZ::EntityUtils::GetApplicationSerializeContext();
AZStd::vector<AZStd::pair<AZ::EntityId, Nodeable*>> nodeablesById;
AZStd::vector<VariableId> inputVariableIds;
AZStd::unordered_map<VariableId, Grammar::VariableConstPtr> inputVariablesById;
@@ -4636,7 +4634,6 @@ namespace ScriptCanvas
NodelingInParserIterationListener listener;
TraverseTree(root, listener);
auto& leavesWithoutNodelings = listener.GetLeavesWithoutNodelings();
auto& outCalls = listener.GetOutCalls();
AZStd::unordered_set<const ScriptCanvas::Nodes::Core::FunctionDefinitionNode*> uniqueNodelingsOut = listener.GetNodelingsOut();
// determine the the execution topology can be reduced to single function call with a single return point to graph execution
const UserInParseTopologyResult result = ParseUserInTolopology(uniqueNodelingsOut.size(), leavesWithoutNodelings.size());
@@ -76,7 +76,6 @@ namespace ScriptCanvas::Nodes::Core
}
// Store the name of the event in the AzEventEntry structure
Slot* onEventSlot = AzEventHandlerProperty::GetOnEventSlot(this);
m_azEventEntry.m_eventName = AZStd::move(behaviorAzEventDesc.m_eventName);
// Add a DataSlot which accepts the aliased AZ::Event<Params...> type by reference;
@@ -24,8 +24,6 @@ namespace ScriptCanvas
{
bool IsFunctionCallNodeOutOfDate(const IsFunctionCallOutOfDateConfig& config)
{
bool changedToNodeable = false;
if (Grammar::IsFunctionSourceIdNodeable(config.sourceId))
{
const bool latestIsNodeable = config.latestInterface.IsUserNodeable();
@@ -643,7 +643,6 @@ namespace ScriptCanvas
ScriptCanvas::Data::Type dataType = (*inputDataTypeIter->second.begin());
SlotId slotId = m_orderedInputSlotIds[inputIndex];
Slot* slot = GetSlot(slotId);
auto isValidType = SlotAcceptsType(slotId, dataType);
@@ -670,7 +669,6 @@ namespace ScriptCanvas
ScriptCanvas::Data::Type dataType = (*outputDataTypeIter->second.begin());
SlotId slotId = m_outputSlotIds[outputIndex];
Slot* slot = GetSlot(slotId);
auto isValidType = SlotAcceptsType(slotId, dataType);
@@ -8,6 +8,7 @@
Base="ScriptCanvas::Nodes::Internal::BaseTimerNode"
Icon="Editor/Icons/ScriptCanvas/Placeholder.png"
Deprecated="This node is deprecated"
DeprecationUUID="{AB587027-2270-4CA6-242F-6069C6D9BBB6}"
Category="Utilities"
Version="3"
VersionConverter="ScriptCanvas::VersionConverters::RepeaterVersionConverter"
@@ -366,7 +366,7 @@ namespace ScriptCanvas
}
ScriptEvents::Method scriptEventMethod;
bool methodFound = definition.FindMethod(method->m_name, scriptEventMethod);
definition.FindMethod(method->m_name, scriptEventMethod);
size_t argIndex = 0;
@@ -471,7 +471,6 @@ namespace ScriptCanvas
if (asset && asset.IsReady())
{
const ScriptEvents::ScriptEvent& definition = asset.Get()->m_definition;
const AZStd::string& name = definition.GetName();
AZ::BehaviorMethod* method{};
if (m_version != definition.GetVersion())
@@ -74,8 +74,7 @@ namespace ScriptCanvas
{
m_variableView.AssignToDatum((*sourceDatum));
const Datum* variableDatum = m_variableView.GetDatum();
SC_EXECUTION_TRACE_VARIABLE_CHANGE((m_variableId), (CreateVariableChange((*variableDatum), m_variableId)));
SC_EXECUTION_TRACE_VARIABLE_CHANGE((m_variableId), (CreateVariableChange((*m_variableView.GetDatum()), m_variableId)));
}
Slot* resultSlot = GetSlot(m_variableDataOutSlotId);
@@ -8,6 +8,7 @@
Base="ScriptCanvas::Node"
Category="Entity/Transform"
Version="4"
Deprecated="true"
EditAttributes="AZ::Edit::Attributes::CategoryStyle@.method;ScriptCanvas::Attributes::Node::TitlePaletteOverride@MethodNodeTitlePalette"
GeneratePropertyFriend="True"
Description="Rotates the given entity by the specified amount.">
@@ -224,7 +224,6 @@ namespace ScriptCanvas
{
for (auto pairIter = m_weightedPairings.begin(); pairIter != m_weightedPairings.end(); ++pairIter)
{
const WeightedPairing& weightedPairing = (*pairIter);
if (pairIter->m_executionSlotId == slotId
|| pairIter->m_weightSlotId == slotId)
@@ -9,6 +9,9 @@
Category="Containers"
Version="0"
GeneratePropertyFriend="True"
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Get Element"
Description="Returns the element at the specified Index or Key">
<Out Name="Key Not Found" Description="Triggered if the specified key was not found"/>
</Class>
@@ -8,6 +8,8 @@
Base="ScriptCanvas::Nodes::Operators::OperatorBase"
Category="Containers"
Version="0"
Description="Retrieves the last element in the container">
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
Description="Get Last Element">
</Class>
</ScriptCanvas>
@@ -10,8 +10,11 @@
Version="1"
VersionConverter="OperatorClearVersionConverter"
GeneratePropertyFriend="True"
Description="Eliminates all the elements in the container">
<In Name="In" Description=""/>
Deprecated="True"
Description="Eliminates all the elements in the container"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Clear All Elements">
<In Name="In" Description=""/>
<Out Name="Out" Description=""/>
<DynamicDataSlot Name="Source"
Description="The container to be cleared from the node."
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="OperatorEmptyVersionConverter"
GeneratePropertyFriend="True"
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Is Empty"
Description="Returns whether the container is empty">
<In Name="In" Description=""/>
<Out Name="Out" Description=""/>
@@ -8,6 +8,9 @@
Base="ScriptCanvas::Nodes::Operators::OperatorBase"
Category="Containers"
Version="1"
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Erase"
GeneratePropertyFriend="True"
Description="Erase the element at the specified Index or with the specified Key">
<Out Name="Element Not Found" Description="Triggered if the specified element was not found"/>
@@ -8,6 +8,9 @@
Base="ScriptCanvas::Nodes::Operators::OperatorBase"
Category="Containers"
Version="0"
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Get First Element"
Description="Retrieves the first element in the container">
</Class>
</ScriptCanvas>
@@ -8,6 +8,9 @@
Base="ScriptCanvas::Nodes::Operators::OperatorBase"
Category="Containers"
Version="0"
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Insert"
Description="Inserts an element into the container at the specified Index or Key">
</Class>
</ScriptCanvas>
@@ -8,6 +8,9 @@
Base="ScriptCanvas::Nodes::Operators::OperatorBase"
Category="Containers"
Version="0"
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Add Element at End"
Description="Adds the provided element at the end of the container">
</Class>
</ScriptCanvas>
@@ -8,6 +8,9 @@
Base="ScriptCanvas::Node"
Category="Containers"
Version="1"
Deprecated="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Get Size"
VersionConverter="OperatorSizeVersionConverter"
GeneratePropertyFriend="True"
Description="Get the number of elements in the specified container">
@@ -96,7 +96,6 @@ namespace ScriptCanvas
const SlotId inSlotId = OperatorSizeProperty::GetInSlotId(this);
if (slotId == inSlotId)
{
bool pushedSize = false;
SlotId sourceSlotId = OperatorSizeProperty::GetSourceSlotId(this);
SlotId sizeSlotId = OperatorSizeProperty::GetSizeSlotId(this);
@@ -115,7 +114,6 @@ namespace ScriptCanvas
// Index
Datum sizeResult = sizeOutcome.TakeValue();
const size_t* sizePtr = sizeResult.GetAs<size_t>();
PushOutput(sizeResult, *GetSlot(sizeSlotId));
}
@@ -8,6 +8,9 @@
Base="ScriptCanvas::Node"
Category="Math"
Version="1"
Deprecated="True"
DrecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Divide by Number (/)"
VersionConverter="OperatorDivideByNumberVersionConverter"
GeneratePropertyFriend="True"
Description="Divides certain types by a given number">
@@ -8,6 +8,9 @@
Base="ScriptCanvas::Node"
Category="Math"
Version="1"
Deprecated="True"
DrecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementMethodName="Length"
VersionConverter="OperatorLengthConverter"
GeneratePropertyFriend="True"
Description="Given a vector this returns the magnitude (length) of the vector. For a quaternion, magnitude is the cosine of half the angle of rotation.">
@@ -2,12 +2,14 @@
<ScriptCanvas Include="Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.h" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Class Name="LerpBetween"
QualifiedName="ScriptCanvas::Nodes::LerpBetween"
PreferredClassName="Lerp Between"
QualifiedName="ScriptCanvas::Nodes::LerpBetween"
PreferredClassName="Lerp Between"
Uuid="{58AF538D-021A-4D0C-A3F1-866C2FFF382E}"
Base="ScriptCanvas::Node"
Category="Math"
Version="1"
Deprecated="True"
DreprecationUUID="{A4CFB2F2-4045-47ED-AE73-ED60C2072EE4}"
GeneratePropertyFriend="True"
Description="Performs a lerp between the two specified sources using the speed specified or in the amount of time specified, or the minimum of the two">
<In Name="In" Description=""/>
@@ -7,6 +7,12 @@
Uuid="{8481E892-DE37-4CCF-86AA-E4770DE90643}"
Base="ScriptCanvas::Node"
Category="String"
Deprecated="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassName="String"
ReplacementMethodName="Contains String"
Version="0"
GeneratePropertyFriend="True"
Description="Checks if a string contains an instance of a specified string, if true, it returns the index to the first instance matched.">
@@ -8,6 +8,10 @@
Base="ScriptCanvas::Node"
Category="String"
Version="0"
Deprecated="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassName="String"
ReplacementMethodName="Replace"
GeneratePropertyFriend="True"
Description="Allows replacing a substring from a given string.">
<In Name="In" Description="Input signal"/>
@@ -8,6 +8,10 @@
Base="ScriptCanvas::Node"
Category="String"
Version="0"
Deprecated="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassName="String"
ReplacementMethodName="Starts With"
GeneratePropertyFriend="True"
Description=".">
<In Name="In" Description="Input signal"/>
@@ -36,6 +40,10 @@
Uuid="{6C1CECA6-C155-4ED5-96BC-1D4F11C7A0FE}"
Base="ScriptCanvas::Node"
Category="String"
Deprecated="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassName="String"
ReplacementMethodName="Ends With"
Version="0"
GeneratePropertyFriend="True"
Description=".">
@@ -66,6 +74,10 @@
Base="ScriptCanvas::Node"
Category="String"
Version="0"
Deprecated="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassName="String"
ReplacementMethodName="Split"
GeneratePropertyFriend="True"
Description=".">
<In Name="In" Description="Input signal"/>
@@ -94,6 +106,10 @@
Base="ScriptCanvas::Node"
Category="String"
Version="0"
Deprecated="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassName="String"
ReplacementMethodName="Join"
GeneratePropertyFriend="True"
Description=".">
<In Name="In" Description="Input signal"/>
@@ -8,6 +8,7 @@
Base="ScriptCanvas::Nodes::Internal::BaseTimerNode"
GeneratePropertyFriend="True"
Deprecated="This node has been deprecated in favor of the nodeable form"
DeprecationUUID="{D3629902-02E9-AE59-0424-F366D342B433}"
Description="Delays all incoming execution for the specified number of ticks">
<In Name="In" Description="When signaled, execution is delayed at this node for the specified amount of times." Contracts="DisallowReentrantExecutionContract"/>
<OutLatent Name="Out" Description="Signaled after waiting for the specified amount of times."/>
@@ -18,6 +19,7 @@
Uuid="{399A2608-77E3-41F9-90FA-58A9B6E0E34D}"
Base="ScriptCanvas::Node"
GeneratePropertyFriend="True"
DeprecationUUID="{D3629902-02E9-AE59-0424-F366D342B433}"
Deprecated="This node has been deprecated in favor of the nodeable form"
Description="Delays all incoming execution for the specified number of ticks">
<In Name="In" Description="When signaled, execution is delayed at this node for the specified amount of frames." Contracts="DisallowReentrantExecutionContract"/>
@@ -41,6 +43,7 @@
Uuid="{FAEADF5A-F7D9-415A-A3E8-F534BD379B9A}"
Base="ScriptCanvas::Node"
Version="3"
DeprecationUUID="{233C84A7-44DE-A948-D65C-46C11F1F7162}"
Deprecated="This node has been deprecated in favor of the nodeable form"
VersionConverter="ScriptCanvas::VersionConverters::DelayVersionConverter"
GeneratePropertyFriend="True"
@@ -9,6 +9,7 @@
Version="2"
VersionConverter="ScriptCanvas::VersionConverters::DurationVersionConverter"
GeneratePropertyFriend="True"
DeprecationUUID="{CCF1F41F-39C2-C847-9D9E-0155C8B46E1C}"
Deprecated="This node has been deprecated in favor of the nodeable form"
Description="Triggers a signal every frame during the specified duration.">
<In Name="Start" Description="Starts the countdown"/>
@@ -8,6 +8,7 @@
Base="ScriptCanvas::Nodes::Internal::BaseTimerNode"
Category="Timing"
Version="0"
DeprecationUUID="{E73DB180-A325-763B-A1FE-517B548AF66E}"
Deprecated="This node has been deprecated in favor of the nodeable form"
GeneratePropertyFriend="True"
Description="While active, will signal the output at the given interval.">
@@ -8,6 +8,7 @@
Base="ScriptCanvas::Node"
Version="2"
GeneratePropertyFriend="True"
DeprecationUUID="32A4BEDC-C207-4472-61DE-9A716402620A"
Deprecated="This node has been deprecated in favor of the nodeable form"
Description="Provides a time value.">
<In Name="Start" Description="Starts the timer."/>
@@ -9,8 +9,13 @@
Icon="Editor/Icons/ScriptCanvas/AddFailure.png"
Version="0"
GeneratePropertyFriend="True"
Description="adds a failure directly to the unit testing framework">
<In Name="In" Description="Input signal"/>
Description="adds a failure directly to the unit testing framework"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Add Failure"
>
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
<Property Name="Report"
Description="additional notes for the test report"
@@ -9,6 +9,9 @@
Icon="Editor/Icons/ScriptCanvas/AddSuccess.png"
Version="0"
GeneratePropertyFriend="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Add Success"
Description="adds a success directly to the unit testing framework">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -9,6 +9,9 @@
Icon="Editor/Icons/ScriptCanvas/Checkpoint.png"
Version="0"
GeneratePropertyFriend="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Checkpoint"
Description="Add a progress checkpoint for test debugging">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectComparisonVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect Equal"
Description="Expects lhs equal to rhs">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -81,7 +81,6 @@ namespace ScriptCanvas
return;
}
const auto report = FindDatum(GetSlotId("Report"))->GetAs<Data::StringType>();
switch (lhs->GetType().GetType())
{
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectBooleanVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect False"
Description="Expects a value to be false">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectComparisonVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect Greater Than"
Description="Expects lhs to be greater than rhs">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -81,7 +81,6 @@ namespace ScriptCanvas
return;
}
const auto report = FindDatum(GetSlotId("Report"))->GetAs<Data::StringType>();
switch (lhs->GetType().GetType())
{
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectComparisonVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect Greater Than Equal"
Description="Expects lhs to be greater than rhs">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -81,7 +81,6 @@ namespace ScriptCanvas
return;
}
const auto report = FindDatum(GetSlotId("Report"))->GetAs<Data::StringType>();
switch (lhs->GetType().GetType())
{
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectComparisonVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect Less Than"
Description="Expects lhs to be less than rhs">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -81,7 +81,6 @@ namespace ScriptCanvas
return;
}
const auto report = FindDatum(GetSlotId("Report"))->GetAs<Data::StringType>();
switch (lhs->GetType().GetType())
{
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectComparisonVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect Less Than Equal"
Description="Expects lhs to be greater than rhs">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -81,7 +81,6 @@ namespace ScriptCanvas
return;
}
const auto report = FindDatum(GetSlotId("Report"))->GetAs<Data::StringType>();
switch (lhs->GetType().GetType())
{
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectComparisonVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{C1E3C9D0-42E3-4D00-AE73-2A881E7E76A8}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect Not Equal"
Description="Expects lhs not equal to rhs">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -81,7 +81,6 @@ namespace ScriptCanvas
return;
}
const auto report = FindDatum(GetSlotId("Report"))->GetAs<Data::StringType>();
switch (lhs->GetType().GetType())
{
@@ -10,6 +10,9 @@
Version="1"
VersionConverter="ScriptCanvas::UnitTesting::ExpectBooleanVersioner"
GeneratePropertyFriend="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Expect True"
Description="Expects a value to be true">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -9,6 +9,9 @@
Icon="Editor/Icons/ScriptCanvas/MarkComplete.png"
Version="0"
GeneratePropertyFriend="True"
DeprecationUUID="{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF}"
ReplacementClassname="Unit Testing"
ReplacementMethodName="Mark Complete"
Description="reports that the graph completed to the unit testing framework">
<In Name="In" Description="Input signal"/>
<Out Name="Out" Description=""/>
@@ -846,7 +846,6 @@ namespace ScriptCanvas
{
for (const auto& nameAndEventThread : ebusHandling->m_events)
{
const AZStd::string& eventName = nameAndEventThread.first;
const Grammar::ExecutionTreeConstPtr& eventThread = nameAndEventThread.second;
const bool hasResults = eventThread->HasReturnValues();
@@ -248,16 +248,20 @@ namespace ScriptCanvas
// The method is not in the behaviorContext Global Methods, so check the Global Properties
for (auto [propertyName, behaviorProperty] : behaviorContext->m_properties)
{
if (behaviorProperty->m_getter && behaviorProperty->m_getter->m_name == methodName)
AZStd::string getterName = AZStd::string::format("%s::Getter", methodName.data());
AZStd::string setterName = AZStd::string::format("%s::Setter", methodName.data());
if (behaviorProperty->m_getter && (behaviorProperty->m_getter->m_name == methodName || behaviorProperty->m_getter->m_name == getterName))
{
method = behaviorProperty->m_getter;
break;
}
if (behaviorProperty->m_setter && behaviorProperty->m_setter->m_name == methodName)
if (behaviorProperty->m_setter && (behaviorProperty->m_setter->m_name == methodName || behaviorProperty->m_setter->m_name == setterName))
{
method = behaviorProperty->m_setter;
break;
}
}
if (!method)
@@ -80,6 +80,8 @@ protected:
AZ::ComponentApplication* GetApplication() override { return nullptr; }
void RegisterComponentDescriptor(const AZ::ComponentDescriptor*) override { }
void UnregisterComponentDescriptor(const AZ::ComponentDescriptor*) override { }
void RegisterEntityAddedEventHandler(AZ::EntityAddedEvent::Handler&) override { }
void RegisterEntityRemovedEventHandler(AZ::EntityRemovedEvent::Handler&) override { }
bool AddEntity(AZ::Entity*) override { return true; }
bool RemoveEntity(AZ::Entity*) override { return true; }
bool DeleteEntity(const AZ::EntityId&) override { return true; }
@@ -104,6 +106,7 @@ protected:
m_serializeContext = aznew AZ::SerializeContext(true, true);
AZ::ComponentApplicationBus::Handler::BusConnect();
AZ::Interface<AZ::ComponentApplicationRequests>::Register(this);
m_mockAssetDescriptor = MockAssetRefComponent::CreateDescriptor();
MockAssetRefComponent::Reflect(m_serializeContext);
@@ -121,6 +124,7 @@ protected:
void TearDown() override
{
AZ::Interface<AZ::ComponentApplicationRequests>::Unregister(this);
AZ::ComponentApplicationBus::Handler::BusDisconnect();
AZ::Data::AssetManager::Destroy();