diff --git a/Gems/ScriptCanvas/Code/Asset/EditorAssetConversionBus.h b/Gems/ScriptCanvas/Code/Asset/EditorAssetConversionBus.h index 8e53db20b0..26badc528d 100644 --- a/Gems/ScriptCanvas/Code/Asset/EditorAssetConversionBus.h +++ b/Gems/ScriptCanvas/Code/Asset/EditorAssetConversionBus.h @@ -19,7 +19,6 @@ namespace AZ namespace ScriptCanvas { - class ScriptCanvasFunctionAsset; class RuntimeAsset; class SubgraphInterfaceAsset; } @@ -27,7 +26,6 @@ namespace ScriptCanvas namespace ScriptCanvasEditor { class ScriptCanvasAsset; - class ScriptCanvasFunctionAsset; class EditorAssetConversionBusTraits : public AZ::EBusTraits @@ -36,10 +34,8 @@ namespace ScriptCanvasEditor static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; virtual AZ::Data::Asset LoadAsset(AZStd::string_view graphPath) = 0; - virtual AZ::Data::Asset LoadFunctionAsset(AZStd::string_view graphPath) = 0; virtual AZ::Outcome CreateLuaAsset(const AZ::Data::Asset& editAsset, AZStd::string_view graphPathForRawLuaFile) = 0; virtual AZ::Outcome, AZStd::string> CreateRuntimeAsset(const AZ::Data::Asset& editAsset) = 0; - virtual AZ::Outcome, AZStd::string> CreateFunctionRuntimeAsset(const AZ::Data::Asset& editAsset) = 0; }; using EditorAssetConversionBus = AZ::EBus; diff --git a/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.cpp b/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.cpp index 4b6b7227a4..97bba9b7e6 100644 --- a/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.cpp +++ b/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.cpp @@ -28,8 +28,6 @@ AZ_PUSH_DISABLE_WARNING(4251 4800 4244, "-Wunknown-warning-option") #include AZ_POP_DISABLE_WARNING -#include -#include #include namespace ScriptCanvasEditor @@ -77,7 +75,6 @@ namespace ScriptCanvasEditor void EditorAssetSystemComponent::Activate() { m_editorAssetRegistry.Register(); - m_editorAssetRegistry.Register(); m_editorAssetRegistry.Register(); AzToolsFramework::AssetBrowser::AssetBrowserInteractionNotificationBus::Handler::BusConnect(); @@ -131,30 +128,11 @@ namespace ScriptCanvasEditor } } - AZ::Data::Asset EditorAssetSystemComponent::LoadFunctionAsset(AZStd::string_view graphPath) - { - auto outcome = ScriptCanvasBuilder::LoadEditorFunctionAsset(graphPath); - - if (outcome.IsSuccess()) - { - return outcome.GetValue(); - } - else - { - return {}; - } - } - AZ::Outcome, AZStd::string> EditorAssetSystemComponent::CreateRuntimeAsset(const AZ::Data::Asset& editAsset) { return ScriptCanvasBuilder::CreateRuntimeAsset(editAsset); } - AZ::Outcome, AZStd::string> EditorAssetSystemComponent::CreateFunctionRuntimeAsset(const AZ::Data::Asset& editAsset) - { - return ScriptCanvasBuilder::CreateRuntimeFunctionAsset(editAsset); - } - AZ::Outcome EditorAssetSystemComponent::CreateLuaAsset(const AZ::Data::Asset& editAsset, AZStd::string_view graphPathForRawLuaFile) { return ScriptCanvasBuilder::CreateLuaAsset(editAsset->GetScriptCanvasEntity(), editAsset->GetId(), graphPathForRawLuaFile); diff --git a/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.h b/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.h index 0a8bf830af..4a55a35908 100644 --- a/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.h +++ b/Gems/ScriptCanvas/Code/Asset/EditorAssetSystemComponent.h @@ -22,7 +22,6 @@ namespace ScriptCanvasEditor { class ScriptCanvasAsset; - class ScriptCanvasFunctionAsset; class EditorAssetSystemComponent : public AZ::Component @@ -57,9 +56,7 @@ namespace ScriptCanvasEditor ////////////////////////////////////////////////////////////////////////// // EditorAssetConversionBus::Handler... AZ::Data::Asset LoadAsset(AZStd::string_view graphPath) override; - AZ::Data::Asset LoadFunctionAsset(AZStd::string_view graphPath) override; AZ::Outcome, AZStd::string> CreateRuntimeAsset(const AZ::Data::Asset& editAsset) override; - AZ::Outcome, AZStd::string> CreateFunctionRuntimeAsset(const AZ::Data::Asset& editAsset) override; AZ::Outcome CreateLuaAsset(const AZ::Data::Asset& editAsset, AZStd::string_view graphPathForRawLuaFile) override; ////////////////////////////////////////////////////////////////////////// diff --git a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderComponent.cpp b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderComponent.cpp index c3e5b03041..ea714f356f 100644 --- a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderComponent.cpp +++ b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderComponent.cpp @@ -13,10 +13,8 @@ #include #include #include -#include -#include +#include #include -#include #include #include @@ -50,7 +48,6 @@ namespace ScriptCanvasBuilder SharedHandlers HandleAssetTypes() { SharedHandlers handlers; - handlers.m_editorFunctionAssetHandler = RegisterHandler("scriptcanvas_fn", false); handlers.m_editorAssetHandler = RegisterHandler("scriptcanvas", false); handlers.m_subgraphInterfaceHandler = RegisterHandler("scriptcanvas_fn_compiled", true); handlers.m_runtimeAssetHandler = RegisterHandler("scriptcanvas_compiled", true); @@ -123,7 +120,6 @@ namespace ScriptCanvasBuilder builderDescriptor.m_productsToKeepOnFailure[s_scriptCanvasProcessJobKey] = { AZ_CRC("SubgraphInterface", 0xdfe6dc72) }; AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, builderDescriptor); ScriptCanvas::Grammar::RequestBus::Handler::BusConnect(); - AzToolsFramework::ToolsAssetSystemBus::Broadcast(&AzToolsFramework::ToolsAssetSystemRequests::RegisterSourceAssetType, azrtti_typeid(), ScriptCanvasEditor::ScriptCanvasFunctionAsset::Description::GetFileFilter()); } m_sharedHandlers = HandleAssetTypes(); diff --git a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorker.h b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorker.h index fa6ed17a3c..df432578d4 100644 --- a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorker.h +++ b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorker.h @@ -36,8 +36,8 @@ namespace ScriptCanvasEditor { class Graph; class ScriptCanvasAsset; - class ScriptCanvasFunctionAsset; } + namespace ScriptCanvasBuilder { constexpr const char* s_scriptCanvasBuilder = "ScriptCanvasBuilder"; @@ -122,8 +122,6 @@ namespace ScriptCanvasBuilder AZ::Outcome, AZStd::string> CreateRuntimeAsset(const AZ::Data::Asset& asset); - AZ::Outcome, AZStd::string> CreateRuntimeFunctionAsset(const AZ::Data::Asset& asset); - AZ::Outcome CompileGraphData(AZ::Entity* scriptCanvasEntity); AZ::Outcome CompileVariableData(AZ::Entity* scriptCanvasEntity); @@ -134,8 +132,6 @@ namespace ScriptCanvasBuilder AZ::Outcome, AZStd::string> LoadEditorAsset(AZStd::string_view graphPath, AZ::Data::AssetId assetId, AZ::Data::AssetFilterCB assetFilterCB = {}); - AZ::Outcome, AZStd::string> LoadEditorFunctionAsset(AZStd::string_view graphPath); - AZ::Outcome ParseGraph(AZ::Entity& buildEntity, AZStd::string_view graphPath); AZ::Outcome ProcessTranslationJob(ProcessTranslationJobInput& input); diff --git a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorkerUtility.cpp b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorkerUtility.cpp index 94f09b4b9a..73d32ba16a 100644 --- a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorkerUtility.cpp +++ b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorkerUtility.cpp @@ -8,7 +8,6 @@ #include "precompiled.h" #include -#include #include #include #include @@ -160,18 +159,6 @@ namespace ScriptCanvasBuilder return AZ::Success(runtimeAsset); } - AZ::Outcome, AZStd::string> CreateRuntimeFunctionAsset(const AZ::Data::Asset& editAsset) - { - // Flush asset manager events to ensure no asset references are held by closures queued on Ebuses. - AZ::Data::AssetManager::Instance().DispatchEvents(); - - auto runtimeAssetId = editAsset.GetId(); - runtimeAssetId.m_subId = AZ_CRC("SubgraphInterface", 0xdfe6dc72); - AZ::Data::Asset runtimeAsset; - runtimeAsset.Create(runtimeAssetId); - return AZ::Success(runtimeAsset); - } - AZ::Outcome CompileGraphData(AZ::Entity* scriptCanvasEntity) { typedef AZStd::pair< ScriptCanvas::Node*, AZ::Entity* > NodeEntityPair; @@ -452,48 +439,6 @@ namespace ScriptCanvasBuilder return AZ::Success(asset); } - AZ::Outcome, AZStd::string> LoadEditorFunctionAsset(AZStd::string_view filePath) - { - AZStd::shared_ptr assetDataStream = AZStd::make_shared(); - - // Read the asset into a memory buffer, then hand ownership of the buffer to assetDataStream - { - AZ::IO::FileIOStream stream(filePath.data(), AZ::IO::OpenMode::ModeRead); - if (!AZ::IO::RetryOpenStream(stream)) - { - return AZ::Failure(AZStd::string::format("File failed to open: %s", filePath.data())); - } - AZStd::vector fileBuffer(stream.GetLength()); - size_t bytesRead = stream.Read(fileBuffer.size(), fileBuffer.data()); - if (bytesRead != stream.GetLength()) - { - return AZ::Failure(AZStd::string::format("File failed to open: %s", filePath.data())); - } - - assetDataStream->Open(AZStd::move(fileBuffer)); - } - - AZ::IO::FileIOStream ioStream; - if (!ioStream.Open(filePath.data(), AZ::IO::OpenMode::ModeRead)) - { - return AZ::Failure(AZStd::string::format("File failed to open: %s", filePath.data())); - } - - ScriptCanvasEditor::ScriptCanvasFunctionAssetHandler editorAssetHandler; - - AZ::SerializeContext* context{}; - AZ::ComponentApplicationBus::BroadcastResult(context, &AZ::ComponentApplicationBus::Events::GetSerializeContext); - AZ::Data::Asset asset; - asset.Create(AZ::Data::AssetId(AZ::Uuid::CreateRandom())); - - if (editorAssetHandler.LoadAssetData(asset, assetDataStream, AZ::Data::AssetFilterCB{}) != AZ::Data::AssetHandler::LoadResult::LoadComplete) - { - return AZ::Failure(AZStd::string::format("Failed to load ScriptCavas Function asset: %s", filePath.data())); - } - - return AZ::Success(asset); - } - ScriptCanvasEditor::Graph* PrepareSourceGraph(AZ::Entity* const buildEntity) { auto sourceGraph = AZ::EntityUtils::FindFirstDerivedComponent(buildEntity); diff --git a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasFunctionBuilderWorker.cpp b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasFunctionBuilderWorker.cpp deleted file mode 100644 index 5ff5069141..0000000000 --- a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasFunctionBuilderWorker.cpp +++ /dev/null @@ -1,338 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "precompiled.h" - -#include "platform.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace ScriptCanvasBuilder -{ - void FunctionWorker::Activate(const AssetHandlers& handlers) - { - m_editorAssetHandler = handlers.m_editorFunctionAssetHandler; - m_runtimeAssetHandler = handlers.m_runtimeAssetHandler; - m_subgraphInterfaceHandler = handlers.m_subgraphInterfaceHandler; - } - - void FunctionWorker::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const - { - AZ_TracePrintf(s_scriptCanvasBuilder, "Start Creating Job"); - AZStd::string fullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, false); - AzFramework::StringFunc::Path::Normalize(fullPath); - - if (!m_editorAssetHandler) - { - AZ_Error(s_scriptCanvasBuilder, false, R"(CreateJobs for %s failed because the ScriptCanvas Editor Asset handler is missing.)", fullPath.data()); - } - - AZStd::shared_ptr assetDataStream = AZStd::make_shared(); - - // Read the asset into a memory buffer, then hand ownership of the buffer to assetDataStream - { - AZ::IO::FileIOStream stream(fullPath.c_str(), AZ::IO::OpenMode::ModeRead); - if (!AZ::IO::RetryOpenStream(stream)) - { - AZ_Warning(s_scriptCanvasBuilder, false, "CreateJobs for \"%s\" failed because the source file could not be opened.", fullPath.data()); - return; - } - AZStd::vector fileBuffer(stream.GetLength()); - size_t bytesRead = stream.Read(fileBuffer.size(), fileBuffer.data()); - if (bytesRead != stream.GetLength()) - { - AZ_Warning(s_scriptCanvasBuilder, false, "CreateJobs for \"%s\" failed because the source file could not be read.", fullPath.data()); - return; - } - - assetDataStream->Open(AZStd::move(fileBuffer)); - } - - m_sourceDependencies.clear(); - - auto assetFilter = [&response, this](const AZ::Data::AssetFilterInfo& filterInfo) - { - if (filterInfo.m_assetType == azrtti_typeid() || - filterInfo.m_assetType == azrtti_typeid() || - filterInfo.m_assetType == azrtti_typeid() || - filterInfo.m_assetType == azrtti_typeid()) // this required, since nodes reference this, rather than the editor asset - { - AssetBuilderSDK::SourceFileDependency dependency; - dependency.m_sourceFileDependencyUUID = filterInfo.m_assetId.m_guid; - - response.m_sourceFileDependencyList.push_back(dependency); - } - - // Asset filter always returns false to prevent parsing dependencies, but makes note of the script canvas dependencies - return false; - }; - - AZ::Data::Asset asset; - asset.Create(AZ::Data::AssetId(AZ::Uuid::CreateRandom())); - ScriptCanvasEditor::ScriptCanvasFunctionAssetHandler* functionAssetHandler = azrtti_cast(m_editorAssetHandler); - if (functionAssetHandler->LoadAssetData(asset, assetDataStream, assetFilter) != AZ::Data::AssetHandler::LoadResult::LoadComplete) - { - AZ_Warning(s_scriptCanvasBuilder, false, "CreateJobs for \"%s\" failed because the asset data could not be loaded from the file", fullPath.data()); - return; - } - - // Flush asset database events to ensure no asset references are held by closures queued on Ebuses. - AZ::Data::AssetManager::Instance().DispatchEvents(); - - auto* scriptCanvasEntity = asset.Get()->GetScriptCanvasEntity(); - auto* sourceGraph = AZ::EntityUtils::FindFirstDerivedComponent(scriptCanvasEntity); - AZ_Assert(sourceGraph, "Graph component is missing from entity."); - size_t fingerprint = 0; - const AZStd::set sortedEntities(sourceGraph->GetGraphData()->m_nodes.begin(), sourceGraph->GetGraphData()->m_nodes.end()); - for (auto& nodeEntity : sortedEntities) - { - if (auto nodeComponent = AZ::EntityUtils::FindFirstDerivedComponent(nodeEntity)) - { - AZStd::hash_combine(fingerprint, nodeComponent->GenerateFingerprint()); - } - } - -#if defined(FUNCTION_LEGACY_SUPPORT_ENABLED) - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - if (info.HasTag("tools")) - { - AssetBuilderSDK::JobDescriptor copyDescriptor; - copyDescriptor.m_priority = 2; - copyDescriptor.m_critical = true; - copyDescriptor.m_jobKey = s_scriptCanvasCopyJobKey; - copyDescriptor.SetPlatformIdentifier(info.m_identifier.c_str()); - copyDescriptor.m_additionalFingerprintInfo = AZStd::string(GetFingerprintString()).append("|").append(AZStd::to_string(static_cast(fingerprint))); - response.m_createJobOutputs.push_back(copyDescriptor); - } - - AssetBuilderSDK::JobDescriptor jobDescriptor; - jobDescriptor.m_priority = 2; - jobDescriptor.m_critical = true; - jobDescriptor.m_jobKey = s_scriptCanvasProcessJobKey; - jobDescriptor.SetPlatformIdentifier(info.m_identifier.c_str()); - jobDescriptor.m_additionalFingerprintInfo = AZStd::string(GetFingerprintString()).append("|").append(AZStd::to_string(static_cast(fingerprint))); - // Function process job needs to wait until its dependency asset job finished - for (const auto& sourceDependency : response.m_sourceFileDependencyList) - { - AssetBuilderSDK::JobDependency jobDep(s_scriptCanvasBuilder, info.m_identifier.c_str(), AssetBuilderSDK::JobDependencyType::OrderOnce, sourceDependency); - jobDescriptor.m_jobDependencyList.emplace_back(jobDep); - } - response.m_createJobOutputs.push_back(jobDescriptor); - } -#endif - - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - AZ_TracePrintf(s_scriptCanvasBuilder, "Finish Creating Job"); - } - - - - const char* FunctionWorker::GetFingerprintString() const - { - if (m_fingerprintString.empty()) - { - // compute it the first time - const AZStd::string runtimeAssetTypeId = azrtti_typeid().ToString(); - m_fingerprintString = AZStd::string::format("%i%s", GetVersionNumber(), runtimeAssetTypeId.c_str()); - } - return m_fingerprintString.c_str(); - } - - int FunctionWorker::GetVersionNumber() const - { - return GetBuilderVersion(); - } - - AZ::Uuid FunctionWorker::GetUUID() - { - return AZ::Uuid::CreateString("{7227E0E1-4113-456A-877B-B2276ACB292B}"); - } - - - void FunctionWorker::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - AZ_TracePrintf(s_scriptCanvasBuilder, "Start Processing Job"); - // A runtime script canvas component is generated, which creates a .scriptcanvas_compiled file - AZStd::string fullPath; - AZStd::string fileNameOnly; - AzFramework::StringFunc::Path::GetFullFileName(request.m_sourceFile.c_str(), fileNameOnly); - fullPath = request.m_fullPath.c_str(); - AzFramework::StringFunc::Path::Normalize(fullPath); - - bool pathFound = false; - AZStd::string relativePath; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult - ( pathFound - , &AzToolsFramework::AssetSystem::AssetSystemRequest::GetRelativeProductPathFromFullSourceOrProductPath - , request.m_fullPath.c_str(), relativePath); - - if (!pathFound) - { - AZ_Error(s_scriptCanvasBuilder, false, "Failed to get engine relative path from %s", request.m_fullPath.c_str()); - return; - } - - if (!m_editorAssetHandler) - { - AZ_Error(s_scriptCanvasBuilder, false, R"(Exporting of .scriptcanvas for "%s" file failed as no editor asset handler was registered for script canvas. The ScriptCanvas Gem might not be enabled.)", fullPath.data()); - return; - } - - if (!m_runtimeAssetHandler) - { - AZ_Error(s_scriptCanvasBuilder, false, R"(Exporting of .scriptcanvas for "%s" file failed as no runtime asset handler was registered for script canvas.)", fullPath.data()); - return; - } - - AZStd::shared_ptr assetDataStream = AZStd::make_shared(); - - // Read the asset into a memory buffer, then hand ownership of the buffer to assetDataStream - { - AZ::IO::FileIOStream stream(fullPath.data(), AZ::IO::OpenMode::ModeRead); - if (!AZ::IO::RetryOpenStream(stream)) - { - AZ_Warning(s_scriptCanvasBuilder, false, "Exporting of .scriptcanvas for \"%s\" failed because the source file could not be opened.", fullPath.c_str()); - return; - } - AZStd::vector fileBuffer(stream.GetLength()); - size_t bytesRead = stream.Read(fileBuffer.size(), fileBuffer.data()); - if (bytesRead != stream.GetLength()) - { - AZ_Warning(s_scriptCanvasBuilder, false, "Exporting of .scriptcanvas for \"%s\" failed because the source file could not be opened.", fullPath.c_str()); - return; - } - - assetDataStream->Open(AZStd::move(fileBuffer)); - } - - AZ::SerializeContext* context{}; - AZ::ComponentApplicationBus::BroadcastResult(context, &AZ::ComponentApplicationBus::Events::GetSerializeContext); - - AZ::Data::Asset asset; - asset.Create(request.m_sourceFileUUID); - ScriptCanvasEditor::ScriptCanvasFunctionAssetHandler* functionAssetHandler = azrtti_cast(m_editorAssetHandler); - if (functionAssetHandler->LoadAssetData(asset, assetDataStream, nullptr) != AZ::Data::AssetHandler::LoadResult::LoadComplete) - { - AZ_Error(s_scriptCanvasBuilder, false, R"(Loading of ScriptCanvas asset for source file "%s" has failed)", fullPath.data()); - return; - } - - // Flush asset manager events to ensure no asset references are held by closures queued on Ebuses. - AZ::Data::AssetManager::Instance().DispatchEvents(); - - AZStd::string runtimeScriptCanvasOutputPath; - AzFramework::StringFunc::Path::Join(request.m_tempDirPath.c_str(), fileNameOnly.c_str(), runtimeScriptCanvasOutputPath, true, true); - AzFramework::StringFunc::Path::ReplaceExtension(runtimeScriptCanvasOutputPath, ScriptCanvas::SubgraphInterfaceAsset::GetFileExtension()); - - if (request.m_jobDescription.m_jobKey == s_scriptCanvasCopyJobKey) - { - // ScriptCanvas Editor Asset Copy job - // The SubID is zero as this represents the main asset - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = fullPath; - jobProduct.m_productAssetType = azrtti_typeid(); - jobProduct.m_productSubID = 0; - jobProduct.m_dependenciesHandled = true; - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - else - { - // force load all dependencies into memory - for (auto& dependency : m_sourceDependencies) - { - AZ::Data::AssetManager::Instance().GetAsset(dependency.GetId(), dependency.GetType(), AZ::Data::AssetLoadBehavior::PreLoad); - } - - AZ::Entity* buildEntity = asset.Get()->GetScriptCanvasEntity(); - - ProcessTranslationJobInput input; - input.assetID = AZ::Data::AssetId(request.m_sourceFileUUID, AZ_CRC("RuntimeData", 0x163310ae)); - input.request = &request; - input.response = &response; - input.runtimeScriptCanvasOutputPath = runtimeScriptCanvasOutputPath; - input.assetHandler = m_runtimeAssetHandler; - input.buildEntity = buildEntity; - input.fullPath = fullPath; - input.fileNameOnly = fileNameOnly; - input.namespacePath = relativePath; - input.saveRawLua = true; - - auto translationOutcome = ProcessTranslationJob(input); - if (translationOutcome.IsSuccess()) - { - AzFramework::StringFunc::Path::ReplaceExtension(input.runtimeScriptCanvasOutputPath, ScriptCanvas::RuntimeAsset::GetFileExtension()); - auto saveRuntimAssetOutcome = SaveRuntimeAsset(input, input.runtimeDataOut); - if (saveRuntimAssetOutcome.IsSuccess()) - { - // \todo this file is only required on PC editor builds, cull it in packaging, here or wherever appropriate - AzFramework::StringFunc::Path::StripExtension(fileNameOnly); - - ScriptCanvas::SubgraphInterfaceData functionInterface; - functionInterface.m_name = fileNameOnly; - functionInterface.m_interface = AZStd::move(input.interfaceOut); - - // save function interface - input.assetHandler = m_subgraphInterfaceHandler; - - AzFramework::StringFunc::Path::ReplaceExtension(input.runtimeScriptCanvasOutputPath, ScriptCanvas::SubgraphInterfaceAsset::GetFileExtension()); - auto saveInterfaceOutcome = SaveSubgraphInterface(input, functionInterface); - if (saveInterfaceOutcome.IsSuccess()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - else - { - AZ_Error(s_scriptCanvasBuilder, false, saveInterfaceOutcome.GetError().data()); - } - } - else - { - AZ_Error(s_scriptCanvasBuilder, false, saveRuntimAssetOutcome.GetError().data()); - } - } - else if (AzFramework::StringFunc::Find(translationOutcome.GetError().data(), ScriptCanvas::ParseErrors::SourceUpdateRequired) != AZStd::string::npos) - { - AZ_Warning(s_scriptCanvasBuilder, false, ScriptCanvas::ParseErrors::SourceUpdateRequired); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - else if (AzFramework::StringFunc::Find(fileNameOnly, s_unitTestParseErrorPrefix) != AZStd::string::npos) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - else - { - AZ_Warning(s_scriptCanvasBuilder, false, translationOutcome.GetError().data()); - } - } - - AZ_TracePrintf(s_scriptCanvasBuilder, "Finish Processing Job"); - } -} diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHandler.cpp b/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHandler.cpp deleted file mode 100644 index 9f50f32cf5..0000000000 --- a/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHandler.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "precompiled.h" - -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -namespace ScriptCanvasEditor -{ - ScriptCanvasFunctionAssetHandler::ScriptCanvasFunctionAssetHandler(AZ::SerializeContext* context) - : ScriptCanvasAssetHandler(context) - { - AZ::AssetTypeInfoBus::MultiHandler::BusConnect(azrtti_typeid()); - } - - ScriptCanvasFunctionAssetHandler::~ScriptCanvasFunctionAssetHandler() - { - AZ::AssetTypeInfoBus::MultiHandler::BusDisconnect(); - } - - AZ::Data::AssetPtr ScriptCanvasFunctionAssetHandler::CreateAsset(const AZ::Data::AssetId& id, const AZ::Data::AssetType& type) - { - AZ_UNUSED(type); - - ScriptCanvasEditor::ScriptCanvasFunctionAsset* assetData = aznew ScriptCanvasEditor::ScriptCanvasFunctionAsset(id); - - AZ::Entity* scriptCanvasEntity = aznew AZ::Entity(ScriptCanvas::AssetDescription::GetEntityName()); - SystemRequestBus::Broadcast(&SystemRequests::CreateEditorComponentsOnEntity, scriptCanvasEntity, azrtti_typeid()); - assetData->m_cachedComponent = scriptCanvasEntity->CreateComponent(); - - assetData->SetScriptCanvasEntity(scriptCanvasEntity); - - return assetData; - } - - AZ::Data::AssetHandler::LoadResult ScriptCanvasFunctionAssetHandler::LoadAssetData( - const AZ::Data::Asset& asset, - AZStd::shared_ptr stream, - const AZ::Data::AssetFilterCB& assetLoadFilterCB) - { - ScriptCanvasEditor::ScriptCanvasFunctionAsset* scriptCanvasAsset = asset.GetAs(); - AZ_Assert(m_serializeContext, "ScriptCanvasFunctionAssetHandler needs to be initialized with a SerializeContext"); - - if (scriptCanvasAsset) - { - stream->Seek(0U, AZ::IO::GenericStream::ST_SEEK_BEGIN); - - bool loadSuccess = AZ::Utils::LoadObjectFromStreamInPlace(*stream, scriptCanvasAsset->GetScriptCanvasData(), m_serializeContext, AZ::ObjectStream::FilterDescriptor(assetLoadFilterCB, AZ::ObjectStream::FILTERFLAG_IGNORE_UNKNOWN_CLASSES)); - if (loadSuccess) - { - scriptCanvasAsset->m_cachedComponent = scriptCanvasAsset->GetScriptCanvasData().GetScriptCanvasEntity()->FindComponent(); - } - - return loadSuccess ? AZ::Data::AssetHandler::LoadResult::LoadComplete : AZ::Data::AssetHandler::LoadResult::Error; - } - return AZ::Data::AssetHandler::LoadResult::Error; - } - - bool ScriptCanvasFunctionAssetHandler::SaveAssetData(const AZ::Data::Asset& asset, AZ::IO::GenericStream* stream) - { - return SaveAssetData(asset.GetAs(), stream); - } - - bool ScriptCanvasFunctionAssetHandler::SaveAssetData(const ScriptCanvasEditor::ScriptCanvasFunctionAsset* assetData, AZ::IO::GenericStream* stream) - { - return SaveAssetData(assetData, stream, AZ::DataStream::ST_XML); - } - - bool ScriptCanvasFunctionAssetHandler::SaveAssetData(const ScriptCanvasEditor::ScriptCanvasFunctionAsset* assetData, AZ::IO::GenericStream* stream, AZ::DataStream::StreamType streamType) - { - if (assetData && m_serializeContext) - { - AZStd::vector byteBuffer; - AZ::IO::ByteContainerStream byteStream(&byteBuffer); - AZ::ObjectStream* objStream = AZ::ObjectStream::Create(&byteStream, *m_serializeContext, streamType); - - const ScriptCanvas::ScriptCanvasData& functionData = assetData->GetScriptCanvasData(); - bool assetSaved = objStream->WriteClass(&functionData); - objStream->Finalize(); - assetSaved = stream->Write(byteBuffer.size(), byteBuffer.data()) == byteBuffer.size() && assetSaved; - return assetSaved; - } - - return false; - } - - AZ::Data::AssetType ScriptCanvasFunctionAssetHandler::GetAssetType() const - { - return ScriptCanvasFunctionAssetHandler::GetAssetTypeStatic(); - } - - const char* ScriptCanvasFunctionAssetHandler::GetAssetTypeDisplayName() const - { - return ScriptCanvas::AssetDescription::GetAssetTypeDisplayName(); - } - - bool ScriptCanvasFunctionAssetHandler::CanCreateComponent([[maybe_unused]] const AZ::Data::AssetId& assetId) const - { - return false; - } - - void ScriptCanvasFunctionAssetHandler::GetAssetTypeExtensions(AZStd::vector& extensions) - { - const AZ::Uuid& assetType = *AZ::AssetTypeInfoBus::GetCurrentBusId(); - if (assetType == AZ::AzTypeInfo::Uuid()) - { - extensions.push_back(ScriptCanvas::AssetDescription::GetExtension()); - } - } - - void ScriptCanvasFunctionAssetHandler::GetHandledAssetTypes(AZStd::vector& assetTypes) - { - assetTypes.push_back(AZ::AzTypeInfo::Uuid()); - } - - - AZ::Data::AssetType ScriptCanvasFunctionAssetHandler::GetAssetTypeStatic() - { - return azrtti_typeid(); - } - - const char* ScriptCanvasFunctionAssetHandler::GetGroup() const - { - return ScriptCanvas::AssetDescription::GetGroup(); - } - - const char* ScriptCanvasFunctionAssetHandler::GetBrowserIcon() const - { - return ScriptCanvas::AssetDescription::GetIconPath(); - } - -} diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHolder.cpp b/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHolder.cpp deleted file mode 100644 index a3559f0123..0000000000 --- a/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHolder.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include "precompiled.h" - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -namespace ScriptCanvasEditor -{ - //========================================================================= - void ScriptCanvasFunctionAssetHolder::Reflect(AZ::ReflectContext* context) - { - if (auto serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("m_asset", &ScriptCanvasFunctionAssetHolder::m_scriptCanvasAssetId) - ; - - if (AZ::EditContext* editContext = serializeContext->GetEditContext()) - { - editContext->Class("Script Canvas", "Script Canvas Function Asset Holder") - ->ClassElement(AZ::Edit::ClassElements::EditorData, "") - ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasFunctionAssetHolder::m_scriptCanvasAssetId, "Script Canvas Function Asset", "Script Canvas asset associated with this component") - ->Attribute(AZ::Edit::Attributes::ChangeNotify, &ScriptCanvasFunctionAssetHolder::OnScriptChanged) - ->Attribute("EditButton", "Editor/Icons/PropertyEditor/open_in.png") - ->Attribute("EditDescription", "Open in Script Canvas Editor") - ->Attribute("EditCallback", &ScriptCanvasFunctionAssetHolder::LaunchScriptCanvasEditor) - ; - } - } - } - - ScriptCanvasFunctionAssetHolder::ScriptCanvasFunctionAssetHolder(AZ::Data::AssetId assetId, const ScriptChangedCB& scriptChangedCB) - : m_scriptCanvasAssetId(assetId) - , m_scriptNotifyCallback(scriptChangedCB) - { - } - - ScriptCanvasFunctionAssetHolder::~ScriptCanvasFunctionAssetHolder() - { - AZ::Data::AssetBus::Handler::BusDisconnect(); - } - - void ScriptCanvasFunctionAssetHolder::Init(AZ::EntityId ownerId) - { - m_ownerId = ownerId; - - if (m_scriptCanvasAssetId.IsValid()) - { - AZ::Data::AssetBus::Handler::BusDisconnect(); - AZ::Data::AssetBus::Handler::BusConnect(m_scriptCanvasAssetId); - } - } - - void ScriptCanvasFunctionAssetHolder::LaunchScriptCanvasEditor(const AZ::Data::AssetId&, const AZ::Data::AssetType&) const - { - OpenEditor(); - } - - void ScriptCanvasFunctionAssetHolder::OpenEditor() const - { - AzToolsFramework::OpenViewPane(LyViewPane::ScriptCanvas); - - AZ::Outcome openOutcome = AZ::Failure(AZStd::string()); - - if (m_scriptCanvasAssetId.IsValid()) - { - GeneralRequestBus::BroadcastResult(openOutcome, &GeneralRequests::OpenScriptCanvasAsset, m_scriptCanvasAssetId, -1); - - if (!openOutcome) - { - AZ_Warning("Script Canvas", openOutcome, "%s", openOutcome.GetError().data()); - } - } - else if (m_ownerId.IsValid()) - { - AzToolsFramework::EntityIdList selectedEntityIds; - AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult(selectedEntityIds, &AzToolsFramework::ToolsApplicationRequests::GetSelectedEntities); - - // Going to bypass the multiple selected entities flow for right now. - if (selectedEntityIds.size() == 1) - { - GeneralRequestBus::Broadcast(&GeneralRequests::CreateScriptCanvasAssetFor, m_ownerId); - } - } - } - - AZ::EntityId ScriptCanvasFunctionAssetHolder::GetGraphId() const - { - AZ::EntityId graphId; - if (m_scriptCanvasAsset.IsReady()) - { - ScriptCanvas::SystemRequestBus::BroadcastResult(graphId, &ScriptCanvas::SystemRequests::FindGraphId, m_scriptCanvasAsset.Get()->GetScriptCanvasEntity()); - } - return graphId; - } - - void ScriptCanvasFunctionAssetHolder::SetScriptChangedCB(const ScriptChangedCB& scriptChangedCB) - { - m_scriptNotifyCallback = scriptChangedCB; - } - - void ScriptCanvasFunctionAssetHolder::Load(bool loadBlocking) - { - if (!m_scriptCanvasAsset.IsReady()) - { - AZ::Data::AssetInfo assetInfo; - AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequests::GetAssetInfoById, m_scriptCanvasAsset.GetId()); - if (assetInfo.m_assetId.IsValid()) - { - const AZ::Data::AssetType assetTypeId = azrtti_typeid(); - auto& assetManager = AZ::Data::AssetManager::Instance(); - m_scriptCanvasAsset = assetManager.GetAsset(m_scriptCanvasAsset.GetId(), azrtti_typeid(), true, nullptr, loadBlocking); - } - } - } - - AZ::u32 ScriptCanvasFunctionAssetHolder::OnScriptChanged() - { - SetAsset(m_scriptCanvasAsset.GetId()); - Load(false); - - if (m_scriptNotifyCallback) - { - m_scriptNotifyCallback(m_scriptCanvasAsset); - } - return AZ::Edit::PropertyRefreshLevels::EntireTree; - } - - void ScriptCanvasFunctionAssetHolder::OnAssetReady(AZ::Data::Asset asset) - { - SetAsset(asset.GetId()); - EditorScriptCanvasAssetNotificationBus::Event(m_scriptCanvasAsset.GetId(), &EditorScriptCanvasAssetNotifications::OnScriptCanvasAssetReady, m_scriptCanvasAsset); - } - - void ScriptCanvasFunctionAssetHolder::OnAssetReloaded(AZ::Data::Asset asset) - { - SetAsset(asset.GetId()); - EditorScriptCanvasAssetNotificationBus::Event(m_scriptCanvasAsset.GetId(), &EditorScriptCanvasAssetNotifications::OnScriptCanvasAssetReloaded, m_scriptCanvasAsset); - } - - void ScriptCanvasFunctionAssetHolder::OnAssetUnloaded(const AZ::Data::AssetId assetId, const AZ::Data::AssetType) - { - EditorScriptCanvasAssetNotificationBus::Event(assetId, &EditorScriptCanvasAssetNotifications::OnScriptCanvasAssetUnloaded, assetId); - } - - void ScriptCanvasFunctionAssetHolder::OnAssetSaved(AZ::Data::Asset asset, bool isSuccessful) - { - SetAsset(asset.GetId()); - auto currentBusId = AZ::Data::AssetBus::GetCurrentBusId(); - if (currentBusId) - { - EditorScriptCanvasAssetNotificationBus::Event(*currentBusId, &EditorScriptCanvasAssetNotifications::OnScriptCanvasAssetSaved, asset.GetId()); - } - } - - void ScriptCanvasFunctionAssetHolder::SetAsset(AZ::Data::AssetId assetId) - { - m_scriptCanvasAssetId = assetId; - - if (!AZ::Data::AssetBus::Handler::BusIsConnectedId(m_scriptCanvasAssetId)) - { - AZ::Data::AssetBus::Handler::BusDisconnect(); - if (m_scriptCanvasAssetId.IsValid()) - { - AZ::Data::AssetBus::Handler::BusConnect(m_scriptCanvasAssetId); - } - } - } - - //AZ::Data::Asset ScriptCanvasFunctionAssetHolder::GetAsset() const - //{ - // return m_scriptCanvasAsset; - //} - - AZ::Data::AssetId ScriptCanvasFunctionAssetHolder::GetAssetId() const - { - return m_scriptCanvasAssetId; - } -} diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHolder.h b/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHolder.h deleted file mode 100644 index 1cde981e0d..0000000000 --- a/Gems/ScriptCanvas/Code/Editor/Assets/Functions/ScriptCanvasFunctionAssetHolder.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include - -namespace ScriptCanvas -{ - class ScriptCanvasFunctionAsset; -} - -namespace ScriptCanvasEditor -{ - class ScriptCanvasFunctionAsset; - - /*! ScriptCanvasAssetHolder - Wraps a ScriptCanvasAsset reference and registers for the individual AssetBus events - for saving, loading and unloading the asset. - The ScriptCanvasAsset Holder contains functionality for activating the ScriptCanvasEntity stored on the reference asset - as well as attempting to open the ScriptCanvasAsset within the ScriptCanvas Editor. - It also provides the EditContext reflection for opening the asset in the ScriptCanvas Editor via a button - */ - class ScriptCanvasFunctionAssetHolder - : private AZ::Data::AssetBus::Handler - { - public: - AZ_RTTI(ScriptCanvasFunctionAssetHolder, "{21693AFA-5664-4AAE-9213-8B944A398BA1}"); - AZ_CLASS_ALLOCATOR(ScriptCanvasFunctionAssetHolder, AZ::SystemAllocator, 0); - - using ScriptChangedCB = AZStd::function&)>; - - ScriptCanvasFunctionAssetHolder() = default; - ScriptCanvasFunctionAssetHolder(AZ::Data::AssetId assetId, const ScriptChangedCB& = {}); - ~ScriptCanvasFunctionAssetHolder() override; - - static void Reflect(AZ::ReflectContext* context); - void Init(AZ::EntityId ownerId = AZ::EntityId()); - - void SetAsset(AZ::Data::AssetId assetId); - AZ::Data::AssetId GetAssetId() const; - - AZ::EntityId GetGraphId() const; - - void LaunchScriptCanvasEditor(const AZ::Data::AssetId&, const AZ::Data::AssetType&) const; - void OpenEditor() const; - - void SetScriptChangedCB(const ScriptChangedCB&); - void Load(bool loadBlocking = false); - - protected: - - //===================================================================== - // AZ::Data::AssetBus - void OnAssetReady(AZ::Data::Asset asset) override; - void OnAssetReloaded(AZ::Data::Asset asset) override; - void OnAssetUnloaded(const AZ::Data::AssetId assetId, const AZ::Data::AssetType assetType) override; - void OnAssetSaved(AZ::Data::Asset asset, bool isSuccessful) override; - //===================================================================== - - //! Reloads the Script From the AssetData if it has changed - AZ::u32 OnScriptChanged(); - AZ::Data::AssetId m_scriptCanvasAssetId; - AZ::Data::Asset m_scriptCanvasAsset; - - AZ::EntityId m_ownerId; // Id of Entity which stores this AssetHolder object - ScriptChangedCB m_scriptNotifyCallback; - }; - -} diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHelpers.cpp b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHelpers.cpp index 247a38f58a..caec55e9fe 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHelpers.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHelpers.cpp @@ -8,7 +8,6 @@ #include #include -#include #include namespace ScriptCanvasEditor diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.cpp b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.cpp index 3304ad7987..c973034fa1 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.cpp @@ -80,11 +80,6 @@ namespace ScriptCanvasEditor AZ::Data::Asset newAsset = Clone(); memoryAsset.m_inMemoryAsset = newAsset; } - else if (m_assetType == azrtti_typeid()) - { - AZ::Data::Asset newAsset = Clone(); - memoryAsset.m_inMemoryAsset = newAsset; - } else { AZ_Assert(false, "Unsupported Script Canvas Asset Type"); @@ -107,10 +102,6 @@ namespace ScriptCanvasEditor { asset = assetHandler->CreateAsset(assetId, azrtti_typeid()); } - else if (assetType == azrtti_typeid()) - { - asset = assetHandler->CreateAsset(assetId, azrtti_typeid()); - } m_inMemoryAsset = AZ::Data::Asset(asset, AZ::Data::AssetLoadBehavior::PreLoad); @@ -155,8 +146,6 @@ namespace ScriptCanvasEditor streamInfo.m_streamFlags = AZ::IO::OpenMode::ModeWrite; streamInfo.m_streamName = m_saveAsPath; - ScriptCanvasEditor::ScriptCanvasDataRequestBus::Event(GetScriptCanvasId(), &ScriptCanvasEditor::ScriptCanvasDataRequests::SetPrettyName, GetTabName().c_str()); - if (!streamInfo.IsValid()) { return; @@ -223,10 +212,6 @@ namespace ScriptCanvasEditor { m_inMemoryAsset = AZ::Data::AssetManager::Instance().GetAsset(assetId, AZ::Data::AssetLoadBehavior::Default); } - else if (assetInfo.m_assetType == azrtti_typeid()) - { - m_inMemoryAsset = AZ::Data::AssetManager::Instance().GetAsset(assetId, AZ::Data::AssetLoadBehavior::Default); - } if (m_inMemoryAsset) { @@ -290,15 +275,8 @@ namespace ScriptCanvasEditor return; } - if (m_assetType == azrtti_typeid()) - { - editorGraph->MarkFunctionGraph(); - } - m_scriptCanvasId = editorGraph->GetScriptCanvasId(); - ScriptCanvasEditor::ScriptCanvasDataRequestBus::Event(m_scriptCanvasId, &ScriptCanvasEditor::ScriptCanvasDataRequests::SetPrettyName, GetTabName().c_str()); - EditorGraphNotificationBus::Handler::BusDisconnect(); EditorGraphNotificationBus::Handler::BusConnect(m_scriptCanvasId); @@ -538,10 +516,6 @@ namespace ScriptCanvasEditor { return CloneAssetData(newAssetId); } - else if (m_assetType == azrtti_typeid()) - { - return CloneAssetData(newAssetId); - } AZ_Assert(false, "The provides asset type is not supported as a valid Script Canvas memory asset"); return AZ::Data::Asset(); diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.h b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.h index 8f44a7f4b8..4449bcb62a 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.h +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasMemoryAsset.h @@ -21,7 +21,6 @@ #include #include -#include #include #include diff --git a/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.cpp b/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.cpp index 3bc1f1b033..9363d5a337 100644 --- a/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.cpp @@ -61,11 +61,6 @@ namespace ScriptCanvasEditor { } - void ScriptCanvasAssetNode::OnInputSignal(const ScriptCanvas::SlotId&) - { - - } - void ScriptCanvasAssetNode::OnInit() { if (GetAsset().GetId().IsValid()) diff --git a/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.h b/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.h index 8d3a5bf3d8..5b3e07cfbd 100644 --- a/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.h +++ b/Gems/ScriptCanvas/Code/Editor/Nodes/ScriptCanvasAssetNode.h @@ -74,7 +74,6 @@ namespace ScriptCanvasEditor //// protected: - void OnInputSignal(const ScriptCanvas::SlotId&) override; // AssetBus::Handler void OnAssetReloaded(AZ::Data::Asset asset) override; void OnAssetUnloaded(const AZ::Data::AssetId assetId, const AZ::Data::AssetType) override; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp index 3d6c9012cc..dfeb439c3d 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp @@ -223,7 +223,7 @@ namespace ScriptCanvasEditor void ScriptCanvasRootPaletteTreeItem::SetActiveScriptCanvasId(const ScriptCanvas::ScriptCanvasId& scriptCanvasId) { - ScriptCanvas::RuntimeRequestBus::EventResult(m_previousAssetId, scriptCanvasId, &ScriptCanvas::RuntimeRequests::GetAssetId); + ScriptCanvas::RuntimeRequestBus::EventResult(m_previousAssetId, scriptCanvasId, &ScriptCanvas::GraphRequests::GetAssetId); for (auto functionTreePair : m_globalFunctionTreeItems) { diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/GraphVariablesTableView.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/GraphVariablesTableView.cpp index b6062423ee..aad178b91d 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/GraphVariablesTableView.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/GraphVariablesTableView.cpp @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -722,7 +721,7 @@ namespace ScriptCanvasEditor ScriptCanvas::GraphVariableManagerNotificationBus::Handler::BusDisconnect(); m_assetType = AZ::Data::AssetType::CreateNull(); - ScriptCanvas::RuntimeRequestBus::EventResult(m_assetType, scriptCanvasId, &ScriptCanvas::RuntimeRequests::GetAssetType); + ScriptCanvas::GraphRequestBus::EventResult(m_assetType, scriptCanvasId, &ScriptCanvas::GraphRequests::GetAssetType); m_scriptCanvasId = scriptCanvasId; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/SlotTypeSelectorWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/SlotTypeSelectorWidget.cpp index 2d23b942df..f98c896f69 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/SlotTypeSelectorWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/SlotTypeSelectorWidget.cpp @@ -50,7 +50,6 @@ #include #include -#include #include #include diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp index d88c16ba24..9307084e2a 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp @@ -50,7 +50,6 @@ #include #include -#include #include #include @@ -757,7 +756,7 @@ namespace ScriptCanvasEditor AZStd::vector selection; - ScriptCanvas::RuntimeRequests* runtimeRequests = ScriptCanvas::RuntimeRequestBus::FindFirstHandler(m_scriptCanvasId); + auto owningGraph = ScriptCanvas::GraphRequestBus::FindFirstHandler(m_scriptCanvasId); if (runtimeRequests == nullptr) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/Functions/ScriptCanvasFunctionAsset.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/Functions/ScriptCanvasFunctionAsset.h deleted file mode 100644 index 58c99e719e..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/Functions/ScriptCanvasFunctionAsset.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include -#include - -#include - -namespace AZ -{ - class Entity; -} - -namespace ScriptCanvasEditor -{ - class ScriptCanvasFunctionAsset; - class Graph; - - class ScriptCanvasFunctionDescription : public ScriptCanvas::AssetDescription - { - public: - - AZ_TYPE_INFO(ScriptCanvasFunctionDescription, "{B53569F6-8408-40FC-9A72-ED873BEF162E}"); - - ScriptCanvasFunctionDescription() - : AssetDescription( - azrtti_typeid(), - "Script Canvas Function", - "Script Canvas Function Graph Asset", - "@devassets@/scriptcanvas/functions", - ".scriptcanvas_fn", - "Script Canvas Function", - "Untitled-Function-%i", - "Script Canvas Function Files (*.scriptcanvas_fn)", - "Script Canvas Function", - "Script Canvas Function", - "Icons/ScriptCanvas/Viewport/ScriptCanvas_Function.png", - AZ::Color(0.192f, 0.149f, 0.392f, 1.0f), - true - ) - {} - }; - - // TODO-LS: move these to their own file - class ScriptCanvasDataRequests : public AZ::ComponentBus - { - public: - - virtual void SetPrettyName(const char* name) = 0; - virtual AZStd::string GetPrettyName() = 0; - }; - - using ScriptCanvasDataRequestBus = AZ::EBus; - - - class ScriptCanvasFunctionDataComponent - : public AZ::Component - , ScriptCanvasDataRequestBus::MultiHandler - { - public: - AZ_COMPONENT(ScriptCanvasFunctionDataComponent, "{440BB6DC-4E70-4304-A926-252925F77433}"); - - void Activate() override - { - AZ::EntityId entityId = GetEntityId(); - ScriptCanvasDataRequestBus::MultiHandler::BusConnect(entityId); - } - - void Deactivate() override - { - ScriptCanvasDataRequestBus::MultiHandler::BusDisconnect(); - - AZ::EntityId entityId = GetEntityId(); - } - - void SetPrettyName(const char* name) override - { - m_assetPrettyName = name; - } - - AZStd::string GetPrettyName() override - { - return m_assetPrettyName; - } - - static void Reflect(AZ::ReflectContext* reflectContext) - { - if (auto serializeContext = azrtti_cast(reflectContext)) - { - serializeContext->Class() - ->Version(2) - ->Field("m_assetPrettyName", &ScriptCanvasFunctionDataComponent::m_assetPrettyName) - ->Field("m_version", &ScriptCanvasFunctionDataComponent::m_functionDataComponentVersion) - ; - } - } - - size_t m_functionDataComponentVersion = 0; - AZStd::string m_assetPrettyName; - }; - - class ScriptCanvasFunctionAsset - : public ScriptCanvas::ScriptCanvasAssetBase - { - public: - AZ_RTTI(ScriptCanvasFunctionAsset, "{ED078D3C-938D-41F8-A5F6-CC04311ECF4F}", ScriptCanvasAssetBase); - AZ_CLASS_ALLOCATOR(ScriptCanvasFunctionAsset, AZ::SystemAllocator, 0); - - ScriptCanvasFunctionAsset(const AZ::Data::AssetId& assetId = AZ::Data::AssetId(AZ::Uuid::CreateRandom()), AZ::Data::AssetData::AssetStatus status = AZ::Data::AssetData::AssetStatus::NotLoaded) - : ScriptCanvasAssetBase(assetId, status) - { - m_data = aznew ScriptCanvas::ScriptCanvasData(); - } - - ~ScriptCanvasFunctionAsset() override - {} - - ScriptCanvas::AssetDescription GetAssetDescription() const override - { - return ScriptCanvasFunctionDescription(); - } - - using Description = ScriptCanvasFunctionDescription; - - ScriptCanvasFunctionDataComponent* m_cachedComponent = nullptr; - - ScriptCanvasFunctionDataComponent* GetFunctionData() - { - if (m_cachedComponent == nullptr) - { - m_cachedComponent = GetScriptCanvasEntity()->FindComponent(); - } - - return m_cachedComponent; - } - }; - -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.cpp index 443e6864a9..4545063f56 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.cpp @@ -122,8 +122,6 @@ namespace ScriptCanvas { const auto& scriptCanvasId = GetScriptCanvasId(); GraphRequestBus::Handler::BusConnect(scriptCanvasId); - RuntimeRequestBus::Handler::BusConnect(scriptCanvasId); - ValidationRequestBus::Handler::BusConnect(scriptCanvasId); for (auto& nodeEntity : m_graphData.m_nodes) @@ -142,6 +140,7 @@ namespace ScriptCanvas } m_graphData.BuildEndpointMap(); + for (auto& connectionEntity : m_graphData.m_connections) { if (connectionEntity) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.h index e54704e95e..92de8f3c3e 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Graph.h @@ -19,7 +19,6 @@ #include #include #include -#include #include #include @@ -35,7 +34,6 @@ namespace ScriptCanvas class Graph : public AZ::Component , protected GraphRequestBus::Handler - , protected RuntimeRequestBus::Handler , protected StatusRequestBus::Handler , private AZ::EntityBus::Handler , private ValidationRequestBus::Handler @@ -174,14 +172,12 @@ namespace ScriptCanvas void RefreshConnectionValidity(bool warnOnRemoval = false); - //// RuntimeRequestBus::Handler AZ::Data::AssetId GetAssetId() const override { return AZ::Data::AssetId(); } GraphIdentifier GetGraphIdentifier() const override { return GraphIdentifier(GetAssetId(), 0); } AZStd::string GetAssetName() const override { return ""; } AZ::EntityId GetRuntimeEntityId() const override { return GetEntity() ? GetEntityId() : AZ::EntityId(); } VariableId FindAssetVariableIdByRuntimeVariableId(VariableId runtimeId) const override { return runtimeId; } - VariableId FindRuntimeVariableIdByAssetVariableId(VariableId assetId) const override { return assetId; } AZ::EntityId FindAssetNodeIdByRuntimeNodeId(AZ::EntityId editorNode) const override { return editorNode; } AZ::EntityId FindRuntimeNodeIdByAssetNodeId(AZ::EntityId runtimeNode) const override { return runtimeNode; } @@ -190,8 +186,8 @@ namespace ScriptCanvas const GraphVariableMapping* GetVariables() const override; GraphVariable* FindVariable(AZStd::string_view propName) override; GraphVariable* FindVariableById(const VariableId& variableId) override; - Data::Type GetVariableType(const VariableId& variableId) const override; - AZStd::string_view GetVariableName(const VariableId& variableId) const override; + Data::Type GetVariableType(const VariableId& variableId) const; + AZStd::string_view GetVariableName(const VariableId& variableId) const; bool IsGraphObserved() const override; void SetIsGraphObserved(bool isObserved) override; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/GraphBus.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/GraphBus.h index c85c76e54e..b01e23419c 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/GraphBus.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/GraphBus.h @@ -11,6 +11,7 @@ #include "Endpoint.h" #include +#include #include #include @@ -23,6 +24,8 @@ namespace ScriptCanvas class Graph; class Slot; + using EndpointMapConstIterator = AZStd::unordered_multimap::const_iterator; + //! These are public graph requests class GraphRequests : public AZ::EBusTraits { @@ -104,8 +107,49 @@ namespace ScriptCanvas virtual void SetIsGraphObserved(bool observed) = 0; virtual bool IsGraphObserved() const = 0; - }; + virtual VariableId FindAssetVariableIdByRuntimeVariableId(VariableId runtimeId) const = 0; + + virtual AZ::EntityId FindAssetNodeIdByRuntimeNodeId(AZ::EntityId editorNode) const = 0; + + virtual AZ::Data::AssetId GetAssetId() const = 0; + + virtual GraphIdentifier GetGraphIdentifier() const = 0; + + virtual AZStd::string GetAssetName() const = 0; + + //! Looks up the nodeId within the bus handler + virtual Node* FindNode(AZ::EntityId nodeId) const = 0; + + virtual AZ::EntityId FindRuntimeNodeIdByAssetNodeId(AZ::EntityId runtimeNode) const = 0; + + //! Returns the entity id of the execution component + virtual AZ::EntityId GetRuntimeEntityId() const = 0; + + virtual AZStd::pair< EndpointMapConstIterator, EndpointMapConstIterator > GetConnectedEndpointIterators(const Endpoint& endpoint) const = 0; + + //! Returns whether the given endpoint has any connections + virtual bool IsEndpointConnected(const Endpoint& endpoint) const = 0; + + //! Retrieves VariableData structure which manages variable data for the execution component + virtual VariableData* GetVariableData() = 0; + virtual const VariableData* GetVariableDataConst() const = 0; + + //! Retrieves a map of variable id to variable name and variable datums pair + virtual const GraphVariableMapping* GetVariables() const = 0; + + //! Searches for a variable with the specified name + //! returns pointer to the first variable with the specified name or nullptr + virtual GraphVariable* FindVariable(AZStd::string_view varName) = 0; + + //! Searches for a variable by VariableId + //! returns a pair of with the supplied id + //! The variable datum pointer is non-null if the variable has been found + virtual GraphVariable* FindVariableById(const VariableId& variableId) = 0; + + virtual AZ::Data::AssetType GetAssetType() const = 0; + + }; using GraphRequestBus = AZ::EBus; class GraphNotifications : public AZ::EBusTraits diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp index 8d61eef3a0..8250eb1763 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp @@ -487,23 +487,16 @@ namespace ScriptCanvas void Node::Activate() { - SignalBus::Handler::BusConnect(GetEntityId()); - - SetRuntimeBus(RuntimeRequestBus::FindFirstHandler(m_scriptCanvasId)); - AZ_Assert(m_runtimeBus, "Invalid m_executionUniqueId given for RuntimeRequestBus"); - + m_graphRequestBus = GraphRequestBus::FindFirstHandler(m_scriptCanvasId); + AZ_Assert(m_graphRequestBus, "Invalid m_executionUniqueId given for RuntimeRequestBus"); OnActivate(); - MarkDefaultableInput(); } void Node::Deactivate() { OnDeactivate(); - - SignalBus::Handler::BusDisconnect(); - - SetRuntimeBus(RuntimeRequestBus::FindFirstHandler(m_scriptCanvasId)); + m_graphRequestBus = GraphRequestBus::FindFirstHandler(m_scriptCanvasId); } void Node::PostActivate() @@ -737,7 +730,7 @@ namespace ScriptCanvas bool Node::IsInEventHandlingScope(const ID& possibleEventHandler) const { - Node* node = m_runtimeBus->FindNode(possibleEventHandler); + Node* node = m_graphRequestBus->FindNode(possibleEventHandler); if (auto eventHandler = azrtti_cast(node)) { @@ -844,7 +837,7 @@ namespace ScriptCanvas GraphVariable* Node::FindGraphVariable(const VariableId& variableId) const { - return m_runtimeBus->FindVariableById(variableId); + return m_graphRequestBus->FindVariableById(variableId); } void Node::OnSlotConvertedToValue(const SlotId& slotId) @@ -1598,24 +1591,6 @@ namespace ScriptCanvas NodeNotificationsBus::Event(GetEntityId(), &NodeNotifications::OnSlotDisplayTypeChanged, slotId, dataType); } - void Node::SignalInput(const SlotId& slotId) - { - AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::ScriptCanvas); - SC_EXECUTION_TRACE_SIGNAL_INPUT((*this), (InputSignal(CreateNodeInputSignal(slotId)))); - - { - AZ_PROFILE_SCOPE_DYNAMIC(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::%s::SignalInput", GetNodeName().c_str()); - OnInputSignal(slotId); - } - - } - - void Node::SignalOutput(const SlotId& slotId, ExecuteMode mode) - { - AZ_UNUSED(slotId); - AZ_UNUSED(mode); - } - AZ::Outcome Node::SlotAcceptsType(const SlotId& slotID, const Data::Type& type) const { if (auto slot = GetSlot(slotID)) @@ -1914,7 +1889,7 @@ namespace ScriptCanvas if (slot.GetDescriptor() == slotDescriptor && (allowLatentSlots || !slot.IsLatent())) { - AZStd::vector connectedEndpoints = m_runtimeBus->GetConnectedEndpoints(Endpoint{ GetEntityId(), slot.GetId() }); + AZStd::vector connectedEndpoints = m_graphRequestBus->GetConnectedEndpoints(Endpoint{ GetEntityId(), slot.GetId() }); endpoints.insert(endpoints.end(), connectedEndpoints.begin(), connectedEndpoints.end()); } } @@ -2339,9 +2314,7 @@ namespace ScriptCanvas void Node::SetOwningScriptCanvasId(ScriptCanvasId scriptCanvasId) { m_scriptCanvasId = scriptCanvasId; - - SetRuntimeBus(RuntimeRequestBus::FindFirstHandler(m_scriptCanvasId)); - + m_graphRequestBus = GraphRequestBus::FindFirstHandler(m_scriptCanvasId); OnGraphSet(); } @@ -2426,7 +2399,7 @@ namespace ScriptCanvas AZ::EntityId Node::GetGraphEntityId() const { - return m_runtimeBus->GetRuntimeEntityId(); + return m_graphRequestBus->GetRuntimeEntityId(); } NodePtrConstList Node::FindConnectedNodesByDescriptor(const SlotDescriptor& slotDescriptor, bool followLatentConnections) const @@ -2437,7 +2410,7 @@ namespace ScriptCanvas for (const auto& endpoint : GetAllEndpointsByDescriptor(slotDescriptor, followLatentConnections)) { - Node* connectedNode = m_runtimeBus->FindNode(endpoint.GetNodeId()); + Node* connectedNode = m_graphRequestBus->FindNode(endpoint.GetNodeId()); if (connectedNode) { @@ -2456,7 +2429,7 @@ namespace ScriptCanvas for (const auto& endpoint : GetAllEndpointsByDescriptor(slotDescriptor, followLatentConnections)) { - Node* connectedNode = m_runtimeBus->FindNode(endpoint.GetNodeId()); + Node* connectedNode = m_graphRequestBus->FindNode(endpoint.GetNodeId()); if (connectedNode) { @@ -2469,7 +2442,7 @@ namespace ScriptCanvas AZ::Data::AssetId Node::GetGraphAssetId() const { - return m_runtimeBus->GetAssetId(); + return m_graphRequestBus->GetAssetId(); } AZStd::string Node::GetGraphAssetName() const @@ -2482,7 +2455,7 @@ namespace ScriptCanvas GraphIdentifier Node::GetGraphIdentifier() const { - return m_runtimeBus->GetGraphIdentifier(); + return m_graphRequestBus->GetGraphIdentifier(); } bool Node::IsSanityCheckRequired() const @@ -2652,7 +2625,7 @@ namespace ScriptCanvas return; } - auto node = m_runtimeBus->FindNode(endpoint.GetNodeId()); + auto node = m_graphRequestBus->FindNode(endpoint.GetNodeId()); if (node) { @@ -2840,7 +2813,7 @@ namespace ScriptCanvas bool Node::IsConnected(const Slot& slot) const { AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Node::IsConnected"); - return slot.IsVariableReference() || m_runtimeBus->IsEndpointConnected(slot.GetEndpoint()); + return slot.IsVariableReference() || m_graphRequestBus->IsEndpointConnected(slot.GetEndpoint()); } bool Node::IsConnected(const SlotId& slotId) const @@ -2880,7 +2853,7 @@ namespace ScriptCanvas bool Node::IsActivated() const { - return m_runtimeBus; + return m_graphRequestBus; } EndpointsResolved Node::GetConnectedNodes(const Slot& slot) const @@ -2889,17 +2862,17 @@ namespace ScriptCanvas EndpointsResolved connectedNodes; - auto endpointIters = m_runtimeBus->GetConnectedEndpointIterators(Endpoint{ GetEntityId(), slot.GetId() }); + auto endpointIters = m_graphRequestBus->GetConnectedEndpointIterators(Endpoint{ GetEntityId(), slot.GetId() }); for (auto endpointIter = endpointIters.first; endpointIter != endpointIters.second; ++endpointIter) { const Endpoint& endpoint = endpointIter->second; - auto node = m_runtimeBus->FindNode(endpoint.GetNodeId()); + auto node = m_graphRequestBus->FindNode(endpoint.GetNodeId()); if (node == nullptr) { - AZStd::string assetName = m_runtimeBus->GetAssetName(); - AZ::EntityId assetNodeId = m_runtimeBus->FindAssetNodeIdByRuntimeNodeId(endpoint.GetNodeId()); + AZStd::string assetName = m_graphRequestBus->GetAssetName(); + AZ::EntityId assetNodeId = m_graphRequestBus->FindAssetNodeIdByRuntimeNodeId(endpoint.GetNodeId()); AZ_Warning("Script Canvas", false, "Unable to find node with id (id: %s) in the graph '%s'. Most likely the node was serialized with a type that is no longer reflected", assetNodeId.ToString().data(), assetName.data()); @@ -2913,8 +2886,8 @@ namespace ScriptCanvas auto endpointSlot = node->GetSlot(endpoint.GetSlotId()); if (!endpointSlot) { - AZStd::string assetName = m_runtimeBus->GetAssetName(); - AZ::EntityId assetNodeId = m_runtimeBus->FindAssetNodeIdByRuntimeNodeId(endpoint.GetNodeId()); + AZStd::string assetName = m_graphRequestBus->GetAssetName(); + AZ::EntityId assetNodeId = m_graphRequestBus->FindAssetNodeIdByRuntimeNodeId(endpoint.GetNodeId()); AZ_Warning("Script Canvas", false, "Endpoint was missing slot. id (id: %s) in the graph '%s'.", assetNodeId.ToString().data(), assetName.data()); @@ -2937,18 +2910,18 @@ namespace ScriptCanvas void Node::ModConnectedNodes(const Slot& slot, AZStd::vector>& connectedNodes) const { - auto endpointIters = m_runtimeBus->GetConnectedEndpointIterators(Endpoint{ GetEntityId(), slot.GetId() }); + auto endpointIters = m_graphRequestBus->GetConnectedEndpointIterators(Endpoint{ GetEntityId(), slot.GetId() }); for (auto endpointIter = endpointIters.first; endpointIter != endpointIters.second; ++endpointIter) { const Endpoint& endpoint = endpointIter->second; - auto node = m_runtimeBus->FindNode(endpoint.GetNodeId()); + auto node = m_graphRequestBus->FindNode(endpoint.GetNodeId()); if (node == nullptr) { - AZStd::string assetName = m_runtimeBus->GetAssetName(); - AZ::EntityId assetNodeId = m_runtimeBus->FindAssetNodeIdByRuntimeNodeId(endpoint.GetNodeId()); + AZStd::string assetName = m_graphRequestBus->GetAssetName(); + AZ::EntityId assetNodeId = m_graphRequestBus->FindAssetNodeIdByRuntimeNodeId(endpoint.GetNodeId()); AZ_Error("Script Canvas", false, "Unable to find node with id (id: %s) in the graph '%s'. Most likely the node was serialized with a type that is no longer reflected", assetNodeId.ToString().data(), assetName.data()); @@ -2961,41 +2934,7 @@ namespace ScriptCanvas bool Node::HasConnectedNodes(const Slot& slot) const { - return m_runtimeBus->IsEndpointConnected(Endpoint{ GetEntityId(), slot.GetId() }); - } - - void Node::OnInputChanged(Node& node, const Datum& input, const SlotId& slotID) - { - AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::ScriptCanvas); - node.OnInputChanged(input, slotID); - } - - void Node::PushOutput(const Datum& output, const Slot& slot) const - { - AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::ScriptCanvas); - - if (slot.IsVariableReference()) - { - GraphVariable* variable = slot.GetVariable(); - - if (variable) - { - ModifiableDatumView datumView; - variable->ConfigureDatumView(datumView); - - datumView.AssignToDatum(output); - } - } - else - { - auto endpointIters = m_runtimeBus->GetConnectedEndpointIterators(Endpoint{ GetEntityId(), slot.GetId() }); - - for (auto endpointIter = endpointIters.first; endpointIter != endpointIters.second; ++endpointIter) - { - Node* node = m_runtimeBus->FindNode(endpointIter->second.GetNodeId()); - node->SetInput(output, endpointIter->second.GetSlotId()); - } - } + return m_graphRequestBus->IsEndpointConnected(Endpoint{ GetEntityId(), slot.GetId() }); } void Node::ForEachConnectedNode(const Slot& slot, AZStd::function callable) const @@ -3018,9 +2957,8 @@ namespace ScriptCanvas FindModifiableDatumView(slotId, datumView); if (datumView.IsValid()) - { + { datumView.AssignToDatum(newInput); - OnInputChanged((*datumView.GetDatum()), slotId); } } @@ -3034,7 +2972,6 @@ namespace ScriptCanvas if (datumView.IsValid()) { datumView.AssignToDatum(newInput); - OnInputChanged((*datumView.GetDatum()), slotId); } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h index 74707916f3..55379e29b9 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h @@ -22,12 +22,10 @@ #include #include #include -#include #include #include #include #include -#include #include #include #include @@ -400,7 +398,6 @@ namespace ScriptCanvas class Node : public AZ::Component , public DatumNotificationBus::Handler - , private SignalBus::Handler , public NodeRequestBus::Handler , public EndpointNotificationBus::MultiHandler { @@ -542,7 +539,6 @@ namespace ScriptCanvas AZStd::vector> FindConnectedNodesAndSlotsByDescriptor(const SlotDescriptor& slotType, bool followLatentConnections = false) const; AZStd::vector GetSlotsByType(CombinedSlotType slotType) const; - AZStd::vector GetConnectedEndpoints(SlotId outSlot) const; bool IsConnected(const Slot& slot) const; bool IsConnected(const SlotId& slotId) const; @@ -845,7 +841,6 @@ namespace ScriptCanvas void SignalSlotsReordered(); - static void OnInputChanged(Node& node, const Datum& input, const SlotId& slotID); static void SetInput(Node& node, const SlotId& id, const Datum& input); static void SetInput(Node& node, const SlotId& id, Datum&& input); @@ -892,7 +887,6 @@ protected: void Configure(); protected: - TransientSlotIdentifier ConstructTransientIdentifier(const Slot& slot) const; DatumVector GatherDatumsForDescriptor(SlotDescriptor descriptor) const; @@ -900,7 +894,6 @@ protected: SlotDataMap CreateInputMap() const; SlotDataMap CreateOutputMap() const; - Signal CreateNodeInputSignal(const SlotId& slotId) const; Signal CreateNodeOutputSignal(const SlotId& slotId) const; @@ -954,6 +947,7 @@ protected: //! This is a used by CodeGen to configure slots just prior to OnInit. virtual void ConfigureSlots() {} + //! Entity level initialization, perform any resource allocation here that should be available throughout the node's existence. virtual void OnInit() {} @@ -968,13 +962,11 @@ protected: //! Entity level activation, perform entity lifetime setup here, i.e. connect to EBuses virtual void OnActivate() {} + //! Entity level deactivation, perform any entity lifetime release here, i.e disconnect from EBuses virtual void OnDeactivate() {} virtual void OnPostActivate() {} - //! Any node that is not pure data will perform its operation assuming that all input has been pushed and is reasonably valid - // perform your derived nodes work in OnInputSignal(const SlotId&) - virtual void OnInputSignal(const SlotId& /*slot*/) {} //! Signal sent once the OwningScriptCanvasId is set. virtual void OnGraphSet() {} @@ -1000,25 +992,12 @@ protected: void ModConnectedNodes(const Slot& slot, AZStd::vector>&) const; bool HasConnectedNodes(const Slot& slot) const; - virtual void OnInputChanged(const Datum& /*input*/, const SlotId& /*slotID*/) {} - - ////////////////////////////////////////////////////////////////////////// - //! The body of the node's execution, implement the node's work here. - void PushOutput(const Datum& output, const Slot& slot) const; void SetOwningScriptCanvasId(ScriptCanvasId scriptCanvasId); void SetGraphEntityId(AZ::EntityId graphEntityId); - // on activate, simple expressions need to push this data virtual void SetInput(const Datum& input, const SlotId& id); virtual void SetInput(Datum&& input, const SlotId& id); - //! Any node that is not pure data will perform its operation assuming that all input has been pushed and is reasonably valid - // perform your derived nodes work in OnInputSignal(const SlotId&) - void SignalInput(const SlotId& slot) override final; - - //! This must be called manually to send execution out of a specific slot - void SignalOutput(const SlotId& slot, ExecuteMode mode = ExecuteMode::Normal) override final; - bool SlotExists(AZStd::string_view name, const SlotDescriptor& slotDescriptor) const; bool IsTargetInDataFlowPath(const ID& targetNodeId, AZStd::unordered_set& path) const; @@ -1027,10 +1006,6 @@ protected: void PopulateNodeType(); - void SetRuntimeBus(RuntimeRequests* runtimeBus) { m_runtimeBus = runtimeBus; } - RuntimeRequests* GetRuntimeBus() const { return m_runtimeBus; } - - GraphScopedNodeId GetScopedNodeId() const { return GraphScopedNodeId(GetOwningScriptCanvasId(), GetEntityId()); } private: @@ -1070,102 +1045,17 @@ protected: AZStd::vector< VisualExtensionSlotConfiguration > m_visualExtensions; // Cache pointer to the owning Graph - RuntimeRequests* m_runtimeBus = nullptr; + GraphRequests* m_graphRequestBus = nullptr; ScriptCanvas::SlotId m_removingSlot; public: - template - const t_Value* GetInput_UNIT_TEST(AZStd::string_view slotName) - { - return GetInput_UNIT_TEST(GetSlotId(slotName)); - } - - template - t_Value* ModInput_UNIT_TEST(AZStd::string_view slotName) - { - return ModInput_UNIT_TEST(GetSlotId(slotName)); - } - - template - const t_Value* GetInput_UNIT_TEST(const SlotId& slotId) - { - const Datum* input = FindDatum(slotId); - return input ? input->GetAs() : nullptr; - } - - template - t_Value* ModInput_UNIT_TEST(const SlotId& slotId) - { - auto slotIter = m_slotIdIteratorCache.find(slotId); - - if (slotIter != m_slotIdIteratorCache.end()) - { - Slot* slot = &(*slotIter->second.m_slotIterator); - - if (slot->IsVariableReference()) - { - AZ_Assert(false, "Variable references are not supported in Unit Test methods."); - } - else - { - return slotIter->second.GetDatumIter()->ModAs(); - } - } - - return nullptr; - } - - const Datum* GetInput_UNIT_TEST(AZStd::string_view slotName) - { - return GetInput_UNIT_TEST(GetSlotId(slotName)); - } - - const Datum* GetInput_UNIT_TEST(const SlotId& slotId) - { - return FindDatum(slotId); - } - - // initializes the node input to the value passed in, not a pointer to it - template - void SetInput_UNIT_TEST(AZStd::string_view slotName, const t_Value& value) - { - SetInput_UNIT_TEST(GetSlotId(slotName), value); - } - - template - void SetInput_UNIT_TEST(const SlotId& slotId, const t_Value& value) - { - SetInput(Datum(value), slotId); - } - - void SetInput_UNIT_TEST(AZStd::string_view slotName, const Datum& value) - { - SetInput_UNIT_TEST(GetSlotId(slotName), value); - } - - void SetInput_UNIT_TEST(AZStd::string_view slotName, Datum&& value) - { - SetInput_UNIT_TEST(GetSlotId(slotName), AZStd::move(value)); - } - - void SetInput_UNIT_TEST(const SlotId& slotId, Datum&& value) - { - SetInput(AZStd::move(value), slotId); - } - template friend struct Internal::MultipleOutputHelper; template friend struct Internal::OutputSlotHelper; - template - friend struct Internal::PushOutputHelper; - - template - friend struct Internal::CallHelper; - template friend struct SetDefaultValuesByIndex; }; @@ -1238,104 +1128,6 @@ protected: } }; - template> - struct PushOutputHelper - { - template - static void PushOutput(Node& node, ResultType&& result, AZStd::index_sequence) - { - // protect against changes to the function that generated the node - if (auto slot = node.GetSlotByIndex(t_Traits::s_resultsSlotIndicesStart)) - { - node.PushOutput(Datum(AZStd::forward(result)), *slot); - } - } - }; - - template - struct PushOutputHelper - { - template static void PushOutput(Node& node, AZStd::ignore_t result, AZStd::index_sequence) {} - }; - - template - struct PushOutputHelper::value>> - { - template - static void PushOutputFold(Node& node, ResultType&& tupleResult) - { - // protect against changes to the function that generated the node - if (auto slot = node.GetSlotByIndex(t_Traits::s_resultsSlotIndicesStart + t_Index)) - { - node.PushOutput(Datum(AZStd::get(AZStd::forward(tupleResult))), *slot); - } - } - - template - static void PushOutput(Node& node, ResultType&& tupleResult, AZStd::index_sequence) - { - (PushOutputFold(node, AZStd::forward(tupleResult)), ...); - } - }; - - template - struct CallHelper - { - // protect against changes to the function that generated the node - template - static bool IsIndexSafe(Node& node, const AZStd::index_sequence&) - { - return (true && ... && (node.FindDatumByIndex(Indices) != nullptr && node.FindDatumByIndex(Indices)->GetAs>() != nullptr)); - } - - template - static void Call(Node& node, AZStd::Internal::pack_traits_arg_sequence, [[maybe_unused]] AZStd::index_sequence sequence) - { -#if !defined(_RELEASE) - if (IsIndexSafe(node, sequence)) - { - PushOutputHelper::PushOutput(node, AZStd::invoke(function, *node.FindDatumByIndex(ArgIndices)->GetAs>()...), ResultIndexSequence()); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((node), "Generic function Node (%s) could not be executed, due to missing slot for source definition." - "this is likely due to changing the function signature. See serialization log for potential errors & warnings.", node.GetNodeName().c_str()); - } -#else - PushOutputHelper::PushOutput(node, AZStd::invoke(function, *node.FindDatumByIndex(ArgIndices)->GetAs>()...), ResultIndexSequence()); -#endif//!defined(_RELEASE) - } - }; - - template - struct CallHelper - { - // protect against changes to the function that generated the node - template - static bool IsIndexSafe(Node& node, const AZStd::index_sequence&) - { - return true && (... && (node.FindDatumByIndex(Indices) != nullptr && node.FindDatumByIndex(Indices)->GetAs>() != nullptr)); - } - - template - static void Call(Node& node, AZStd::Internal::pack_traits_arg_sequence, [[maybe_unused]] AZStd::index_sequence sequence) - { -#if !defined(_RELEASE) - if (IsIndexSafe(node, sequence)) - { - AZStd::invoke(function, *node.FindDatumByIndex(ArgIndices)->GetAs>()...); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((node), "Generic function Node (%s) could not be executed, due to missing slot for source definition." - "this is likely due to changing the function signature. See serialization log for potential errors & warnings.", node.GetNodeName().c_str()); - } -#else - AZStd::invoke(function, *node.FindDatumByIndex(ArgIndices)->GetAs>()...); -#endif//!defined(_RELEASE) - } - }; - template struct MultipleOutputHelper { @@ -1346,11 +1138,6 @@ protected: { OutputSlotHelper::AddOutputSlot(node, ResultIndexSequence()); } - - static void Call(Node& node) - { - CallHelper::Call(node, typename AZStd::function_traits::arg_sequence{}, AZStd::make_index_sequence::arity>{}); - } }; template> diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h index 95fc23c5d5..e3e0c1a7a3 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h @@ -248,8 +248,6 @@ namespace ScriptCanvas return AZ::Success(scope); } - - protected: template @@ -298,13 +296,6 @@ namespace ScriptCanvas MultipleOutputInvoker::Add(*this); } - void OnInputSignal(const SlotId&) override - { - MultipleOutputInvoker::Call(*this); - SignalOutput(GetSlotId("Out")); - } - - static bool VersionConverter(AZ::SerializeContext& serializeContext, AZ::SerializeContext::DataElementNode& rootElement); static bool ConvertOldNodeGeneric(AZ::SerializeContext& serializeContext, AZ::SerializeContext::DataElementNode& rootElement); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SignalBus.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SignalBus.h deleted file mode 100644 index 1a39c0f4d6..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SignalBus.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include "Core.h" - -#include - -namespace ScriptCanvas -{ - enum class ExecuteMode - { - Normal, - UntilNodeIsFoundInStack - }; - - class SignalInterface : public AZ::EBusTraits - { - public: - ////////////////////////////////////////////////////////////////////////// - // EBusTraits overrides - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; - typedef ID BusIdType; - ////////////////////////////////////////////////////////////////////////// - - virtual void SignalInput(const SlotId& slot) = 0; - virtual void SignalOutput(const SlotId& slot, ExecuteMode mode = ExecuteMode::Normal) = 0; - }; - - using SignalBus = AZ::EBus; -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.cpp index 2517c0c7ed..204a087ab3 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.cpp @@ -384,15 +384,10 @@ namespace ScriptCanvas if (m_variable) { VariableNotificationBus::Handler::BusConnect(m_variable->GetGraphScopedId()); - - if (IsInput()) - { - m_node->OnInputChanged((*m_variable->GetDatum()), GetId()); - } } - else + else if (m_node) { - SCRIPTCANVAS_REPORT_ERROR((*m_node), "Node (%s) is attempting to execute using an invalid Variable Reference", m_node->GetNodeName().c_str()); + AZ_Warning("ScriptCanvas", false, "Node (%s) is attempting to initialize an invalid Variable Reference", m_node->GetNodeName().c_str()); } } } @@ -584,11 +579,6 @@ namespace ScriptCanvas return m_isLatentSlot; } - void Slot::OnVariableValueChanged() - { - m_node->OnInputChanged((*m_variable->GetDatum()), GetId()); - } - void Slot::SetDynamicDataType(DynamicDataType dynamicDataType) { AZ_Assert(m_dynamicDataType == DynamicDataType::None, "Set Dynamic Data Type is meant to be used for a node wise version conversion step. Not as a run time reconfiguration of a dynamic type."); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.h index 1eeddb8898..0e5889e4ba 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Slot.h @@ -167,10 +167,6 @@ namespace ScriptCanvas bool IsLatent() const; - // VariableNotificationBus - void OnVariableValueChanged() override; - //// - // Here to allow conversion of the previously untyped any slots into the dynamic type any. void SetDynamicDataType(DynamicDataType dynamicDataType); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.h index 024f3e7483..19ff2e1d65 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.h @@ -266,16 +266,6 @@ namespace ScriptCanvas const In* FindIn(const AZStd::string& inSlotId) const; const Out* FindLatentOut(const AZStd::string& latent) const; LexicalScope GetLexicalScope(bool isSourcePure) const; - -#if defined(FUNCTION_LEGACY_SUPPORT_ENABLED) - public: - bool IsAllInputOutputShared() const; - - // all input/output are used in every in/out/latent slot? - bool m_isAllInputOutputShared = false; - - void MarkAllInputOutputShared(); -#endif }; AZStd::string ToString(const In& in, size_t tabs = 0); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeBus.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeBus.h deleted file mode 100644 index eb3956c4e5..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeBus.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include - -#include -#include -#include -#include - -#include -#include -#include - -namespace ScriptCanvas -{ - struct GraphData; - class GraphVariable; - class VariableData; - - using EndpointMapConstIterator = AZStd::unordered_multimap::const_iterator; - - //! Runtime Request Bus for interfacing with the runtime execution component - class RuntimeRequests : public AZ::EBusTraits - { - public: - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; - //! BusIdType represents a unique id for the execution component - //! Because multiple Script Canvas graphs can execute on the same entity - //! this is not an "EntityId" in the sense that it uniquely identifies an entity. - using BusIdType = ScriptCanvasId; - - virtual VariableId FindAssetVariableIdByRuntimeVariableId(VariableId runtimeId) const = 0; - - virtual VariableId FindRuntimeVariableIdByAssetVariableId(VariableId assetId) const = 0; - - virtual AZ::EntityId FindAssetNodeIdByRuntimeNodeId(AZ::EntityId editorNode) const = 0; - - virtual AZ::Data::AssetId GetAssetId() const = 0; - virtual GraphIdentifier GetGraphIdentifier() const = 0; - virtual AZStd::string GetAssetName() const = 0; - - //! Looks up the nodeId within the bus handler - virtual Node* FindNode(AZ::EntityId nodeId) const = 0; - - virtual AZ::EntityId FindRuntimeNodeIdByAssetNodeId(AZ::EntityId runtimeNode) const = 0; - - //! Returns the entity id of the execution component - virtual AZ::EntityId GetRuntimeEntityId() const = 0; - - //! Returns a container of nodes - virtual AZStd::vector GetNodes() const = 0; - //! Returns a container of connections - virtual AZStd::vector GetConnections() const = 0; - - //! Returns a container of all endpoints to which the supplied endpoint is connected point - virtual AZStd::vector GetConnectedEndpoints(const Endpoint& endpoint) const = 0; - - virtual AZStd::pair< EndpointMapConstIterator, EndpointMapConstIterator > GetConnectedEndpointIterators(const Endpoint& endpoint) const = 0; - - //! Returns whether the given endpoint has any connections - virtual bool IsEndpointConnected(const Endpoint& endpoint) const = 0; - - //! Retrieves GraphData structure which manages the nodes and connections of an executing graph - virtual GraphData* GetGraphData() = 0; - virtual const GraphData* GetGraphDataConst() const = 0; - - //! Retrieves VariableData structure which manages variable data for the execution component - virtual VariableData* GetVariableData() = 0; - virtual const VariableData* GetVariableDataConst() const = 0; - - //! Retrieves a map of variable id to variable name and variable datums pair - virtual const GraphVariableMapping* GetVariables() const = 0; - - //! Searches for a variable with the specified name - //! returns pointer to the first variable with the specified name or nullptr - virtual GraphVariable* FindVariable(AZStd::string_view varName) = 0; - - //! Searches for a variable by VariableId - //! returns a pair of with the supplied id - //! The variable datum pointer is non-null if the variable has been found - virtual GraphVariable* FindVariableById(const VariableId& variableId) = 0; - - //! Returns the type associated with the specified variable. - virtual Data::Type GetVariableType(const VariableId& variableId) const = 0; - - //! Looks up the variable name that the variable data is associated with in the handler of the bus - virtual AZStd::string_view GetVariableName(const VariableId& variableId) const = 0; - - virtual bool IsGraphObserved() const = 0; - virtual void SetIsGraphObserved(bool isObserved) = 0; - - virtual AZ::Data::AssetType GetAssetType() const = 0; - }; - - using RuntimeRequestBus = AZ::EBus; -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.cpp index 2ba248bb5e..348c89f45f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.cpp @@ -2248,17 +2248,6 @@ namespace ScriptCanvas m_subgraphInterface.SetNamespacePath(m_source.m_namespacePath); -#if defined(FUNCTION_LEGACY_SUPPORT_ENABLED) - if (m_source.m_graph->IsFunctionGraph()) - { - m_variableScopeMeaning = VariableScopeMeaning_LegacyFunctions::FunctionPrototype; - m_subgraphInterface.MarkAllInputOutputShared(); - } - else - { - m_variableScopeMeaning = VariableScopeMeaning_LegacyFunctions::ValueInitialization; - } -#endif // The Order Matters: begin // add all data to the ACM for easy look up in input/output processing for ACM nodes diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.h index 92de21ff97..06854fdbfd 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/AbstractCodeModel.h @@ -594,24 +594,6 @@ namespace ScriptCanvas void ParseExecutionIfStatementBooleanExpression(ExecutionTreePtr booleanExpressionExecution, AZStd::string executionName, LexicalScope lexicalScope); void ParseExecutionIfStatementInternalFunction(ExecutionTreePtr internalFunctionExecution); - -#if defined(FUNCTION_LEGACY_SUPPORT_ENABLED) - public: - AZStd::vector FindAllVariablesInVariableFlagScope(VariableFlags::Scope scope) const; - - // scrape variables for scope, every Scope::In and InOut - AZStd::vector FindSubGraphInputValues() const; - - // scrape variables for scope, every Scope::Out and InOut - AZStd::vector FindSubGraphOutputValues() const; - - AZStd::vector GetLocalVariablesUser() const; - - VariableScopeMeaning_LegacyFunctions GetVariableScopeMeaning() const; - - private: - VariableScopeMeaning_LegacyFunctions m_variableScopeMeaning = VariableScopeMeaning_LegacyFunctions::ValueInitialization; -#endif }; // class AbstractCodeModel template diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/FunctionsLegacySupport.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/FunctionsLegacySupport.cpp deleted file mode 100644 index 5d16bd7f9c..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/FunctionsLegacySupport.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "PrimitivesDeclarations.h" - -#if defined(FUNCTION_LEGACY_SUPPORT_ENABLED) - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AbstractCodeModel.h" -#include "FunctionsLegacySupport.h" -#include "GrammarContextBus.h" -#include "ParsingUtilities.h" -#include "Primitives.h" - -namespace ScriptCanvas -{ - namespace Grammar - { - - void AbstractCodeModel::AddAllVariablesPreParse_LegacyFunctions() - { - // all variables assumed to be NOT persistent - in the live code they are reset when activated - // variables with no scope In/Out is assumed to be persistent, this is a mess with tick handlers - // warn on any variable attempted to be read before written - AZ_Assert(m_variableScopeMeaning == VariableScopeMeaning_LegacyFunctions::FunctionPrototype, "new graph type added without full support"); - auto& sourceVariables = m_source.m_variableData->GetVariables(); - - AZStd::set sortedVariables; - for (const auto& variablePair : sourceVariables) - { - sortedVariables.insert(&variablePair.second); - } - - for (auto& sourceVariable : sortedVariables) - { - auto datum = sourceVariable->GetDatum(); - AZ_Assert(datum != nullptr, "the datum must be valid"); - AddVariable(*datum, sourceVariable->GetVariableName(), sourceVariable->GetVariableId()); - } - } - - AZStd::vector AbstractCodeModel::FindSubGraphInputValues() const - { - return FindAllVariablesInVariableFlagScope(VariableFlags::Scope::Input); - } - - AZStd::vector AbstractCodeModel::FindSubGraphOutputValues() const - { - return FindAllVariablesInVariableFlagScope(VariableFlags::Scope::Output); - } - - AZStd::vector AbstractCodeModel::FindAllVariablesInVariableFlagScope(VariableFlags::Scope scope) const - { - AZStd::vector variables; - auto& sourceVariables = m_source.m_variableData->GetVariables(); - - for (auto& variable : m_variables) - { - if (IsSourceInScope(variable, scope)) - { - variables.push_back(variable); - } - } - - // sort by variable id - AZStd::sort(variables.begin(), variables.end(), [](const auto& lhs, const auto& rhs) { return lhs->m_sourceVariableId < rhs->m_sourceVariableId; }); - return variables; - } - - AZStd::vector AbstractCodeModel::GetLocalVariablesUser() const - { - AZStd::vector userLocalVariables; - - if (m_variableScopeMeaning == VariableScopeMeaning_LegacyFunctions::FunctionPrototype) - { - for (auto variable : m_variables) - { - if (!variable->m_isMember - && variable->m_sourceVariableId.IsValid() - && !IsSourceInScope(variable, VariableFlags::Scope::Input) - && !IsSourceInScope(variable, VariableFlags::Scope::Output)) - { - userLocalVariables.push_back(variable); - } - } - } - - return userLocalVariables; - } - - VariableScopeMeaning_LegacyFunctions AbstractCodeModel::GetVariableScopeMeaning() const - { - return m_variableScopeMeaning; - } - - bool SubgraphInterface::IsAllInputOutputShared() const - { - return m_isAllInputOutputShared; - } - - void SubgraphInterface::MarkAllInputOutputShared() - { - m_isAllInputOutputShared = true; - } - } // namespace Grammar - - namespace Nodes - { - namespace Core - { - void FunctionCallNode::BuildNodeFromSubgraphInterface - (const AZ::Data::Asset& runtimeAsset - , const SlotExecution::Map& previousMap) - { - // build the node here, from the asset topology, take the node/variable ordering from the function runtime data as a suggestion - // deal with updates and conversions after - const Grammar::SubgraphInterface& subgraphInterface = runtimeAsset.Get()->m_runtimeData.m_interface; - m_prettyName = runtimeAsset.Get()->m_runtimeData.m_name; - - if (!subgraphInterface.IsAllInputOutputShared()) - { - AZ_Error("ScriptCanvas", false, "the current assumption is that there is no way to distinguish between the input/output of different nodelings"); - return; - } - - // for now, all outputs are shared - Grammar::Outputs outputs; - bool sharedOutputInitialized = false; - - SlotExecution::Ins slotMapIns; - SlotExecution::Outs slotMapLatents; - - int slotOffset = 0; - - // add all ins->outs, in their display groups - for (size_t indexIn = 0; indexIn < subgraphInterface.GetInCount(); ++indexIn) - { - const Grammar::In& interfaceIn = subgraphInterface.GetIn(indexIn); - - SlotExecution::In slotMapIn = AddExecutionInSlotFromInterface(interfaceIn, slotOffset++, previousMap.FindInSlotIdBySource(interfaceIn.sourceID)); - if (!slotMapIn.slotId.IsValid()) - { - AZ_Error("ScriptCanvas", false, "Failed to add Execution In slot from sub graph interface"); - return; - } - slotMapIn.inputs = AddDataInputSlotFromInterface(interfaceIn.inputs, interfaceIn.sourceID, interfaceIn.displayName, previousMap, slotOffset); - for (auto& input : slotMapIn.inputs) - { - if (!input.slotId.IsValid()) - { - AZ_Error("ScriptCanvas", false, "Failed to add Input slot from sub graph interface"); - return; - } - } - - for (auto& interfaceOut : interfaceIn.outs) - { - SlotExecution::Out slotMapOut = AddExecutionOutSlotFromInterface(interfaceIn, interfaceOut, slotOffset++, previousMap.FindOutSlotIdBySource(interfaceIn.sourceID, interfaceOut.sourceID)); - if (!slotMapOut.slotId.IsValid()) - { - AZ_Error("ScriptCanvas", false, "Failed to add Execution Out slot from sub graph interface"); - return; - } - if (!sharedOutputInitialized) - { - outputs = interfaceOut.outputs; - sharedOutputInitialized = true; - } - - slotMapIn.outs.push_back(slotMapOut); - } - - slotMapIns.push_back(slotMapIn); - } - - // add all latents in their display groups - for (size_t indexLatent = 0; indexLatent < subgraphInterface.GetLatentOutCount(); ++indexLatent) - { - const Grammar::Out& interfaceLatent = subgraphInterface.GetLatentOut(indexLatent); - - SlotExecution::Out slotMapLatentOut = AddExecutionLatentOutSlotFromInterface(interfaceLatent, slotOffset++, previousMap.FindLatentSlotIdBySource(interfaceLatent.sourceID)); - if (!slotMapLatentOut.slotId.IsValid()) - { - AZ_Error("ScriptCanvas", false, "Failed to add Latent Out slot from sub graph interface"); - return; - } - slotMapLatentOut.returnValues.values = AddDataInputSlotFromInterface(interfaceLatent.returnValues, interfaceLatent.sourceID, interfaceLatent.displayName, previousMap, slotOffset); - for (auto& input : slotMapLatentOut.returnValues.values) - { - if (!input.slotId.IsValid()) - { - AZ_Error("ScriptCanvas", false, "Failed to add Input slot from sub graph interface"); - return; - } - } - - if (!sharedOutputInitialized) - { - outputs = interfaceLatent.outputs; - sharedOutputInitialized = true; - } - - slotMapLatents.push_back(slotMapLatentOut); - } - - // add all outputs one time, since they are currently all required to be part of all the signatures [\todo must fix] , in a variable display group - SlotExecution::Outputs slotMapOutputs = AddDataOutputSlotFromInterface(outputs, "", previousMap, slotOffset); - for (auto& output : slotMapOutputs) - { - if (!output.slotId.IsValid()) - { - AZ_Error("ScriptCanvas", false, "Failed to add Output slot from sub graph interface"); - return; - } - } - if (!subgraphInterface.IsLatent()) - { - for (auto& slotMapIn : slotMapIns) - { - for (auto& slotMapOut : slotMapIn.outs) - { - slotMapOut.outputs = slotMapOutputs; - } - } - } - else - { - for (auto& slotMapLatent : slotMapLatents) - { - slotMapLatent.outputs = slotMapOutputs; - } - } - - // when returning variables: sort variables by source slot id, they are sorted in the slot map, so just take them from the slot map - m_slotExecutionMap = AZStd::move(SlotExecution::Map(AZStd::move(slotMapIns), AZStd::move(slotMapLatents))); - m_slotExecutionMapSourceInterface = subgraphInterface; - m_asset = runtimeAsset; - SignalSlotsReordered(); - } - } // namespace Core - } // namespace Nodes -} - -#endif diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/FunctionsLegacySupport.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/FunctionsLegacySupport.h deleted file mode 100644 index 756537fcc7..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/FunctionsLegacySupport.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -namespace ScriptCanvas -{ - namespace Grammar - { - enum class VariableScopeMeaning_LegacyFunctions : AZ::u32 - { - ValueInitialization, - FunctionPrototype, - }; - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/PrimitivesDeclarations.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/PrimitivesDeclarations.h index 6ff1010509..12f4199bc4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/PrimitivesDeclarations.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Grammar/PrimitivesDeclarations.h @@ -19,10 +19,6 @@ #include #include -#if defined (FUNCTION_LEGACY_SUPPORT_ENABLED) -#include "FunctionsLegacySupport.h" -#endif - namespace AZ { class ReflectContext; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.cpp index 598671becb..3980fbd044 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.cpp @@ -23,15 +23,6 @@ namespace ScriptCanvas } } - ////////////////// - // BaseTimerNode - ////////////////// - - BaseTimerNode::~BaseTimerNode() - { - StopTimer(); - } - void BaseTimerNode::OnInit() { AZStd::string slotName = GetTimeSlotName(); @@ -74,11 +65,6 @@ namespace ScriptCanvas AddTimeDataSlot(); } - void BaseTimerNode::OnDeactivate() - { - StopTimer(); - } - void BaseTimerNode::ConfigureVisualExtensions() { { @@ -103,54 +89,7 @@ namespace ScriptCanvas return nullptr; } - - void BaseTimerNode::OnSystemTick() - { - AZ::SystemTickBus::Handler::BusDisconnect(); - - if (!AZ::TickBus::Handler::BusIsConnected()) - { - AZ::TickBus::Handler::BusConnect(); - } - } - - void BaseTimerNode::OnTick(float delta, AZ::ScriptTimePoint) - { - if (m_timeUnits == TimeUnits::Ticks) - { - m_timerCounter += 1; - } - switch (m_timeUnits) - { - case TimeUnits::Ticks: - m_timerCounter += 1; - break; - case TimeUnits::Milliseconds: - case TimeUnits::Seconds: - m_timerCounter += delta; - break; - default: - break; - } - - while (m_timerCounter > m_timerDuration) - { - if (!m_isActive) - { - break; - } - - m_timerCounter -= m_timerDuration; - - OnTimeElapsed(); - } - } - - int BaseTimerNode::GetTickOrder() - { - return m_tickOrder; - } - + void BaseTimerNode::AddTimeDataSlot() { if (!m_timeSlotId.IsValid()) @@ -174,70 +113,6 @@ namespace ScriptCanvas } } - void BaseTimerNode::StartTimer() - { - StopTimer(); - - m_isActive = true; - - const Datum* datum = FindDatum(m_timeSlotId); - - if (datum) - { - const Data::NumberType* timeAmount = datum->GetAs(); - - if (timeAmount) - { - m_timerDuration = (*timeAmount); - m_timerCounter = 0; - - // Manage the different unit types - if (m_timeUnits == TimeUnits::Ticks) - { - // Remove all of the floating points - m_timerDuration = aznumeric_cast(aznumeric_cast(m_timerDuration)); - } - else if (m_timeUnits == TimeUnits::Milliseconds) - { - m_timerDuration /= 1000.0; - } - } - } - - if (AZ::TickBus::Handler::BusIsConnected()) - { - AZ::TickBus::Handler::BusDisconnect(); - } - - if (AZ::SystemTickBus::Handler::BusIsConnected()) - { - AZ::SystemTickBus::Handler::BusDisconnect(); - } - - if (!AZ::IsClose(m_timerDuration, 0.0, DBL_EPSILON)) - { - AZ::SystemTickBus::Handler::BusConnect(); - } - else if (AllowInstantResponse()) - { - while (m_isActive) - { - OnTimeElapsed(); - } - } - } - - void BaseTimerNode::StopTimer() - { - m_isActive = false; - - m_timerCounter = 0.0; - m_timerDuration = 0.0; - - AZ::SystemTickBus::Handler::BusDisconnect(); - AZ::TickBus::Handler::BusDisconnect(); - } - AZStd::string BaseTimerNode::GetTimeSlotName() const { return GetBaseTimeSlotName(); @@ -283,11 +158,7 @@ namespace ScriptCanvas { return false; } - - void BaseTimerNode::OnTimeElapsed() - { - } - + void BaseTimerNode::ConfigureTimeSlot(DataSlotConfiguration& configuration) { AZ_UNUSED(configuration); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.h index ca4306cb6e..172569561c 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.h @@ -7,10 +7,7 @@ #pragma once -#include - #include - #include namespace ScriptCanvas @@ -23,8 +20,6 @@ namespace ScriptCanvas class BaseTimerNode : public Node , public NodePropertyInterfaceListener - , public AZ::TickBus::Handler - , public AZ::SystemTickBus::Handler { public: @@ -44,32 +39,16 @@ namespace ScriptCanvas "Seconds" }; - virtual ~BaseTimerNode(); - // Node... void OnInit() override; void OnConfigured() override; - void OnDeactivate() override; void ConfigureVisualExtensions() override; NodePropertyInterface* GetPropertyInterface(AZ::Crc32 propertyId) override; - //// - - // SystemTickBus... - void OnSystemTick() override; - //// - - // TickBus... - void OnTick(float delta, AZ::ScriptTimePoint timePoint) override; - int GetTickOrder() override; - //// - + // Method that will handle displaying and viewing of the time slot void AddTimeDataSlot(); - void StartTimer(); - void StopTimer(); - AZStd::string GetTimeSlotName() const; protected: @@ -83,7 +62,6 @@ namespace ScriptCanvas bool IsActive() const; virtual bool AllowInstantResponse() const; - virtual void OnTimeElapsed(); // Store until versioning is complete virtual const char* GetTimeSlotFormat() const { return "Time (%s)"; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.cpp index aef18a9255..d383afe02f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.cpp @@ -112,37 +112,6 @@ namespace ScriptCanvas } } - void ExpressionNodeBase::OnInputSignal(const SlotId& slotId) - { - if (slotId == ExpressionNodeBaseProperty::GetInSlotId(this)) - { - for (const SlotId& dirtySlotId : m_dirtyInputs) - { - auto variableIter = m_slotToVariableMap.find(dirtySlotId); - - if (variableIter != m_slotToVariableMap.end()) - { - PushVariable(variableIter->second, (*FindDatum(dirtySlotId))); - } - } - - m_dirtyInputs.clear(); - - if (m_parseError.IsValidExpression() && m_expressionTree.GetTreeSize() != 0) - { - ExpressionEvaluation::ExpressionResult expressionResult; - ExpressionEvaluation::ExpressionEvaluationRequestBus::BroadcastResult(expressionResult, &ExpressionEvaluation::ExpressionEvaluationRequests::Evaluate, m_expressionTree); - - OnResult(expressionResult); - } - } - } - - void ExpressionNodeBase::OnInputChanged([[maybe_unused]] const Datum& input, const SlotId& slotId) - { - m_dirtyInputs.insert(slotId); - } - bool ExpressionNodeBase::CanDeleteSlot([[maybe_unused]] const SlotId& slotId) const { return m_handlingExtension; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.h index 4f8949ba4b..04d5400061 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.h @@ -53,10 +53,6 @@ namespace ScriptCanvas void OnInit() override; void OnPostActivate() override; void ConfigureVisualExtensions() override; - - void OnInputSignal(const SlotId& slotId) override; - void OnInputChanged(const Datum& input, const SlotId& slotId) override; - bool CanDeleteSlot(const SlotId& slotId) const override; SlotId HandleExtension(AZ::Crc32 extensionId) override; @@ -110,7 +106,6 @@ namespace ScriptCanvas bool m_isInError = false; AZStd::unordered_map m_slotToVariableMap; - AZStd::unordered_set m_dirtyInputs; AZStd::unordered_map m_slotsByVariables; ExpressionEvaluation::ParsingError m_parseError; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/EqualTo.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/EqualTo.h index 8d597884ed..1e9a821761 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/EqualTo.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/EqualTo.h @@ -41,22 +41,6 @@ namespace ScriptCanvas } } } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - ComparisonOutcome result(lhs == rhs); - - if (result.IsSuccess()) - { - return Datum(result.GetValue()); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((*this), result.GetError().c_str()); - return Datum(false); - } - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Greater.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Greater.h index baa4762911..d70158ccd1 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Greater.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Greater.h @@ -40,21 +40,6 @@ namespace ScriptCanvas } } } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - ComparisonOutcome result(lhs > rhs); - if (result.IsSuccess()) - { - return Datum(result.GetValue()); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((*this), result.GetError().c_str()); - return Datum(false); - } - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/GreaterEqual.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/GreaterEqual.h index e9f5c06501..8546956aa6 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/GreaterEqual.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/GreaterEqual.h @@ -41,21 +41,6 @@ namespace ScriptCanvas } } } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - ComparisonOutcome result(lhs >= rhs); - if (result.IsSuccess()) - { - return Datum(result.GetValue()); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((*this), result.GetError().c_str()); - return Datum(false); - } - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Less.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Less.h index b16f447d92..2c54247580 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Less.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/Less.h @@ -40,22 +40,6 @@ namespace ScriptCanvas } } } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - ComparisonOutcome result(lhs < rhs); - - if (result.IsSuccess()) - { - return Datum(result.GetValue()); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((*this), result.GetError().c_str()); - return Datum(false); - } - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/LessEqual.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/LessEqual.h index 35364b918f..7f0077588f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/LessEqual.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/LessEqual.h @@ -40,22 +40,6 @@ namespace ScriptCanvas } } } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - ComparisonOutcome result(lhs <= rhs); - - if (result.IsSuccess()) - { - return Datum(result.GetValue()); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((*this), result.GetError().c_str()); - return Datum(false); - } - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/NotEqualTo.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/NotEqualTo.h index c11ff1ba05..b3f6158aa2 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/NotEqualTo.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Comparison/NotEqualTo.h @@ -40,22 +40,6 @@ namespace ScriptCanvas } } } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - ComparisonOutcome result(lhs != rhs); - - if (result.IsSuccess()) - { - return Datum(result.GetValue()); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((*this), result.GetError().c_str()); - return Datum(false); - } - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp index 7b840862bd..8afb5138e1 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp @@ -75,20 +75,6 @@ namespace ScriptCanvas } } - void ArithmeticExpression::OnInputSignal(const SlotId& slotId) - { - if (slotId == GetSlotId(k_evaluateName)) - { - const Datum output = Evaluate(*FindDatumByIndex(k_datumIndexLHS), *FindDatumByIndex(k_datumIndexRHS)); - if (auto slot = GetSlot(GetOutputSlotId())) - { - PushOutput(output, *slot); - } - - SignalOutput(GetSlotId(k_outName)); - } - } - void ArithmeticExpression::Reflect(AZ::ReflectContext* reflection) { if (AZ::SerializeContext* serializeContext = azrtti_cast(reflection)) @@ -107,17 +93,6 @@ namespace ScriptCanvas } } - Datum BinaryOperator::Evaluate([[maybe_unused]] const Datum& lhs, [[maybe_unused]] const Datum& rhs) - { - AZ_Assert(false, "Evaluate must be overridden"); - return Datum(); - }; - - void BinaryOperator::OnInputSignal([[maybe_unused]] const SlotId& slot) - { - AZ_Assert(false, "OnInputSignal must be overridden"); - } - void BinaryOperator::OnInit() { { @@ -159,28 +134,6 @@ namespace ScriptCanvas AZ_Assert(false, "InitializeBooleanExpression must be overridden"); } - void BooleanExpression::OnInputSignal(const SlotId& slotId) - { - if (slotId == GetSlotId(k_evaluateName)) - { - const Datum output = Evaluate(*FindDatumByIndex(k_datumIndexLHS), *FindDatumByIndex(k_datumIndexRHS)); - if (auto slot = GetSlot(GetOutputSlotId())) - { - PushOutput(output, *slot); - } - - const bool* result = output.GetAs(); - if (result && *result) - { - SignalOutput(GetSlotId(k_onTrue)); - } - else - { - SignalOutput(GetSlotId(k_onFalse)); - } - } - } - void BooleanExpression::OnInit() { { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.h index eb44ce5db1..0558decaeb 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.h @@ -31,9 +31,7 @@ namespace ScriptCanvas static const char* k_evaluateName; static const char* k_outName; static const char* k_onTrue; - static const char* k_onFalse; - - + static const char* k_onFalse; protected: ConstSlotsOutcome GetSlotsInExecutionThreadByTypeImpl(const Slot& /*executionSlot*/, CombinedSlotType targetSlotType, const Slot* /*executionChildSlot*/) const override @@ -47,12 +45,6 @@ namespace ScriptCanvas void OnInit() override; - // must be overridden with the binary operations - virtual Datum Evaluate(const Datum& lhs, const Datum& rhs); - - // Triggered by the execution signal - void OnInputSignal(const SlotId& slot) override; - SlotId GetOutputSlotId() const; }; @@ -71,10 +63,6 @@ namespace ScriptCanvas protected: // adds Number inputs, adds Number output type void OnInit() override; - - void OnInputSignal(const SlotId& slot) override; - - }; class BooleanExpression @@ -107,9 +95,7 @@ namespace ScriptCanvas protected: // initialize boolean expression, adds boolean output type calls void OnInit() override; - virtual void InitializeBooleanExpression(); - void OnInputSignal(const SlotId& slot) override; - + virtual void InitializeBooleanExpression(); }; // accepts any type, checks for type equality, and then value equality or pointer equality @@ -126,10 +112,8 @@ namespace ScriptCanvas void InitializeBooleanExpression() override; private: - SlotId m_firstSlotId; SlotId m_secondSlotId; - ScriptCanvas::Data::Type m_displayType; }; @@ -144,8 +128,7 @@ namespace ScriptCanvas protected: // adds number types - void InitializeBooleanExpression() override; - + void InitializeBooleanExpression() override; }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp index fb43e41ad8..1575cd2c75 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -59,16 +58,6 @@ namespace ScriptCanvas SetAutoConnectToGraphOwner(m_autoConnectToGraphOwner); } - void EBusEventHandler::OnPostActivate() - { - - } - - void EBusEventHandler::OnDeactivate() - { - Disconnect(); - } - void EBusEventHandler::OnGraphSet() { GraphScopedNodeId scopedNodeId(GetOwningScriptCanvasId(), GetEntityId()); @@ -127,14 +116,6 @@ namespace ScriptCanvas } } - void EBusEventHandler::Connect() - { - } - - void EBusEventHandler::Disconnect() - { - } - AZ::Outcome EBusEventHandler::GetDependencies() const { return AZ::Success(DependencyReport{}); @@ -515,7 +496,6 @@ namespace ScriptCanvas const AZ::BehaviorEBusHandler::BusForwarderEvent& event = events[eventIndex]; AZ_Assert(!event.m_parameters.empty(), "No parameters in event!"); - m_handler->InstallGenericHook(events[eventIndex].m_name, &OnEventGenericHook, this); if (m_eventMap.find(AZ::Crc32(event.m_name)) != m_eventMap.end()) { @@ -621,137 +601,6 @@ namespace ScriptCanvas } } - void EBusEventHandler::OnEvent(const char* eventName, const int /*eventIndex*/, AZ::BehaviorValueParameter* result, const int numParameters, AZ::BehaviorValueParameter* parameters) - { - AZ_PROFILE_SCOPE_DYNAMIC(AZ::Debug::ProfileCategory::ScriptCanvas, "EBusEventHandler::OnEvent %s", eventName); - - SCRIPTCANVAS_RETURN_IF_ERROR_STATE((*this)); - - auto iter = m_eventMap.find(AZ::Crc32(eventName)); - if (iter == m_eventMap.end()) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Invalid event index in Ebus handler"); - return; - } - - EBusEventEntry& ebusEventEntry = iter->second; - - if (!ebusEventEntry.m_shouldHandleEvent || ebusEventEntry.m_isHandlingEvent) - { - AZ_Warning("ScriptCanvas", !ebusEventEntry.m_isHandlingEvent, "Found situation where in handling event(%s::%s) triggered the same event. Possible infinite loop, not handling second call.", GetEBusName().c_str(), eventName); - return; - } - - ebusEventEntry.m_isHandlingEvent = true; - - ebusEventEntry.m_resultEvaluated = !ebusEventEntry.IsExpectingResult(); - - AZ_Assert(ebusEventEntry.m_eventName.compare(eventName) == 0, "Wrong event handled by this EBusEventHandler! received %s, expected %s", eventName, ebusEventEntry.m_eventName.c_str()); - AZ_Assert(numParameters == ebusEventEntry.m_numExpectedArguments, "Wrong number of events passed into EBusEventHandler %s", eventName); - - // route my parameters to the connect nodes input - AZ_Assert(ebusEventEntry.m_parameterSlotIds.size() == numParameters, "Node %s-%s Num parameters = %d, but num output slots = %d", m_ebusName.c_str(), ebusEventEntry.m_eventName.c_str(), numParameters, ebusEventEntry.m_parameterSlotIds.size()); - - for (int parameterIndex(0); parameterIndex < numParameters; ++parameterIndex) - { - const Slot* slot = GetSlot(ebusEventEntry.m_parameterSlotIds[parameterIndex]); - const auto& value = *(parameters + parameterIndex); - const Datum input(value); - - PushOutput(input, (*slot)); - } - - // now, this should pass execution off to the nodes that will push their output into this result input - SignalOutput(ebusEventEntry.m_eventSlotId, ExecuteMode::UntilNodeIsFoundInStack); - - // route executed nodes output to my input, and my input to the result - if (ebusEventEntry.IsExpectingResult()) - { - if (result) - { - if (const Datum* resultInput = FindDatum(ebusEventEntry.m_resultSlotId)) - { - ebusEventEntry.m_resultEvaluated = resultInput->ToBehaviorContext(*result); - AZ_Warning("Script Canvas", ebusEventEntry.m_resultEvaluated, "Script Canvas failed to write a value back to the caller!"); - } - else - { - AZ_Warning("Script Canvas", false, "Script Canvas handler expecting a result, but had no ability to return it"); - } - } - else - { - AZ_Warning("Script Canvas", false, "Script Canvas handler is expecting a result, but was called without expecting one!"); - } - } - else - { - AZ_Warning("Script Canvas", !result, "Script Canvas handler is not expecting a result, but was called expecting one!"); - } - - // route executed nodes output to my input, and my input to the result - AZ_Warning("Script Canvas", (result != nullptr) == ebusEventEntry.IsExpectingResult(), "Node %s-%s mismatch between expecting a result and getting one!", m_ebusName.c_str(), ebusEventEntry.m_eventName.c_str()); - AZ_Warning("Script Canvas", ebusEventEntry.m_resultEvaluated, "Node %s-%s result not evaluated properly!", m_ebusName.c_str(), ebusEventEntry.m_eventName.c_str()); - - ebusEventEntry.m_isHandlingEvent = false; - } - - void EBusEventHandler::OnInputSignal(const SlotId& slotId) - { - SlotId connectSlot = EBusEventHandlerProperty::GetConnectSlotId(this); - SlotId disconnectSlot = EBusEventHandlerProperty::GetDisconnectSlotId(this); - - if (connectSlot == slotId) - { - if (IsIDRequired()) - { - const Datum* busIdDatum = FindDatum(GetSlotId(c_busIdName)); - - if (!busIdDatum || busIdDatum->Empty()) - { - SlotId failureSlot = EBusEventHandlerProperty::GetOnFailureSlotId(this); - SignalOutput(failureSlot); - SCRIPTCANVAS_REPORT_ERROR((*this), "In order to connect this node, a valid BusId must be provided."); - return; - } - } - - Disconnect(); - Connect(); - - SlotId onConnectSlotId = EBusEventHandlerProperty::GetOnConnectedSlotId(this); - SignalOutput(onConnectSlotId); - return; - } - else if (disconnectSlot == slotId) - { - Disconnect(); - - SlotId onDisconnectSlotId = EBusEventHandlerProperty::GetOnDisconnectedSlotId(this); - SignalOutput(onDisconnectSlotId); - return; - } - } - - void EBusEventHandler::OnInputChanged(const Datum& /*input*/, const SlotId& /*slotId*/) - { - /* - if (GetExecutionType() == ExecutionType::Runtime - && m_autoConnectToGraphOwner - && slotId == FindSlotIdForDescriptor(c_busIdName, SlotDescriptors::DataIn())) - { - Disconnect(); - Connect(); - } - */ - } - - void EBusEventHandler::OnEventGenericHook(void* userData, const char* eventName, int eventIndex, AZ::BehaviorValueParameter* result, int numParameters, AZ::BehaviorValueParameter* parameters) - { - EBusEventHandler* handler(reinterpret_cast(userData)); - handler->OnEvent(eventName, eventIndex, result, numParameters, parameters); - } - void EBusEventHandler::OnWriteEnd() { AZStd::lock_guard lock(m_mutex); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.h index 5fad1ecec2..54776f18de 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.h @@ -78,9 +78,6 @@ namespace ScriptCanvas void OnInit() override; void OnActivate() override; - void OnPostActivate() override; - void OnDeactivate() override; - void OnGraphSet() override; void CollectVariableReferences(AZStd::unordered_set< ScriptCanvas::VariableId >& variableIds) const override; @@ -96,16 +93,10 @@ namespace ScriptCanvas void InitializeEvent(int eventIndex); - bool IsOutOfDate(const VersionData& graphVersion) const override; - - + bool IsOutOfDate(const VersionData& graphVersion) const override; bool CreateHandler(AZStd::string_view ebusName); - - void Connect(); - - void Disconnect(); - + const EBusEventEntry* FindEventWithSlot(const Slot& slot) const; AZ::Outcome GetFunctionCallName(const Slot* /*slot*/) const override; @@ -166,16 +157,10 @@ namespace ScriptCanvas inline bool IsConfigured() const { return !m_eventMap.empty(); } - void OnEvent(const char* eventName, const int eventIndex, AZ::BehaviorValueParameter* result, const int numParameters, AZ::BehaviorValueParameter* parameters); - - void OnInputSignal(const SlotId&) override; - void OnInputChanged(const Datum& input, const SlotId& slotID) override; - private: EBusEventHandler(const EBusEventHandler&) = delete; - static void OnEventGenericHook(void* userData, const char* eventName, int eventIndex, AZ::BehaviorValueParameter* result, int numParameters, AZ::BehaviorValueParameter* parameters); - + EventMap m_eventMap; AZStd::string m_ebusName; ScriptCanvas::EBusBusId m_busId; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp index c8defb77ec..43fc8ed54b 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp @@ -63,43 +63,6 @@ namespace ScriptCanvas } } - void GetVariableNode::OnInputSignal(const SlotId& slotID) - { - if (slotID == GetSlotId("In")) - { - SC_EXECUTION_TRACE_ANNOTATE_NODE((*this), CreateAnnotationData()); - - if (m_variableView.IsValid()) - { - Slot* resultSlot = GetSlot(m_variableDataOutSlotId); - if (resultSlot) - { - const Datum* inputDatum = m_variableView.GetDatum(); - - PushOutput(*inputDatum, *resultSlot); - - // Push the data for each property slot out as well - for (auto&& propertyAccount : m_propertyAccounts) - { - Slot* propertySlot = GetSlot(propertyAccount.m_propertySlotId); - if (propertySlot && propertyAccount.m_getterFunction) - { - auto outputOutcome = propertyAccount.m_getterFunction(*inputDatum); - if (!outputOutcome) - { - SCRIPTCANVAS_REPORT_ERROR((*this), outputOutcome.TakeError().data()); - return; - } - PushOutput(outputOutcome.TakeValue(), *propertySlot); - } - } - } - } - - SignalOutput(GetSlotId("Out")); - } - } - void GetVariableNode::CollectVariableReferences(AZStd::unordered_set< ScriptCanvas::VariableId >& variableIds) const { if (m_variableId.IsValid()) @@ -324,8 +287,9 @@ namespace ScriptCanvas ScriptCanvas::Data::Type baseType = ScriptCanvas::Data::Type::Invalid(); VariableRequestBus::EventResult(baseType, GetScopedVariableId(), &VariableRequests::GetType); - const GraphVariableMapping* variableMap = GetRuntimeBus()->GetVariables(); - + const GraphVariableMapping* variableMap = nullptr; + GraphRequestBus::EventResult(variableMap, *GraphNotificationBus::GetCurrentBusId(), &GraphRequests::GetVariables); + if (variableMap && baseType.IsValid()) { for (const auto& variablePair : *variableMap) @@ -360,12 +324,6 @@ namespace ScriptCanvas VariableNodeNotificationBus::Event(GetEntityId(), &VariableNodeNotifications::OnVariableRemovedFromNode, removedVariableId); } - AnnotateNodeSignal GetVariableNode::CreateAnnotationData() - { - AZ::EntityId assetNodeId = GetRuntimeBus()->FindAssetNodeIdByRuntimeNodeId(GetEntityId()); - return AnnotateNodeSignal(CreateGraphInfo(GetOwningScriptCanvasId(), GetGraphIdentifier()), AnnotateNodeSignal::AnnotationLevel::Info, m_variableName, AZ::NamedEntityId(assetNodeId, GetNodeName())); - } - VariableId GetVariableNode::GetVariableIdRead(const Slot*) const { return m_variableId; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.h index e5011de5c6..a73d6b27b3 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.h @@ -64,7 +64,6 @@ namespace ScriptCanvas void OnInit() override; void OnPostActivate() override; - void OnInputSignal(const SlotId&) override; void AddOutputSlot(); void RemoveOutputSlot(); @@ -78,8 +77,6 @@ namespace ScriptCanvas void OnVariableRemoved() override; //// - AnnotateNodeSignal CreateAnnotationData(); - // Adds/Remove Property Slots from the GetVariable node void AddPropertySlots(const Data::Type& type); void ClearPropertySlots(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.cpp index 144427d74c..ea3f2015b1 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.cpp @@ -11,105 +11,6 @@ namespace ScriptCanvas { - int CountMatchingInputTypes(const Grammar::FunctionPrototype& a, const Grammar::FunctionPrototype& b, const AZStd::vector& checkedIndices) - { - AZ_Warning("ScriptCanvas", a.m_inputs.size() == b.m_inputs.size(), "Function inputs are not the same size"); - - int matching = 0; - - if (a.m_inputs.size() == b.m_inputs.size()) - { - if (checkedIndices.empty()) - { - for (size_t index = 0; index < a.m_inputs.size(); ++index) - { - if (!a.m_inputs[index]->m_datum.GetType().IsValid() - || a.m_inputs[index]->m_datum.GetType() == b.m_inputs[index]->m_datum.GetType()) - { - ++matching; - } - } - } - else - { - for (const auto checkedIndex : checkedIndices) - { - const auto index = checkedIndices[checkedIndex]; - - if (index < a.m_inputs.size()) - { - if (!a.m_inputs[index]->m_datum.GetType().IsValid() - || a.m_inputs[index]->m_datum.GetType() == b.m_inputs[index]->m_datum.GetType()) - { - ++matching; - } - } - else - { - AZ_Error("ScriptCanvas", false, "Overload checked index is no longer valid"); - } - } - } - } - - return matching; - } - - BehaviorContextMethodHelper::CallResult BehaviorContextMethodHelper::Call(Node& node, bool isExpectingMultipleResults, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, AZStd::vector& resultSlotIds) - { - if (isExpectingMultipleResults) - { - return BehaviorContextMethodHelper::Call(node, method, paramBegin, paramEnd, resultSlotIds); - } - else - { - return BehaviorContextMethodHelper::Call(node, method, paramBegin, paramEnd, resultSlotIds[0]); - } - } - - BehaviorContextMethodHelper::CallResult BehaviorContextMethodHelper::Call(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, SlotId resultSlotId) - { - AZ_PROFILE_SCOPE_DYNAMIC(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Method::OnInputSignal::Call %s", method->m_name.c_str()); - return CallGeneric(node, method, paramBegin, paramEnd, &AttemptCallWithResults, resultSlotId); - } - - BehaviorContextMethodHelper::CallResult BehaviorContextMethodHelper::Call(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, AZStd::vector& resultSlotIds) - { - AZ_PROFILE_SCOPE_DYNAMIC(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Method::OnInputSignal::Call %s", method->m_name.c_str()); - return CallGeneric(node, method, paramBegin, paramEnd, &AttemptCallWithTupleResults, resultSlotIds); - } - - AZ::Outcome BehaviorContextMethodHelper::AttemptCallWithResults(Node&, const AZ::BehaviorMethod*, AZ::BehaviorValueParameter*, unsigned int, SlotId) - { - return AZ::Failure(AZStd::string("This method is slated for deletion")); - } - - AZ::Outcome BehaviorContextMethodHelper::AttemptCallWithTupleResults(Node&, const AZ::BehaviorMethod*, AZ::BehaviorValueParameter*, unsigned int, AZStd::vector) - { - return AZ::Failure(AZStd::string("This method is slated for deletion")); - } - - AZ::Outcome BehaviorContextMethodHelper::CallTupleGetMethod(const AZ::BehaviorMethod*, Datum&) - { - return AZ::Failure(AZStd::string("This method is slated for deletion")); - } - - AZ::Outcome BehaviorContextMethodHelper::CallOutcomeTupleMethod(Node&, const SlotId&, Datum&, size_t, AZStd::string) - { - return AZ::Failure(AZStd::string("to be deleted")); - } - - AZ::BehaviorValueParameter BehaviorContextMethodHelper::ToBehaviorValueParameter(const AZ::BehaviorMethod* method, size_t index, const Datum& datum) - { - const AZ::BehaviorParameter* datumParam = method->GetArgument(index); - auto toParamOutcome = datumParam ? datum.ToBehaviorValueParameter(*datumParam) : AZ::Failure(AZStd::string::format("BehaviorMethod contains nullptr BehaviorParameter at index %zu", index)); - if (toParamOutcome) - { - return AZ::BehaviorValueParameter(toParamOutcome.TakeValue()); - } - return AZ::BehaviorValueParameter(); - } - AZStd::unordered_map GetTupleGetMethodsFromResult(const AZ::BehaviorMethod& method) { if (method.HasResult()) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.h index 92248d3ac6..890cb2427d 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodUtility.h @@ -19,202 +19,9 @@ namespace ScriptCanvas::Grammar namespace ScriptCanvas { - int CountMatchingInputTypes(const Grammar::FunctionPrototype& a, const Grammar::FunctionPrototype& b, const AZStd::vector& checkedIndices); - - struct BehaviorContextMethodHelper - { - enum BehaviorContextInputOutput : size_t - { - MaxCount = 40, - }; - - enum class MethodCallStatus - { - NotAttempted = 0, - Attempted, - Failed, - Succeeded, - }; - - struct CallResult - { - const MethodCallStatus m_status = MethodCallStatus::NotAttempted; - const AZStd::string m_executionOutOverride = "Out"; - - AZ_INLINE CallResult(const MethodCallStatus status, AZStd::string executionOutOverride = "Out") - : m_status(status) - , m_executionOutOverride(executionOutOverride) - {} - }; - - template - static CallResult CallGeneric(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, t_Call attempt, t_Slots& slots); - - static CallResult Call(Node& node, bool isExpectingMultipleResults, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, AZStd::vector& resultSlotIds); - static CallResult Call(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, SlotId resultSlotId); - static CallResult Call(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, AZStd::vector& resultSlotIds); - static AZ::Outcome AttemptCallWithResults(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* params, unsigned int numExpectedArgs, SlotId resultSlotId); - static AZ::Outcome AttemptCallWithTupleResults(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* params, unsigned int numExpectedArgs, AZStd::vector resultSlotIds); - - template - static AZ::Outcome CallMethodOnDatum(const Datum& input, AZStd::string_view methodName, Args&& ... args); - - template - static AZ::Outcome CallMethodOnDatumUnpackOutcomeSuccess(const Datum& input, AZStd::string_view methodName, Args&& ... args); - - template - static AZStd::vector CreateParameterList(const AZ::BehaviorMethod* method, Args&&... args); - - static AZ::Outcome CallTupleGetMethod(const AZ::BehaviorMethod* method, Datum& thisPointer); - - private: - static AZ::Outcome CallOutcomeTupleMethod(Node& node, const SlotId& resultSlotId, Datum& outcomeDatum, size_t index, AZStd::string outSlotName); - static AZ::BehaviorValueParameter ToBehaviorValueParameter(const AZ::BehaviorMethod* method, size_t index, const Datum& datum); - - template - static AZ::BehaviorValueParameter ToBehaviorValueParameter(const AZ::BehaviorMethod*, size_t, const T& arg); - - template - static AZStd::vector CreateParameterListInternal(const AZ::BehaviorMethod* method, AZStd::index_sequence, Args&&... args); - }; - AZStd::unordered_map GetTupleGetMethodsFromResult(const AZ::BehaviorMethod& method); AZStd::unordered_map GetTupleGetMethods(const AZ::TypeId& typeId); AZ::Outcome GetTupleGetMethod(const AZ::TypeId& typeID, size_t index); - - template - BehaviorContextMethodHelper::CallResult BehaviorContextMethodHelper::CallGeneric(Node& node, const AZ::BehaviorMethod* method, AZ::BehaviorValueParameter* paramBegin, AZ::BehaviorValueParameter* paramEnd, t_Call attempt, t_Slots& slots) - { - const auto numExpectedArgs(static_cast(method->GetNumArguments())); - if ((paramEnd - paramBegin) == numExpectedArgs) - { - AZ::Outcome withResultsOutcome = attempt(node, method, paramBegin, numExpectedArgs, slots); - - if (!withResultsOutcome.IsSuccess()) - { - SCRIPTCANVAS_REPORT_ERROR((node), "Script Canvas attempt to call %s with a result failed: %s", method->m_name.data(), withResultsOutcome.GetError().data()); - return CallResult(MethodCallStatus::Failed); - } - else if (withResultsOutcome.GetValue().m_status == MethodCallStatus::Attempted) - { - return CallResult(MethodCallStatus::Succeeded, withResultsOutcome.GetValue().m_executionOutOverride); - } - else if (method->Call(paramBegin, numExpectedArgs)) - { - return CallResult(MethodCallStatus::Succeeded); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((node), "Script Canvas attempt to call %s failed", method->m_name.data()); - return CallResult(MethodCallStatus::Failed); - } - } - else - { - SCRIPTCANVAS_REPORT_ERROR((node), "Script Canvas attempt to call %s failed, it expects %d args but called with %d", method->m_name.c_str(), numExpectedArgs, paramEnd - paramBegin); - return CallResult(MethodCallStatus::NotAttempted); - } - } - - template - AZ::Outcome BehaviorContextMethodHelper::CallMethodOnDatumUnpackOutcomeSuccess(const Datum& input, AZStd::string_view methodName, Args&& ... args) - { - AZ::Outcome methodCallResult = CallMethodOnDatum(input, methodName, args...); - if (methodCallResult.IsSuccess()) - { - // Even when successfully called, the method will return an outcome as the result, we need to test that - // outcome in case any errors were returned from the invoked function call. - const Datum& methodCallResultDatum = methodCallResult.GetValue(); - - const auto* actualOutcome = methodCallResultDatum.GetAs>(); - if (actualOutcome && !actualOutcome->IsSuccess()) - { - return AZ::Failure(AZStd::string::format("%s returned an error: %s", methodName.data(), actualOutcome->GetError().c_str())); - } - - AZ::Outcome isSuccessCallResult = CallMethodOnDatum(methodCallResult.GetValue(), "IsSuccess"); - if (isSuccessCallResult.IsSuccess()) - { - if (*isSuccessCallResult.GetValue().GetAs()) - { - return CallMethodOnDatum(methodCallResult.GetValue(), "GetValue"); - } - else - { - return AZ::Failure(AZStd::string::format("%s returned an error", methodName.data())); - } - } - else - { - return AZ::Failure(AZStd::string::format("Script Canvas attempt to call %s failed, Failed to query result Outcome success", methodName.data())); - } - } - else - { - return AZ::Failure(methodCallResult.GetError()); - } - - return methodCallResult; - } - - template - AZ::Outcome BehaviorContextMethodHelper::CallMethodOnDatum(const Datum& input, AZStd::string_view methodName, Args&& ... args) - { - const AZ::BehaviorClass* behaviorClass = AZ::BehaviorContextHelper::GetClass(input.GetType().GetAZType()); - if (behaviorClass) - { - auto methodIt = behaviorClass->m_methods.find(methodName); - - if (methodIt != behaviorClass->m_methods.end()) - { - AZ::BehaviorMethod* method = methodIt->second; - - const AZ::BehaviorParameter* resultType = method->HasResult() ? method->GetResult() : nullptr; - - if (resultType) - { - // Populate parameters - AZStd::vector parameters = CreateParameterList(method, input, AZStd::forward(args)...); - return Datum::CallBehaviorContextMethodResult(method, resultType, parameters.begin(), (unsigned int)AZStd::GetMin(parameters.size(), method->GetNumArguments()), behaviorClass->m_name); - } - else - { - AZStd::vector parameters = CreateParameterList(method, input, AZStd::forward(args)...); - if (Datum::CallBehaviorContextMethod(method, parameters.begin(), (unsigned int)AZStd::GetMin(parameters.size(), method->GetNumArguments())).IsSuccess()) - { - return AZ::Success(Datum()); - } - } - } - else - { - return AZ::Failure(AZStd::string::format("ScriptCanvas Behavior Context method call failed; method named \"%s\" not found.", methodName.data())); - } - } - - return AZ::Failure(AZStd::string::format("ScriptCanvas Behavior Context method call failed; unable to retrieve Behavior Class.")); - } - - template - AZStd::vector BehaviorContextMethodHelper::CreateParameterList(const AZ::BehaviorMethod* method, Args&&... args) - { - // Create an index sequence for the parameters and forward the arguments - return CreateParameterListInternal(method, AZStd::make_index_sequence{}, AZStd::forward(args)...); - } - - template - AZ::BehaviorValueParameter BehaviorContextMethodHelper::ToBehaviorValueParameter(const AZ::BehaviorMethod*, size_t, const T& arg) - { - return AZ::BehaviorValueParameter(&arg); - } - - template - AZStd::vector BehaviorContextMethodHelper::CreateParameterListInternal(const AZ::BehaviorMethod* method, AZStd::index_sequence, Args&&... args) - { - // Unpack the arguments and the index sequence to populate the parameter list - return { ToBehaviorValueParameter(method, Indices, args)... }; - } - } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp index b797174f59..17f2242b90 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp @@ -12,8 +12,8 @@ #include #include +#include #include -#include #include #include @@ -75,7 +75,7 @@ namespace ScriptCanvas AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequests::GetAssetInfoById, asset.GetId()); AZStd::string graphAssetName; - RuntimeRequestBus::EventResult(graphAssetName, GetOwningScriptCanvasId(), &RuntimeRequests::GetAssetName); + GraphRequestBus::EventResult(graphAssetName, GetOwningScriptCanvasId(), &GraphRequests::GetAssetName); AZ_Error("Script Event", false, "The Script Event asset (%s) has been modified. Open the graph (%s) and re-save it.", assetInfo.m_relativePath.c_str(), graphAssetName.c_str()); return; @@ -325,197 +325,16 @@ namespace ScriptCanvas } } - void ReceiveScriptEvent::OnEvent(const char* eventName, const int, AZ::BehaviorValueParameter* result, const int numParameters, AZ::BehaviorValueParameter* parameters) - { - AZ_PROFILE_SCOPE_DYNAMIC(AZ::Debug::ProfileCategory::ScriptCanvas, "ReceiveScriptEvent::OnEvent %s", eventName); - - SCRIPTCANVAS_RETURN_IF_ERROR_STATE((*this)); - - ScriptEvents::Method method; - if (!GetScriptEvent().FindMethod(eventName, method)) - { - AZ_Warning("Script Events", false, "Failed to find method: %s when trying to handle it.", eventName); - return; - } - - auto iter = m_eventMap.find(AZ::Crc32(method.GetNameProperty().GetId().ToString().c_str())); - if (iter == m_eventMap.end()) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Invalid event index in Ebus handler"); - return; - } - - Internal::ScriptEventEntry& scriptEventEntry = iter->second; - - if (!scriptEventEntry.m_shouldHandleEvent || scriptEventEntry.m_isHandlingEvent) - { - AZ_Warning("ScriptCanvas", !scriptEventEntry.m_isHandlingEvent, "Found situation where in handling event(%s::%s) triggered the same event. Possible infinite loop, not handling second call.", GetScriptEvent().GetName().c_str(), eventName); - return; - } - - scriptEventEntry.m_isHandlingEvent = true; - - scriptEventEntry.m_resultEvaluated = !scriptEventEntry.IsExpectingResult(); - - // route the parameters to the connect nodes input - if (scriptEventEntry.m_parameterSlotIds.size() != numParameters) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "The Script Event, %s, has %d parameters. While the ScriptCanvas Node (%s) has (%zu) slots. Make sure the node is updated in the Script Canvas graph.", eventName, numParameters, GetNodeName().c_str(), scriptEventEntry.m_parameterSlotIds.size()); - } - else - { - for (int parameterIndex(0); parameterIndex < numParameters; ++parameterIndex) - { - const Slot* slot = GetSlot(scriptEventEntry.m_parameterSlotIds[parameterIndex]); - const auto& value = *(parameters + parameterIndex); - const Datum input(value); - - if (slot->IsTypeMatchFor(input.GetType())) - { - PushOutput(input, *slot); - } - else - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Type mismatch in Script Event %s on ScriptCanvas Node (%s). Make sure the nodes is updated in the Script Canvas graph", eventName, GetNodeName().c_str()); - } - } - } - - { - // now, this should pass execution off to the nodes that will push their output into this result input - SignalOutput(scriptEventEntry.m_eventSlotId, ExecuteMode::UntilNodeIsFoundInStack); - } - - // route executed nodes output to my input, and my input to the result - if (scriptEventEntry.IsExpectingResult()) - { - if (result) - { - if (const Datum* resultInput = FindDatum(scriptEventEntry.m_resultSlotId)) - { - scriptEventEntry.m_resultEvaluated = resultInput->ToBehaviorContext(*result); - AZ_Warning("Script Canvas", scriptEventEntry.m_resultEvaluated, "%s expects a result value of type %s to be provided, got %s", scriptEventEntry.m_eventName.c_str(), Data::GetName(resultInput->GetType()).c_str(), result->m_name); - } - else - { - AZ_Warning("Script Canvas", false, "Script Canvas handler expecting a result, but had no ability to return it"); - } - } - else - { - AZ_Warning("Script Canvas", false, "Script Canvas handler is expecting a result, but was called without receiving one!"); - } - } - else - { - AZ_Warning("Script Canvas", !result, "Script Canvas handler is not expecting a result, but was called receiving one!"); - } - - // route executed nodes output to my input, and my input to the result - AZ_Warning("Script Canvas", (result != nullptr) == scriptEventEntry.IsExpectingResult(), "Node %s-%s mismatch between expecting a result and getting one!", m_ebus->m_name.c_str(), scriptEventEntry.m_eventName.c_str()); - AZ_Warning("Script Canvas", scriptEventEntry.m_resultEvaluated, "Node %s-%s result not evaluated properly!", m_ebus->m_name.c_str(), scriptEventEntry.m_eventName.c_str()); - - scriptEventEntry.m_isHandlingEvent = false; - } - void ReceiveScriptEvent::OnActivate() { SetAutoConnectToGraphOwner(m_autoConnectToGraphOwner); ScriptEventBase::OnActivate(); } - void ReceiveScriptEvent::OnPostActivate() - { - - } - void ReceiveScriptEvent::OnDeactivate() { - Disconnect(false); - ScriptEventBase::OnDeactivate(); - } - - void ReceiveScriptEvent::Connect() - { - AZ::EntityId connectToEntityId; - AZ::BehaviorValueParameter busIdParameter; - busIdParameter.Set(m_ebus->m_idParam); - const AZ::Uuid busIdType = m_ebus->m_idParam.m_typeId; - - const Datum* busIdDatum = IsIDRequired() ? FindDatum(GetSlotId(c_busIdName)) : nullptr; - if (busIdDatum && !busIdDatum->Empty()) - { - if (busIdDatum->IS_A(Data::FromAZType(busIdType)) || busIdDatum->IsConvertibleTo(Data::FromAZType(busIdType))) - { - auto busIdOutcome = busIdDatum->ToBehaviorValueParameter(m_ebus->m_idParam); - if (busIdOutcome.IsSuccess()) - { - busIdParameter = busIdOutcome.TakeValue(); - } - } - - if (busIdType == azrtti_typeid()) - { - if (auto busEntityId = busIdDatum->GetAs()) - { - if (!busEntityId->IsValid() || *busEntityId == ScriptCanvas::GraphOwnerId) - { - RuntimeRequestBus::EventResult(connectToEntityId, GetOwningScriptCanvasId(), &RuntimeRequests::GetRuntimeEntityId); - busIdParameter.m_value = &connectToEntityId; - } - } - } - } - - if (!IsIDRequired() || busIdParameter.GetValueAddress()) - { - if (m_connected) - { - // Ensure we disconnect if this bus is already connected, this could happen if a different bus Id is provided - // and this node is connected through the Connect slot. - m_handler->Disconnect(); - } - - AZ_VerifyError("Script Canvas", m_handler->Connect(&busIdParameter), - "Unable to connect to EBus with BusIdType %s. The BusIdType of the Script Event (%s) does not match the BusIdType provided.", - busIdType.ToString().data(), m_definition.GetName().c_str()); - - m_connected = true; - } - } - - void ReceiveScriptEvent::CompleteDisconnection() - { - m_handler->Disconnect(); - m_connected = false; - - if (IsActivated()) - { - SlotId onDisconnectSlotId = ReceiveScriptEventProperty::GetOnDisconnectedSlotId(this); - SignalOutput(onDisconnectSlotId); - } - } - - void ReceiveScriptEvent::Disconnect(bool queueDisconnect) - { - if (m_connected && m_handler) - { - if (queueDisconnect) - { - AZ::SystemTickBus::QueueFunction( - [this]() - { - CompleteDisconnection(); - } - ); - } - else - { - CompleteDisconnection(); - } - } - } + } const Internal::ScriptEventEntry* ReceiveScriptEvent::FindEventWithSlot(const Slot& slot) const { @@ -771,51 +590,6 @@ namespace ScriptCanvas return true; } - void ReceiveScriptEvent::OnInputSignal(const SlotId& slotId) - { - SlotId connectSlot = ReceiveScriptEventProperty::GetConnectSlotId(this); - - if (connectSlot == slotId) - { - const Datum* busIdDatum = FindDatum(GetSlotId(c_busIdName)); - if (IsIDRequired() && (!busIdDatum || busIdDatum->Empty())) - { - SlotId failureSlot = ReceiveScriptEventProperty::GetOnFailureSlotId(this); - SignalOutput(failureSlot); - SCRIPTCANVAS_REPORT_ERROR((*this), "In order to connect this node, a valid BusId must be provided."); - return; - } - else - { - Connect(); - SlotId onConnectSlotId = ReceiveScriptEventProperty::GetOnConnectedSlotId(this); - SignalOutput(onConnectSlotId); - return; - } - } - - SlotId disconnectSlot = ReceiveScriptEventProperty::GetDisconnectSlotId(this); - if (disconnectSlot == slotId) - { - Disconnect(); - - return; - } - } - - void ReceiveScriptEvent::OnInputChanged(const Datum&, const SlotId&) - { - /* - if (GetExecutionType() == ExecutionType::Runtime - && m_autoConnectToGraphOwner - && slotId == FindSlotIdForDescriptor(c_busIdName, SlotDescriptors::DataIn())) - { - Disconnect(false); - Connect(); - } - */ - } - bool ReceiveScriptEvent::IsOutOfDate(const VersionData& graphVersion) const { AZ_UNUSED(graphVersion); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.h index e541f428db..d1aa439b42 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.h @@ -87,16 +87,9 @@ namespace ScriptCanvas private: - void Connect(); - void Disconnect(bool queueDisconnect = true); - void CompleteDisconnection(); - bool CreateEbus(); bool SetupHandler(); - void OnInputSignal(const SlotId& slotId) override; - void OnInputChanged(const Datum& input, const SlotId& slotId) override; - AZ::BehaviorEBusHandler* m_handler = nullptr; AZ::BehaviorEBus* m_ebus = nullptr; AZStd::recursive_mutex m_mutex; // post-serialization @@ -105,9 +98,6 @@ namespace ScriptCanvas void InitializeEvent(AZ::Data::Asset asset, int eventIndex, SlotIdMapping& populationMapping); - static void OnEventGenericHook(void* userData, const char* eventName, int eventIndex, AZ::BehaviorValueParameter* result, int numParameters, AZ::BehaviorValueParameter* parameters); - void OnEvent(const char* eventName, const int eventIndex, AZ::BehaviorValueParameter* result, const int numParameters, AZ::BehaviorValueParameter* parameters); - bool IsEventConnected(const Internal::ScriptEventEntry& entry) const; Internal::ScriptEventEntry ConfigureEbusEntry(const ScriptEvents::Method& methodDefinition, const AZ::BehaviorEBusHandler::BusForwarderEvent& event, SlotIdMapping& populationMapping); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.cpp index 3ff8545746..964c2b8454 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.cpp @@ -74,28 +74,6 @@ namespace ScriptCanvas } } } - - void Repeater::OnInputSignal(const SlotId&) - { - m_repetionCount = aznumeric_cast(RepeaterProperty::GetRepetitions(this)); - - if (m_repetionCount > 0) - { - StartTimer(); - } - } - - void Repeater::OnTimeElapsed() - { - m_repetionCount--; - SignalOutput(RepeaterProperty::GetActionSlotId(this), ScriptCanvas::ExecuteMode::UntilNodeIsFoundInStack); - - if (m_repetionCount == 0) - { - StopTimer(); - SignalOutput(RepeaterProperty::GetCompleteSlotId(this)); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.h index 3d094feb78..0cd9c73c98 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Repeater.h @@ -17,6 +17,7 @@ namespace ScriptCanvas namespace Core { //! A node that repeats an execution signal over the specified time + //! Deprecated for nodeable version class Repeater : public ScriptCanvas::Nodes::Internal::BaseTimerNode { @@ -27,18 +28,11 @@ namespace ScriptCanvas void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - void OnTimeElapsed(); - const char* GetTimeSlotFormat() const override { return "Delay (%s)"; } - const char* GetBaseTimeSlotName() const override { return "Interval"; } const char* GetBaseTimeSlotToolTip() const override { return "The Interval between repetitions"; } protected: - - bool AllowInstantResponse() const override { return true; } - int m_repetionCount; }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.cpp index ac946dc037..45314b73f3 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.cpp @@ -10,8 +10,6 @@ #include #include #include - -#include #include #include diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.h index d2ec893b5b..5b2104f5dd 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ScriptEventBase.h @@ -106,9 +106,7 @@ namespace ScriptCanvas AZStd::pair, bool> IsAssetOutOfDate() const; - virtual void Initialize(const AZ::Data::AssetId assetId); - - + virtual void Initialize(const AZ::Data::AssetId assetId); protected: diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp index ee1d00e646..345fb5e5e8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp @@ -28,64 +28,6 @@ namespace ScriptCanvas ScriptEvents::ScriptEventNotificationBus::Handler::BusDisconnect(); } - void SendScriptEvent::OnInputSignal(const SlotId&) - { - if (!m_method) - { - if (!m_asset.IsReady()) - { - m_asset = AZ::Data::AssetManager::Instance().GetAsset(m_scriptEventAssetId, AZ::Data::AssetLoadBehavior::PreLoad); - } - - CreateSender(m_asset); - } - - if (!m_method) - { - AZStd::string error = AZStd::string::format("Script Event sender node called with no initialized method (%s::%s)!", m_busName.c_str(), m_eventName.c_str()); - SCRIPTCANVAS_REPORT_ERROR((*this), error.c_str()); - } - - if (m_method) - { - Node::DatumVector inputDatums = GatherDatumsForDescriptor(SlotDescriptors::DataIn()); - - if (m_method->GetNumArguments() != inputDatums.size()) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "The Script Event %s number of parameters %d do not correspond to the number of slots %zu in the Script Canvas node (%s). Make sure the node is updated in the Script Canvas graph.", m_method->m_name.c_str(), m_method->GetNumArguments(), inputDatums.size(), GetNodeName().c_str()); - return; - } - - AZStd::array params; - AZ::BehaviorValueParameter* paramFirst(params.begin()); - AZ::BehaviorValueParameter* paramIter = paramFirst; - { - // all input should have been pushed into this node already - int argIndex(0); - for (const Datum* datum : inputDatums) - { - AZ::Outcome inputParameter = datum->ToBehaviorValueParameter(*m_method->GetArgument(argIndex)); - if (!inputParameter.IsSuccess()) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "BehaviorContext method input problem at parameter index %d: %s", argIndex, inputParameter.GetError().data()); - return; - } - - paramIter->Set(inputParameter.GetValue()); - ++paramIter; - ++argIndex; - } - - AZ_PROFILE_SCOPE_DYNAMIC(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::ScriptEvents::OnInputSignal::Call %s::%s", m_busName.c_str(), m_eventName.c_str()); - { - BehaviorContextMethodHelper::Call(*this, m_method, paramFirst, paramIter, m_resultSlotID); - } - } - } - - SignalOutput(GetSlotId("Out")); - } - ScriptCanvas::EBusBusId SendScriptEvent::GetBusId() const { return m_busId; @@ -155,11 +97,6 @@ namespace ScriptCanvas AZ::Outcome IsExposable(const AZ::BehaviorMethod& method) { - if (method.GetNumArguments() > BehaviorContextMethodHelper::MaxCount) - { - return AZ::Failure(AZStd::string("Too many arguments for a Script Canvas method")); - } - for (size_t argIndex(0), sentinel(method.GetNumArguments()); argIndex != sentinel; ++argIndex) { if (const AZ::BehaviorParameter* argument = method.GetArgument(argIndex)) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.h index 27cd309386..7490fef650 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.h @@ -79,11 +79,7 @@ namespace ScriptCanvas bool IsConfigured() const { return m_method != nullptr; } void ConfigureMethod(AZ::BehaviorMethod& method); bool RegisterScriptEvent(AZ::Data::Asset asset); - - void OnInputSignal(const SlotId&) override; - void AddInputSlot(size_t slotIndex, size_t argIndex, const AZStd::string_view argName, const AZStd::string_view tooltip, AZ::BehaviorMethod* method, const AZ::BehaviorParameter* argument, AZ::Uuid slotKey, SlotIdMapping& populationMapping); - void OnRegistered(const ScriptEvents::ScriptEvent&) override; SlotId m_resultSlotID; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp index 7096f5024e..25a73bc7ce 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp @@ -59,47 +59,6 @@ namespace ScriptCanvas } } - void SetVariableNode::OnInputSignal(const SlotId& slotID) - { - if (slotID == GetSlotId(GetInputSlotName())) - { - const Datum* sourceDatum = FindDatum(m_variableDataInSlotId); - - if (sourceDatum && m_variableView.IsValid()) - { - m_variableView.AssignToDatum((*sourceDatum)); - - SC_EXECUTION_TRACE_VARIABLE_CHANGE((m_variableId), (CreateVariableChange((*m_variableView.GetDatum()), m_variableId))); - } - - Slot* resultSlot = GetSlot(m_variableDataOutSlotId); - if (resultSlot && m_variableView.IsValid()) - { - const Datum* variableDatum = m_variableView.GetDatum(); - - PushOutput((*variableDatum), *resultSlot); - - // Push the data for each property slot out as well - for (auto&& propertyAccount : m_propertyAccounts) - { - Slot* propertySlot = GetSlot(propertyAccount.m_propertySlotId); - if (propertySlot && propertyAccount.m_getterFunction) - { - auto outputOutcome = propertyAccount.m_getterFunction((*variableDatum)); - - if (!outputOutcome) - { - SCRIPTCANVAS_REPORT_ERROR((*this), outputOutcome.TakeError().data()); - return; - } - PushOutput(outputOutcome.TakeValue(), *propertySlot); - } - } - } - - SignalOutput(GetSlotId(GetOutputSlotName())); - } - } VariableId SetVariableNode::GetVariableIdRead(const Slot*) const { return m_variableId; @@ -283,7 +242,8 @@ namespace ScriptCanvas ScriptCanvas::Data::Type baseType = ScriptCanvas::Data::Type::Invalid(); VariableRequestBus::EventResult(baseType, GetScopedVariableId(), &VariableRequests::GetType); - const AZStd::unordered_map* variableMap = GetRuntimeBus()->GetVariables(); + const GraphVariableMapping* variableMap = nullptr; + GraphRequestBus::EventResult(variableMap, *GraphNotificationBus::GetCurrentBusId(), &GraphRequests::GetVariables); if (variableMap && baseType.IsValid()) { @@ -319,12 +279,6 @@ namespace ScriptCanvas VariableNodeNotificationBus::Event(GetEntityId(), &VariableNodeNotifications::OnVariableRemovedFromNode, removedVariableId); } - AnnotateNodeSignal SetVariableNode::CreateAnnotationData() - { - AZ::EntityId assetNodeId = GetRuntimeBus()->FindAssetNodeIdByRuntimeNodeId(GetEntityId()); - return AnnotateNodeSignal(CreateGraphInfo(GetOwningScriptCanvasId(), GetGraphIdentifier()), AnnotateNodeSignal::AnnotationLevel::Info, m_variableName, AZ::NamedEntityId(assetNodeId, GetNodeName())); - } - void SetVariableNode::AddPropertySlots(const Data::Type& type) { Data::GetterContainer getterFunctions = Data::ExplodeToGetters(type); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.h index bc97fa6a08..b985cabfa8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.h @@ -67,8 +67,7 @@ namespace ScriptCanvas void OnInit() override; void OnPostActivate() override; - void OnInputSignal(const SlotId&) override; - + void AddSlots(); void RemoveSlots(); void AddPropertySlots(const Data::Type& type); @@ -86,8 +85,6 @@ namespace ScriptCanvas void OnVariableRemoved() override; //// - AnnotateNodeSignal CreateAnnotationData(); - VariableId m_variableId; SlotId m_variableDataInSlotId; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Start.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Start.cpp deleted file mode 100644 index 66dfe424c5..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Start.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "Start.h" - -#include -#include - -namespace ScriptCanvas -{ - namespace Nodes - { - namespace Core - { - void Start::OnInputSignal(const SlotId&) - { - SignalOutput(StartProperty::GetOutSlotId(this)); - } - } - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Start.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Start.h index bc5ca997e8..f4ba99746a 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Start.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Start.h @@ -25,11 +25,6 @@ namespace ScriptCanvas public: SCRIPTCANVAS_NODE(Start); - - - - void OnInputSignal(const SlotId&) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/And.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/And.h index fa553036f5..f33c6acde4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/And.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/And.h @@ -52,11 +52,6 @@ namespace ScriptCanvas ////////////////////////////////////////////////////////////////////////// protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - return Datum(*lhs.GetAs() && *rhs.GetAs()); - } - void InitializeBooleanExpression() override { { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.cpp index 29fd8a5075..465c336815 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.cpp @@ -60,12 +60,6 @@ namespace ScriptCanvas RegisterExtension(visualExtensions); } } - - void Any::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - const SlotId outSlotId = AnyProperty::GetOutSlotId(this); - SignalOutput(outSlotId); - } SlotId Any::HandleExtension(AZ::Crc32 extensionId) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.h index aca5b2bb51..9fd676c22a 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Any.h @@ -44,8 +44,6 @@ namespace ScriptCanvas void OnInit() override; void ConfigureVisualExtensions() override; - void OnInputSignal(const SlotId& slot) override; - SlotId HandleExtension(AZ::Crc32 extensionId) override; bool CanDeleteSlot(const SlotId& slotId) const override; @@ -54,9 +52,7 @@ namespace ScriptCanvas //// /// Translation - bool IsNoOp() const override; - - + bool IsNoOp() const override; AZ::Outcome GetDependencies() const override; @@ -69,9 +65,7 @@ namespace ScriptCanvas AZ::Crc32 GetInputExtensionId() const { return AZ_CRC("Output", 0xccde149e); } private: - AZStd::string GenerateInputName(int counter); - SlotId AddInputSlot(); void FixupStateNames(); }; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.cpp index a5a75e259c..1149c19230 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.cpp @@ -98,26 +98,6 @@ namespace ScriptCanvas return AddSlot(executionConfiguration); } - void Cycle::OnInputSignal(const SlotId& slot) - { - if (slot != CycleProperty::GetInSlotId(this)) - { - return; - } - - if (!m_orderedOutputSlots.empty()) - { - const SlotId& slotId = m_orderedOutputSlots[m_executionSlot]; - SignalOutput(slotId); - - if (++m_executionSlot >= m_orderedOutputSlots.size()) - { - m_executionSlot = 0; - } - } - - } - void Cycle::OnSlotRemoved([[maybe_unused]] const SlotId& slotId) { FixupStateNames(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.h index c275b8031c..2d26a1f816 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Cycle.h @@ -43,13 +43,9 @@ namespace ScriptCanvas ConstSlotsOutcome GetSlotsInExecutionThreadByTypeImpl(const Slot& executionSlot, CombinedSlotType targetSlotType, const Slot* /*executionChildSlot*/) const override; - - protected: AZStd::string GetDisplayGroup() const { return "OutputGroup"; } - - void OnInputSignal(const SlotId& slot) override; void OnSlotRemoved(const SlotId& slotId) override; private: diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Indexer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Indexer.cpp deleted file mode 100644 index 85898ad042..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Indexer.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "Indexer.h" - -namespace ScriptCanvas -{ - namespace Nodes - { - namespace Logic - { - void Indexer::OnInputSignal(const SlotId& slotId) - { - auto slotIndex = FindSlotIndex(slotId); - if (slotIndex < 0) - { - AZ_Warning("Script Canvas", false, "Could not find slot with id %s", slotId.ToString().c_str()); - return; - } - - const Datum output(slotIndex); - - const SlotId outSlotId = IndexerProperty::GetOutSlotId(this); - if (auto outSlot = GetSlot(outSlotId)) - { - PushOutput(output, *outSlot); - } - - SignalOutput(outSlotId); - } - } - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Indexer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Indexer.h index bea41a4e14..6a6d335a87 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Indexer.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Indexer.h @@ -21,16 +21,8 @@ namespace ScriptCanvas class Indexer : public Node { - public: - SCRIPTCANVAS_NODE(Indexer); - - Indexer() = default; - - protected: - - void OnInputSignal(const SlotId& slot) override; }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.cpp index 480d51643b..85cefcf5aa 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.cpp @@ -61,13 +61,6 @@ namespace ScriptCanvas AddSlot(slotConfiguration); } } - - void IsNull::OnInputSignal(const SlotId&) - { - const bool isNull = FindDatum(GetSlotId("Reference"))->Empty(); - PushOutput(Datum(isNull), *GetSlot(GetSlotId("Is Null"))); - SignalOutput(isNull ? IsNullProperty::GetTrueSlotId(this) : IsNullProperty::GetFalseSlotId(this)); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.h index 12f996003c..36d608191f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/IsNull.h @@ -34,8 +34,6 @@ namespace ScriptCanvas bool IsIfBranchPrefacedWithBooleanExpression() const override; - - protected: ConstSlotsOutcome GetSlotsInExecutionThreadByTypeImpl(const Slot&, CombinedSlotType targetSlotType, const Slot*) const override { @@ -43,9 +41,6 @@ namespace ScriptCanvas } void OnInit() override; - - void OnInputSignal(const SlotId&) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Multiplexer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Multiplexer.cpp deleted file mode 100644 index c8af5ae7a4..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Multiplexer.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "Multiplexer.h" - -namespace ScriptCanvas -{ - namespace Nodes - { - namespace Logic - { - Multiplexer::Multiplexer() - {} - - void Multiplexer::OnInputSignal(const SlotId& slotId) - { - auto slotIndex = FindSlotIndex(slotId); - if (!slotIndex) - { - AZ_Warning("Script Canvas", false, "Could not find slot with Id %s", slotId.ToString().c_str()); - return; - } - - // These are generated from CodeGen, they essentially - // check if there's anything connected on the slot and - // they assign the local member with the value, otherwise - // they use the default property value. - const AZ::s64 selectedIndex = MultiplexerProperty::GetIndex(this); - - if (selectedIndex == slotIndex) - { - const SlotId outSlotId = MultiplexerProperty::GetOutSlotId(this); - SignalOutput(outSlotId); - } - } - } - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Multiplexer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Multiplexer.h index 00a974ab8a..e6df414398 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Multiplexer.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Multiplexer.h @@ -26,12 +26,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(Multiplexer); - Multiplexer(); - - protected: - - void OnInputSignal(const SlotId& slot) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Or.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Or.h index 6868dc6e6b..315d254d50 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Or.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Or.h @@ -50,11 +50,6 @@ namespace ScriptCanvas ////////////////////////////////////////////////////////////////////////// protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - return Datum(*lhs.GetAs() || *rhs.GetAs()); - } - void InitializeBooleanExpression() override { { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.cpp index 75693f994c..ca32a5eb5a 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.cpp @@ -107,50 +107,6 @@ namespace ScriptCanvas } } - void Sequencer::OnInputSignal(const SlotId& slot) - { - m_selectedIndex = SequencerProperty::GetIndex(this); - m_order = SequencerProperty::GetOrder(this); - - const SlotId inSlot = SequencerProperty::GetInSlotId(this); - const SlotId nextSlot = SequencerProperty::GetNextSlotId(this); - - if (slot == inSlot) - { - m_currentIndex = m_selectedIndex; - } - else if (slot == nextSlot) - { - int step = m_order == Order::Forward ? 1 : -1; - - m_outputIsValid = false; - int startIndex = m_currentIndex; - while (!m_outputIsValid) - { - m_currentIndex = (m_currentIndex + step + NUMBER_OF_OUTPUTS) % NUMBER_OF_OUTPUTS; - SlotId outSlotId = GetCurrentSlotId(); - Slot* outSlot = GetSlot(outSlotId); - if (outSlot) - { - m_outputIsValid = !GetConnectedNodes(*outSlot).empty(); - } - - //Avoid infinite loop when none of the outputs or only the current output connects to other nodes. - if (m_currentIndex == startIndex) - { - m_outputIsValid = false; - break; - } - } - } - - if (m_outputIsValid) - { - SlotId outSlotId = GetCurrentSlotId(); - SignalOutput(outSlotId); - } - } - SlotId Sequencer::GetCurrentSlotId() const { AZStd::string slotName = "Out" + AZStd::to_string(m_currentIndex); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.h index 347d21baa2..a4fe3f358d 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/Sequencer.h @@ -43,10 +43,6 @@ namespace ScriptCanvas int m_order; int m_selectedIndex; - protected: - - void OnInputSignal(const SlotId& slot) override; - private: int m_currentIndex; bool m_outputIsValid; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.cpp index ec55784a33..445c91e1fc 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.cpp @@ -71,31 +71,6 @@ namespace ScriptCanvas return AddSlot(executionConfiguration); } - void TargetedSequencer::OnInputSignal(const SlotId& slot) - { - if (slot != TargetedSequencerProperty::GetInSlotId(this)) - { - return; - } - - int targetIndex = TargetedSequencerProperty::GetIndex(this); - - if (targetIndex < 0 - || targetIndex >= m_numOutputs) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Switch node was given an out of bound index."); - return; - } - - AZStd::string slotName = GenerateOutputName(targetIndex); - SlotId outSlotId = GetSlotId(slotName.c_str()); - - if (outSlotId.IsValid()) - { - SignalOutput(outSlotId); - } - } - void TargetedSequencer::OnSlotRemoved([[maybe_unused]] const SlotId& slotId) { FixupStateNames(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.h index 7f50fbeb11..68bf1601f7 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.h @@ -54,7 +54,6 @@ namespace ScriptCanvas AZStd::string GetDisplayGroup() const { return "OutputGroup"; } - void OnInputSignal(const SlotId& slot) override; void OnSlotRemoved(const SlotId& slotId) override; private: diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.cpp index 80646e66a1..21b2ead10e 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.cpp @@ -131,63 +131,6 @@ namespace ScriptCanvas return isValid; } - void WeightedRandomSequencer::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = WeightedRandomSequencerProperty::GetInSlotId(this); - - if (slotId == inSlotId) - { - int runningTotal = 0; - - AZStd::vector< WeightedStruct > weightedStructs; - weightedStructs.reserve(m_weightedPairings.size()); - - for (const WeightedPairing& weightedPairing : m_weightedPairings) - { - const Datum* datum = FindDatum(weightedPairing.m_weightSlotId); - - if (datum) - { - WeightedStruct weightedStruct; - weightedStruct.m_executionSlotId = weightedPairing.m_executionSlotId; - - if (datum->GetType().IS_A(ScriptCanvas::Data::Type::Number())) - { - int weight = aznumeric_cast((*datum->GetAs())); - - runningTotal += weight; - weightedStruct.m_totalWeight = runningTotal; - } - - weightedStructs.emplace_back(weightedStruct); - } - } - - // We have no weights. So just trigger the first execution output - // Weighted pairings is controlled to never be empty. - if (runningTotal == 0) - { - if (!m_weightedPairings.empty()) - { - SignalOutput(m_weightedPairings.front().m_executionSlotId); - } - - return; - } - - int weightedResult = MathNodeUtilities::GetRandomIntegral(1, runningTotal); - - for (const WeightedStruct& weightedStruct : weightedStructs) - { - if (weightedResult <= weightedStruct.m_totalWeight) - { - SignalOutput(weightedStruct.m_executionSlotId); - break; - } - } - } - } - SlotId WeightedRandomSequencer::HandleExtension(AZ::Crc32 extensionId) { auto weightedPairing = AddWeightedPair(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.h index f58f89690d..d8be2a95c6 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.h @@ -22,9 +22,7 @@ namespace ScriptCanvas class WeightedRandomSequencer : public Node { - public: - SCRIPTCANVAS_NODE(WeightedRandomSequencer); static void ReflectDataTypes(AZ::ReflectContext* reflectContext); @@ -42,11 +40,7 @@ namespace ScriptCanvas bool OnValidateNode(ValidationResults& validationResults); - void OnInputSignal(const SlotId& slot); - - SlotId HandleExtension(AZ::Crc32 extensionId) override; - - + SlotId HandleExtension(AZ::Crc32 extensionId) override; bool CanDeleteSlot(const SlotId& slotId) const override; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Divide.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Divide.h index 7320fff037..fad147241a 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Divide.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Divide.h @@ -51,21 +51,6 @@ namespace ScriptCanvas nodeConfig.m_type = AZ::Uuid("DC17E19F-3829-410D-9A0B-AD60C6066DAA"); return nodeConfig; } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - const Data::NumberType lhsValue = *lhs.GetAs(); - const Data::NumberType rhsValue = *rhs.GetAs(); - - if (AZ::IsClose(rhsValue, 0.0, 0.0001)) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Divide by zero"); - return Datum(); - } - - return Datum(lhsValue / rhsValue); - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Multiply.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Multiply.h index c0761502c0..76ccf3cd96 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Multiply.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Multiply.h @@ -50,12 +50,6 @@ namespace ScriptCanvas nodeConfig.m_type = AZ::Uuid("E9BB45A1-AE96-47B0-B2BF-2927D420A28C"); return nodeConfig; } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - return Datum(*lhs.GetAs() * *rhs.GetAs()); - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Subtract.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Subtract.h index ecffc724cc..65563bec0b 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Subtract.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Subtract.h @@ -50,12 +50,6 @@ namespace ScriptCanvas nodeConfig.m_type = AZ::Uuid("D0615D0A-027F-47F6-A02B-E35DAF22F431"); return nodeConfig; } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - return Datum(*lhs.GetAs() - *rhs.GetAs()); - } }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Sum.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Sum.h index ed53b66878..bcff3378c9 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Sum.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Sum.h @@ -52,12 +52,6 @@ namespace ScriptCanvas nodeConfig.m_type = AZ::Uuid("C1B42FEC-0545-4511-9FAC-11E0387FEDF0"); return nodeConfig; } - - protected: - Datum Evaluate(const Datum& lhs, const Datum& rhs) override - { - return Datum(*lhs.GetAs() + *rhs.GetAs()); - } }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.cpp index 6b5b2770de..ed676034d8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.cpp @@ -91,70 +91,6 @@ namespace ScriptCanvas } } } - - void OperatorAt::KeyNotFound(const Datum* containerDatum) - { - Datum defaultDatum; - AZStd::vector types = ScriptCanvas::Data::GetContainedTypes(GetSourceAZType()); - - int index = Data::IsMapContainerType(containerDatum->GetType()) ? 1 : 0; - - Data::Type type = Data::FromAZType(types[index]); - defaultDatum.SetType(type); - - PushOutput(defaultDatum, *GetSlot(*m_outputSlots.begin())); - SignalOutput(GetSlotId("Key Not Found")); - } - - void OperatorAt::InvokeOperator() - { - Slot* inputSlot = GetFirstInputSourceSlot(); - - if (inputSlot) - { - SlotId sourceSlotId = inputSlot->GetId(); - const Datum* containerDatum = FindDatum(sourceSlotId); - - if (Datum::IsValidDatum(containerDatum)) - { - const Datum* inputKeyDatum = FindDatum(*m_inputSlots.begin()); - AZ::Outcome valueOutcome = BehaviorContextMethodHelper::CallMethodOnDatumUnpackOutcomeSuccess(*containerDatum, "At", *inputKeyDatum); - if (!valueOutcome.IsSuccess()) - { - KeyNotFound(containerDatum); - return; - } - - if (Data::IsVectorContainerType(containerDatum->GetType())) - { - PushOutput(valueOutcome.TakeValue(), *GetSlot(*m_outputSlots.begin())); - SignalOutput(GetSlotId("Out")); - } - else if (Data::IsSetContainerType(containerDatum->GetType()) || Data::IsMapContainerType(containerDatum->GetType())) - { - Datum keyDatum = valueOutcome.TakeValue(); - if (keyDatum.Empty()) - { - KeyNotFound(containerDatum); - } - else - { - PushOutput(keyDatum, *GetSlot(*m_outputSlots.begin())); - SignalOutput(GetSlotId("Out")); - } - } - } - } - } - - void OperatorAt::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorBaseProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - InvokeOperator(); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.h index e20de1a02b..ceae2211a0 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.h @@ -36,9 +36,6 @@ namespace ScriptCanvas void ConfigureContracts(SourceType sourceType, AZStd::vector& contractDescs) override; void OnSourceTypeChanged() override; - void OnInputSignal(const SlotId& slotId) override; - void InvokeOperator(); - void KeyNotFound(const Datum* containerDatum); }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.cpp index 99607c37f3..dcfe5fed56 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.cpp @@ -48,43 +48,6 @@ namespace ScriptCanvas } } - void OperatorBack::InvokeOperator() - { - const SlotSet& slotSets = GetSourceSlots(); - - if (!slotSets.empty()) - { - SlotId sourceSlotId = (*slotSets.begin()); - const Datum* containerDatum = FindDatum(sourceSlotId); - - if (Datum::IsValidDatum(containerDatum)) - { - const Datum* inputKeyDatum = FindDatum(*m_inputSlots.begin()); - AZ::Outcome valueOutcome = BehaviorContextMethodHelper::CallMethodOnDatumUnpackOutcomeSuccess(*containerDatum, "Back", *inputKeyDatum); - if (!valueOutcome.IsSuccess()) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Failed to call Back on container: %s", valueOutcome.GetError().c_str()); - return; - } - - if (Data::IsVectorContainerType(containerDatum->GetType())) - { - PushOutput(valueOutcome.TakeValue(), *GetSlot(*m_outputSlots.begin())); - } - } - } - - SignalOutput(GetSlotId("Out")); - } - - void OperatorBack::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorBaseProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - InvokeOperator(); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.h index 41c4b2cbc1..2b6746156d 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.h @@ -35,7 +35,6 @@ namespace ScriptCanvas void ConfigureContracts(SourceType sourceType, AZStd::vector& contractDescs) override; void OnSourceTypeChanged() override; - void OnInputSignal(const SlotId& slotId) override; void InvokeOperator(); }; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.cpp index 36890c9720..38118ed8c1 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.cpp @@ -67,36 +67,6 @@ namespace ScriptCanvas } //// } - - void OperatorClear::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorBaseProperty::GetInSlotId(this); - - if (slotId != inSlotId) - { - return; - } - - SlotId sourceSlotId = OperatorClearProperty::GetSourceSlotId(this); - - if (const Datum* containerDatum = FindDatum(sourceSlotId)) - { - if (Datum::IsValidDatum(containerDatum)) - { - AZ::Outcome clearOutcome = BehaviorContextMethodHelper::CallMethodOnDatum(*containerDatum, "Clear"); - if (!clearOutcome.IsSuccess()) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Failed to call Clear on container: %s", clearOutcome.GetError().c_str()); - return; - } - - // Push the source container as an output to support chaining - PushOutput(*containerDatum, *OperatorClearProperty::GetContainerSlot(this)); - } - } - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.h index a0ccad1379..2b7e24682f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.h @@ -41,10 +41,6 @@ namespace ScriptCanvas OperatorClear() = default; void OnInit() override; - - protected: - - void OnInputSignal(const SlotId& slotId) override; }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.cpp index 71ee545397..e62b671268 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.cpp @@ -70,49 +70,6 @@ namespace ScriptCanvas } //// } - - void OperatorEmpty::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorEmptyProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - SlotId sourceSlotId = OperatorEmptyProperty::GetSourceSlotId(this); - - const Datum* containerDatum = FindDatum(sourceSlotId); - - if (Datum::IsValidDatum(containerDatum)) - { - // Is the container empty? - auto emptyOutcome = BehaviorContextMethodHelper::CallMethodOnDatum(*containerDatum, "Empty"); - if (!emptyOutcome) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Failed to call Empty on container: %s", emptyOutcome.GetError().c_str()); - return; - } - - Datum emptyResult = emptyOutcome.TakeValue(); - bool isEmpty = *emptyResult.GetAs(); - - PushOutput(Datum(isEmpty), *GetSlot(OperatorEmptyProperty::GetIsEmptySlotId(this))); - - if (isEmpty) - { - SignalOutput(OperatorEmptyProperty::GetTrueSlotId(this)); - } - else - { - SignalOutput(OperatorEmptyProperty::GetFalseSlotId(this)); - } - } - else - { - PushOutput(Datum(true), *GetSlot(OperatorEmptyProperty::GetIsEmptySlotId(this))); - SignalOutput(OperatorEmptyProperty::GetFalseSlotId(this)); - } - - SignalOutput(OperatorEmptyProperty::GetOutSlotId(this)); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.h index 5cc26c126e..148142d3c8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.h @@ -21,22 +21,15 @@ namespace ScriptCanvas class OperatorEmpty : public Node { public: - SCRIPTCANVAS_NODE(OperatorEmpty); - void CustomizeReplacementNode(Node* replacementNode, AZStd::unordered_map>& outSlotIdMap) const override; static bool OperatorEmptyVersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement); OperatorEmpty() = default; - // Node... void OnInit() override; - //// - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.cpp index 15328b42fb..92c753c5b8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.cpp @@ -95,47 +95,6 @@ namespace ScriptCanvas } } - void OperatorErase::InvokeOperator() - { - Slot* inputSlot = GetFirstInputSourceSlot(); - Slot* outputSlot = GetFirstOutputSourceSlot(); - - if (inputSlot && outputSlot) - { - SlotId sourceSlotId = inputSlot->GetId(); - const Datum* containerDatum = FindDatum(sourceSlotId); - - if (Datum::IsValidDatum(containerDatum)) - { - const Datum* inputKeyDatum = FindDatum(*m_inputSlots.begin()); - AZ::Outcome valueOutcome = BehaviorContextMethodHelper::CallMethodOnDatum(*containerDatum, "Erase", *inputKeyDatum); - - if (valueOutcome.IsSuccess()) - { - // Push the source container as an output to support chaining - PushOutput(*containerDatum, (*outputSlot)); - - auto outcomeInnerResult = valueOutcome.GetValue().GetAs< AZ::Outcome>(); - if (outcomeInnerResult && !outcomeInnerResult->IsSuccess()) - { - SignalOutput(GetSlotId("Element Not Found")); - return; - } - } - } - } - - SignalOutput(GetSlotId("Out")); - } - - void OperatorErase::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorBaseProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - InvokeOperator(); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.h index dc5d8c4c0c..95ddfcb275 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.h @@ -39,8 +39,6 @@ namespace ScriptCanvas void ConfigureContracts(SourceType sourceType, AZStd::vector& contractDescs) override; void OnSourceTypeChanged() override; - void OnInputSignal(const SlotId& slotId) override; - void InvokeOperator(); private: bool m_missedElementNotFound = false; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.cpp index 794ee8aeb0..bd97e4cd4e 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.cpp @@ -46,43 +46,6 @@ namespace ScriptCanvas } } - void OperatorFront::InvokeOperator() - { - const SlotSet& slotSets = GetSourceSlots(); - - if (!slotSets.empty()) - { - SlotId sourceSlotId = (*slotSets.begin()); - const Datum* containerDatum = FindDatum(sourceSlotId); - - if (Datum::IsValidDatum(containerDatum)) - { - const Datum* inputKeyDatum = FindDatum(*m_inputSlots.begin()); - AZ::Outcome valueOutcome = BehaviorContextMethodHelper::CallMethodOnDatumUnpackOutcomeSuccess(*containerDatum, "Front", *inputKeyDatum); - if (!valueOutcome.IsSuccess()) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Failed to call Front on container: %s", valueOutcome.GetError().c_str()); - return; - } - - if (Data::IsVectorContainerType(containerDatum->GetType())) - { - PushOutput(valueOutcome.TakeValue(), *GetSlot(*m_outputSlots.begin())); - } - } - } - - SignalOutput(GetSlotId("Out")); - } - - void OperatorFront::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorBaseProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - InvokeOperator(); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.h index cb41f6a479..f28c46e0f8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.h @@ -35,7 +35,6 @@ namespace ScriptCanvas void ConfigureContracts(SourceType sourceType, AZStd::vector& contractDescs) override; void OnSourceTypeChanged() override; - void OnInputSignal(const SlotId& slotId) override; void InvokeOperator(); }; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.cpp index bce98a6776..9af3f183b1 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.cpp @@ -84,108 +84,6 @@ namespace ScriptCanvas } } - void OperatorInsert::InvokeOperator() - { - Slot* inputSlot = GetFirstInputSourceSlot(); - Slot* outputSlot = GetFirstOutputSourceSlot(); - - if (inputSlot && outputSlot) - { - SlotId sourceSlotId = inputSlot->GetId(); - const Datum* containerDatum = FindDatum(sourceSlotId); - - if (Datum::IsValidDatum(containerDatum)) - { - AZ::BehaviorMethod* method = GetOperatorMethod("Insert"); - AZ_Assert(method, "The contract must have failed because you should not be able to invoke an operator for a type that does not have the method"); - - AZStd::array params; - - AZ::BehaviorValueParameter* paramFirst(params.begin()); - AZ::BehaviorValueParameter* paramIter = paramFirst; - - if (Data::IsVectorContainerType(GetSourceAZType())) - { - // Container - auto behaviorParameter = method->GetArgument(0); - AZ::Outcome param0 = containerDatum->ToBehaviorValueParameter(*behaviorParameter); - paramIter->Set(param0.GetValue()); - ++paramIter; - - // Get the size of the container - auto sizeOutcome = BehaviorContextMethodHelper::CallMethodOnDatum(*containerDatum, "Size"); - if (!sizeOutcome) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Failed to get size of container: %s", sizeOutcome.GetError().c_str()); - return; - } - - auto inputSlotIterator = m_inputSlots.begin(); - - // Index - behaviorParameter = method->GetArgument(1); - const Datum* indexDatum = FindDatum(*inputSlotIterator); - AZ::Outcome param2 = indexDatum->ToBehaviorValueParameter(*behaviorParameter); - - paramIter->Set(param2.GetValue()); - ++paramIter; - - // Value to insert - behaviorParameter = method->GetArgument(2); - ++inputSlotIterator; - const Datum* inputDatum = FindDatum(*inputSlotIterator); - AZ::Outcome param1 = inputDatum->ToBehaviorValueParameter(*behaviorParameter); - paramIter->Set(param1.GetValue()); - ++paramIter; - } - else if (Data::IsMapContainerType(GetSourceAZType())) - { - auto inputSlotIterator = m_inputSlots.begin(); - const Datum* keyDatum = FindDatum(*inputSlotIterator++); - const Datum* valueDatum = FindDatum(*inputSlotIterator); - - if (keyDatum && valueDatum) - { - // Container - const AZ::BehaviorParameter* behaviorParameter = method->GetArgument(0); - AZ::Outcome param0 = containerDatum->ToBehaviorValueParameter(*behaviorParameter); - paramIter->Set(param0.GetValue()); - ++paramIter; - - // Key - behaviorParameter = method->GetArgument(1); - AZ::Outcome param1 = keyDatum->ToBehaviorValueParameter(*behaviorParameter); - paramIter->Set(param1.GetValue()); - ++paramIter; - - // Value to insert - behaviorParameter = method->GetArgument(2); - AZ::Outcome param2 = valueDatum->ToBehaviorValueParameter(*behaviorParameter); - paramIter->Set(param2.GetValue()); - ++paramIter; - } - } - - AZStd::vector resultSlotIDs; - resultSlotIDs.push_back(); - BehaviorContextMethodHelper::Call(*this, false, method, paramFirst, paramIter, resultSlotIDs); - - // Push the source container as an output to support chaining - PushOutput(*containerDatum, (*outputSlot)); - } - } - - SignalOutput(GetSlotId("Out")); - } - - void OperatorInsert::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorBaseProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - InvokeOperator(); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.h index 970c8ab780..0fda9b0654 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.h @@ -33,9 +33,6 @@ namespace ScriptCanvas void ConfigureContracts(SourceType sourceType, AZStd::vector& contractDescs) override; void OnSourceTypeChanged() override; - void OnInputSignal(const SlotId& slotId) override; - void InvokeOperator(); - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.cpp index e449d04d34..cf8eb306c4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.cpp @@ -42,73 +42,6 @@ namespace ScriptCanvas m_inputSlots.insert(AddSlot(slotConfiguration)); } } - - void OperatorPushBack::InvokeOperator() - { - Slot* inputSlot = GetFirstInputSourceSlot(); - Slot* outputSlot = GetFirstOutputSourceSlot(); - - if (inputSlot && outputSlot) - { - const Datum* containerDatum = FindDatum(inputSlot->GetId()); - - if (Datum::IsValidDatum(containerDatum)) - { - AZ::BehaviorMethod* method = GetOperatorMethod("PushBack"); - AZ_Assert(method, "The contract must have failed because you should not be able to invoke an operator for a type that does not have the method"); - - AZStd::array params; - - AZ::BehaviorValueParameter* paramFirst(params.begin()); - AZ::BehaviorValueParameter* paramIter = paramFirst; - - if (Data::IsVectorContainerType(GetSourceAZType())) - { - // Container - auto behaviorParameter = method->GetArgument(0); - - AZ::Outcome param0 = containerDatum->ToBehaviorValueParameter(*behaviorParameter); - paramIter->Set(param0.GetValue()); - ++paramIter; - - const auto& inputSlotIterator = m_inputSlots.begin(); - - // Value to push - behaviorParameter = method->GetArgument(1); - const Datum* inputDatum = FindDatum(*inputSlotIterator); - AZ_Assert(inputDatum, "Unable to GetInput for Input slot Id"); - if (inputDatum) - { - AZ::Outcome param1 = inputDatum->ToBehaviorValueParameter(*behaviorParameter); - paramIter->Set(param1.GetValue()); - ++paramIter; - } - } - else if (Data::IsMapContainerType(GetSourceAZType())) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "PushBack is not a supported operation on maps"); - return; - } - - AZStd::vector resultSlotIDs; - resultSlotIDs.push_back(); - BehaviorContextMethodHelper::Call(*this, false, method, paramFirst, paramIter, resultSlotIDs); - - PushOutput(*containerDatum, (*outputSlot)); - } - } - - SignalOutput(GetSlotId("Out")); - } - - void OperatorPushBack::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorBaseProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - InvokeOperator(); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.h index 695d6a6f93..5f74dd9dc9 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.h @@ -32,9 +32,6 @@ namespace ScriptCanvas void ConfigureContracts(SourceType sourceType, AZStd::vector& contractDescs) override; void OnSourceTypeChanged() override; - void OnInputSignal(const SlotId& slotId) override; - void InvokeOperator(); - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.cpp index 29c5e61a21..40fbe6f54b 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.cpp @@ -85,42 +85,6 @@ namespace ScriptCanvas } //// } - - void OperatorSize::OnInputSignal(const SlotId& slotId) - { - const SlotId inSlotId = OperatorSizeProperty::GetInSlotId(this); - if (slotId == inSlotId) - { - - SlotId sourceSlotId = OperatorSizeProperty::GetSourceSlotId(this); - SlotId sizeSlotId = OperatorSizeProperty::GetSizeSlotId(this); - - const Datum* containerDatum = FindDatum(sourceSlotId); - - if (Datum::IsValidDatum(containerDatum)) - { - // Get the size of the container - auto sizeOutcome = BehaviorContextMethodHelper::CallMethodOnDatum(*containerDatum, "Size"); - if (!sizeOutcome) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Failed to get size of container: %s", sizeOutcome.GetError().c_str()); - return; - } - - // Index - Datum sizeResult = sizeOutcome.TakeValue(); - - PushOutput(sizeResult, *GetSlot(sizeSlotId)); - } - else - { - Datum zero(0); - PushOutput(zero, *GetSlot(sizeSlotId)); - } - - SignalOutput(OperatorSizeProperty::GetOutSlotId(this)); - } - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.h index 3199b09ebd..71c89c75e9 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.h @@ -33,9 +33,6 @@ namespace ScriptCanvas // Node... void OnInit() override; //// - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.cpp index 7d6fb74768..376a6154a9 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.cpp @@ -55,68 +55,6 @@ namespace ScriptCanvas } } - void OperatorArithmetic::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::ScriptCanvas); - - if (!m_scrapedInputs) - { - m_scrapedInputs = true; - - AZStd::vector< Slot* > groupedSlots = GetSlotsWithDynamicGroup(GetArithmeticDynamicTypeGroup()); - - SlotId fallbackId; - - for (Slot* groupedSlot : groupedSlots) - { - if (groupedSlot->IsInput()) - { - SlotId groupedSlotId = groupedSlot->GetId(); - - if (!fallbackId.IsValid()) - { - fallbackId = groupedSlotId; - } - - if ((groupedSlot->IsVariableReference() && groupedSlot->GetVariableReference().IsValid()) || IsConnected(groupedSlotId) || IsValidArithmeticSlot(groupedSlotId)) - { - const Datum* inputDatum = groupedSlot->FindDatum(); - - if (inputDatum && inputDatum->GetType().IsValid() && inputDatum->GetType().GetType() != Data::eType::BehaviorContextObject) - { - m_applicableInputs.emplace_back(inputDatum); - } - } - } - else if (groupedSlot->IsOutput()) - { - m_resultSlot = groupedSlot; - } - - m_outSlot = GetSlotByName("Out")->GetId(); - } - - // If none of our inputs are valid input slots. Just use the first one we found to fall into a default use case. - if (m_applicableInputs.empty()) - { - const Datum* inputDatum = FindDatum(fallbackId); - - if (inputDatum && inputDatum->GetType().IsValid()) - { - m_applicableInputs.emplace_back(inputDatum); - } - } - - if (!m_applicableInputs.empty()) - { - const Datum* datum = m_applicableInputs.front(); - m_result.SetType(datum->GetType()); - } - } - - InvokeOperator(); - } - void OperatorArithmetic::OnConfigured() { auto slotList = GetSlotsWithDynamicGroup(GetArithmeticDynamicTypeGroup()); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.h index 716c9111af..4fcd6a1905 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.h @@ -85,8 +85,7 @@ namespace ScriptCanvas // Node void OnSlotDisplayTypeChanged(const SlotId& slotId, const Data::Type& dataType) override final; void OnDynamicGroupDisplayTypeChanged(const AZ::Crc32& dynamicGroup, const Data::Type& dataType) override final; - void OnInputSignal(const SlotId& slotId) override; - + void OnConfigured() override; void OnInit() override; void OnActivate() override; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.cpp index 27a8e5f846..9ba4a7f4ae 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.cpp @@ -104,98 +104,6 @@ namespace ScriptCanvas } } - void OperatorDivideByNumber::OnInputSignal(const SlotId& slotId) - { - if (slotId != OperatorDivideByNumberProperty::GetInSlotId(this)) - { - return; - } - - Data::Type type = GetDisplayType(AZ::Crc32("DivideGroup")); - - if (!type.IsValid()) - { - return; - } - - const Datum* operand = FindDatum(m_operandId); - - if (operand == nullptr) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Operand is nullptr"); - return; - } - - const float divisorValue = aznumeric_cast(OperatorDivideByNumberProperty::GetDivisor(this)); - - if (AZ::IsClose(divisorValue, 0.f, std::numeric_limits::epsilon())) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Division by zero"); - return; - } - - Datum result; - - switch (type.GetType()) - { - case Data::eType::Number: - { - const Data::NumberType* number = operand->GetAs(); - Data::NumberType resultValue = (*number) / divisorValue; - result = Datum(resultValue); - } - break; - case Data::eType::Vector2: - { - const Data::Vector2Type* vector = operand->GetAs(); - AZ::Vector2 resultValue = (*vector) / divisorValue; - result = Datum(resultValue); - } - break; - case Data::eType::Vector3: - { - const Data::Vector3Type* vector = operand->GetAs(); - AZ::Vector3 resultValue = (*vector) / divisorValue; - result = Datum(resultValue); - } - break; - case Data::eType::Vector4: - { - const Data::Vector4Type* vector = operand->GetAs(); - AZ::Vector4 resultValue = (*vector) / divisorValue; - result = Datum(resultValue); - } - break; - case Data::eType::Quaternion: - { - const Data::QuaternionType* quaternion = operand->GetAs(); - Data::QuaternionType resultValue = (*quaternion) / divisorValue; - result = Datum(resultValue); - } - break; - case Data::eType::Matrix3x3: - { - const Data::Matrix3x3Type* matrix = operand->GetAs(); - Data::Matrix3x3Type resultValue = (*matrix) / divisorValue; - result = Datum(resultValue); - } - break; - case Data::eType::Color: - { - const Data::ColorType *color = operand->GetAs(); - Data::ColorType resultValue = (*color) / divisorValue; - result = Datum(resultValue); - } - break; - default: - result = Datum(); - AZ_Error("Script Canvas", false, "Divide by Number does not support the provided data type."); - break; - } - - PushOutput(result, (*OperatorDivideByNumberProperty::GetResultSlot(this))); - SignalOutput(OperatorDivideByNumberProperty::GetOutSlotId(this)); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.h index 10df09a42e..bb33242ad4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.h @@ -42,7 +42,6 @@ namespace ScriptCanvas // Nodes... void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; //// protected: diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.cpp index b52b6d8da2..9cde2d7322 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.cpp @@ -70,58 +70,6 @@ namespace ScriptCanvas ConfigureSlots(); } } - - void OperatorLength::OnInputSignal(const SlotId& slotId) - { - if (slotId != OperatorLengthProperty::GetInSlotId(this)) - { - return; - } - - Data::Type type = GetDisplayType(AZ::Crc32("SourceGroup")); - - if (!type.IsValid()) - { - return; - } - - Datum result; - const Datum* operand = FindDatum(OperatorLengthProperty::GetSourceSlotId(this)); - - switch (type.GetType()) - { - case Data::eType::Vector2: - { - const AZ::Vector2* vector = operand->GetAs(); - result = Datum(vector->GetLength()); - } - break; - case Data::eType::Vector3: - { - const AZ::Vector3* vector = operand->GetAs(); - result = Datum(vector->GetLength()); - } - break; - case Data::eType::Vector4: - { - const AZ::Vector4* vector = operand->GetAs(); - result = Datum(vector->GetLength()); - } - break; - case Data::eType::Quaternion: - { - const AZ::Quaternion* vector = operand->GetAs(); - result = Datum(vector->GetLength()); - } - break; - default: - AZ_Assert(false, "Length operator not defined for type: %s", Data::ToAZType(type).ToString().c_str()); - break; - } - - PushOutput(result, (*OperatorLengthProperty::GetLengthSlot(this))); - SignalOutput(OperatorLengthProperty::GetOutSlotId(this)); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.h index f49c384439..188d8c2583 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.h @@ -38,10 +38,7 @@ namespace ScriptCanvas OperatorLength() = default; ~OperatorLength() = default; - // Node... void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - //// }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.cpp index 079073fa64..d5cbadbfee 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.cpp @@ -51,133 +51,10 @@ namespace ScriptCanvas //////// } - void LerpBetween::OnDeactivate() - { - AZ::SystemTickBus::Handler::BusDisconnect(); - AZ::TickBus::Handler::BusDisconnect(); - } - void LerpBetween::OnConfigured() { SetupInternalSlotReferences(); - } - - void LerpBetween::OnSystemTick() - { - // Ping pong between the system and the normal tick bus for a consistent starting point for the lerp - AZ::SystemTickBus::Handler::BusDisconnect(); - AZ::TickBus::Handler::BusConnect(); - } - - void LerpBetween::OnTick(float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint timePoint) - { - bool lerpComplete = false; - - m_counter += deltaTime; - - if (m_counter >= m_duration) - { - lerpComplete = true; - m_counter = m_duration; - } - - float percent = m_counter/m_duration; - - SignalLerpStep(percent); - } - - void LerpBetween::OnInputSignal(const SlotId& slotId) - { - if (slotId == LerpBetweenProperty::GetCancelSlotId(this)) - { - CancelLerp(); - } - else if (slotId == LerpBetweenProperty::GetInSlotId(this)) - { - CancelLerp(); - - AZ::SystemTickBus::Handler::BusConnect(); - - float speedOnlyTime = 0.0; - float maxDuration = 0.0; - - const Datum* durationDatum = FindDatum(m_maximumTimeSlotId); - const Datum* speedDatum = FindDatum(m_speedSlotId); - - if (durationDatum) - { - maxDuration = static_cast((*durationDatum->GetAs())); - } - - Data::Type displayType = GetDisplayType(AZ::Crc32("LerpGroup")); - - if (displayType == Data::Type::Number()) - { - SetupStartStop(displayType); - - if (!m_differenceDatum.GetType().IsValid()) - { - return; - } - - Data::NumberType difference = (*m_differenceDatum.GetAs()); - Data::NumberType speed = (*speedDatum->GetAs()); - - if (AZ::IsClose(speed, 0.0, Data::ToleranceEpsilon())) - { - speedOnlyTime = -1.0f; - } - else - { - speedOnlyTime = fabsf(static_cast(difference)/static_cast(speed)); - } - } - else if (displayType == Data::Type::Vector2()) - { - SetupStartStop(displayType); - speedOnlyTime = CalculateVectorSpeedTime(speedDatum); - } - else if (displayType == Data::Type::Vector3()) - { - SetupStartStop(displayType); - speedOnlyTime = CalculateVectorSpeedTime(speedDatum); - } - else if (displayType == Data::Type::Vector4()) - { - SetupStartStop(displayType); - speedOnlyTime = CalculateVectorSpeedTime(speedDatum); - } - - m_counter = 0; - - if (speedOnlyTime >= 0.0f && maxDuration >= 0.0f) - { - m_duration = AZStd::min(speedOnlyTime, maxDuration); - } - else if (speedOnlyTime >= 0.0f) - { - m_duration = speedOnlyTime; - } - else if (maxDuration >= 0.0f) - { - m_duration = maxDuration; - } - else - { - AZ_Error("ScriptCanvas", false, "Lerp Between not given a valid speed or duration to perofrm the lerp at. Defaulting to 1 second duration"); - m_duration = 1.0; - } - - if (AZ::IsClose(m_duration, 0.0f, AZ::Constants::FloatEpsilon)) - { - CancelLerp(); - - SignalLerpStep(1.0f); - } - - SignalOutput(LerpBetweenProperty::GetOutSlotId(this)); - } - } + } void LerpBetween::SetupInternalSlotReferences() { @@ -189,52 +66,7 @@ namespace ScriptCanvas m_stepSlotId = LerpBetweenProperty::GetStepSlotId(this); m_percentSlotId = LerpBetweenProperty::GetPercentSlotId(this); } - - void LerpBetween::CancelLerp() - { - AZ::SystemTickBus::Handler::BusDisconnect(); - AZ::TickBus::Handler::BusDisconnect(); - } - - void LerpBetween::SignalLerpStep(float percent) - { - Data::Type displayType = GetDisplayType(AZ::Crc32("LerpGroup")); - - Datum stepDatum(displayType, Datum::eOriginality::Original); - stepDatum.SetToDefaultValueOfType(); - - if (displayType == Data::Type::Number()) - { - CalculateLerpStep(percent, stepDatum); - } - else if (displayType == Data::Type::Vector2()) - { - CalculateLerpStep(percent, stepDatum); - } - else if (displayType == Data::Type::Vector3()) - { - CalculateLerpStep(percent, stepDatum); - } - else if (displayType == Data::Type::Vector4()) - { - CalculateLerpStep(percent, stepDatum); - } - - if (AZ::IsClose(percent, 1.0f, AZ::Constants::FloatEpsilon)) - { - SignalOutput(LerpBetweenProperty::GetLerpCompleteSlotId(this)); - AZ::TickBus::Handler::BusDisconnect(); - } - - Datum percentDatum(ScriptCanvas::Data::Type::Number(), Datum::eOriginality::Original); - percentDatum.Set(percent); - - PushOutput(percentDatum, *GetSlot(m_percentSlotId)); - PushOutput(stepDatum, *GetSlot(m_stepSlotId)); - - SignalOutput(LerpBetweenProperty::GetTickSlotId(this)); - } - + bool LerpBetween::IsGroupConnected() const { bool hasConnections = false; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.h index cb54f2f236..7b8b7d2143 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.h @@ -27,8 +27,6 @@ namespace ScriptCanvas //! Deprecated: see NodeableNodeOverloadedLerp class LerpBetween : public Node - , public AZ::SystemTickBus::Handler - , public AZ::TickBus::Handler { public: @@ -54,98 +52,14 @@ namespace ScriptCanvas ~LerpBetween() override = default; void OnInit() override; - void OnDeactivate() override; void OnConfigured() override; - - // SystemTickBus... - void OnSystemTick() override; - //// - - // TickBus... - void OnTick(float deltaTime, AZ::ScriptTimePoint timePoint) override; - //// - - // Node... - void OnInputSignal(const SlotId& slotId) override; - //// - + private: void SetupInternalSlotReferences(); - - void CancelLerp(); - - void SignalLerpStep(float percent); - bool IsGroupConnected() const; bool IsInGroup(const SlotId& slotId) const; - - template - void CalculateLerpStep(float percent, Datum& stepDatum) - { - const DataType* startValue = m_startDatum.GetAs(); - const DataType* differenceValue = m_differenceDatum.GetAs(); - - if (startValue == nullptr || differenceValue == nullptr) - { - return; - } - - DataType stepValue = (*startValue) + (*differenceValue) * percent; - stepDatum.Set(stepValue); - } - - template - void SetupStartStop(Data::Type displayType) - { - const Datum* startDatum = FindDatum(m_startSlotId); - const Datum* endDatum = FindDatum(m_stopSlotId); - - m_startDatum = (*startDatum); - m_differenceDatum = Datum(displayType, Datum::eOriginality::Original); - - const DataType* startValue = startDatum->GetAs(); - const DataType* endValue = endDatum->GetAs(); - - if (startValue == nullptr || endValue == nullptr) - { - m_differenceDatum.SetToDefaultValueOfType(); - } - else - { - DataType difference = (*endValue) - (*startValue); - m_differenceDatum.Set(difference); - } - } - - template - float CalculateVectorSpeedTime(const Datum* speedDatum) - { - const DataType* dataType = speedDatum->GetAs(); - - float speedLength = 0.0f; - - if (dataType) - { - speedLength = dataType->GetLength(); - } - - if (AZ::IsClose(speedLength, 0.0f, AZ::Constants::FloatEpsilon)) - { - return -1.0; - } - - float differenceLength = 0.0; - const DataType* differenceValue = m_differenceDatum.GetAs(); - - if (differenceValue) - { - differenceLength = differenceValue->GetLength(); - } - - return fabsf(static_cast(differenceLength/speedLength)); - } - + AZStd::unordered_set< SlotId > m_groupedSlotIds; float m_duration; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Operator.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Operator.h index 7401b60d21..9882ff4564 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Operator.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Operators/Operator.h @@ -121,13 +121,6 @@ namespace ScriptCanvas virtual void OnSourceConnected([[maybe_unused]] const SlotId& slotId) {} virtual void OnSourceDisconnected([[maybe_unused]] const SlotId& slotId) {} - //! Implements the operator's behavior, the vector of Datums represents the list of operands. - virtual void Evaluate(const OperatorOperands& operands, Datum& result) - { - AZ_UNUSED(operands); - AZ_UNUSED(result); - } - private: OperatorConfiguration m_operatorConfiguration; @@ -180,32 +173,6 @@ namespace ScriptCanvas } } }; - - // Base class for an small helper object that wraps the function to invoke - class OperationHelper - { - public: - - Datum operator()(const AZStd::vector& operands, Datum& result) - { - AZStd::vector::const_iterator operand = operands.begin(); - result = *operand; - for (++operand; operand != operands.end(); ++operand) - { - result = Operator(result, *operand); - } - - return result; - } - - protected: - virtual Datum Operator(const Datum&, const Datum&) = 0; - }; - -// Helper macro to invoke an operator function for a specialized type -#define CallOperatorFunction(Operator, DataType, Type) \ - if (DataType == Data::FromAZType(azrtti_typeid())) { Operator operation; operation(operands, result); } - } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/ProjectSettings.json b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/ProjectSettings.json new file mode 100644 index 0000000000..0cf5ea5033 --- /dev/null +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": "No Configurations" +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/String/v16/Browse.VC.db b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/String/v16/Browse.VC.db new file mode 100644 index 0000000000..0bd6c30642 Binary files /dev/null and b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/String/v16/Browse.VC.db differ diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/VSWorkspaceState.json b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/VSWorkspaceState.json new file mode 100644 index 0000000000..6b6114114f --- /dev/null +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/slnx.sqlite b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/slnx.sqlite new file mode 100644 index 0000000000..9b538ebad6 Binary files /dev/null and b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/.vs/slnx.sqlite differ diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.cpp index b88b2edbd3..ec43c1fc8b 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.cpp @@ -52,32 +52,6 @@ namespace ScriptCanvas } } - void Contains::OnInputSignal(const SlotId&) - { - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Contains::OnInputSignal"); - - AZStd::string sourceString = ContainsProperty::GetSource(this); - AZStd::string patternString = ContainsProperty::GetPattern(this); - - bool caseSensitive = ContainsProperty::GetCaseSensitive(this); - bool searchFromEnd = ContainsProperty::GetSearchFromEnd(this); - - auto index = AzFramework::StringFunc::Find(sourceString.c_str(), patternString.c_str(), 0, searchFromEnd, caseSensitive); - if (index != AZStd::string::npos) - { - const SlotId outputIndexSlotId = ContainsProperty::GetIndexSlotId(this); - if (auto* indexSlot = GetSlot(outputIndexSlotId)) - { - Datum outputIndex(index); - PushOutput(outputIndex, *indexSlot); - } - - SignalOutput(GetSlotId("True")); - return; - } - - SignalOutput(GetSlotId("False")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.h index e2756f6ebf..d877972a1a 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Contains.h @@ -29,10 +29,6 @@ namespace ScriptCanvas void OnInit() override; void CustomizeReplacementNode(Node* replacementNode, AZStd::unordered_map>& outSlotIdMap) const override; - protected: - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.cpp index 1b71390e0c..d05f2cd5ac 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.cpp @@ -13,20 +13,7 @@ namespace ScriptCanvas { namespace String { - void Format::OnInputSignal(const SlotId&) - { - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Format::OnInputSignal"); - - Datum output = Datum(ProcessFormat()); - - const SlotId outputTextSlotId = FormatProperty::GetStringSlotId(this); - if (auto* slot = GetSlot(outputTextSlotId)) - { - PushOutput(output, *slot); - } - - SignalOutput(GetSlotId("Out")); - } + } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.h index 6e5c50d2ae..2fd606a422 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Format.h @@ -23,12 +23,8 @@ namespace ScriptCanvas class Format : public Internal::StringFormatted { - protected: - + public: SCRIPTCANVAS_NODE(Format); - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Print.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Print.cpp deleted file mode 100644 index 26f3716b6a..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Print.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "Print.h" - -#include -#include - -namespace ScriptCanvas -{ - namespace Nodes - { - namespace String - { - void Print::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { -#if !defined(PERFORMANCE_BUILD) && !defined(_RELEASE) - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Print::OnInputSignal"); - - AZStd::string text = ProcessFormat(); - - AZ_TracePrintf("Script Canvas", "%s\n", text.c_str()); - LogNotificationBus::Event(GetOwningScriptCanvasId(), &LogNotifications::LogMessage, text); - - AZ::EntityId assetNodeId{}; - ScriptCanvas::RuntimeRequestBus::EventResult(assetNodeId, GetOwningScriptCanvasId(), &ScriptCanvas::RuntimeRequests::FindAssetNodeIdByRuntimeNodeId, GetEntityId()); - - SC_EXECUTION_TRACE_ANNOTATE_NODE((*this), (AnnotateNodeSignal(CreateGraphInfo(GetOwningScriptCanvasId(), GetGraphIdentifier()), AnnotateNodeSignal::AnnotationLevel::Info, text, AZ::NamedEntityId(assetNodeId, GetNodeName())))); -#endif - SignalOutput(GetSlotId("Out")); - - } - } - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Print.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Print.h index 0f971f99e7..1c16e30cd6 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Print.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Print.h @@ -8,9 +8,7 @@ #pragma once #include - #include - #include namespace ScriptCanvas @@ -23,12 +21,8 @@ namespace ScriptCanvas class Print : public Internal::StringFormatted { - protected: - + public: SCRIPTCANVAS_NODE(Print); - - void OnInputSignal(const SlotId&) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.cpp index 56a7ae2ef8..57e2510baa 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.cpp @@ -51,28 +51,6 @@ namespace ScriptCanvas } } - void Replace::OnInputSignal(const SlotId&) - { - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Replace::OnInputSignal"); - - AZStd::string sourceString = ReplaceProperty::GetSource(this); - AZStd::string replaceString = ReplaceProperty::GetReplace(this); - AZStd::string withString = ReplaceProperty::GetWith(this); - - bool caseSensitive = ReplaceProperty::GetCaseSensitive(this); - - AzFramework::StringFunc::Replace(sourceString, replaceString.c_str(), withString.c_str(), caseSensitive); - - const SlotId outputResultSlotId = ReplaceProperty::GetResultSlotId(this); - - ScriptCanvas::Datum output(sourceString); - if (auto* outputSlot = GetSlot(outputResultSlotId)) - { - PushOutput(output, *outputSlot); - } - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.h index 6c69818ac9..db31a85a82 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Replace.h @@ -28,11 +28,6 @@ namespace ScriptCanvas void OnInit() override; void CustomizeReplacementNode(Node* replacementNode, AZStd::unordered_map>& outSlotIdMap) const override; - - protected: - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.cpp index ad36615e26..959b8ef3c8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.cpp @@ -31,108 +31,15 @@ namespace ScriptCanvas } } - void StartsWith::OnInputSignal(const SlotId&) - { - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::StartsWith::OnInputSignal"); - - AZStd::string sourceString = StartsWithProperty::GetSource(this); - AZStd::string patternString = StartsWithProperty::GetPattern(this); - - bool caseSensitive = StartsWithProperty::GetCaseSensitive(this); - - if (AzFramework::StringFunc::StartsWith(sourceString.c_str(), patternString.c_str(), caseSensitive)) - { - SignalOutput(GetSlotId("True")); - } - else - { - SignalOutput(GetSlotId("False")); - } - } - - void EndsWith::OnInputSignal(const SlotId&) - { - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::EndssWith::OnInputSignal"); - - AZStd::string sourceString = EndsWithProperty::GetSource(this); - AZStd::string patternString = EndsWithProperty::GetPattern(this); - - bool caseSensitive = EndsWithProperty::GetCaseSensitive(this); - - if (AzFramework::StringFunc::EndsWith(sourceString.c_str(), patternString.c_str(), caseSensitive)) - { - SignalOutput(GetSlotId("True")); - } - else - { - SignalOutput(GetSlotId("False")); - } - } - void Split::CustomizeReplacementNode(Node* replacementNode, AZStd::unordered_map>& outSlotIdMap) const { ReplaceStringUtilityNodeOutputSlot(this, replacementNode, outSlotIdMap); } - void Split::OnInputSignal(const SlotId&) - { - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Split::OnInputSignal"); - - AZStd::string sourceString = SplitProperty::GetSource(this); - AZStd::string delimiterString = SplitProperty::GetDelimiters(this); - - AZStd::vector stringArray; - - AzFramework::StringFunc::Tokenize(sourceString.c_str(), stringArray, delimiterString.c_str(), false, false); - - const SlotId outputResultSlotId = SplitProperty::GetStringArraySlotId(this); - if (auto* outputSlot = GetSlot(outputResultSlotId)) - { - ScriptCanvas::Datum output(ScriptCanvas::Data::FromAZType(azrtti_typeid>()), ScriptCanvas::Datum::eOriginality::Original, &stringArray, azrtti_typeid>()); - PushOutput(output, *outputSlot); - } - - SignalOutput(GetSlotId("Out")); - } - void Join::CustomizeReplacementNode(Node* replacementNode, AZStd::unordered_map>& outSlotIdMap) const { ReplaceStringUtilityNodeOutputSlot(this, replacementNode, outSlotIdMap); } - - void Join::OnInputSignal(const SlotId&) - { - AZ_PROFILE_SCOPE(AZ::Debug::ProfileCategory::ScriptCanvas, "ScriptCanvas::Join::OnInputSignal"); - - AZStd::vector sourceArray = JoinProperty::GetStringArray(this); - AZStd::string separatorString = JoinProperty::GetSeparator(this); - - AZStd::string result; - size_t index = 0; - const size_t length = sourceArray.size(); - for (auto string : sourceArray) - { - if (index < length - 1) - { - result.append(AZStd::string::format("%s%s", string.c_str(), separatorString.c_str())); - } - else - { - result.append(string); - } - ++index; - } - - const SlotId outputResultSlotId = JoinProperty::GetStringSlotId(this); - if (auto* outputSlot = GetSlot(outputResultSlotId)) - { - ScriptCanvas::Datum output(result); - PushOutput(output, *outputSlot); - } - - SignalOutput(GetSlotId("Out")); - } - } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.h index c1dad1f0e5..c325414ca3 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/Utilities.h @@ -24,11 +24,7 @@ namespace ScriptCanvas { public: SCRIPTCANVAS_NODE(StartsWith); - protected: - - void OnInputSignal(const SlotId& slotId) override; - - }; + }; //! Deprecated: see class String's reflection of method "Ends With" class EndsWith @@ -36,10 +32,6 @@ namespace ScriptCanvas { public: SCRIPTCANVAS_NODE(EndsWith); - protected: - - void OnInputSignal(const SlotId& slotId) override; - }; //! Deprecated: see class String's reflection of method "Ends With" @@ -55,9 +47,6 @@ namespace ScriptCanvas protected: static const char* k_defaultDelimiter; - - void OnInputSignal(const SlotId& slotId) override; - }; //! Deprecated: see class String's reflection of method "Join" @@ -73,9 +62,6 @@ namespace ScriptCanvas protected: static const char* k_defaultSeparator; - - void OnInputSignal(const SlotId& slotId) override; - }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.cpp index ee06418e68..f9afd2b80c 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.cpp @@ -38,28 +38,11 @@ namespace ScriptCanvas } } - void TimeDelay::OnInputSignal(const SlotId& slotId) - { - if (slotId == TimeDelayProperty::GetInSlotId(this)) - { - if (!IsActive()) - { - StartTimer(); - } - } - } - bool TimeDelay::AllowInstantResponse() const { return true; } - void TimeDelay::OnTimeElapsed() - { - StopTimer(); - SignalOutput(TimeDelayProperty::GetOutSlotId(this)); - } - ////////////// // TickDelay ////////////// @@ -85,56 +68,6 @@ namespace ScriptCanvas { } - void TickDelay::OnDeactivate() - { - AZ::TickBus::Handler::BusDisconnect(); - AZ::SystemTickBus::Handler::BusDisconnect(); - } - - void TickDelay::OnInputSignal(const SlotId&) - { - m_tickCounter = TickDelayProperty::GetTicks(this); - - if (m_tickCounter >= 0) - { - if (!AZ::SystemTickBus::Handler::BusIsConnected()) - { - AZ::SystemTickBus::Handler::BusConnect(); - } - } - } - - void TickDelay::OnSystemTick() - { - AZ::SystemTickBus::Handler::BusDisconnect(); - - if (!AZ::TickBus::Handler::BusIsConnected()) - { - AZ::TickBus::Handler::BusDisconnect(); - } - - m_tickOrder = TickDelayProperty::GetTickOrder(this); - AZ::TickBus::Handler::BusConnect(); - } - - void TickDelay::OnTick(float, AZ::ScriptTimePoint) - { - --m_tickCounter; - - if (m_tickCounter <= 0) - { - const SlotId outSlot = TickDelayProperty::GetOutSlotId(this); - - SignalOutput(outSlot); - AZ::TickBus::Handler::BusDisconnect(); - } - } - - int TickDelay::GetTickOrder() - { - return m_tickOrder; - } - ////////////// // CountDown ////////////// @@ -148,86 +81,12 @@ namespace ScriptCanvas , m_currentTime(0.) {} - void Countdown::OnInputSignal(const SlotId& slot) - { - SlotId inSlotId = CountdownProperty::GetInSlotId(this); - SlotId resetSlotId = CountdownProperty::GetResetSlotId(this); - SlotId cancelSlotId = CountdownProperty::GetCancelSlotId(this); - - if (slot == resetSlotId || (slot == inSlotId && !AZ::TickBus::Handler::BusIsConnected())) - { - // If we're resetting, we need to disconnect. - AZ::TickBus::Handler::BusDisconnect(); - - m_countdownSeconds = CountdownProperty::GetTime(this); - m_looping = CountdownProperty::GetLoop(this); - m_holdTime = CountdownProperty::GetHold(this); - - m_currentTime = m_countdownSeconds; - - AZ::TickBus::Handler::BusConnect(); - } - else if (slot == cancelSlotId) - { - m_holding = false; - m_currentTime = 0.f; - - AZ::TickBus::Handler::BusDisconnect(); - } - } - bool Countdown::IsOutOfDate(const VersionData& graphVersion) const { AZ_UNUSED(graphVersion); return !CountdownProperty::GetCancelSlotId(this).IsValid(); } - void Countdown::OnTick(float deltaTime, AZ::ScriptTimePoint) - { - m_currentTime -= static_cast(deltaTime); - - if (m_currentTime <= 0.f) - { - if (m_holding) - { - m_holding = false; - m_currentTime = m_countdownSeconds; - return; - } - else - { - const SlotId outSlot = CountdownProperty::GetOutSlotId(this); - - if (Slot* elapsedSlot = CountdownProperty::GetElapsedSlot(this)) - { - float elapsedTime = m_countdownSeconds - m_currentTime; - - Datum o(Data::Type::Number(), Datum::eOriginality::Copy); - o.Set(elapsedTime); - - PushOutput(o, *elapsedSlot); - } - - SignalOutput(outSlot); - } - - if (!m_looping) - { - AZ::TickBus::Handler::BusDisconnect(); - } - else - { - m_holding = m_holdTime > 0.f; - m_currentTime = m_holding ? m_holdTime : m_countdownSeconds; - } - } - } - - void Countdown::OnDeactivate() - { - AZ::TickBus::Handler::BusDisconnect(); - } - UpdateResult Countdown::OnUpdateNode() { // Add in the missing cancel slot diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.h index 1809bece64..f859c9900c 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Countdown.h @@ -36,10 +36,8 @@ namespace ScriptCanvas TimeDelay() = default; - void OnInputSignal(const SlotId&) override; bool AllowInstantResponse() const override; - void OnTimeElapsed() override; const char* GetBaseTimeSlotToolTip() const override { return "The amount of time to delay before the Out is signalled."; } @@ -48,8 +46,6 @@ namespace ScriptCanvas // Deprecated: see TimeDelayNodeableNode class TickDelay : public Node - , AZ::TickBus::Handler - , AZ::SystemTickBus::Handler { public: @@ -59,18 +55,6 @@ namespace ScriptCanvas void CustomizeReplacementNode(Node* replacementNode, AZStd::unordered_map>& outSlotIdMap) const override; - void OnDeactivate() override; - void OnInputSignal(const SlotId&) override; - - // SystemTickBus... - void OnSystemTick() override; - //// - - // TickBus... - void OnTick(float deltaTime, AZ::ScriptTimePoint timePoint) override; - int GetTickOrder() override; - //// - protected: int m_tickCounter; @@ -80,7 +64,6 @@ namespace ScriptCanvas //! Deprecated: see DelayNodeableNode class Countdown : public Node - , AZ::TickBus::Handler { public: @@ -101,8 +84,6 @@ namespace ScriptCanvas //! Internal counter to track time elapsed float m_currentTime; - void OnInputSignal(const SlotId&) override; - bool ShowHoldTime() const { // TODO: This only works on the property grid. If a true value is connected to the "SetLoop" slot, @@ -114,12 +95,6 @@ namespace ScriptCanvas protected: - void OnDeactivate() override; - - // AZ::TickBus - void OnTick(float deltaTime, AZ::ScriptTimePoint time) override; - //// - UpdateResult OnUpdateNode() override; }; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.cpp index c1e47e21b9..e7f9413166 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.cpp @@ -21,48 +21,6 @@ namespace ScriptCanvas , m_elapsedTime(0.f) , m_currentTime(0.) {} - - void Duration::OnInputSignal(const SlotId&) - { - m_durationSeconds = DurationProperty::GetDuration(this); - m_elapsedTime = 0.f; - - m_currentTime = m_durationSeconds; - - AZ::TickBus::Handler::BusConnect(); - } - - void Duration::OnTick(float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time) - { - const SlotId outSlot = DurationProperty::GetOutSlotId(this); - const SlotId doneSlot = DurationProperty::GetDoneSlotId(this); - const SlotId elapsedSlot = DurationProperty::GetElapsedSlotId(this); - - if (m_currentTime > 0.f) - { - Datum o(Data::Type::Number(), Datum::eOriginality::Copy); - o.Set(m_elapsedTime); - if (auto* slot = GetSlot(elapsedSlot)) - { - PushOutput(o, *slot); - } - - SignalOutput(outSlot); - - m_currentTime -= static_cast(deltaTime); - m_elapsedTime += static_cast(deltaTime); - } - else - { - SignalOutput(doneSlot); - AZ::TickBus::Handler::BusDisconnect(); - } - } - - void Duration::OnDeactivate() - { - AZ::TickBus::Handler::BusDisconnect(); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.h index dd6c7868cf..481f0c97be 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Duration.h @@ -25,7 +25,6 @@ namespace ScriptCanvas //! Deprecated: see DurationNodeableNode class Duration : public Node - , AZ::TickBus::Handler { public: @@ -41,14 +40,6 @@ namespace ScriptCanvas //! Internal counter to track time elapsed float m_currentTime; - - void OnInputSignal(const SlotId&) override; - - protected: - - void OnDeactivate() override; - void OnTick(float deltaTime, AZ::ScriptTimePoint time) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.cpp index 62ed77ab2f..350a64923e 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.cpp @@ -38,22 +38,6 @@ namespace ScriptCanvas } } - void HeartBeat::OnInputSignal(const SlotId& slotId) - { - if (slotId == HeartBeatProperty::GetStartSlotId(this)) - { - StartTimer(); - } - else if (slotId == HeartBeatProperty::GetStopSlotId(this)) - { - StopTimer(); - } - } - - void HeartBeat::OnTimeElapsed() - { - SignalOutput(HeartBeatProperty::GetPulseSlotId(this)); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.h index 967376e932..680e974429 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/HeartBeat.h @@ -27,14 +27,11 @@ namespace ScriptCanvas void CustomizeReplacementNode(Node* replacementNode, AZStd::unordered_map>& outSlotIdMap) const override; - void OnInputSignal(const SlotId&) override; - const char* GetBaseTimeSlotName() const override { return "Interval"; } const char* GetBaseTimeSlotToolTip() const override { return "The amount of time between pulses."; } protected: - void OnTimeElapsed() override; }; } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.cpp index 0465c49b43..b2cffe79af 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.cpp @@ -21,49 +21,6 @@ namespace ScriptCanvas , m_milliseconds(0.f) {} - void Timer::OnTick([[maybe_unused]] float deltaTime, AZ::ScriptTimePoint time) - { - const SlotId millisecondsSlot = TimerProperty::GetMillisecondsSlotId(this); - - double milliseconds = time.GetMilliseconds() - m_start.GetMilliseconds(); - Datum objms(Data::Type::Number(), Datum::eOriginality::Copy); - objms.Set(milliseconds); - if (auto* slot = GetSlot(millisecondsSlot)) - { - PushOutput(objms, *slot); - } - - const SlotId secondsSlot = TimerProperty::GetSecondsSlotId(this); - - double seconds = time.GetSeconds() - m_start.GetSeconds(); - Datum objs(Data::Type::Number(), Datum::eOriginality::Copy); - objs.Set(seconds); - if (auto* slot = GetSlot(secondsSlot)) - { - PushOutput(objs, *slot); - } - - const SlotId outSlot = TimerProperty::GetOutSlotId(this); - SignalOutput(outSlot); - - } - - void Timer::OnInputSignal(const SlotId& slotId) - { - const SlotId startSlot = TimerProperty::GetStartSlotId(this); - const SlotId stopSlot = TimerProperty::GetStopSlotId(this); - - if (slotId == startSlot) - { - AZ::TickBus::Handler::BusConnect(); - m_start = AZ::ScriptTimePoint(); - } - else if (slotId == stopSlot) - { - AZ::TickBus::Handler::BusDisconnect(); - } - } - void Timer::OnDeactivate() { AZ::TickBus::Handler::BusDisconnect(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.h index 58ba646891..fa5f4309ed 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Time/Timer.h @@ -25,7 +25,6 @@ namespace ScriptCanvas //! Deprecated: See TimerNodeableNode class Timer : public Node - , AZ::TickBus::Handler { public: @@ -39,12 +38,7 @@ namespace ScriptCanvas protected: AZ::ScriptTimePoint m_start; - - void OnInputSignal(const SlotId& slotId) override; - void OnDeactivate() override; - void OnTick(float deltaTime, AZ::ScriptTimePoint time) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.cpp index 301db76008..55eded5b2f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.cpp @@ -15,13 +15,7 @@ namespace ScriptCanvas { namespace UnitTesting { - void AddFailure::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - const auto report = FindDatum(GetSlotId("Report"))->GetAs(); - ScriptCanvas::UnitTesting::Bus::Event(GetOwningScriptCanvasId(), &ScriptCanvas::UnitTesting::BusTraits::AddFailure, *report); - - SignalOutput(GetSlotId("Out")); - } + } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.h index 1c0e5a6fd4..88d7ab5e24 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.h @@ -23,9 +23,6 @@ namespace ScriptCanvas public: SCRIPTCANVAS_NODE(AddFailure); - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.cpp deleted file mode 100644 index ee9b8975b0..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "AddSuccess.h" - -#include "UnitTestBus.h" - -namespace ScriptCanvas -{ - namespace Nodes - { - namespace UnitTesting - { - void AddSuccess::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - const auto report = FindDatum(GetSlotId("Report"))->GetAs(); - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::AddSuccess - , *report); - - SignalOutput(GetSlotId("Out")); - } - } - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.h index c6793ad432..68f494bb72 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.h @@ -23,9 +23,6 @@ namespace ScriptCanvas public: SCRIPTCANVAS_NODE(AddSuccess); - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.cpp deleted file mode 100644 index 5b77bea492..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "Checkpoint.h" - -#include "UnitTestBus.h" - -namespace ScriptCanvas -{ - namespace Nodes - { - namespace UnitTesting - { - void Checkpoint::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - const auto report = FindDatum(GetSlotId("Report"))->GetAs(); - - ScriptCanvas::UnitTesting::Bus::Event(GetOwningScriptCanvasId(), &ScriptCanvas::UnitTesting::BusTraits::Checkpoint, *report); - - SignalOutput(GetSlotId("Out")); - } - } - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.h index 551d250b6b..db7c666a78 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.h @@ -22,9 +22,6 @@ namespace ScriptCanvas public: SCRIPTCANVAS_NODE(Checkpoint); - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.cpp index 019286355b..142ef9932a 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.cpp @@ -50,40 +50,6 @@ namespace ScriptCanvas } //// } - - void ExpectEqual::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - auto lhs = FindDatum(GetSlotId("Candidate")); - if (!lhs) - { - return; - } - - auto rhs = FindDatum(GetSlotId("Reference")); - if (!rhs) - { - return; - } - - if (lhs->GetType() != rhs->GetType()) - { - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::AddFailure - , "Type mismatch in comparison operator"); - - SignalOutput(GetSlotId("Out")); - return; - } - - - switch (lhs->GetType().GetType()) - { - SCRIPT_CANVAS_UNIT_TEST_LEGACY_NODE_EQUALITY_IMPLEMENTATIONS(ExpectEqual); - } - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.h index bfb5b4ffb2..623a928aa2 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.h @@ -25,8 +25,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectEqual); void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.cpp index 77bf80fd73..c128f4c30f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.cpp @@ -33,20 +33,6 @@ namespace ScriptCanvas } //// } - - void ExpectFalse::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - const auto value = FindDatum(GetSlotId("Candidate"))->GetAs(); - const auto report = FindDatum(GetSlotId("Report"))->GetAs(); - - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::ExpectFalse - , *value - , *report); - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.h index ca18f6f2d5..a50cba74d0 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.h @@ -25,8 +25,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectFalse); void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.cpp index 28e2f7a8bd..ded5ae7050 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.cpp @@ -50,40 +50,6 @@ namespace ScriptCanvas } //// } - - void ExpectGreaterThan::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - auto lhs = FindDatum(GetSlotId("Candidate")); - if (!lhs) - { - return; - } - - auto rhs = FindDatum(GetSlotId("Reference")); - if (!rhs) - { - return; - } - - if (lhs->GetType() != rhs->GetType()) - { - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::AddFailure - , "Type mismatch in comparison operator"); - - SignalOutput(GetSlotId("Out")); - return; - } - - - switch (lhs->GetType().GetType()) - { - SCRIPT_CANVAS_UNIT_TEST_LEGACY_NODE_COMPARE_IMPLEMENTATIONS(ExpectGreaterThan); - } - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.h index d9d7f8630d..94219fab60 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.h @@ -25,8 +25,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectGreaterThan); void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.cpp index 7b782094de..6e2931112d 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.cpp @@ -50,40 +50,6 @@ namespace ScriptCanvas } //// } - - void ExpectGreaterThanEqual::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - auto lhs = FindDatum(GetSlotId("Candidate")); - if (!lhs) - { - return; - } - - auto rhs = FindDatum(GetSlotId("Reference")); - if (!rhs) - { - return; - } - - if (lhs->GetType() != rhs->GetType()) - { - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::AddFailure - , "Type mismatch in comparison operator"); - - SignalOutput(GetSlotId("Out")); - return; - } - - - switch (lhs->GetType().GetType()) - { - SCRIPT_CANVAS_UNIT_TEST_LEGACY_NODE_COMPARE_IMPLEMENTATIONS(ExpectGreaterThanEqual); - } - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.h index 7ef46a9dc9..2607e2569f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.h @@ -25,8 +25,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectGreaterThanEqual); void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.cpp index 327cfb49b3..1ea4afcf5a 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.cpp @@ -48,41 +48,6 @@ namespace ScriptCanvas SetDynamicGroup(referenceSlot->GetId(), AZ_CRC("DynamicGroup", 0x219a2e3a)); } } - //// - } - - void ExpectLessThan::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - auto lhs = FindDatum(GetSlotId("Candidate")); - if (!lhs) - { - return; - } - - auto rhs = FindDatum(GetSlotId("Reference")); - if (!rhs) - { - return; - } - - if (lhs->GetType() != rhs->GetType()) - { - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::AddFailure - , "Type mismatch in comparison operator"); - - SignalOutput(GetSlotId("Out")); - return; - } - - - switch (lhs->GetType().GetType()) - { - SCRIPT_CANVAS_UNIT_TEST_LEGACY_NODE_COMPARE_IMPLEMENTATIONS(ExpectLessThan); - } - - SignalOutput(GetSlotId("Out")); } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.h index fb9ca5737c..bc8e70a3be 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.h @@ -25,8 +25,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectLessThan); void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.cpp index 3649816abc..2357ab5068 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.cpp @@ -50,40 +50,6 @@ namespace ScriptCanvas } //// } - - void ExpectLessThanEqual::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - auto lhs = FindDatum(GetSlotId("Candidate")); - if (!lhs) - { - return; - } - - auto rhs = FindDatum(GetSlotId("Reference")); - if (!rhs) - { - return; - } - - if (lhs->GetType() != rhs->GetType()) - { - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::AddFailure - , "Type mismatch in comparison operator"); - - SignalOutput(GetSlotId("Out")); - return; - } - - - switch (lhs->GetType().GetType()) - { - SCRIPT_CANVAS_UNIT_TEST_LEGACY_NODE_COMPARE_IMPLEMENTATIONS(ExpectLessThanEqual); - } - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.h index 577aa4f8ff..0408a58a35 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.h @@ -25,8 +25,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectLessThanEqual); void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.cpp index 6b5d3fa98c..1182d7db4f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.cpp @@ -50,40 +50,6 @@ namespace ScriptCanvas } //// } - - void ExpectNotEqual::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - auto lhs = FindDatum(GetSlotId("Candidate")); - if (!lhs) - { - return; - } - - auto rhs = FindDatum(GetSlotId("Reference")); - if (!rhs) - { - return; - } - - if (lhs->GetType() != rhs->GetType()) - { - ScriptCanvas::UnitTesting::Bus::Event - ( GetOwningScriptCanvasId() - , &ScriptCanvas::UnitTesting::BusTraits::AddFailure - , "Type mismatch in comparison operator"); - - SignalOutput(GetSlotId("Out")); - return; - } - - - switch (lhs->GetType().GetType()) - { - SCRIPT_CANVAS_UNIT_TEST_LEGACY_NODE_EQUALITY_IMPLEMENTATIONS(ExpectNotEqual); - } - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.h index effc011b5a..57b7d09a80 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.h @@ -25,8 +25,6 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectNotEqual); void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.cpp index ae0ec8a168..d7b2ca8cf0 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.cpp @@ -33,16 +33,6 @@ namespace ScriptCanvas } //// } - - void ExpectTrue::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - const auto value = FindDatum(GetSlotId("Candidate"))->GetAs(); - const auto report = FindDatum(GetSlotId("Report"))->GetAs(); - - ScriptCanvas::UnitTesting::Bus::Event(GetOwningScriptCanvasId(), &ScriptCanvas::UnitTesting::BusTraits::ExpectTrue, *value, *report); - - SignalOutput(GetSlotId("Out")); - } } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.h index 6d94dc7403..12d28af093 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.h @@ -24,9 +24,7 @@ namespace ScriptCanvas SCRIPTCANVAS_NODE(ExpectTrue); - void OnInit() override; - void OnInputSignal(const SlotId& slotId) override; - + void OnInit() override; }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.cpp deleted file mode 100644 index e7613695e8..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "MarkComplete.h" - -#include "UnitTestBus.h" - -namespace ScriptCanvas -{ - namespace Nodes - { - namespace UnitTesting - { - void MarkComplete::OnInputSignal([[maybe_unused]] const SlotId& slotId) - { - const auto report = FindDatum(GetSlotId("Report"))->GetAs(); - ScriptCanvas::UnitTesting::Bus::Event(GetOwningScriptCanvasId(), &ScriptCanvas::UnitTesting::BusTraits::MarkComplete, *report); - SignalOutput(GetSlotId("Out")); - } - } - } -} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.h index 9f86fe5b28..126746019f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.h @@ -23,9 +23,6 @@ namespace ScriptCanvas public: SCRIPTCANVAS_NODE(MarkComplete); - - void OnInputSignal(const SlotId& slotId) override; - }; } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.cpp index ece0357626..058489374f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.cpp @@ -10,7 +10,6 @@ #include #include #include -#include #include namespace ScriptCanvas @@ -412,37 +411,6 @@ namespace ScriptCanvas return AZ::Edit::PropertyVisibility::Show; } - AZ::Crc32 GraphVariable::GetScriptInputControlVisibility() const - { - AZ::Data::AssetType assetType = AZ::Data::AssetType::CreateNull(); - - ScriptCanvas::RuntimeRequestBus::EventResult(assetType, m_scriptCanvasId, &ScriptCanvas::RuntimeRequests::GetAssetType); - - if (assetType == azrtti_typeid()) - { - return m_inputControlVisibility; - } - else - { - return AZ::Edit::PropertyVisibility::Hide; - } - } - - AZ::Crc32 GraphVariable::GetFunctionInputControlVisibility() const - { - AZ::Data::AssetType assetType = AZ::Data::AssetType::CreateNull(); - ScriptCanvas::RuntimeRequestBus::EventResult(assetType, m_scriptCanvasId, &ScriptCanvas::RuntimeRequests::GetAssetType); - - if (assetType == azrtti_typeid()) - { - return AZ::Edit::PropertyVisibility::Show; - } - else - { - return AZ::Edit::PropertyVisibility::Hide; - } - } - AZ::Crc32 GraphVariable::GetVisibility() const { return m_visibility; @@ -552,7 +520,7 @@ namespace ScriptCanvas bool GraphVariable::IsInFunction() const { AZ::Data::AssetType assetType = AZ::Data::AssetType::CreateNull(); - ScriptCanvas::RuntimeRequestBus::EventResult(assetType, m_scriptCanvasId, &ScriptCanvas::RuntimeRequests::GetAssetType); + ScriptCanvas::GraphRequestBus::EventResult(assetType, m_scriptCanvasId, &ScriptCanvas::GraphRequests::GetAssetType); return assetType == azrtti_typeid(); } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.h index b6ad7fcf30..90086ac7f7 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Variable/GraphVariable.h @@ -140,10 +140,8 @@ namespace ScriptCanvas AZ::Crc32 GetInputControlVisibility() const; AZ::Crc32 GetScopeControlVisibility() const; - AZ::Crc32 GetScriptInputControlVisibility() const; AZ::Crc32 GetNetworkSettingsVisibility() const; - AZ::Crc32 GetFunctionInputControlVisibility() const; - + AZ::Crc32 GetVisibility() const; void SetVisibility(AZ::Crc32 visibility); diff --git a/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake b/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake index 312bd2679a..74e0e2e70c 100644 --- a/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake +++ b/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake @@ -35,7 +35,6 @@ set(FILES Include/ScriptCanvas/Core/NodeBus.h Include/ScriptCanvas/Core/EBusNodeBus.h Include/ScriptCanvas/Core/NodelingBus.h - Include/ScriptCanvas/Core/SignalBus.h Include/ScriptCanvas/Core/ContractBus.h Include/ScriptCanvas/Core/Attributes.h Include/ScriptCanvas/Core/Connection.cpp @@ -169,7 +168,6 @@ set(FILES Include/ScriptCanvas/Execution/NativeHostDeclarations.cpp Include/ScriptCanvas/Execution/NativeHostDefinitions.h Include/ScriptCanvas/Execution/NativeHostDefinitions.cpp - Include/ScriptCanvas/Execution/RuntimeBus.h Include/ScriptCanvas/Execution/RuntimeComponent.h Include/ScriptCanvas/Execution/RuntimeComponent.cpp Include/ScriptCanvas/Execution/Interpreted/ExecutionInterpretedAPI.h @@ -199,8 +197,6 @@ set(FILES Include/ScriptCanvas/Grammar/DebugMap.cpp Include/ScriptCanvas/Grammar/ExecutionTraversalListeners.h Include/ScriptCanvas/Grammar/ExecutionTraversalListeners.cpp - Include/ScriptCanvas/Grammar/FunctionsLegacySupport.h - Include/ScriptCanvas/Grammar/FunctionsLegacySupport.cpp Include/ScriptCanvas/Grammar/GrammarContext.h Include/ScriptCanvas/Grammar/GrammarContext.cpp Include/ScriptCanvas/Grammar/GrammarContextBus.h @@ -223,7 +219,6 @@ set(FILES Include/ScriptCanvas/Execution/NativeHostDeclarations.h Include/ScriptCanvas/Execution/NativeHostDefinitions.cpp Include/ScriptCanvas/Execution/NativeHostDefinitions.h - Include/ScriptCanvas/Execution/RuntimeBus.h Include/ScriptCanvas/Execution/RuntimeComponent.cpp Include/ScriptCanvas/Execution/RuntimeComponent.h Include/ScriptCanvas/Internal/Nodeables/BaseTimer.cpp @@ -300,7 +295,6 @@ set(FILES Include/ScriptCanvas/Libraries/Core/SetVariable.cpp Include/ScriptCanvas/Libraries/Core/SetVariable.h Include/ScriptCanvas/Libraries/Core/SetVariable.ScriptCanvasGrammar.xml - Include/ScriptCanvas/Libraries/Core/Start.cpp Include/ScriptCanvas/Libraries/Core/Start.h Include/ScriptCanvas/Libraries/Core/Start.ScriptCanvasGrammar.xml Include/ScriptCanvas/Libraries/Core/UnaryOperator.cpp @@ -324,7 +318,6 @@ set(FILES Include/ScriptCanvas/Libraries/Logic/Gate.cpp Include/ScriptCanvas/Libraries/Logic/Gate.h Include/ScriptCanvas/Libraries/Logic/Gate.ScriptCanvasGrammar.xml - Include/ScriptCanvas/Libraries/Logic/Indexer.cpp Include/ScriptCanvas/Libraries/Logic/Indexer.h Include/ScriptCanvas/Libraries/Logic/Indexer.ScriptCanvasGrammar.xml Include/ScriptCanvas/Libraries/Logic/IsNull.cpp @@ -332,7 +325,6 @@ set(FILES Include/ScriptCanvas/Libraries/Logic/IsNull.ScriptCanvasGrammar.xml Include/ScriptCanvas/Libraries/Logic/Logic.cpp Include/ScriptCanvas/Libraries/Logic/Logic.h - Include/ScriptCanvas/Libraries/Logic/Multiplexer.cpp Include/ScriptCanvas/Libraries/Logic/Multiplexer.h Include/ScriptCanvas/Libraries/Logic/Multiplexer.ScriptCanvasGrammar.xml Include/ScriptCanvas/Libraries/Logic/Not.h @@ -429,7 +421,6 @@ set(FILES Include/ScriptCanvas/Libraries/String/Format.cpp Include/ScriptCanvas/Libraries/String/Format.h Include/ScriptCanvas/Libraries/String/Format.ScriptCanvasGrammar.xml - Include/ScriptCanvas/Libraries/String/Print.cpp Include/ScriptCanvas/Libraries/String/Print.h Include/ScriptCanvas/Libraries/String/Print.ScriptCanvasGrammar.xml Include/ScriptCanvas/Libraries/String/Replace.cpp @@ -446,10 +437,8 @@ set(FILES Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.cpp Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.h Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.ScriptCanvasGrammar.xml - Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.cpp Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.h Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.ScriptCanvasGrammar.xml - Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.cpp Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.h Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.ScriptCanvasGrammar.xml Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.cpp @@ -476,7 +465,6 @@ set(FILES Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.cpp Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.h Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.ScriptCanvasGrammar.xml - Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.cpp Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.h Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.ScriptCanvasGrammar.xml Include/ScriptCanvas/Libraries/UnitTesting/UnitTestBus.h diff --git a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.cpp b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.cpp index cf866d9f83..727f73be39 100644 --- a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.cpp +++ b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.cpp @@ -33,25 +33,6 @@ namespace TestNodes AddSlot(slotConfiguration); } - void TestResult::OnInputSignal(const ScriptCanvas::SlotId&) - { - auto valueDatum = FindDatum(GetSlotId("Value")); - if (!valueDatum) - { - return; - } - - valueDatum->ToString(m_string); - - // technically, I should remove this, make it an object that holds a string, with an untyped slot, and this could be a local value - if (!m_string.empty()) - { - AZ_TracePrintf("Script Canvas", "%s\n", m_string.c_str()); - } - - SignalOutput(GetSlotId(ScriptCanvas::CommonSlots::GeneralOutSlot::GetName())); - } - void TestResult::Reflect(AZ::ReflectContext* context) { AZ::SerializeContext* serializeContext = azrtti_cast(context); @@ -105,11 +86,6 @@ namespace TestNodes AddSlot(ScriptCanvas::DataSlotConfiguration(Data::Type::Number(), "Get Number", ScriptCanvas::ConnectionType::Output)); } - void ContractNode::OnInputSignal(const ScriptCanvas::SlotId&) - { - SignalOutput(GetSlotId(ScriptCanvas::CommonSlots::GeneralOutSlot::GetName())); - } - ////////////////////////////////////////////////////////////////////////////// void InfiniteLoopNode::Reflect(AZ::ReflectContext* reflection) { @@ -121,11 +97,6 @@ namespace TestNodes } } - void InfiniteLoopNode::OnInputSignal(const ScriptCanvas::SlotId&) - { - SignalOutput(GetSlotId("Before Infinity")); - } - void InfiniteLoopNode::OnInit() { AddSlot(ScriptCanvas::CommonSlots::GeneralInSlot()); @@ -159,13 +130,6 @@ namespace TestNodes AddSlot(slotConfiguration); } - void UnitTestErrorNode::OnInputSignal(const ScriptCanvas::SlotId&) - { - SCRIPTCANVAS_REPORT_ERROR((*this), "Unit test error!"); - - SignalOutput(GetSlotId("Out")); - } - ////////////////////////////////////////////////////////////////////////////// void AddNodeWithRemoveSlot::Reflect(AZ::ReflectContext* reflection) @@ -205,30 +169,6 @@ namespace TestNodes return Node::RemoveSlot(slotId, true, emitWarning); } - void AddNodeWithRemoveSlot::OnInputSignal(const ScriptCanvas::SlotId& slotId) - { - if (slotId == GetSlotId("In")) - { - ScriptCanvas::Data::NumberType result{}; - for (const ScriptCanvas::SlotId& dynamicSlotId : m_dynamicSlotIds) - { - if (auto numberInput = FindDatum(dynamicSlotId)) - { - if (auto argValue = numberInput->GetAs()) - { - result += *argValue; - } - } - } - - auto resultType = GetSlotDataType(m_resultSlotId); - EXPECT_TRUE(resultType.IsValid()); - ScriptCanvas::Datum output(result);; - PushOutput(output, *GetSlot(m_resultSlotId)); - SignalOutput(GetSlotId("Out")); - } - } - void AddNodeWithRemoveSlot::OnInit() { Node::AddSlot(ScriptCanvas::CommonSlots::GeneralInSlot()); @@ -290,28 +230,6 @@ namespace TestNodes } ////////////////////////////////////////////////////////////////////////////// - - void StringView::OnInputSignal(const ScriptCanvas::SlotId&) - { - auto viewDatum = FindDatum(GetSlotId("View")); - - if (!viewDatum) - { - return; - } - - ScriptCanvas::Data::StringType result; - viewDatum->ToString(result); - - ScriptCanvas::Datum output(result); - auto resultSlot = GetSlot(m_resultSlotId); - if (resultSlot) - { - PushOutput(output, *resultSlot); - } - SignalOutput(GetSlotId("Out")); - } - void StringView::Reflect(AZ::ReflectContext* context) { AZ::SerializeContext* serializeContext = azrtti_cast(context); @@ -354,36 +272,6 @@ namespace TestNodes return addedSlotId; } - - void InsertSlotConcatNode::OnInputSignal(const ScriptCanvas::SlotId& slotId) - { - if (slotId == GetSlotId(ScriptCanvas::CommonSlots::GeneralInSlot::GetName())) - { - ScriptCanvas::Data::StringType result{}; - - for (const ScriptCanvas::Slot* concatSlot : GetAllSlotsByDescriptor(ScriptCanvas::SlotDescriptors::DataIn())) - { - if (auto inputDatum = FindDatum(concatSlot->GetId())) - { - ScriptCanvas::Data::StringType stringArg; - if (inputDatum->ToString(stringArg)) - { - result += stringArg; - } - } - } - - auto resultSlotId = GetSlotId("Result"); - auto resultType = GetSlotDataType(resultSlotId); - EXPECT_TRUE(resultType.IsValid()); - if (auto resultSlot = GetSlot(resultSlotId)) - { - PushOutput(ScriptCanvas::Datum(result), *resultSlot); - } - SignalOutput(GetSlotId("Out")); - } - } - void InsertSlotConcatNode::OnInit() { Node::AddSlot(ScriptCanvas::CommonSlots::GeneralInSlot()); diff --git a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.h b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.h index 8963cb4708..3790ab735f 100644 --- a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.h +++ b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestNodes.h @@ -32,7 +32,6 @@ namespace TestNodes protected: void OnInit() override; - void OnInputSignal(const ScriptCanvas::SlotId&) override; private: @@ -49,9 +48,6 @@ namespace TestNodes void OnInit() override; - protected: - - void OnInputSignal(const ScriptCanvas::SlotId&) override; }; ////////////////////////////////////////////////////////////////////////////// @@ -64,9 +60,6 @@ namespace TestNodes static void Reflect(AZ::ReflectContext* reflection); protected: - - void OnInputSignal(const ScriptCanvas::SlotId&) override; - void OnInit() override; }; @@ -84,8 +77,6 @@ namespace TestNodes void OnInit() override; - void OnInputSignal(const ScriptCanvas::SlotId&) override; - }; ////////////////////////////////////////////////////////////////////////////// @@ -101,8 +92,6 @@ namespace TestNodes bool RemoveSlot(const ScriptCanvas::SlotId& slotId, bool emitWarning = true); protected: - void OnInputSignal(const ScriptCanvas::SlotId& slotId) override; - void OnInit() override; AZStd::vector m_dynamicSlotIds; @@ -120,8 +109,6 @@ namespace TestNodes void OnInit() override; - void OnInputSignal(const ScriptCanvas::SlotId&) override; - public: static void Reflect(AZ::ReflectContext* context); @@ -141,9 +128,7 @@ namespace TestNodes ScriptCanvas::SlotId InsertSlot(AZ::s64 index, AZStd::string_view slotName); protected: - void OnInputSignal(const ScriptCanvas::SlotId& slotId) override; - - void OnInit() override; + void OnInit() override; }; ////////////////////////////////////////////////////////////////////////////// diff --git a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestUtilities.h b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestUtilities.h index dcc4d2eb3f..ba48af6ac3 100644 --- a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestUtilities.h +++ b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestUtilities.h @@ -69,23 +69,6 @@ namespace ScriptCanvasTests return GetTestNode(scriptCanvasId, entityOut); } - ScriptCanvas::Node* CreateDataNodeByType(const ScriptCanvas::ScriptCanvasId& scriptCanvasId, const ScriptCanvas::Data::Type& type, AZ::EntityId& nodeIDout); - - template - ScriptCanvas::Node* CreateDataNode(const ScriptCanvas::ScriptCanvasId& scriptCanvasId, const t_Value& value, AZ::EntityId& nodeIDout) - { - using namespace ScriptCanvas; - const Data::Type operandType = Data::FromAZType(azrtti_typeid()); - Node* node = CreateDataNodeByType(scriptCanvasId, operandType, nodeIDout); - - EXPECT_NE(node, nullptr); - if (node) - { - node->SetInput_UNIT_TEST("Set", value); - } - return node; - } - template ScriptCanvas::VariableId CreateVariable(ScriptCanvas::ScriptCanvasId scriptCanvasId, const t_Value& value, AZStd::string_view variableName) { diff --git a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_BehaviorContext.cpp b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_BehaviorContext.cpp index c602bde1f2..c1fdbc2b60 100644 --- a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_BehaviorContext.cpp +++ b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_BehaviorContext.cpp @@ -19,145 +19,6 @@ using namespace ScriptCanvasTests; using namespace ScriptCanvasEditor; using namespace TestNodes; -// Tests the basic footprint of the ebus node both before and after graph activation to make sure all internal bookeeping is correct. -TEST_F(ScriptCanvasTestFixture, BehaviorContext_BusHandlerNodeFootPrint) -{ - using namespace ScriptCanvas; - - TemplateEventTestHandler::Reflect(m_serializeContext); - TemplateEventTestHandler::Reflect(m_behaviorContext); - - auto graphEntity = aznew AZ::Entity; - SystemRequestBus::Broadcast(&SystemRequests::CreateGraphOnEntity, graphEntity); - ScriptCanvas::Graph* graph = AZ::EntityUtils::FindFirstDerivedComponent(graphEntity); - graphEntity->Init(); - - const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId(); - - AZ::EntityId uuidEventHandlerId; - auto uuidEventHandler = CreateTestNode(graphUniqueId, uuidEventHandlerId); - uuidEventHandler->InitializeBus("TemplateEventTestHandler"); - AZ::Uuid uuidBusId = AZ::Uuid::CreateName("TemplateEventBus"); - uuidEventHandler->SetInput_UNIT_TEST(ScriptCanvas::Nodes::Core::EBusEventHandler::c_busIdName, uuidBusId); //Set Uuid bus id - - { - auto eventEntry = uuidEventHandler->FindEvent("VectorCreatedEvent"); - EXPECT_NE(nullptr, eventEntry); - EXPECT_EQ(eventEntry->m_parameterSlotIds.size(), 1); - EXPECT_TRUE(eventEntry->m_resultSlotId.IsValid()); - - { - const Slot* outputSlot = uuidEventHandler->GetSlot(eventEntry->m_eventSlotId); - EXPECT_EQ(outputSlot->GetDescriptor(), SlotDescriptors::ExecutionOut()); - } - - { - const Slot* dataSlot = uuidEventHandler->GetSlot(eventEntry->m_parameterSlotIds[0]); - - EXPECT_EQ(dataSlot->GetDescriptor(), SlotDescriptors::DataOut()); - EXPECT_EQ(dataSlot->GetDataType(), Data::Type::Vector3()); - - const Datum* datum = uuidEventHandler->FindDatum(eventEntry->m_parameterSlotIds[0]); - EXPECT_EQ(nullptr, datum); - - ModifiableDatumView datumView; - uuidEventHandler->FindModifiableDatumView(eventEntry->m_parameterSlotIds[0], datumView); - - EXPECT_FALSE(datumView.IsValid()); - } - - { - const Slot* resultSlot = uuidEventHandler->GetSlot(eventEntry->m_resultSlotId); - - EXPECT_EQ(resultSlot->GetDescriptor(), SlotDescriptors::DataIn()); - EXPECT_EQ(resultSlot->GetDataType(), Data::Type::Vector3()); - - const Datum* datum = uuidEventHandler->FindDatum(eventEntry->m_resultSlotId); - EXPECT_NE(nullptr, datum); - - if (datum) - { - EXPECT_TRUE(datum->IS_A()); - } - - ModifiableDatumView datumView; - uuidEventHandler->FindModifiableDatumView(eventEntry->m_resultSlotId, datumView); - - EXPECT_TRUE(datumView.IsValid()); - - if (datumView.IsValid()) - { - const Datum* datum2 = datumView.GetDatum(); - EXPECT_TRUE(datum2->IS_A()); - } - } - } - - graphEntity->Activate(); - - { - auto eventEntry = uuidEventHandler->FindEvent("VectorCreatedEvent"); - EXPECT_NE(nullptr, eventEntry); - EXPECT_EQ(eventEntry->m_parameterSlotIds.size(), 1); - EXPECT_TRUE(eventEntry->m_resultSlotId.IsValid()); - - { - const Slot* outputSlot = uuidEventHandler->GetSlot(eventEntry->m_eventSlotId); - EXPECT_EQ(outputSlot->GetDescriptor(), SlotDescriptors::ExecutionOut()); - } - - { - const Slot* dataSlot = uuidEventHandler->GetSlot(eventEntry->m_parameterSlotIds[0]); - - EXPECT_EQ(dataSlot->GetDescriptor(), SlotDescriptors::DataOut()); - EXPECT_EQ(dataSlot->GetDataType(), Data::Type::Vector3()); - - const Datum* datum = uuidEventHandler->FindDatum(eventEntry->m_parameterSlotIds[0]); - EXPECT_EQ(nullptr, datum); - - ModifiableDatumView datumView; - uuidEventHandler->FindModifiableDatumView(eventEntry->m_parameterSlotIds[0], datumView); - - EXPECT_FALSE(datumView.IsValid()); - } - - { - const Slot* resultSlot = uuidEventHandler->GetSlot(eventEntry->m_resultSlotId); - - EXPECT_EQ(resultSlot->GetDescriptor(), SlotDescriptors::DataIn()); - EXPECT_EQ(resultSlot->GetDataType(), Data::Type::Vector3()); - - const Datum* datum = uuidEventHandler->FindDatum(eventEntry->m_resultSlotId); - EXPECT_NE(nullptr, datum); - - if (datum) - { - EXPECT_TRUE(datum->IS_A()); - } - - ModifiableDatumView datumView; - uuidEventHandler->FindModifiableDatumView(eventEntry->m_resultSlotId, datumView); - - EXPECT_TRUE(datumView.IsValid()); - - if (datumView.IsValid()) - { - const Datum* datum2 = datumView.GetDatum(); - EXPECT_TRUE(datum2->IS_A()); - } - } - } - - delete graphEntity; - - m_serializeContext->EnableRemoveReflection(); - m_behaviorContext->EnableRemoveReflection(); - TemplateEventTestHandler::Reflect(m_serializeContext); - TemplateEventTestHandler::Reflect(m_behaviorContext); - m_serializeContext->DisableRemoveReflection(); - m_behaviorContext->DisableRemoveReflection(); -} - void ReflectSignCorrectly() { AZ::BehaviorContext* behaviorContext(nullptr); diff --git a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_Core.cpp b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_Core.cpp index d5f4c221c8..9e4252a4f2 100644 --- a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_Core.cpp +++ b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_Core.cpp @@ -470,213 +470,11 @@ TEST_F(ScriptCanvasTestFixture, Contracts) graph->GetEntity()->Deactivate(); delete graph->GetEntity(); } -// -// TEST_F(ScriptCanvasTestFixture, BinaryOperationTest) -// { -// -// using namespace ScriptCanvas::Nodes; -// using namespace ScriptCanvas::Nodes::Comparison; -// -// TestBehaviorContextObject::Reflect(m_serializeContext); -// TestBehaviorContextObject::Reflect(m_behaviorContext); -// -// BinaryOpTest(1, 1, true); -// BinaryOpTest(1, 0, false); -// BinaryOpTest(0, 1, false); -// BinaryOpTest(0, 0, true); -// -// BinaryOpTest(1, 1, false); -// BinaryOpTest(1, 0, true); -// BinaryOpTest(0, 1, true); -// BinaryOpTest(0, 0, false); -// -// BinaryOpTest(1, 1, false); -// BinaryOpTest(1, 0, true); -// BinaryOpTest(0, 1, false); -// BinaryOpTest(0, 0, false); -// -// BinaryOpTest(1, 1, true); -// BinaryOpTest(1, 0, true); -// BinaryOpTest(0, 1, false); -// BinaryOpTest(0, 0, true); -// -// BinaryOpTest(1, 1, false); -// BinaryOpTest(1, 0, false); -// BinaryOpTest(0, 1, true); -// BinaryOpTest(0, 0, false); -// -// BinaryOpTest(1, 1, true); -// BinaryOpTest(1, 0, false); -// BinaryOpTest(0, 1, true); -// BinaryOpTest(0, 0, true); -// -// BinaryOpTest(true, true, true); -// BinaryOpTest(true, false, false); -// BinaryOpTest(false, true, false); -// BinaryOpTest(false, false, true); -// -// BinaryOpTest(true, true, false); -// BinaryOpTest(true, false, true); -// BinaryOpTest(false, true, true); -// BinaryOpTest(false, false, false); -// -// AZStd::string string0("a string"); -// AZStd::string string1("b string"); -// -// BinaryOpTest(string1, string1, true); -// BinaryOpTest(string1, string0, false); -// BinaryOpTest(string0, string1, false); -// BinaryOpTest(string0, string0, true); -// -// BinaryOpTest(string1, string1, false); -// BinaryOpTest(string1, string0, true); -// BinaryOpTest(string0, string1, true); -// BinaryOpTest(string0, string0, false); -// -// BinaryOpTest(string1, string1, false); -// BinaryOpTest(string1, string0, true); -// BinaryOpTest(string0, string1, false); -// BinaryOpTest(string0, string0, false); -// -// BinaryOpTest(string1, string1, true); -// BinaryOpTest(string1, string0, true); -// BinaryOpTest(string0, string1, false); -// BinaryOpTest(string0, string0, true); -// -// BinaryOpTest(string1, string1, false); -// BinaryOpTest(string1, string0, false); -// BinaryOpTest(string0, string1, true); -// BinaryOpTest(string0, string0, false); -// -// BinaryOpTest(string1, string1, true); -// BinaryOpTest(string1, string0, false); -// BinaryOpTest(string0, string1, true); -// BinaryOpTest(string0, string0, true); -// -// const AZ::Vector3 vectorOne(1.0f, 1.0f, 1.0f); -// const AZ::Vector3 vectorZero(0.0f, 0.0f, 0.0f); -// -// BinaryOpTest(vectorOne, vectorOne, true); -// BinaryOpTest(vectorOne, vectorZero, false); -// BinaryOpTest(vectorZero, vectorOne, false); -// BinaryOpTest(vectorZero, vectorZero, true); -// -// BinaryOpTest(vectorOne, vectorOne, false); -// BinaryOpTest(vectorOne, vectorZero, true); -// BinaryOpTest(vectorZero, vectorOne, true); -// BinaryOpTest(vectorZero, vectorZero, false); -// -// const TestBehaviorContextObject zero(0); -// const TestBehaviorContextObject one(1); -// const TestBehaviorContextObject otherOne(1); -// -// BinaryOpTest(one, one, true); -// BinaryOpTest(one, zero, false); -// BinaryOpTest(zero, one, false); -// BinaryOpTest(zero, zero, true); -// -// BinaryOpTest(one, one, false); -// BinaryOpTest(one, zero, true); -// BinaryOpTest(zero, one, true); -// BinaryOpTest(zero, zero, false); -// -// BinaryOpTest(one, one, false); -// BinaryOpTest(one, zero, true); -// BinaryOpTest(zero, one, false); -// BinaryOpTest(zero, zero, false); -// -// BinaryOpTest(one, one, true); -// BinaryOpTest(one, zero, true); -// BinaryOpTest(zero, one, false); -// BinaryOpTest(zero, zero, true); -// -// BinaryOpTest(one, one, false); -// BinaryOpTest(one, zero, false); -// BinaryOpTest(zero, one, true); -// BinaryOpTest(zero, zero, false); -// -// BinaryOpTest(one, one, true); -// BinaryOpTest(one, zero, false); -// BinaryOpTest(zero, one, true); -// BinaryOpTest(zero, zero, true); -// -// BinaryOpTest(one, otherOne, true); -// BinaryOpTest(otherOne, one, true); -// -// BinaryOpTest(one, otherOne, false); -// BinaryOpTest(otherOne, one, false); -// -// BinaryOpTest(one, otherOne, false); -// BinaryOpTest(otherOne, one, false); -// -// BinaryOpTest(one, otherOne, true); -// BinaryOpTest(otherOne, one, true); -// -// BinaryOpTest(one, otherOne, false); -// BinaryOpTest(otherOne, one, false); -// -// BinaryOpTest(one, otherOne, true); -// BinaryOpTest(otherOne, one, true); -// -// // force failures, to verify crash proofiness -// BinaryOpTest(one, zero, false, true); -// BinaryOpTest(one, zero, true, true); -// BinaryOpTest(one, zero, true, true); -// BinaryOpTest(one, zero, true, true); -// BinaryOpTest(one, zero, false, true); -// BinaryOpTest(one, zero, false, true); -// -// m_serializeContext->EnableRemoveReflection(); -// m_behaviorContext->EnableRemoveReflection(); -// TestBehaviorContextObject::Reflect(m_serializeContext); -// TestBehaviorContextObject::Reflect(m_behaviorContext); -// m_serializeContext->DisableRemoveReflection(); -// m_behaviorContext->DisableRemoveReflection(); -// } const int k_executionCount = 998; -TEST_F(ScriptCanvasTestFixture, ExecutionLength) -{ - - using namespace ScriptCanvas; - - ScriptCanvas::Graph* graph(nullptr); - SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph); - EXPECT_TRUE(graph != nullptr); - graph->GetEntity()->Init(); - - const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId(); - - AZ::EntityId startID; - CreateTestNode(graphUniqueId, startID); - - AZ::EntityId previousID = startID; - - for (int i = 0; i < k_executionCount; ++i) - { - AZ::EntityId printNodeID; - TestResult* printNode = CreateTestNode(graphUniqueId, printNodeID); - printNode->SetInput_UNIT_TEST("Value", i); - EXPECT_TRUE(Connect(*graph, previousID, "Out", printNodeID, "In")); - previousID = printNodeID; - } - - AZ::Entity* graphEntity = graph->GetEntity(); - { - ScriptCanvasEditor::ScopedOutputSuppression suppressOutput; - graphEntity->Activate(); - } - - ReportErrors(graph); - - graphEntity->Deactivate(); - delete graphEntity; -} - TEST_F(ScriptCanvasTestFixture, While) { - RunUnitTestGraph("LY_SC_UnitTest_While", ScriptCanvas::ExecutionMode::Interpreted); } diff --git a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp index e7657cff65..107bb32cd6 100644 --- a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp +++ b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp @@ -931,181 +931,3 @@ TEST_F(ScriptCanvasTestFixture, InterpretedExecutionOutPerformance) { RunUnitTestGraph("LY_SC_UnitTest_ExecutionOutPerformance", ExecutionMode::Interpreted); } - -#if defined(FUNCTION_LEGACY_SUPPORT_ENABLED) - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraph_UserNodeable) -{ - ExpectParse("LY_SC_UnitTest_Subgraph_UserNodeableD"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraph_UserNodeableLatent) -{ - ExpectParse("LY_SC_UnitTest_Subgraph_UserNodeableLatent"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedUseFunctionWithOnGraphStart) -{ - RunUnitTestGraph("LY_SC_UnitTest_UseFunctionWithOnGraphStart"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedUseSubgraphWithStartAndEBus) -{ - RunUnitTestGraph("LY_SC_UnitTests_UseSubgraphWithStartAndEBus"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedDeviousStateFunctionFixGraph) -{ - RunUnitTestGraph("LY_SC_UnitTest_DeviousStateFunctionFixGraph"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedCallFunctionLocalValues) -{ - RunUnitTestGraph("LY_SC_UnitTest_CallFunctionLocalValues"); -} - -TEST_F(ScriptCanvasTestFixture, ParseFunctionLocalObjects) -{ - ExpectParse("LY_SC_UnitTest_FunctionLocalObjects"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedFunctionLocalObjectsCall) -{ - RunUnitTestGraph("LY_SC_UnitTest_FunctionLocalObjectsCall", ExecutionMode::Interpreted, DurationSpec::Ticks(31)); -} - -TEST_F(ScriptCanvasTestFixture, ParseFunctionWithOnGraphStart) -{ - ExpectParse("LY_SC_UnitTest_FunctionWithOnGraphStart"); -} - -TEST_F(ScriptCanvasTestFixture, NodeableDurationSubgraphDirectionExposedOutWithOutput) -{ - RunUnitTestGraph("LY_SC_UnitTest_NodeableDurationSubgraphDirectionExposedOutWithOutput", ExecutionMode::Interpreted, DurationSpec::Ticks(3)); -} - -TEST_F(ScriptCanvasTestFixture, ParseOrderedSequencerFunction) -{ - ExpectParse("LY_SC_UnitTest_OrderedSequencerFunction"); -} - -TEST_F(ScriptCanvasTestFixture, ParseFunction_Names_With_Spaces) -{ - ExpectParse("LY_SC_UnitTest_Function Names With Spaces"); -} - -TEST_F(ScriptCanvasTestFixture, ParseFunctionNameEvilVersion) -{ - ExpectParse("LY_SC_UnitTest_Function Names(With) Random+Strings Evil~Version"); -} - -TEST_F(ScriptCanvasTestFixture, ParseFunctionNameEvilVersionInFolder) -{ - ExpectParse("TestFunction/LY_SC_UnitTest_Function Names(With) Random+Strings Evil~Version-In^Forder"); -} - -TEST_F(ScriptCanvasTestFixture, ParseNodeableDurationFunction) -{ - ExpectParse("LY_SC_UnitTest_NodeableDurationFunction"); -} - -TEST_F(ScriptCanvasTestFixture, ParseNodeableDurationFunctionDirectExposure) -{ - ExpectParse("LY_SC_UnitTest_NodeableDurationFunctionDirectExposure"); -} - -TEST_F(ScriptCanvasTestFixture, ParseNodeableDurationFunctionDirectExposureWithOutput) -{ - ExpectParse("LY_SC_UnitTest_NodeableDurationFunctionDirectExposureWithOutput"); -} - - -TEST_F(ScriptCanvasTestFixture, ParseFunctionBranchSingleNamedOutJustReturns) -{ - ExpectParse("LY_SC_UnitTest_ParseFunctionBranchSingleNamedOutJustReturns"); -} - -TEST_F(ScriptCanvasTestFixture, ParseExposeAnyOut) -{ - ExpectParse("LY_SC_UnitTest_ExposeAnyOut"); -} - -TEST_F(ScriptCanvasTestFixture, ParseMultipleInputNoParseError) -{ - ExpectParse("LY_SC_UnitTest_MultipleInputNoParseError"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraphMultipleInError) -{ - ExpectParseError("LY_SC_UnitTest_InterpretedSubgraphMultipleInError"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraphMultipleOutError) -{ - ExpectParseError("LY_SC_UnitTest_InterpretedSubgraphMultipleOutError"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraphOutInLoop) -{ - ExpectParseError("LY_SC_UnitTest_InterpretedSubgraphOutInLoop"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraphOutMidCycleMissingSlots) -{ - ExpectParseError("LY_SC_UnitTest_InterpretedSubgraphOutMidCycleMissingSlots"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraphComplexityError) -{ - ExpectParseError("LY_SC_UnitTest_SubgraphComplexityError"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraphReturnValueFromIn) -{ - ExpectParseError("LY_SC_UnitTest_SubgraphReturnValueFromIn"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedSubgraphReturnValueFromInOut) -{ - ExpectParseError("LY_SC_UnitTest_SubgraphReturnValueFromInOut"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedVerifyByValueCorrectness) -{ - RunUnitTestGraph("LY_SC_UnitTest_VerifyByValueCorrectness", ExecutionMode::Interpreted); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedFunctionNoInputOneOutputCall) -{ - RunUnitTestGraph("LY_SC_UnitTest_FunctionNoInputOneOutputCall", ExecutionMode::Interpreted); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedFunctionAddVector3Call) -{ - RunUnitTestGraph("LY_SC_UnitTest_FunctionAddVector3Call", ExecutionMode::Interpreted); -} -TEST_F(ScriptCanvasTestFixture, InterpretedParseFunction) -{ - ExpectParse("LY_SC_UnitTest_ParseFunction"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedParseFunctionBranch) -{ - ExpectParse("LY_SC_UnitTest_ParseFunctionBranch"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedParseFunctionBranchDefaultOut) -{ - ExpectParse("LY_SC_UnitTest_ParseFunctionBranchDefaultOut"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedParseFunctionDefaultOut) -{ - ExpectParse("LY_SC_UnitTest_ParseFunctionDefaultOut"); -} - -TEST_F(ScriptCanvasTestFixture, InterpretedParseFunctionOut) -{ - ExpectParse("LY_SC_UnitTest_ParseFunctionOut"); -} -#endif diff --git a/Gems/StartingPointInput/Code/Source/InputNode.cpp b/Gems/StartingPointInput/Code/Source/InputNode.cpp deleted file mode 100644 index e0f9de3657..0000000000 --- a/Gems/StartingPointInput/Code/Source/InputNode.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace StartingPointInput -{ - void InputNode::OnPostActivate() - { - //if (GetExecutionType() == ScriptCanvas::ExecutionType::Runtime) - //{ - // const ScriptCanvas::SlotId eventNameSlotId = InputNodeProperty::GetEventNameSlotId(this); - - // m_eventName = (*(FindDatum(eventNameSlotId)->GetAs())); - // InputEventNotificationBus::Handler::BusConnect(InputEventNotificationId(m_eventName.c_str())); - //} - } - - void InputNode::OnDeactivate() - { - InputEventNotificationBus::Handler::BusDisconnect(); - } - - void InputNode::OnInputChanged(const ScriptCanvas::Datum& input, const ScriptCanvas::SlotId& slotId) - { - // we got a new event name, we need to drop our connection to the old and connect to the new event - const ScriptCanvas::SlotId eventNameSlotId = InputNodeProperty::GetEventNameSlotId(this); - - if (slotId == eventNameSlotId) - { - InputEventNotificationBus::Handler::BusDisconnect(); - - m_eventName = (*input.GetAs()); - InputEventNotificationBus::Handler::BusConnect(InputEventNotificationId(m_eventName.c_str())); - } - } - - void InputNode::OnPressed(float value) - { - m_value = value; - const ScriptCanvas::Datum output = ScriptCanvas::Datum(m_value); - const ScriptCanvas::SlotId pressedSlotId = InputNodeProperty::GetPressedSlotId(this); - const ScriptCanvas::SlotId valueId = InputNodeProperty::GetValueSlotId(this); - - if (auto* slot = GetSlot(valueId)) - { - PushOutput(output, *slot); - } - - SignalOutput(pressedSlotId); - } - - void InputNode::OnHeld(float value) - { - m_value = value; - const ScriptCanvas::Datum output = ScriptCanvas::Datum(m_value); - const ScriptCanvas::SlotId heldSlotId = InputNodeProperty::GetHeldSlotId(this); - const ScriptCanvas::SlotId valueId = InputNodeProperty::GetValueSlotId(this); - if (auto* slot = GetSlot(valueId)) - { - PushOutput(output, *slot); - } - SignalOutput(heldSlotId); - } - - void InputNode::OnReleased(float value) - { - m_value = value; - const ScriptCanvas::Datum output = ScriptCanvas::Datum(m_value); - const ScriptCanvas::SlotId releasedSlotId = InputNodeProperty::GetReleasedSlotId(this); - const ScriptCanvas::SlotId valueId = InputNodeProperty::GetValueSlotId(this); - - if (auto* slot = GetSlot(valueId)) - { - PushOutput(output, *slot); - } - SignalOutput(releasedSlotId); - } -} diff --git a/Gems/StartingPointInput/Code/Source/InputNode.h b/Gems/StartingPointInput/Code/Source/InputNode.h index d71c302f2b..c4e85f2a5b 100644 --- a/Gems/StartingPointInput/Code/Source/InputNode.h +++ b/Gems/StartingPointInput/Code/Source/InputNode.h @@ -10,18 +10,15 @@ #include #include - -#include - #include namespace StartingPointInput { ////////////////////////////////////////////////////////////////////////// /// Input handles raw input from any source and outputs Pressed, Held, and Released input events + /// This nodes id deprecated in favor of its nodeable counterpart. class InputNode : public ScriptCanvas::Node - , protected InputEventNotificationBus::Handler { public: @@ -35,21 +32,5 @@ namespace StartingPointInput AZStd::string m_eventName; float m_value; - - ////////////////////////////////////////////////////////////////////////// - /// ScriptCanvas_Node - void OnInputChanged(const ScriptCanvas::Datum& input, const ScriptCanvas::SlotId& slotId) override; - - protected: - ////////////////////////////////////////////////////////////////////////// - /// Node - void OnPostActivate() override; - void OnDeactivate() override; - - ////////////////////////////////////////////////////////////////////////// - /// InputEventNotificationBus::Handler - void OnPressed(float value) override; - void OnHeld(float value) override; - void OnReleased(float value) override; }; } diff --git a/Gems/StartingPointInput/Code/startingpointinput_files.cmake b/Gems/StartingPointInput/Code/startingpointinput_files.cmake index 933f32ec66..000c361b5b 100644 --- a/Gems/StartingPointInput/Code/startingpointinput_files.cmake +++ b/Gems/StartingPointInput/Code/startingpointinput_files.cmake @@ -17,7 +17,6 @@ set(FILES Source/InputLibrary.h Source/InputLibrary.cpp Source/InputNode.h - Source/InputNode.cpp Source/InputHandlerNodeable.h Source/InputHandlerNodeable.cpp Source/InputHandlerNodeable.ScriptCanvasNodeable.xml