diff --git a/Code/Framework/AtomCore/Tests/atomcore_tests_files.cmake b/Code/Framework/AtomCore/Tests/atomcore_tests_files.cmake index f2c0c5c051..0f5fcb441d 100644 --- a/Code/Framework/AtomCore/Tests/atomcore_tests_files.cmake +++ b/Code/Framework/AtomCore/Tests/atomcore_tests_files.cmake @@ -10,7 +10,6 @@ set(FILES ArrayView.cpp ConcurrencyCheckerTests.cpp InstanceDatabase.cpp - JsonSerializationUtilsTests.cpp lru_cache.cpp Main.cpp vector_set.cpp diff --git a/Code/Framework/AzCore/AzCore/Serialization/AZStdAnyDataContainer.inl b/Code/Framework/AzCore/AzCore/Serialization/AZStdAnyDataContainer.inl index 0e9306a481..f0694ed2b3 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/AZStdAnyDataContainer.inl +++ b/Code/Framework/AzCore/AzCore/Serialization/AZStdAnyDataContainer.inl @@ -209,39 +209,35 @@ namespace AZ //! performance sensitive code. AZ_INLINE bool CompareAnyValue(const AZStd::any& lhs, const AZStd::any& rhs) { - bool isEqual = false; - - if (lhs.type() != rhs.type()) + if (lhs.type() == rhs.type()) { - return false; - } + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(lhs.type()); - if (classData) - { - if (classData->m_serializer) + const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(lhs.type()); + if (classData) { - isEqual = classData->m_serializer->CompareValueData(AZStd::any_cast(&lhs), AZStd::any_cast(&rhs)); - } - else - { - AZStd::vector myData; - AZ::IO::ByteContainerStream myDataStream(&myData); - - AZ::Utils::SaveObjectToStream(myDataStream, AZ::ObjectStream::ST_BINARY, AZStd::any_cast(&lhs), lhs.type()); - - AZStd::vector otherData; - AZ::IO::ByteContainerStream otherDataStream(&otherData); - - AZ::Utils::SaveObjectToStream(otherDataStream, AZ::ObjectStream::ST_BINARY, AZStd::any_cast(&rhs), rhs.type()); - isEqual = (myData.size() == otherData.size()) && (memcmp(myData.data(), otherData.data(), myData.size()) == 0); + if (classData->m_serializer) + { + return classData->m_serializer->CompareValueData(AZStd::any_cast(&lhs), AZStd::any_cast(&rhs)); + } + else + { + AZStd::vector myData; + AZ::IO::ByteContainerStream myDataStream(&myData); + + AZ::Utils::SaveObjectToStream(myDataStream, AZ::ObjectStream::ST_BINARY, AZStd::any_cast(&lhs), lhs.type()); + + AZStd::vector otherData; + AZ::IO::ByteContainerStream otherDataStream(&otherData); + + AZ::Utils::SaveObjectToStream(otherDataStream, AZ::ObjectStream::ST_BINARY, AZStd::any_cast(&rhs), rhs.type()); + return (myData.size() == otherData.size()) && (memcmp(myData.data(), otherData.data(), myData.size()) == 0); + } } } - return isEqual; + return false; } } } diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.cpp index 4a02563f3a..7309955a1c 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.cpp @@ -213,7 +213,7 @@ namespace AZ void* object, const Uuid& typeId, const rapidjson::Value& value, JsonDeserializerContext& context, ContinuationFlags flags) { bool loadAsNewInstance = (flags & ContinuationFlags::LoadAsNewInstance) == ContinuationFlags::LoadAsNewInstance; - JsonDeserializer::UseTypeDeserializer useCustom = (flags & ContinuationFlags::NoTypeSerializer) == ContinuationFlags::NoTypeSerializer + JsonDeserializer::UseTypeDeserializer useCustom = (flags & ContinuationFlags::IgnoreTypeSerializer) == ContinuationFlags::IgnoreTypeSerializer ? JsonDeserializer::UseTypeDeserializer::No : JsonDeserializer::UseTypeDeserializer::Yes; @@ -228,7 +228,7 @@ namespace AZ { using namespace JsonSerializationResult; - JsonSerializer::UseTypeSerializer useCustom = (flags & ContinuationFlags::NoTypeSerializer) == ContinuationFlags::NoTypeSerializer + JsonSerializer::UseTypeSerializer useCustom = (flags & ContinuationFlags::IgnoreTypeSerializer) == ContinuationFlags::IgnoreTypeSerializer ? JsonSerializer::UseTypeSerializer::No : JsonSerializer::UseTypeSerializer::Yes; diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.h b/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.h index 12ae01799c..7d2af01c16 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.h +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/BaseJsonSerializer.h @@ -159,13 +159,13 @@ namespace AZ enum class ContinuationFlags { - None = 0, //! No extra flags. - ResolvePointer = 1 << 0, //! The pointer passed in contains a pointer. The (de)serializer will attempt to resolve to an instance. - ReplaceDefault = 1 << 1, //! The default value provided for storing will be replaced with a newly created one. - LoadAsNewInstance = 1 << 2, //! Treats the value as if it's a newly created instance. This may trigger serializers marked with - //! OperationFlags::InitializeNewInstance. Used for instance by pointers or new instances added to - //! an array. - NoTypeSerializer = 1 << 3, //! Ignore the custom/specific serializer for the TypeId + None = 0, //! No extra flags. + ResolvePointer = 1 << 0, //! The pointer passed in contains a pointer. The (de)serializer will attempt to resolve to an instance. + ReplaceDefault = 1 << 1, //! The default value provided for storing will be replaced with a newly created one. + LoadAsNewInstance = 1 << 2, //! Treats the value as if it's a newly created instance. This may trigger serializers marked with + //! OperationFlags::InitializeNewInstance. Used for instance by pointers or new instances added to + //! an array. + IgnoreTypeSerializer = 1 << 3, //! Ignore the custom/specific serializer for the TypeId }; enum class OperationFlags diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp index dcc0550107..ae47c1c585 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp @@ -73,7 +73,9 @@ namespace AZ } if (BaseJsonSerializer* serializer - = context.GetRegistrationContext()->GetSerializerForType(classData->m_azRtti->GetGenericTypeId())) + = (custom == UseTypeDeserializer::Yes) + ? context.GetRegistrationContext()->GetSerializerForType(classData->m_azRtti->GetGenericTypeId()) + : nullptr) { return DeserializerDefaultCheck(serializer, object, typeId, value, isNewInstance, context); } diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp index 98162ea594..d04c23f536 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp @@ -22,7 +22,7 @@ #include #include -#include "JsonUtils.h" +#include namespace AZ { diff --git a/Code/Framework/AtomCore/Tests/JsonSerializationUtilsTests.cpp b/Code/Framework/AzCore/Tests/Serialization/Json/JsonSerializationUtilsTests.cpp similarity index 100% rename from Code/Framework/AtomCore/Tests/JsonSerializationUtilsTests.cpp rename to Code/Framework/AzCore/Tests/Serialization/Json/JsonSerializationUtilsTests.cpp diff --git a/Code/Framework/AzCore/Tests/azcoretests_files.cmake b/Code/Framework/AzCore/Tests/azcoretests_files.cmake index ca0e2862fc..d3f6663489 100644 --- a/Code/Framework/AzCore/Tests/azcoretests_files.cmake +++ b/Code/Framework/AzCore/Tests/azcoretests_files.cmake @@ -105,6 +105,7 @@ set(FILES Serialization/Json/JsonSerializationResultTests.cpp Serialization/Json/JsonSerializationTests.h Serialization/Json/JsonSerializationTests.cpp + Serialization/Json/JsonSerializationUtilsTests.cpp Serialization/Json/JsonSerializerConformityTests.h Serialization/Json/JsonSerializerMock.h Serialization/Json/MapSerializerTests.cpp diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp index ca41bbac40..0c84484508 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp @@ -19,7 +19,6 @@ #include #include -//#include namespace UnitTest { using namespace AZ; diff --git a/Gems/ExpressionEvaluation/Code/Include/ExpressionEvaluation/ExpressionEngine/ExpressionTree.h b/Gems/ExpressionEvaluation/Code/Include/ExpressionEvaluation/ExpressionEngine/ExpressionTree.h index e9da3bbfba..e47e1e84c6 100644 --- a/Gems/ExpressionEvaluation/Code/Include/ExpressionEvaluation/ExpressionEngine/ExpressionTree.h +++ b/Gems/ExpressionEvaluation/Code/Include/ExpressionEvaluation/ExpressionEngine/ExpressionTree.h @@ -11,6 +11,11 @@ #include +namespace AZ +{ + class ExpressionTreeVariableDescriptorSerializer; +} + namespace ExpressionEvaluation { // Holds all of the tokeniszed information from parsing an expression string. @@ -20,8 +25,22 @@ namespace ExpressionEvaluation { // Friend class for reflection friend class ExpressionEvaluationSystemComponent; + friend class ExpressionTreeVariableDescriptorSerializer; public: + struct VariableDescriptor + { + AZ_TYPE_INFO(VariableDescriptor, "{5E1A0044-E0E7-46D3-8BC6-A22E226ADB83}"); + + VariableDescriptor() + { + m_supportedTypes.push_back(azrtti_typeid()); + } + + AZStd::vector< AZ::Uuid > m_supportedTypes; + ExpressionVariable m_value; + }; + AZ_RTTI(ExpressionTree, "{4CCF3DFD-2EA8-47CB-AF25-353BC034EF42}"); AZ_CLASS_ALLOCATOR(ExpressionTree, AZ::SystemAllocator, 0); @@ -147,18 +166,6 @@ namespace ExpressionEvaluation private: - struct VariableDescriptor - { - AZ_TYPE_INFO(VariableDescriptor, "{5E1A0044-E0E7-46D3-8BC6-A22E226ADB83}"); - - VariableDescriptor() - { - m_supportedTypes.push_back(azrtti_typeid()); - } - - AZStd::vector< AZ::Uuid > m_supportedTypes; - ExpressionVariable m_value; - }; AZStd::unordered_map< AZ::Crc32, VariableDescriptor > m_variables; diff --git a/Gems/ExpressionEvaluation/Code/Source/ElementInformationSerializer.inl b/Gems/ExpressionEvaluation/Code/Source/ElementInformationSerializer.inl new file mode 100644 index 0000000000..19d220a4f3 --- /dev/null +++ b/Gems/ExpressionEvaluation/Code/Source/ElementInformationSerializer.inl @@ -0,0 +1,165 @@ +/* + * 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 + +namespace AZ +{ + class ElementInformationSerializer + : public BaseJsonSerializer + { + + public: + AZ_RTTI(ElementInformationSerializer, "{B33E6AA9-C700-4E3D-857C-55F362AFE57A}", BaseJsonSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + private: + using ElementInformation = ExpressionEvaluation::ElementInformation; + + JsonSerializationResult::Result Load + ( void* outputValue + , const Uuid& outputValueTypeId + , const rapidjson::Value& inputValue + , JsonDeserializerContext& context) override + { + namespace JSR = JsonSerializationResult; + + AZ_Assert(outputValueTypeId == azrtti_typeid(), "ElementInformationSerializer Load against " + "output typeID that was not ElementInformation"); + AZ_Assert(outputValue, "ElementInformationSerializer Load against null output"); + + JsonSerializationResult::ResultCode result(JSR::Tasks::ReadField); + auto outputDatum = reinterpret_cast(outputValue); + result.Combine(ContinueLoadingFromJsonObjectField + ( &outputDatum->m_id + , azrtti_typeidm_id)>() + , inputValue + , "Id" + , context)); + + // any storage begin + auto isEmptyAny = inputValue.FindMember("isEmptyAny"); + if (isEmptyAny == inputValue.MemberEnd()) + { + return context.Report + (JSR::Tasks::ReadField + , JSR::Outcomes::Missing + , "ElementInformationSerializer::Load failed to load the 'isEmptyAny'' member"); + } + + if (!isEmptyAny->value.GetBool()) + { + AZ::Uuid typeId = AZ::Uuid::CreateNull(); + auto typeIdMember = inputValue.FindMember(JsonSerialization::TypeIdFieldIdentifier); + if (typeIdMember == inputValue.MemberEnd()) + { + return context.Report + (JSR::Tasks::ReadField + , JSR::Outcomes::Missing + , AZStd::string::format("ElementInformationSerializer::Load failed to load the %s member" + , JsonSerialization::TypeIdFieldIdentifier)); + } + + result.Combine(LoadTypeId(typeId, typeIdMember->value, context)); + if (typeId.IsNull()) + { + return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Catastrophic + , "ElementInformationSerializer::Load failed to load the AZ TypeId of the value"); + } + + AZStd::any storage = context.GetSerializeContext()->CreateAny(typeId); + if (storage.empty() || storage.type() != typeId) + { + return context.Report(result, "ElementInformationSerializer::Load failed to load a value matched the " + "reported AZ TypeId. The C++ declaration may have been deleted or changed."); + } + + result.Combine(ContinueLoadingFromJsonObjectField(AZStd::any_cast(&storage), typeId, inputValue, "Value", context)); + outputDatum->m_extraStore = storage; + } + // any storage end + + return context.Report(result, result.GetProcessing() != JSR::Processing::Halted + ? "ElementInformationSerializer Load finished loading ElementInformation" + : "ElementInformationSerializer Load failed to load ElementInformation"); + } + + JsonSerializationResult::Result Store + ( rapidjson::Value& outputValue + , const void* inputValue + , const void* defaultValue + , const Uuid& valueTypeId, JsonSerializerContext& context) override + { + namespace JSR = JsonSerializationResult; + + AZ_Assert(valueTypeId == azrtti_typeid(), "ElementInformation Store against value typeID that " + "was not ElementInformation"); + AZ_Assert(inputValue, "ElementInformation Store against null inputValue pointer "); + + auto inputScriptDataPtr = reinterpret_cast(inputValue); + auto defaultScriptDataPtr = reinterpret_cast(defaultValue); + + if (defaultScriptDataPtr) + { + if (inputScriptDataPtr->m_id == defaultScriptDataPtr->m_id + && AZ::Helpers::CompareAnyValue(inputScriptDataPtr->m_extraStore, defaultScriptDataPtr->m_extraStore)) + { + return context.Report + ( JSR::Tasks::WriteValue, JSR::Outcomes::DefaultsUsed, "ElementInformation Store used defaults for " + "ElementInformation"); + } + } + + JSR::ResultCode result(JSR::Tasks::WriteValue); + outputValue.SetObject(); + + result.Combine(ContinueStoringToJsonObjectField + ( outputValue + , "Id" + , &inputScriptDataPtr->m_id + , defaultScriptDataPtr ? &defaultScriptDataPtr->m_id : nullptr + , azrtti_typeidm_id)>() + , context)); + + + outputValue.AddMember("isEmptyAny", rapidjson::Value(inputScriptDataPtr->m_extraStore.empty()), context.GetJsonAllocator()); + + if (!inputScriptDataPtr->m_extraStore.empty()) + { + rapidjson::Value typeValue; + result.Combine(StoreTypeId(typeValue, inputScriptDataPtr->m_extraStore.type(), context)); + outputValue.AddMember + (rapidjson::StringRef(JsonSerialization::TypeIdFieldIdentifier) + , AZStd::move(typeValue) + , context.GetJsonAllocator()); + + result.Combine(ContinueStoringToJsonObjectField + ( outputValue + , "Value" + , AZStd::any_cast(const_cast(&inputScriptDataPtr->m_extraStore)) + , defaultScriptDataPtr ? AZStd::any_cast(const_cast(&defaultScriptDataPtr->m_extraStore)) : nullptr + , inputScriptDataPtr->m_extraStore.type() + , context)); + + } + + return context.Report(result, result.GetProcessing() != JSR::Processing::Halted + ? "ElementInformation Store finished saving ElementInformation" + : "ElementInformation Store failed to save ElementInformation"); + } + }; + + AZ_CLASS_ALLOCATOR_IMPL(ElementInformationSerializer, SystemAllocator, 0); +} diff --git a/Gems/ExpressionEvaluation/Code/Source/ExpressionEvaluationSystemComponent.cpp b/Gems/ExpressionEvaluation/Code/Source/ExpressionEvaluationSystemComponent.cpp index 42ac124e6e..9a6848712a 100644 --- a/Gems/ExpressionEvaluation/Code/Source/ExpressionEvaluationSystemComponent.cpp +++ b/Gems/ExpressionEvaluation/Code/Source/ExpressionEvaluationSystemComponent.cpp @@ -6,15 +6,16 @@ * */ -#include - -#include #include #include - +#include +#include #include #include #include +#include +#include +#include namespace ExpressionEvaluation { @@ -145,6 +146,12 @@ namespace ExpressionEvaluation ; } } + + if (AZ::JsonRegistrationContext* jsonContext = azrtti_cast(context)) + { + jsonContext->Serializer()->HandlesType(); + jsonContext->Serializer()->HandlesType(); + } } void ExpressionEvaluationSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) diff --git a/Gems/ExpressionEvaluation/Code/Source/ExpressionPrimitivesSerializers.inl b/Gems/ExpressionEvaluation/Code/Source/ExpressionPrimitivesSerializers.inl new file mode 100644 index 0000000000..76f43a9b82 --- /dev/null +++ b/Gems/ExpressionEvaluation/Code/Source/ExpressionPrimitivesSerializers.inl @@ -0,0 +1,147 @@ +/* + * 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 + +namespace AZ +{ + class ExpressionTreeVariableDescriptorSerializer + : public BaseJsonSerializer + { + + public: + AZ_RTTI(ExpressionTreeVariableDescriptorSerializer, "{5EFF37D6-BD54-45C6-9FC6-B1E0D3A8204C}", BaseJsonSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + private: + using VariableDescriptor = ExpressionEvaluation::ExpressionTree::VariableDescriptor; + + JsonSerializationResult::Result Load + ( void* outputValue + , const Uuid& outputValueTypeId + , const rapidjson::Value& inputValue + , JsonDeserializerContext& context) override + { + namespace JSR = JsonSerializationResult; + + AZ_Assert(outputValueTypeId == azrtti_typeid(), "ExpressionTreeVariableDescriptorSerializer Load against " + "output typeID that was not VariableDescriptor"); + AZ_Assert(outputValue, "ExpressionTreeVariableDescriptorSerializer Load against null output"); + + JsonSerializationResult::ResultCode result(JSR::Tasks::ReadField); + auto outputDatum = reinterpret_cast(outputValue); + + result.Combine(ContinueLoadingFromJsonObjectField + ( &outputDatum->m_supportedTypes + , azrtti_typeidm_supportedTypes)>() + , inputValue + , "SupportedTypes" + , context)); + + // any storage begin + AZ::Uuid typeId = AZ::Uuid::CreateNull(); + auto typeIdMember = inputValue.FindMember(JsonSerialization::TypeIdFieldIdentifier); + if (typeIdMember == inputValue.MemberEnd()) + { + return context.Report + ( JSR::Tasks::ReadField + , JSR::Outcomes::Missing + , AZStd::string::format("ExpressionTreeVariableDescriptorSerializer::Load failed to load the %s member" + , JsonSerialization::TypeIdFieldIdentifier)); + } + + result.Combine(LoadTypeId(typeId, typeIdMember->value, context)); + if (typeId.IsNull()) + { + return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Catastrophic + , "ExpressionTreeVariableDescriptorSerializer::Load failed to load the AZ TypeId of the value"); + } + + AZStd::any storage = context.GetSerializeContext()->CreateAny(typeId); + if (storage.empty() || storage.type() != typeId) + { + return context.Report(result, "ExpressionTreeVariableDescriptorSerializer::Load failed to load a value matched the " + "reported AZ TypeId. The C++ declaration may have been deleted or changed."); + } + + result.Combine(ContinueLoadingFromJsonObjectField(AZStd::any_cast(&storage), typeId, inputValue, "Value", context)); + outputDatum->m_value = storage; + // any storage end + + return context.Report(result, result.GetProcessing() != JSR::Processing::Halted + ? "ExpressionTreeVariableDescriptorSerializer Load finished loading VariableDescriptor" + : "ExpressionTreeVariableDescriptorSerializer Load failed to load VariableDescriptor"); + } + + JsonSerializationResult::Result Store + ( rapidjson::Value& outputValue + , const void* inputValue + , const void* defaultValue + , const Uuid& valueTypeId, JsonSerializerContext& context) override + { + namespace JSR = JsonSerializationResult; + + AZ_Assert(valueTypeId == azrtti_typeid(), "VariableDescriptor Store against value typeID that " + "was not VariableDescriptor"); + AZ_Assert(inputValue, "VariableDescriptor Store against null inputValue pointer "); + + auto inputScriptDataPtr = reinterpret_cast(inputValue); + auto defaultScriptDataPtr = reinterpret_cast(defaultValue); + + if (defaultScriptDataPtr) + { + if (inputScriptDataPtr->m_supportedTypes == defaultScriptDataPtr->m_supportedTypes + && AZ::Helpers::CompareAnyValue(inputScriptDataPtr->m_value, defaultScriptDataPtr->m_value)) + { + return context.Report + ( JSR::Tasks::WriteValue, JSR::Outcomes::DefaultsUsed, "VariableDescriptor Store used defaults for " + "VariableDescriptor"); + } + } + + JSR::ResultCode result(JSR::Tasks::WriteValue); + outputValue.SetObject(); + + result.Combine(ContinueStoringToJsonObjectField + ( outputValue + , "SupportedTypes" + , &inputScriptDataPtr->m_supportedTypes + , defaultScriptDataPtr ? &defaultScriptDataPtr->m_supportedTypes : nullptr + , azrtti_typeidm_supportedTypes)>() + , context)); + + rapidjson::Value typeValue; + result.Combine(StoreTypeId(typeValue, inputScriptDataPtr->m_value.type(), context)); + outputValue.AddMember + ( rapidjson::StringRef(JsonSerialization::TypeIdFieldIdentifier) + , AZStd::move(typeValue) + , context.GetJsonAllocator()); + + result.Combine(ContinueStoringToJsonObjectField + ( outputValue + , "Value" + , AZStd::any_cast(const_cast(&inputScriptDataPtr->m_value)) + , defaultScriptDataPtr ? AZStd::any_cast(const_cast(&defaultScriptDataPtr->m_value)) : nullptr + , inputScriptDataPtr->m_value.type() + , context)); + + return context.Report(result, result.GetProcessing() != JSR::Processing::Halted + ? "VariableDescriptor Store finished saving VariableDescriptor" + : "VariableDescriptor Store failed to save VariableDescriptor"); + } + }; + + AZ_CLASS_ALLOCATOR_IMPL(ExpressionTreeVariableDescriptorSerializer, SystemAllocator, 0); +} diff --git a/Gems/ExpressionEvaluation/Code/expressionevaluation_files.cmake b/Gems/ExpressionEvaluation/Code/expressionevaluation_files.cmake index 00d546459a..908622c163 100644 --- a/Gems/ExpressionEvaluation/Code/expressionevaluation_files.cmake +++ b/Gems/ExpressionEvaluation/Code/expressionevaluation_files.cmake @@ -13,6 +13,8 @@ set(FILES Include/ExpressionEvaluation/ExpressionEngine/ExpressionTypes.h Source/ExpressionEvaluationSystemComponent.cpp Source/ExpressionEvaluationSystemComponent.h + Source/ExpressionPrimitivesSerializers.inl + Source/ElementInformationSerializer.inl Source/ExpressionEngine/ExpressionElementParser.h Source/ExpressionEngine/ExpressionPrimitive.cpp Source/ExpressionEngine/ExpressionPrimitive.h diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHandler.cpp b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHandler.cpp index 9094c135bd..6f86b93dda 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHandler.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetHandler.cpp @@ -12,12 +12,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include #include @@ -27,6 +27,26 @@ #include #include #include +#include + +namespace ScriptCanvasAssetHandlerCpp +{ + using namespace ScriptCanvas; + + void CollectNodes(const GraphData::NodeContainer& container, SerializationListeners& listeners) + { + for (auto& nodeEntity : container) + { + if (nodeEntity) + { + if (auto listener = azrtti_cast(AZ::EntityUtils::FindFirstDerivedComponent(nodeEntity))) + { + listeners.push_back(listener); + } + } + } + } +} namespace ScriptCanvasEditor { @@ -84,7 +104,9 @@ namespace ScriptCanvasEditor auto* scriptCanvasAssetTarget = assetTarget.GetAs(); AZ_Assert(scriptCanvasAssetTarget, "This should be a ScriptCanvasAsset, as this is the only type we process!"); - if (scriptCanvasAssetTarget && m_serializeContext && streamSource) + if (m_serializeContext + && streamSource + && scriptCanvasAssetTarget) { streamSource->Seek(0U, AZ::IO::GenericStream::ST_SEEK_BEGIN); auto& scriptCanvasDataTarget = scriptCanvasAssetTarget->GetScriptCanvasData(); @@ -99,6 +121,7 @@ namespace ScriptCanvasEditor byteStreamSource.Seek(0U, AZ::IO::GenericStream::ST_SEEK_BEGIN); AZ::JsonDeserializerSettings settings; settings.m_serializeContext = m_serializeContext; + settings.m_metadata.Create(); // attempt JSON deserialization... if (JSRU::LoadObjectFromStreamByType ( &scriptCanvasDataTarget @@ -106,20 +129,40 @@ namespace ScriptCanvasEditor , byteStreamSource , &settings).IsSuccess()) { - return AZ::Data::AssetHandler::LoadResult::LoadComplete; - } + if (auto graphData = scriptCanvasAssetTarget->GetScriptCanvasGraph() + ? scriptCanvasAssetTarget->GetScriptCanvasGraph()->GetGraphData() + : nullptr) + { + auto listeners = settings.m_metadata.Find(); + AZ_Assert(listeners, "Failed to create SerializationListeners"); + ScriptCanvasAssetHandlerCpp::CollectNodes(graphData->m_nodes, *listeners); + + for (auto listener : *listeners) + { + listener->OnDeserialize(); + } + + return AZ::Data::AssetHandler::LoadResult::LoadComplete; + } + else + { + AZ_Warning("ScriptCanvas", false, "ScriptCanvasAssetHandler::LoadAssetData failed to load graph data from JOSON"); + } + } #if defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED)//// - // ...if there is a failure, check if it is saved in the old format - byteStreamSource.Seek(0U, AZ::IO::GenericStream::ST_SEEK_BEGIN); - // tolerate unknown classes in the editor. Let the asset processor warn about bad nodes... - if (AZ::Utils::LoadObjectFromStreamInPlace - ( byteStreamSource + else + {// ...if there is a failure, check if it is saved in the old format + byteStreamSource.Seek(0U, AZ::IO::GenericStream::ST_SEEK_BEGIN); + // tolerate unknown classes in the editor. Let the asset processor warn about bad nodes... + if (AZ::Utils::LoadObjectFromStreamInPlace + (byteStreamSource , scriptCanvasDataTarget , m_serializeContext , AZ::ObjectStream::FilterDescriptor(assetLoadFilterCB, AZ::ObjectStream::FILTERFLAG_IGNORE_UNKNOWN_CLASSES))) - { - return AZ::Data::AssetHandler::LoadResult::LoadComplete; + { + return AZ::Data::AssetHandler::LoadResult::LoadComplete; + } } #endif//defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED) } @@ -146,11 +189,26 @@ namespace ScriptCanvasEditor namespace JSRU = AZ::JsonSerializationUtils; using namespace ScriptCanvas; - if (assetData && stream && m_serializeContext) + if (m_serializeContext + && stream + && assetData + && assetData->GetScriptCanvasGraph() + && assetData->GetScriptCanvasGraph()->GetGraphData()) { + auto graphData = assetData->GetScriptCanvasGraph()->GetGraphData(); AZ::JsonSerializerSettings settings; + settings.m_metadata.Create(); + auto listeners = settings.m_metadata.Find(); + AZ_Assert(listeners, "Failed to create SerializationListeners"); + ScriptCanvasAssetHandlerCpp::CollectNodes(graphData->m_nodes, *listeners); settings.m_keepDefaults = false; settings.m_serializeContext = m_serializeContext; + + for (auto listener : *listeners) + { + listener->OnSerialize(); + } + return JSRU::SaveObjectToStream(&assetData->GetScriptCanvasData(), *stream, nullptr, &settings).IsSuccess(); } else diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja index ebf647c7e9..aec7f22344 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja @@ -44,18 +44,10 @@ namespace {{attribute_Namespace}} { {% endif %} {% set className = Class.attrib['Name'] %} -{% if Class.attrib['Base'] is defined %} -{% if Class.attrib['Base'].split(';')|length > 1 %} -{% set baseClass = Class.attrib['Base'].split(';')[0] %} -{% set baseClasses = ", ".join(Class.attrib['Base'].split(';')) %} -{% else %} -{% set baseClass = Class.attrib['Base'] %} -{% set baseClasses = Class.attrib['Base'] %} -{% endif %} -{% else %} -{% set baseClass = "ScriptCanvas::Node" %} -{% set baseClasses = "ScriptCanvas::Node" %} -{% endif %} +{% set baseClassPair = [] %} +{% if macros.CreateBaseClassVariables(Class, baseClassPair) %}{% endif %} +{% set baseClass = baseClassPair[0] %} +{% set baseClasses = baseClassPair[1] %} ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Source.jinja b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Source.jinja index 04c030acce..752ffd8bef 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Source.jinja +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Source.jinja @@ -4,6 +4,8 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT #} +{% import 'ScriptCanvas_Macros.jinja' as macros %} + {% macro add_attribute(attribute, tags) %} {% set value = tags[attribute] %} {% if value is defined %} @@ -26,18 +28,11 @@ SPDX-License-Identifier: Apache-2.0 OR MIT #include "{{ xml.attrib['Include'] }}" {% for Class in xml.iter('Class') %} -{% if Class.attrib['Base'] is defined %} -{% if Class.attrib['Base'].split(';')|length > 1 %} -{% set baseClass = Class.attrib['Base'].split(';')[0] %} -{% set baseClasses = ", ".join(Class.attrib['Base'].split(';')) %} -{% else %} -{% set baseClass = Class.attrib['Base'] %} -{% set baseClasses = Class.attrib['Base'] %} -{% endif %} -{% else %} -{% set baseClass = "ScriptCanvas::Node" %} -{% set baseClasses = "ScriptCanvas::Node" %} -{% endif %} +{% set baseClassPair = [] %} +{% if macros.CreateBaseClassVariables(Class, baseClassPair) %}{% endif %} +{% set baseClass = baseClassPair[0] %} +{% set baseClasses = baseClassPair[1] %} + void {{ Class.attrib['QualifiedName'] }}::ConfigureSlots() { {{ baseClass }}::ConfigureSlots(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvas_Macros.jinja b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvas_Macros.jinja index 508bf65454..ee2100d3f6 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvas_Macros.jinja +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvas_Macros.jinja @@ -173,11 +173,29 @@ AZStd::tuple<{{returnTypes|join(", ")}}> {# ------- #} +{# CreateBaseClassVariables #} +{# Creates "baseClass" and "baseClasses" variables to use when needed "baseClasses" is a comma separated list that in includes baseClass #} +{%- macro CreateBaseClassVariables(Class, baseClassPair) -%} +{% set baseAttrib = Class.attrib['Base'] %} +{% if baseAttrib is defined %} +{% if baseAttrib.split(';')|length > 1 %} +{% if baseClassPair.append(baseAttrib.split(';')[0]) %}{% endif %} +{% if baseClassPair.append(", ".join(baseAttrib.split(';'))) %}{% endif %} +{% else %} +{% if baseClassPair.append(baseAttrib) %}{% endif %} +{% if baseClassPair.append(baseAttrib) %}{% endif %} +{% endif %} +{% else %} +{% if baseClassPair.append("ScriptCanvas::Node") %}{% endif %} +{% if baseClassPair.append("ScriptCanvas::Node") %}{% endif %} +{% endif %} +{%- endmacro -%} +{# ------- #} {# ------------------------------------------------------------------------------------- #} {# NODEABLES #} -{# TODO-LS: This macro lacks parsing the parameters provided to a Contract tag #} +{# TODO: This macro lacks parsing the parameters provided to a Contract tag #} {%- macro AddContract(configurationName, item) -%} {% set contracts = [] %} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp index e1af284e00..ea0c98fd60 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp @@ -2041,21 +2041,6 @@ namespace ScriptCanvas } } - void Datum::OnSerializeBegin() - { - if (m_type.GetType() == Data::eType::BehaviorContextObject) - { - if (BehaviorContextObjectPtr ptr = (*AZStd::any_cast(&m_storage.value))) - { - ptr->OnSerializeBegin(); - } - else - { - AZ_Error("ScriptCanvas", false, AZStd::string::format("Datum type (%s) failed to serialized, did not store BehaviorContextObjectPtr properly", m_type.GetAZType().ToString().c_str()).c_str()); - } - } - } - void Datum::OnDeserialize() { if (m_type.GetType() == Data::eType::BehaviorContextObject) @@ -2080,14 +2065,9 @@ namespace ScriptCanvas } #if defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED)//// - void Datum::OnReadBegin() - { - OnSerializeBegin(); - } - void Datum::OnWriteEnd() { - OnSerializeEnd(); + OnDeserialize(); } #endif//defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h index df94c32559..2566149b6f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h @@ -240,13 +240,6 @@ namespace ScriptCanvas class SerializeContextEventHandler : public AZ::SerializeContext::IEventHandler { public: - /// Called after we are done writing to the instance pointed by classPtr. - void OnReadBegin(void* classPtr) override - { - Datum* datum = reinterpret_cast(classPtr); - datum->OnReadBegin(); - } - /// Called after we are done writing to the instance pointed by classPtr. void OnWriteEnd(void* classPtr) override { @@ -352,13 +345,9 @@ namespace ScriptCanvas void OnDatumEdited(); - void OnSerializeBegin() override; - void OnDeserialize() override; #if defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED)//// - void OnReadBegin(); - void OnWriteEnd(); #endif//defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SerializationListener.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SerializationListener.h index 90d8814d16..4a3771221d 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SerializationListener.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SerializationListener.h @@ -16,8 +16,7 @@ namespace ScriptCanvas AZ_RTTI(SerializationListener, "{CA4EE281-30B3-4928-BCD8-9305CE75E463}"); virtual ~SerializationListener() {} - virtual void OnSerializeBegin() {} - virtual void OnSerializeEnd() {} + virtual void OnSerialize() {} virtual void OnDeserialize() {} }; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.cpp index 2abeec6266..7bcf0b2282 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.cpp @@ -17,14 +17,6 @@ namespace ScriptCanvas { - void BehaviorContextObject::OnSerializeBegin() - { - if (!IsOwned()) - { - Clear(); - } - } - void BehaviorContextObject::Reflect(AZ::ReflectContext* reflection) { if (auto serializeContext = azrtti_cast(reflection)) @@ -104,6 +96,12 @@ namespace ScriptCanvas : BehaviorContextObjectPtr(aznew BehaviorContextObject(reference, GetAnyTypeInfoReference(typeID), referenceFlags)); } + void BehaviorContextObject::Deserialize(BehaviorContextObject& target, const AZ::BehaviorClass& behaviorClass, AZStd::any& source) + { + target.m_object = AZStd::move(AZStd::any(AZStd::any_cast(&source), GetAnyTypeInfoObject(behaviorClass))); + target.m_flags = Owned; + } + void BehaviorContextObject::release() { if (--m_referenceCount == 0) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.h index 8cb04801fc..b2e282dbe2 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/BehaviorContextObject.h @@ -22,6 +22,7 @@ namespace AZ { class ReflectContext; + class BehaviorContextObjectSerializer; } namespace ScriptCanvas @@ -30,6 +31,7 @@ namespace ScriptCanvas { friend struct AZStd::IntrusivePtrCountPolicy; friend class Datum; + friend class AZ::BehaviorContextObjectSerializer; public: AZ_TYPE_INFO(BehaviorContextObject, "{B735214D-5182-4536-B748-61EC83C1F007}"); @@ -81,6 +83,8 @@ namespace ScriptCanvas AZ_INLINE static BehaviorContextObject* CreateDefaultHeap(const AZ::BehaviorClass& behaviorClass); + static void Deserialize(BehaviorContextObject& target, const AZ::BehaviorClass& behaviorClass, AZStd::any& source); + // use the SSO optimization on behavior class size ALIGNED with a placement new of behavior class create AZ_FORCE_INLINE static AnyTypeInfo GetAnyTypeInfoObject(const AZ::BehaviorClass& behaviorClass); @@ -104,10 +108,10 @@ namespace ScriptCanvas //...so don't use the ctors, use the Create functions... //...the friend declarations are here for compatibility with the serialization system only AZ_FORCE_INLINE BehaviorContextObject() = default; - - BehaviorContextObject& operator=(const BehaviorContextObject&) = delete; - - BehaviorContextObject(const BehaviorContextObject&) = delete; + BehaviorContextObject& operator=(const BehaviorContextObject&) = default; + BehaviorContextObject(const BehaviorContextObject&) = default; + BehaviorContextObject(BehaviorContextObject&&) = default; + BehaviorContextObject& operator=(BehaviorContextObject&& source) = default; // copy ctor AZ_FORCE_INLINE BehaviorContextObject(const void* source, const AnyTypeInfo& typeInfo, AZ::u32 flags); @@ -119,8 +123,6 @@ namespace ScriptCanvas AZ_FORCE_INLINE bool IsOwned() const; - void OnSerializeBegin(); - AZ_FORCE_INLINE void add_ref(); void release(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.cpp index 6de72af292..f49fcb3318 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.cpp @@ -188,6 +188,7 @@ namespace ScriptCanvas RefreshActiveIndexes(); ConfigureContracts(); + SetWarnOnMissingFunction(true); } SlotId MethodOverloaded::AddMethodInputSlot(const MethodConfiguration& config, size_t argumentIndex) @@ -400,10 +401,6 @@ namespace ScriptCanvas } #if defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED)//// - void MethodOverloaded::OnWriteBegin() - { - } - void MethodOverloaded::OnWriteEnd() { OnDeserialize(); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.h index 5c92bf1841..b880f68862 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/MethodOverloaded.h @@ -97,8 +97,7 @@ namespace ScriptCanvas // SerializeContextReadWriteHandler void OnReadBegin() {} void OnReadEnd() {} - - void OnWriteBegin(); + void OnWriteBegin() {} void OnWriteEnd(); #endif//defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.cpp new file mode 100644 index 0000000000..0f965b012f --- /dev/null +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.cpp @@ -0,0 +1,149 @@ +/* + * 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 + +using namespace ScriptCanvas; + +namespace AZ +{ + AZ_CLASS_ALLOCATOR_IMPL(BehaviorContextObjectSerializer, SystemAllocator, 0); + + JsonSerializationResult::Result BehaviorContextObjectSerializer::Load + ( void* outputValue + , [[maybe_unused]] const Uuid& outputValueTypeId + , const rapidjson::Value& inputValue + , JsonDeserializerContext& context) + { + namespace JSR = JsonSerializationResult; + + AZ_Assert(outputValueTypeId == azrtti_typeid(), "BehaviorContextObjectSerializer Load against output typeID" + "that was not BehaviorContextObject"); + AZ_Assert(outputValue, "BehaviorContextObjectSerializer Load against null output"); + + JsonSerializationResult::ResultCode result(JSR::Tasks::ReadField); + auto outputBehaviorContextObject = reinterpret_cast(outputValue); + + bool isOwned = false; + result.Combine(ContinueLoadingFromJsonObjectField + ( &isOwned + , azrtti_typeid() + , inputValue + , "isOwned" + , context)); + + if (isOwned) + { + AZStd::any storage; + { // any storage begin + + auto typeIdMember = inputValue.FindMember(JsonSerialization::TypeIdFieldIdentifier); + if (typeIdMember == inputValue.MemberEnd()) + { + return context.Report + (JSR::Tasks::ReadField + , JSR::Outcomes::Missing + , AZStd::string::format("BehaviorContextObjectSerializer::Load failed to load the %s member" + , JsonSerialization::TypeIdFieldIdentifier)); + } + + AZ::Uuid typeId; + result.Combine(LoadTypeId(typeId, typeIdMember->value, context)); + if (typeId.IsNull()) + { + return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Catastrophic + , "BehaviorContextObjectSerializer::Load failed to load the AZ TypeId of the value"); + } + + storage = context.GetSerializeContext()->CreateAny(typeId); + if (storage.empty() || storage.type() != typeId) + { + return context.Report(result, "BehaviorContextObjectSerializer::Load failed to load a value matched the reported AZ " + "TypeId. The C++ declaration may have been deleted or changed."); + } + + result.Combine(ContinueLoadingFromJsonObjectField(AZStd::any_cast(&storage), typeId, inputValue, "value", context)); + } // any storage end + + auto bcClass = AZ::BehaviorContextHelper::GetClass(storage.type()); + BehaviorContextObject::Deserialize(*outputBehaviorContextObject, *bcClass, storage); + } + + return context.Report(result, result.GetProcessing() != JSR::Processing::Halted + ? "BehaviorContextObjectSerializer Load finished loading BehaviorContextObject" + : "BehaviorContextObjectSerializer Load failed to load BehaviorContextObject"); + } + + JsonSerializationResult::Result BehaviorContextObjectSerializer::Store + ( rapidjson::Value& outputValue + , const void* inputValue + , const void* defaultValue + , [[maybe_unused]] const Uuid& valueTypeId + , JsonSerializerContext& context) + { + namespace JSR = JsonSerializationResult; + + AZ_Assert(valueTypeId == azrtti_typeid(), "BehaviorContextObjectSerializer Store against value typeID that " + "was not BehaviorContextObject"); + AZ_Assert(inputValue, "BehaviorContextObjectSerializer Store against null inputValue pointer "); + + auto defaultScriptDataPtr = reinterpret_cast(defaultValue); + auto inputScriptDataPtr = reinterpret_cast(inputValue); + + if (defaultScriptDataPtr) + { + if (AZ::Helpers::CompareAnyValue(inputScriptDataPtr->ToAny(), defaultScriptDataPtr->ToAny())) + { + return context.Report + ( JSR::Tasks::WriteValue, JSR::Outcomes::DefaultsUsed, "BehaviorContextObjectSerializer Store used defaults " + "for BehaviorContextObject"); + } + } + + outputValue.SetObject(); + JSR::ResultCode result(JSR::Tasks::WriteValue); + const bool isInputOwned = inputScriptDataPtr->IsOwned(); + const bool isDefaultOwned = defaultScriptDataPtr ? defaultScriptDataPtr->IsOwned() : false; + result.Combine(ContinueStoringToJsonObjectField + ( outputValue + , "isOwned" + , &isInputOwned + , &isDefaultOwned + , azrtti_typeid() + , context)); + + if (isInputOwned) + { + // any storage begin + { + rapidjson::Value typeValue; + result.Combine(StoreTypeId(typeValue, inputScriptDataPtr->ToAny().type(), context)); + outputValue.AddMember + ( rapidjson::StringRef(JsonSerialization::TypeIdFieldIdentifier) + , AZStd::move(typeValue) + , context.GetJsonAllocator()); + } + + result.Combine(ContinueStoringToJsonObjectField + ( outputValue + , "value" + , inputScriptDataPtr->Get() + , defaultScriptDataPtr ? defaultScriptDataPtr->Get() : nullptr + , inputScriptDataPtr->ToAny().type() + , context)); + // datum storage end + } + + return context.Report(result, result.GetProcessing() != JSR::Processing::Halted + ? "BehaviorContextObjectSerializer Store finished saving BehaviorContextObject" + : "BehaviorContextObjectSerializer Store failed to save BehaviorContextObject"); + } +} diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/GraphDataSerializer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.h similarity index 86% rename from Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/GraphDataSerializer.h rename to Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.h index e7f91eccb3..012bb71680 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/GraphDataSerializer.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.h @@ -14,11 +14,11 @@ namespace AZ { - class GraphDataSerializer + class BehaviorContextObjectSerializer : public BaseJsonSerializer { public: - AZ_RTTI(GraphDataSerializer, "{2DFF5794-785F-4434-9314-52BB3EF1D00E}", BaseJsonSerializer); + AZ_RTTI(BehaviorContextObjectSerializer, "{88469C4C-923F-4508-A45C-33DDBB91074E}", BaseJsonSerializer); AZ_CLASS_ALLOCATOR_DECL; private: diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp index aecf0f3db7..5bfb69b11e 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp @@ -50,10 +50,23 @@ namespace AZ , "scriptCanvasType" , context)); - AZStd::any storage; - { // datum storage begin - AZ::Uuid typeId = AZ::Uuid::CreateNull(); + // datum storage begin + auto isNullPointerMember = inputValue.FindMember("isNullPointer"); + if (isNullPointerMember == inputValue.MemberEnd()) + { + return context.Report + ( JSR::Tasks::ReadField + , JSR::Outcomes::Missing + , "DatumSerializer::Load failed to load the 'isNullPointer'' member"); + } + if (isNullPointerMember->value.GetBool()) + { + *outputDatum = Datum(scType, Datum::eOriginality::Original); + } + else + { + AZ::Uuid typeId = AZ::Uuid::CreateNull(); auto typeIdMember = inputValue.FindMember(JsonSerialization::TypeIdFieldIdentifier); if (typeIdMember == inputValue.MemberEnd()) { @@ -71,7 +84,7 @@ namespace AZ , "DatumSerializer::Load failed to load the AZ TypeId of the value"); } - storage = context.GetSerializeContext()->CreateAny(typeId); + AZStd::any storage = context.GetSerializeContext()->CreateAny(typeId); if (storage.empty() || storage.type() != typeId) { return context.Report(result, "DatumSerializer::Load failed to load a value matched the reported AZ TypeId. " @@ -79,24 +92,25 @@ namespace AZ } result.Combine(ContinueLoadingFromJsonObjectField(AZStd::any_cast(&storage), typeId, inputValue, "value", context)); + *outputDatum = Datum(scType, Datum::eOriginality::Original, AZStd::any_cast(&storage), scType.GetAZType()); } // datum storage end AZStd::string label; AZ_Assert(azrtti_typeidm_datumLabel)>() == azrtti_typeid() , "m_datumLabel type changed and won't load properly"); - result.Combine(ContinueLoadingFromJsonObjectField ( &label , azrtti_typeidm_datumLabel)>() , inputValue , "label" , context)); + outputDatum->SetLabel(label); - Datum copy(scType, Datum::eOriginality::Original, AZStd::any_cast(&storage), scType.GetAZType()); - copy.SetLabel(label); - *outputDatum = copy; - outputDatum->OnDeserialize(); - + if (auto listeners = context.GetMetadata().Find()) + { + listeners->push_back(outputDatum); + } + return context.Report(result, result.GetProcessing() != JSR::Processing::Halted ? "DatumSerializer Load finished loading Datum" : "DatumSerializer Load failed to load Datum"); @@ -126,8 +140,6 @@ namespace AZ } } - const_cast(inputScriptDataPtr)->OnSerializeBegin(); - JSR::ResultCode result(JSR::Tasks::WriteValue); outputValue.SetObject(); @@ -146,25 +158,31 @@ namespace AZ , defaultScriptDataPtr ? &defaultScriptDataPtr->GetType() : nullptr , azrtti_typeidGetType())>() , context)); - - { // datum storage begin - { - rapidjson::Value typeValue; - result.Combine(StoreTypeId(typeValue, inputScriptDataPtr->GetType().GetAZType(), context)); - outputValue.AddMember - ( rapidjson::StringRef(JsonSerialization::TypeIdFieldIdentifier) - , AZStd::move(typeValue) - , context.GetJsonAllocator()); - } + + // datum storage begin + auto inputObjectSource = inputScriptDataPtr->GetAsDanger(); + outputValue.AddMember("isNullPointer", rapidjson::Value(inputObjectSource == nullptr), context.GetJsonAllocator()); + + if (inputObjectSource) + { + rapidjson::Value typeValue; + result.Combine(StoreTypeId(typeValue, inputScriptDataPtr->GetType().GetAZType(), context)); + outputValue.AddMember + ( rapidjson::StringRef(JsonSerialization::TypeIdFieldIdentifier) + , AZStd::move(typeValue) + , context.GetJsonAllocator()); + + auto defaultObjectSource = defaultScriptDataPtr ? defaultScriptDataPtr->GetAsDanger() : nullptr; result.Combine(ContinueStoringToJsonObjectField ( outputValue , "value" - , inputScriptDataPtr->GetAsDanger() - , defaultScriptDataPtr ? defaultScriptDataPtr->GetAsDanger() : nullptr + , inputObjectSource + , defaultObjectSource , inputScriptDataPtr->GetType().GetAZType() , context)); - } // datum storage end + } + // datum storage end result.Combine(ContinueStoringToJsonObjectField ( outputValue @@ -174,7 +192,6 @@ namespace AZ , azrtti_typeidm_datumLabel)>() , context)); - const_cast(inputScriptDataPtr)->OnSerializeEnd(); return context.Report(result, result.GetProcessing() != JSR::Processing::Halted ? "DatumSerializer Store finished saving Datum" : "DatumSerializer Store failed to save Datum"); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/GraphDataSerializer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/GraphDataSerializer.cpp deleted file mode 100644 index ff284fce85..0000000000 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/GraphDataSerializer.cpp +++ /dev/null @@ -1,100 +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 - -using namespace ScriptCanvas; - -namespace GraphDataSerializerCpp -{ - void CollectNodes(const GraphData::NodeContainer& container, SerializationListeners& listeners) - { - for (auto& nodeEntity : container) - { - if (nodeEntity) - { - if (auto listener = azrtti_cast(AZ::EntityUtils::FindFirstDerivedComponent(nodeEntity))) - { - listeners.push_back(listener); - } - } - } - } -} - -namespace AZ -{ - AZ_CLASS_ALLOCATOR_IMPL(GraphDataSerializer, SystemAllocator, 0); - - JsonSerializationResult::Result GraphDataSerializer::Load - ( void* outputValue - , [[maybe_unused]] const Uuid& outputValueTypeId - , const rapidjson::Value& inputValue - , JsonDeserializerContext& context) - { - namespace JSR = JsonSerializationResult; - - AZ_Assert(outputValueTypeId == azrtti_typeid() - , "RuntimeVariableSerializer Load against output typeID that was not GraphData"); - AZ_Assert(outputValue, "RuntimeVariableSerializer Load against null output"); - context.GetMetadata().Add(SerializationListeners()); - JSR::ResultCode result(JSR::Tasks::ReadField); - result.Combine(ContinueLoading(outputValue, outputValueTypeId, inputValue, context, ContinuationFlags::NoTypeSerializer)); - auto listeners = context.GetMetadata().Find(); - AZ_Assert(listeners, "Failed to create SerializationListeners"); - GraphDataSerializerCpp::CollectNodes(reinterpret_cast(outputValue)->m_nodes, *listeners); - - for (auto listener : *listeners) - { - listener->OnDeserialize(); - } - - reinterpret_cast(outputValue)->OnDeserialized(); - - return context.Report(result, result.GetProcessing() != JSR::Processing::Halted - ? "GraphDataSerializer Load finished loading GraphData" - : "GraphDataSerializer Load failed to load GraphData"); - } - - JsonSerializationResult::Result GraphDataSerializer::Store - ( rapidjson::Value& outputValue - , const void* inputValue - , const void* defaultValue - , [[maybe_unused]] const Uuid& valueTypeId - , JsonSerializerContext& context) - { - namespace JSR = JsonSerializationResult; - - AZ_Assert(valueTypeId == azrtti_typeid() - , "RuntimeVariableSerializer Store against output typeID that was not GraphData"); - AZ_Assert(inputValue, "RuntimeVariableSerializer Store against null output"); - context.GetMetadata().Add(SerializationListeners()); - auto listeners = context.GetMetadata().Find(); - GraphDataSerializerCpp::CollectNodes(reinterpret_cast(inputValue)->m_nodes, *listeners); - - for (auto listener : *listeners) - { - listener->OnSerializeBegin(); - } - - JSR::ResultCode result(JSR::Tasks::WriteValue); - result.Combine(ContinueStoring(outputValue, inputValue, defaultValue, valueTypeId, context, ContinuationFlags::NoTypeSerializer)); - - for (auto listener : *listeners) - { - listener->OnSerializeEnd(); - } - - return context.Report(result, result.GetProcessing() != JSR::Processing::Halted - ? "GraphDataSerializer::Store finished storing GraphData" - : "GraphDataSerializer::Store failed to store GraphData"); - } -} diff --git a/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp b/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp index 9069592755..26af95fa8e 100644 --- a/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp +++ b/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include #include @@ -90,7 +90,7 @@ namespace ScriptCanvas if (AZ::JsonRegistrationContext* jsonContext = azrtti_cast(context)) { jsonContext->Serializer()->HandlesType(); - jsonContext->Serializer()->HandlesType(); + jsonContext->Serializer()->HandlesType(); jsonContext->Serializer()->HandlesType(); } diff --git a/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake b/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake index 49da9565f3..7984340b7a 100644 --- a/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake +++ b/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake @@ -540,10 +540,10 @@ set(FILES Include/ScriptCanvas/Profiler/Aggregator.cpp Include/ScriptCanvas/Profiler/DrillerEvents.h Include/ScriptCanvas/Profiler/DrillerEvents.cpp + Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.h + Include/ScriptCanvas/Serialization/BehaviorContextObjectSerializer.cpp Include/ScriptCanvas/Serialization/DatumSerializer.h Include/ScriptCanvas/Serialization/DatumSerializer.cpp - Include/ScriptCanvas/Serialization/GraphDataSerializer.cpp - Include/ScriptCanvas/Serialization/GraphDataSerializer.h Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp Include/ScriptCanvas/Data/DataTrait.cpp diff --git a/Gems/ScriptCanvasTesting/Assets/ScriptCanvas/UnitTests/LY_SC_UnitTest_PathologicalFlowOfControl.scriptcanvas b/Gems/ScriptCanvasTesting/Assets/ScriptCanvas/UnitTests/LY_SC_UnitTest_PathologicalFlowOfControl.scriptcanvas index 54dbf2e35e..c7de07141a 100644 --- a/Gems/ScriptCanvasTesting/Assets/ScriptCanvas/UnitTests/LY_SC_UnitTest_PathologicalFlowOfControl.scriptcanvas +++ b/Gems/ScriptCanvasTesting/Assets/ScriptCanvas/UnitTests/LY_SC_UnitTest_PathologicalFlowOfControl.scriptcanvas @@ -1,11310 +1,7032 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +{ + "Type": "JsonSerialization", + "Version": 1, + "ClassName": "ScriptCanvasData", + "ClassData": { + "m_scriptCanvas": { + "Id": { + "id": 31042647073491 + }, + "Name": "LY_SC_UnitTest_PathologicalFlowOfControl", + "Components": { + "Component_[3557501584054890409]": { + "$type": "{4D755CA9-AB92-462C-B24F-0B3376F19967} Graph", + "Id": 3557501584054890409, + "m_graphData": { + "m_nodes": [ + { + "Id": { + "id": 31059826942675 + }, + "Name": "EBusEventHandler", + "Components": { + "Component_[10251308001417185158]": { + "$type": "EBusEventHandler", + "Id": 10251308001417185158, + "Slots": [ + { + "id": { + "m_id": "{C189EE08-DC89-4AF2-88BC-B564F84F28A6}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Connect", + "toolTip": "Connect this event handler to the specified entity.", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{10BB0A14-C955-464E-8745-7FBC88E24049}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Disconnect", + "toolTip": "Disconnect this event handler.", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{A7026536-ED61-48CA-8329-601DACF8A178}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "OnConnected", + "toolTip": "Signaled when a connection has taken place.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{95E02974-9E1C-407C-94DA-087C5B4EC55C}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "OnDisconnected", + "toolTip": "Signaled when this event handler is disconnected.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{42C5EF09-0843-4478-8BFF-0401009FACEA}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "OnFailure", + "toolTip": "Signaled when it is not possible to connect this handler.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{CC23FBA6-EBA5-43DF-AB98-3024D4A01B21}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Number", + "DisplayDataType": { + "m_type": 3 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{D85921A2-82C6-4DE1-8DB0-DC93E80CD72B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "ScriptTimePoint", + "DisplayDataType": { + "m_type": 4, + "m_azType": "{4C0F6AD4-0D4F-4354-AD4A-0C01E948245C}" + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{99FA955C-7E6E-4539-85B0-16CBFBB1F0E3}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "ExecutionSlot:OnTick", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + }, + "IsLatent": true + }, + { + "id": { + "m_id": "{3F00BC02-DBFB-4D4C-B5FD-4BE1C831E7AF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Result: Number", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{3BAF3F8C-54A2-4AD7-82F2-9EBB4AEF48EF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "ExecutionSlot:GetTickOrder", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + }, + "IsLatent": true + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Result: Number" + } + ], + "m_eventMap": [ + { + "Key": { + "Value": 1502188240 + }, + "Value": { + "m_eventName": "OnTick", + "m_eventId": { + "Value": 1502188240 + }, + "m_eventSlotId": { + "m_id": "{99FA955C-7E6E-4539-85B0-16CBFBB1F0E3}" + }, + "m_parameterSlotIds": [ + { + "m_id": "{CC23FBA6-EBA5-43DF-AB98-3024D4A01B21}" + }, + { + "m_id": "{D85921A2-82C6-4DE1-8DB0-DC93E80CD72B}" + } + ], + "m_numExpectedArguments": 2 + } + }, + { + "Key": { + "Value": 1890826333 + }, + "Value": { + "m_eventName": "GetTickOrder", + "m_eventId": { + "Value": 1890826333 + }, + "m_eventSlotId": { + "m_id": "{3BAF3F8C-54A2-4AD7-82F2-9EBB4AEF48EF}" + }, + "m_resultSlotId": { + "m_id": "{3F00BC02-DBFB-4D4C-B5FD-4BE1C831E7AF}" + } + } + } + ], + "m_ebusName": "TickBus", + "m_busId": { + "Value": 1209186864 + }, + "m_autoConnectToGraphOwner": false + } + } + }, + { + "Id": { + "id": 31119956484819 + }, + "Name": "EBusEventHandler", + "Components": { + "Component_[10251308001417185158]": { + "$type": "EBusEventHandler", + "Id": 10251308001417185158, + "Slots": [ + { + "id": { + "m_id": "{C189EE08-DC89-4AF2-88BC-B564F84F28A6}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Connect", + "toolTip": "Connect this event handler to the specified entity.", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{10BB0A14-C955-464E-8745-7FBC88E24049}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Disconnect", + "toolTip": "Disconnect this event handler.", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{A7026536-ED61-48CA-8329-601DACF8A178}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "OnConnected", + "toolTip": "Signaled when a connection has taken place.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{95E02974-9E1C-407C-94DA-087C5B4EC55C}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "OnDisconnected", + "toolTip": "Signaled when this event handler is disconnected.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{42C5EF09-0843-4478-8BFF-0401009FACEA}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "OnFailure", + "toolTip": "Signaled when it is not possible to connect this handler.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{CC23FBA6-EBA5-43DF-AB98-3024D4A01B21}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Number", + "DisplayDataType": { + "m_type": 3 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{D85921A2-82C6-4DE1-8DB0-DC93E80CD72B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "ScriptTimePoint", + "DisplayDataType": { + "m_type": 4, + "m_azType": "{4C0F6AD4-0D4F-4354-AD4A-0C01E948245C}" + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{99FA955C-7E6E-4539-85B0-16CBFBB1F0E3}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "ExecutionSlot:OnTick", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + }, + "IsLatent": true + }, + { + "id": { + "m_id": "{3F00BC02-DBFB-4D4C-B5FD-4BE1C831E7AF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Result: Number", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{3BAF3F8C-54A2-4AD7-82F2-9EBB4AEF48EF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "ExecutionSlot:GetTickOrder", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + }, + "IsLatent": true + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Result: Number" + } + ], + "m_eventMap": [ + { + "Key": { + "Value": 1502188240 + }, + "Value": { + "m_eventName": "OnTick", + "m_eventId": { + "Value": 1502188240 + }, + "m_eventSlotId": { + "m_id": "{99FA955C-7E6E-4539-85B0-16CBFBB1F0E3}" + }, + "m_parameterSlotIds": [ + { + "m_id": "{CC23FBA6-EBA5-43DF-AB98-3024D4A01B21}" + }, + { + "m_id": "{D85921A2-82C6-4DE1-8DB0-DC93E80CD72B}" + } + ], + "m_numExpectedArguments": 2 + } + }, + { + "Key": { + "Value": 1890826333 + }, + "Value": { + "m_eventName": "GetTickOrder", + "m_eventId": { + "Value": 1890826333 + }, + "m_eventSlotId": { + "m_id": "{3BAF3F8C-54A2-4AD7-82F2-9EBB4AEF48EF}" + }, + "m_resultSlotId": { + "m_id": "{3F00BC02-DBFB-4D4C-B5FD-4BE1C831E7AF}" + } + } + } + ], + "m_ebusName": "TickBus", + "m_busId": { + "Value": 1209186864 + }, + "m_autoConnectToGraphOwner": false + } + } + }, + { + "Id": { + "id": 31128546419411 + }, + "Name": "SC-Node(Or)", + "Components": { + "Component_[10667361034986907134]": { + "$type": "Or", + "Id": 10667361034986907134, + "Slots": [ + { + "id": { + "m_id": "{78999179-DFFF-450B-B66E-A4C4E1638F0C}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Result", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{C5E1B10E-FDFA-45F8-B6AF-BD9C672986FC}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Signal to perform the evaluation when desired.", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{7FED3519-4670-4B3D-B81F-44393C2D7787}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "True", + "toolTip": "Signaled if the result of the operation is true.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{E2D1192C-902D-4C82-9DE4-BBC20B31A54B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "False", + "toolTip": "Signaled if the result of the operation is false.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{E8D87D3B-0974-4937-BEC5-8AE3BED5EBC2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Value A", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{56CECF75-DEC3-4491-85E6-7C0CE4B950D4}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Value B", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 0 + }, + "isNullPointer": false, + "$type": "bool", + "value": false, + "label": "Value A" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 0 + }, + "isNullPointer": false, + "$type": "bool", + "value": false, + "label": "Value B" + } + ] + } + } + }, + { + "Id": { + "id": 31068416877267 + }, + "Name": "SC-Node(OperatorAdd)", + "Components": { + "Component_[10710360517941107527]": { + "$type": "OperatorAdd", + "Id": 10710360517941107527, + "Slots": [ + { + "id": { + "m_id": "{CDEA58A6-1B59-4476-B26E-0D5A828F35C7}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{5E66E5C1-AE26-4919-BFD7-66EC6DE9B7BB}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{6EA79D99-58BC-485B-8015-3B85753F522A}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + } + }, + { + "id": { + "m_id": "{A0CEC830-6910-452B-B850-75B6F727C455}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{5AAA51D3-6C26-4D13-91E2-4D2A8B33C7F0}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Result", + "toolTip": "The result of the specified operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + } + ] + } + } + }, + { + "Id": { + "id": 31077006811859 + }, + "Name": "SC-Node(OperatorAdd)", + "Components": { + "Component_[10710360517941107527]": { + "$type": "OperatorAdd", + "Id": 10710360517941107527, + "Slots": [ + { + "id": { + "m_id": "{CDEA58A6-1B59-4476-B26E-0D5A828F35C7}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{5E66E5C1-AE26-4919-BFD7-66EC6DE9B7BB}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{6EA79D99-58BC-485B-8015-3B85753F522A}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + } + }, + { + "id": { + "m_id": "{A0CEC830-6910-452B-B850-75B6F727C455}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{5AAA51D3-6C26-4D13-91E2-4D2A8B33C7F0}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Result", + "toolTip": "The result of the specified operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + } + ] + } + } + }, + { + "Id": { + "id": 31132841386707 + }, + "Name": "SC-Node(And)", + "Components": { + "Component_[11788551755091650733]": { + "$type": "And", + "Id": 11788551755091650733, + "Slots": [ + { + "id": { + "m_id": "{46CFA92C-E217-41E2-BC0A-C7C4BA7D3060}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Result", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{FAFAB55A-69F1-495D-82FC-7D36F7842DA9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Signal to perform the evaluation when desired.", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{5BDD309F-0047-43E9-A911-475E47A036EC}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "True", + "toolTip": "Signaled if the result of the operation is true.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{7438C80C-9044-442D-8C71-827AB7DC3F0B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "False", + "toolTip": "Signaled if the result of the operation is false.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{0D33ACC4-1331-4F0C-AA29-8863E5312983}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Value A", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{E3D62E2D-145C-4931-9FC8-CFE6CEB2FF64}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Value B", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 0 + }, + "isNullPointer": false, + "$type": "bool", + "value": false, + "label": "Value A" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 0 + }, + "isNullPointer": false, + "$type": "bool", + "value": false, + "label": "Value B" + } + ] + } + } + }, + { + "Id": { + "id": 31150021255891 + }, + "Name": "SC-Node(ExtractProperty)", + "Components": { + "Component_[11797457255651779243]": { + "$type": "ExtractProperty", + "Id": 11797457255651779243, + "Slots": [ + { + "id": { + "m_id": "{EADFB5B4-ADE0-4935-A102-99F8EC0C711A}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "When signaled assigns property values using the supplied source input", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{AC7594DE-A7F0-4519-9E07-0350AEEB25E0}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "toolTip": "Signaled after all property haves have been pushed to the output slots", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{0C6BA77F-004F-4229-963F-EF6D6912A5BB}" + }, + "DynamicTypeOverride": 1, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Source", + "toolTip": "The value on which to extract properties from.", + "DisplayDataType": { + "m_type": 3 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Source" + } + ], + "m_dataType": { + "m_type": 3 + } + } + } + }, + { + "Id": { + "id": 31154316223187 + }, + "Name": "SC-Node(ExtractProperty)", + "Components": { + "Component_[11797457255651779243]": { + "$type": "ExtractProperty", + "Id": 11797457255651779243, + "Slots": [ + { + "id": { + "m_id": "{EADFB5B4-ADE0-4935-A102-99F8EC0C711A}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "When signaled assigns property values using the supplied source input", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{AC7594DE-A7F0-4519-9E07-0350AEEB25E0}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "toolTip": "Signaled after all property haves have been pushed to the output slots", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{0C6BA77F-004F-4229-963F-EF6D6912A5BB}" + }, + "DynamicTypeOverride": 1, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Source", + "toolTip": "The value on which to extract properties from.", + "DisplayDataType": { + "m_type": 3 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Source" + } + ], + "m_dataType": { + "m_type": 3 + } + } + } + }, + { + "Id": { + "id": 31089891713747 + }, + "Name": "SC-Node(ForEach)", + "Components": { + "Component_[11912058231419650479]": { + "$type": "ForEach", + "Id": 11912058231419650479, + "Slots": [ + { + "id": { + "m_id": "{B107E73D-A250-4019-BBF7-9085AEE354B6}" + }, + "DynamicTypeOverride": 2, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Source", + "DisplayDataType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 3089028177 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{39DB51CB-AA6E-4B3A-93EC-D622C44B3F4B}" + } + }, + { + "id": { + "m_id": "{A9E6B254-446D-492F-B2CF-929CDC04ABFF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Signaled upon node entry", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{B24CD5F3-DE2B-42E9-BD45-0BCFF5A3D4B9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Break", + "toolTip": "Stops the iteration when signaled", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{8A4B7BED-4921-4C08-B35B-56D129A630E9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Each", + "toolTip": "Signalled after each element of the container", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{0DEFFE74-9D9C-4E18-AFA2-12B1657F7D1D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Finished", + "toolTip": "The container has been fully iterated over", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{EDA1A957-FC80-4305-9797-1CC2699D13F8}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Boolean", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "isNullPointer": true, + "label": "Source" + } + ], + "m_sourceSlot": { + "m_id": "{B107E73D-A250-4019-BBF7-9085AEE354B6}" + }, + "m_previousTypeId": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "m_propertySlots": [ + { + "m_propertySlotId": { + "m_id": "{EDA1A957-FC80-4305-9797-1CC2699D13F8}" + }, + "m_propertyType": { + "m_type": 0 + }, + "m_propertyName": "Boolean" + } + ] + } + } + }, + { + "Id": { + "id": 31145726288595 + }, + "Name": "SC-Node(ForEach)", + "Components": { + "Component_[11912058231419650479]": { + "$type": "ForEach", + "Id": 11912058231419650479, + "Slots": [ + { + "id": { + "m_id": "{B107E73D-A250-4019-BBF7-9085AEE354B6}" + }, + "DynamicTypeOverride": 2, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Source", + "DisplayDataType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 3089028177 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{39DB51CB-AA6E-4B3A-93EC-D622C44B3F4B}" + } + }, + { + "id": { + "m_id": "{A9E6B254-446D-492F-B2CF-929CDC04ABFF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Signaled upon node entry", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{B24CD5F3-DE2B-42E9-BD45-0BCFF5A3D4B9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Break", + "toolTip": "Stops the iteration when signaled", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{8A4B7BED-4921-4C08-B35B-56D129A630E9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Each", + "toolTip": "Signalled after each element of the container", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{0DEFFE74-9D9C-4E18-AFA2-12B1657F7D1D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Finished", + "toolTip": "The container has been fully iterated over", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{EDA1A957-FC80-4305-9797-1CC2699D13F8}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Boolean", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "isNullPointer": true, + "label": "Source" + } + ], + "m_sourceSlot": { + "m_id": "{B107E73D-A250-4019-BBF7-9085AEE354B6}" + }, + "m_previousTypeId": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "m_propertySlots": [ + { + "m_propertySlotId": { + "m_id": "{EDA1A957-FC80-4305-9797-1CC2699D13F8}" + }, + "m_propertyType": { + "m_type": 0 + }, + "m_propertyName": "Boolean" + } + ] + } + } + }, + { + "Id": { + "id": 31115661517523 + }, + "Name": "SC-Node(OperatorMul)", + "Components": { + "Component_[13237430188878581756]": { + "$type": "OperatorMul", + "Id": 13237430188878581756, + "Slots": [ + { + "id": { + "m_id": "{2D2F75D9-A1FB-4D70-86EF-8518E119DB07}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{7A580403-C074-4DAD-A65E-BF928EF19DC8}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{CD4A3CE3-F0A5-4E82-BC6D-1AD9F2596A7E}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "OperatorType": "Multiply", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 7 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + } + }, + { + "id": { + "m_id": "{D662CA74-64EF-4D8F-BC80-D222A4990F3E}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "OperatorType": "Multiply", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 7 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{EC0D7AE5-C51F-48EE-BD42-10712F131C57}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + { + "$type": "MathOperatorContract", + "OperatorType": "Multiply", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 7 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Result", + "toolTip": "The result of the specified operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 1.0, + "label": "Number" + } + ] + } + } + }, + { + "Id": { + "id": 31098481648339 + }, + "Name": "SC-Node(MarkComplete)", + "Components": { + "Component_[13763264706969284951]": { + "$type": "{E42861BD-1956-45AE-8DD7-CCFC1E3E5ACF} Method", + "Id": 13763264706969284951, + "Slots": [ + { + "isVisibile": false, + "id": { + "m_id": "{A438327C-87F6-43C3-A1E2-C4BDAADA8C5D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "EntityID: 0", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{D2BCC38E-DA18-41ED-9B80-DB5602A9DB26}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Report", + "toolTip": "additional notes for the test report", + "DisplayDataType": { + "m_type": 5 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{79C2ABDD-F20A-4042-BF5C-8C09DC9332C7}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{11965287-6D28-49B7-B387-3728356C2E0D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 1 + }, + "isNullPointer": false, + "$type": "EntityId", + "value": { + "id": 4276206253 + } + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 5 + }, + "isNullPointer": false, + "$type": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9} AZStd::string", + "value": "", + "label": "Report" + } + ], + "methodType": 2, + "methodName": "Mark Complete", + "className": "Unit Testing", + "resultSlotIDs": [ + {} + ], + "prettyClassName": "Unit Testing" + } + } + }, + { + "Id": { + "id": 31094186681043 + }, + "Name": "SC-Node(Not)", + "Components": { + "Component_[17238549219073370854]": { + "$type": "Not", + "Id": 17238549219073370854, + "Slots": [ + { + "id": { + "m_id": "{54D7FBC6-7B2A-4A3E-AD8C-F28A7C4C353D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Value", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{41EB5D06-DA39-434B-81D5-3E82A375C897}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Result", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{120C810C-F84A-445F-82E1-FD06CD3AD9B7}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Signal to perform the evaluation when desired.", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{6E82DFA3-70F4-419F-9971-AD243313E8D9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "True", + "toolTip": "Signaled if the result of the operation is true.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{5C53A008-E808-4D00-A4EC-AC6A0EFDAFB9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "False", + "toolTip": "Signaled if the result of the operation is false.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 0 + }, + "isNullPointer": false, + "$type": "bool", + "value": false, + "label": "Value" + } + ] + } + } + }, + { + "Id": { + "id": 31102776615635 + }, + "Name": "SC-Node(TargetedSequencer)", + "Components": { + "Component_[2375509582066284148]": { + "$type": "TargetedSequencer", + "Id": 2375509582066284148, + "Slots": [ + { + "id": { + "m_id": "{52F5A723-7921-4644-AB19-5DCB94B51494}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{800E14B1-C788-4C7F-B4D4-76121DE547C9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 0", + "toolTip": "Output 0", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{14CCF4FA-A3F5-41F7-B66C-BCFF9D5A61F8}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Index", + "toolTip": "Select which [Out#] to trigger.", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{9828EDD9-2689-424C-9708-304D720B1348}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 1", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{4A1E25C6-E63B-4BC0-BBDE-533CA69C91C5}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 2", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Index" + } + ] + } + } + }, + { + "Id": { + "id": 31158611190483 + }, + "Name": "SC-Node(TargetedSequencer)", + "Components": { + "Component_[2375509582066284148]": { + "$type": "TargetedSequencer", + "Id": 2375509582066284148, + "Slots": [ + { + "id": { + "m_id": "{52F5A723-7921-4644-AB19-5DCB94B51494}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{800E14B1-C788-4C7F-B4D4-76121DE547C9}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 0", + "toolTip": "Output 0", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{14CCF4FA-A3F5-41F7-B66C-BCFF9D5A61F8}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Index", + "toolTip": "Select which [Out#] to trigger.", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{9828EDD9-2689-424C-9708-304D720B1348}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 1", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{4A1E25C6-E63B-4BC0-BBDE-533CA69C91C5}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 2", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Index" + } + ] + } + } + }, + { + "Id": { + "id": 31124251452115 + }, + "Name": "SC-Node(OperatorAdd)", + "Components": { + "Component_[4806888795455241210]": { + "$type": "OperatorAdd", + "Id": 4806888795455241210, + "Slots": [ + { + "id": { + "m_id": "{792F23CB-7356-4DCA-A186-69F2A0BBC063}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{775F77BE-A9EC-455D-B378-15D16A0BEA4F}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{02291180-ECAE-4D8B-8A9D-F9E451A3416F}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + } + }, + { + "id": { + "m_id": "{CCC2E84B-A90B-460B-AD1A-A2CCFF94D56F}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Number", + "toolTip": "An operand to use in performing the specified Operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + } + }, + { + "id": { + "m_id": "{40B63F5F-29F6-4F92-9C11-E47653798827}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + { + "$type": "MathOperatorContract", + "NativeTypes": [ + { + "m_type": 3 + }, + { + "m_type": 6 + }, + { + "m_type": 8 + }, + { + "m_type": 9 + }, + { + "m_type": 10 + }, + { + "m_type": 11 + }, + { + "m_type": 12 + }, + { + "m_type": 14 + }, + { + "m_type": 15 + } + ] + } + ], + "slotName": "Result", + "toolTip": "The result of the specified operation", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1114760223 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DynamicGroup": { + "Value": 1114760223 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + } + ] + } + } + }, + { + "Id": { + "id": 31137136354003 + }, + "Name": "SC-Node((NodeFunctionGenericMultiReturn)<{bool(Vector3 double )}* IsZeroTraits >)", + "Components": { + "Component_[5026503393630088694]": { + "$type": "(NodeFunctionGenericMultiReturn)<{bool(Vector3 double )}* IsZeroTraits >", + "Id": 5026503393630088694, + "Slots": [ + { + "id": { + "m_id": "{048F79E8-478C-46A1-AF3F-0B578022240D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{2CD5D252-4872-41A2-9C9E-4B81AD9877B7}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{765E9D80-9091-400F-858D-1C70FA1C25B2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Vector3: Source", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{33BC5FB6-AB79-4121-8C82-0F0EFE4FB7F5}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Number: Tolerance", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{C30EA842-3E60-4B71-A5C9-D70BB9FACC53}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Result: Boolean", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 8 + }, + "isNullPointer": false, + "$type": "Vector3", + "value": [ + 0.0, + 0.0, + 0.0 + ], + "label": "Vector3: Source" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 1e-7, + "label": "Number: Tolerance" + } + ], + "Initialized": true + } + } + }, + { + "Id": { + "id": 31162906157779 + }, + "Name": "SC-Node((NodeFunctionGenericMultiReturn)<{bool(Vector3 double )}* IsZeroTraits >)", + "Components": { + "Component_[5026503393630088694]": { + "$type": "(NodeFunctionGenericMultiReturn)<{bool(Vector3 double )}* IsZeroTraits >", + "Id": 5026503393630088694, + "Slots": [ + { + "id": { + "m_id": "{048F79E8-478C-46A1-AF3F-0B578022240D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{2CD5D252-4872-41A2-9C9E-4B81AD9877B7}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{765E9D80-9091-400F-858D-1C70FA1C25B2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Vector3: Source", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{33BC5FB6-AB79-4121-8C82-0F0EFE4FB7F5}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "Number: Tolerance", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{C30EA842-3E60-4B71-A5C9-D70BB9FACC53}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Result: Boolean", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 8 + }, + "isNullPointer": false, + "$type": "Vector3", + "value": [ + 0.0, + 0.0, + 0.0 + ], + "label": "Vector3: Source" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 1e-7, + "label": "Number: Tolerance" + } + ], + "Initialized": true + } + } + }, + { + "Id": { + "id": 31055531975379 + }, + "Name": "SC-Node(MathExpression)", + "Components": { + "Component_[5840825893583504722]": { + "$type": "MathExpression", + "Id": 5840825893583504722, + "Slots": [ + { + "id": { + "m_id": "{6F8E4206-72C6-40E6-8AC1-205AA2C04804}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Input signal", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{5E038FBC-9A4B-489C-AB3E-26F103B7102E}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "toolTip": "Output signal", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{7E74B9C7-C879-4B82-965F-889F8824BDFC}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "x", + "toolTip": "Value which replaces instances of {x} in the resulting expression.", + "DisplayGroup": { + "Value": 1997398926 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{28E4C6B8-0099-4213-BA4A-C21CC6EC0A5E}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "y", + "toolTip": "Value which replaces instances of {y} in the resulting expression.", + "DisplayGroup": { + "Value": 1997398926 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{AE1904C5-683D-40CA-93F6-5F18D40512BF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Result", + "toolTip": "The resulting string.", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1997398926 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 3.0, + "label": "x" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 4.0, + "label": "y" + } + ], + "m_format": "{x} + {y}", + "m_expressionTree": { + "Variables": [ + { + "Key": { + "Value": 2363233923 + }, + "Value": { + "SupportedTypes": [ + "{110C4B14-11A8-4E9D-8638-5051013A56AC}" + ], + "$type": "double", + "Value": 3.0 + } + }, + { + "Key": { + "Value": 4225443349 + }, + "Value": { + "SupportedTypes": [ + "{110C4B14-11A8-4E9D-8638-5051013A56AC}" + ], + "$type": "double", + "Value": 4.0 + } + } + ], + "VariableDisplayOrder": [ + "x", + "y" + ], + "Tokens": [ + { + "TokenInformation": { + "Id": 1, + "isEmptyAny": false, + "$type": "{6D219DB1-3763-4408-A3E8-75E4AE66E9BD} VariableDescriptor", + "Value": { + "DisplayName": "x", + "NameHash": { + "Value": 2363233923 + } + } + } + }, + { + "TokenInformation": { + "Id": 1, + "isEmptyAny": false, + "$type": "{6D219DB1-3763-4408-A3E8-75E4AE66E9BD} VariableDescriptor", + "Value": { + "DisplayName": "y", + "NameHash": { + "Value": 4225443349 + } + } + } + }, + { + "ParserId": 3499457960, + "TokenInformation": { + "Id": 0, + "isEmptyAny": true + } + } + ] + } + } + } + }, + { + "Id": { + "id": 31081301779155 + }, + "Name": "SC-Node(MathExpression)", + "Components": { + "Component_[5840825893583504722]": { + "$type": "MathExpression", + "Id": 5840825893583504722, + "Slots": [ + { + "id": { + "m_id": "{6F8E4206-72C6-40E6-8AC1-205AA2C04804}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Input signal", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{5E038FBC-9A4B-489C-AB3E-26F103B7102E}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "toolTip": "Output signal", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{7E74B9C7-C879-4B82-965F-889F8824BDFC}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "x", + "toolTip": "Value which replaces instances of {x} in the resulting expression.", + "DisplayGroup": { + "Value": 1997398926 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{28E4C6B8-0099-4213-BA4A-C21CC6EC0A5E}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null + ], + "slotName": "y", + "toolTip": "Value which replaces instances of {y} in the resulting expression.", + "DisplayGroup": { + "Value": 1997398926 + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{AE1904C5-683D-40CA-93F6-5F18D40512BF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Result", + "toolTip": "The resulting string.", + "DisplayDataType": { + "m_type": 3 + }, + "DisplayGroup": { + "Value": 1997398926 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 3.0, + "label": "x" + }, + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 4.0, + "label": "y" + } + ], + "m_format": "{x} + {y}", + "m_expressionTree": { + "Variables": [ + { + "Key": { + "Value": 2363233923 + }, + "Value": { + "SupportedTypes": [ + "{110C4B14-11A8-4E9D-8638-5051013A56AC}" + ], + "$type": "double", + "Value": 3.0 + } + }, + { + "Key": { + "Value": 4225443349 + }, + "Value": { + "SupportedTypes": [ + "{110C4B14-11A8-4E9D-8638-5051013A56AC}" + ], + "$type": "double", + "Value": 4.0 + } + } + ], + "VariableDisplayOrder": [ + "x", + "y" + ], + "Tokens": [ + { + "TokenInformation": { + "Id": 1, + "isEmptyAny": false, + "$type": "{6D219DB1-3763-4408-A3E8-75E4AE66E9BD} VariableDescriptor", + "Value": { + "DisplayName": "x", + "NameHash": { + "Value": 2363233923 + } + } + } + }, + { + "TokenInformation": { + "Id": 1, + "isEmptyAny": false, + "$type": "{6D219DB1-3763-4408-A3E8-75E4AE66E9BD} VariableDescriptor", + "Value": { + "DisplayName": "y", + "NameHash": { + "Value": 4225443349 + } + } + } + }, + { + "ParserId": 3499457960, + "TokenInformation": { + "Id": 0, + "isEmptyAny": true + } + } + ] + } + } + } + }, + { + "Id": { + "id": 31107071582931 + }, + "Name": "SC-Node(OrderedSequencer)", + "Components": { + "Component_[5989899372375578125]": { + "$type": "OrderedSequencer", + "Id": 5989899372375578125, + "Slots": [ + { + "id": { + "m_id": "{E4E25252-6AE7-4A4F-A175-50B9C6CD5DAE}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{425822FB-C61E-4493-98C3-3A05418BD029}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 0", + "toolTip": "Output 0", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ] + } + } + }, + { + "Id": { + "id": 31085596746451 + }, + "Name": "SC-Node(OrderedSequencer)", + "Components": { + "Component_[5989899372375578125]": { + "$type": "OrderedSequencer", + "Id": 5989899372375578125, + "Slots": [ + { + "id": { + "m_id": "{E4E25252-6AE7-4A4F-A175-50B9C6CD5DAE}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{425822FB-C61E-4493-98C3-3A05418BD029}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 0", + "toolTip": "Output 0", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{8FDC2E61-37AE-4E0F-82FE-7A4D9696123C}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 1", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{1000AB91-55FB-4615-B0EE-306816CFE895}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 2", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ] + } + } + }, + { + "Id": { + "id": 31046942040787 + }, + "Name": "SC-Node(IsNull)", + "Components": { + "Component_[6380535138172294808]": { + "$type": "IsNull", + "Id": 6380535138172294808, + "Slots": [ + { + "id": { + "m_id": "{AEAA495A-12CF-42CC-80FA-B4D67AB5EA99}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "IsReferenceTypeContract" + } + ], + "slotName": "Reference", + "DisplayDataType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{39DB51CB-AA6E-4B3A-93EC-D622C44B3F4B}" + } + }, + { + "id": { + "m_id": "{C17691F7-094B-4663-B2D6-F7726B8D14D2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Is Null", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{2215C7E1-3EA3-4487-BA74-0A5628424CEA}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Input signal", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{AA375295-D5E8-473C-A073-08A2853E750E}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "True", + "toolTip": "Signaled if the reference provided is null.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{342C520C-CA78-4261-91C9-629978B79BA3}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "False", + "toolTip": "Signaled if the reference provided is not null.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "isNullPointer": true, + "label": "Reference" + } + ] + } + } + }, + { + "Id": { + "id": 31111366550227 + }, + "Name": "SC-Node(IsNull)", + "Components": { + "Component_[6380535138172294808]": { + "$type": "IsNull", + "Id": 6380535138172294808, + "Slots": [ + { + "id": { + "m_id": "{AEAA495A-12CF-42CC-80FA-B4D67AB5EA99}" + }, + "DynamicTypeOverride": 3, + "contracts": [ + { + "$type": "SlotTypeContract" + }, + null, + { + "$type": "IsReferenceTypeContract" + } + ], + "slotName": "Reference", + "DisplayDataType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "Descriptor": { + "ConnectionType": 1, + "SlotType": 2 + }, + "DataType": 1, + "IsReference": true, + "VariableReference": { + "m_id": "{39DB51CB-AA6E-4B3A-93EC-D622C44B3F4B}" + } + }, + { + "id": { + "m_id": "{C17691F7-094B-4663-B2D6-F7726B8D14D2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Is Null", + "DisplayDataType": { + "m_type": 0 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 2 + }, + "DataType": 1 + }, + { + "id": { + "m_id": "{2215C7E1-3EA3-4487-BA74-0A5628424CEA}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Input signal", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{AA375295-D5E8-473C-A073-08A2853E750E}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "True", + "toolTip": "Signaled if the reference provided is null.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{342C520C-CA78-4261-91C9-629978B79BA3}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "False", + "toolTip": "Signaled if the reference provided is not null.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ], + "Datums": [ + { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "isNullPointer": true, + "label": "Reference" + } + ] + } + } + }, + { + "Id": { + "id": 31072711844563 + }, + "Name": "SC-Node(Start)", + "Components": { + "Component_[6709400654876708818]": { + "$type": "Start", + "Id": 6709400654876708818, + "Slots": [ + { + "id": { + "m_id": "{E1417C09-E03B-4EA9-B9EC-67F8EC862B69}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "toolTip": "Signaled when the entity that owns this graph is fully activated.", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ] + } + } + }, + { + "Id": { + "id": 31064121909971 + }, + "Name": "SC-Node(Once)", + "Components": { + "Component_[7505935143439181025]": { + "$type": "Once", + "Id": 7505935143439181025, + "Slots": [ + { + "id": { + "m_id": "{67E7AF1F-F028-4460-819A-3FA6B9135F7B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "toolTip": "Input signal", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{C6EB1567-2D26-4BC6-AC09-CB25183B1E0F}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Reset", + "toolTip": "Reset signal", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{922907EE-9B7C-49CF-80A2-0A9FF5CDCB8C}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out", + "toolTip": "Output signal", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{BD2D869A-A1F9-4CA3-AFF7-D8134A36D56A}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "On Reset", + "toolTip": "Triggered when Reset", + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ] + } + } + }, + { + "Id": { + "id": 31141431321299 + }, + "Name": "SC-Node(OrderedSequencer)", + "Components": { + "Component_[8845125901058188451]": { + "$type": "OrderedSequencer", + "Id": 8845125901058188451, + "Slots": [ + { + "id": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{E69D1672-B443-49D2-8228-9D45F4A4398C}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 0", + "toolTip": "Output 0", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{58EB3964-B87B-4C73-AD7B-532E4BBAD9E2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 1", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{E965D8DB-1EDF-4CB2-910E-6782A6DD8487}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 2", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{786CF87F-5153-44CE-A995-59CAAA0ED040}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 3", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{60D9FB27-2CAC-412A-8B3B-2E4B4574FD56}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 4", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{CBD2A485-2FF1-405A-9940-E4268ED8EEC0}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 5", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{F71323EC-F182-465B-8671-C83BB07B227A}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 6", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{AFCB2F92-E497-4BBD-92B4-1E731246B834}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 7", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{973D553A-3231-461F-B46A-9A868846BE0B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 8", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{251CF78F-0D57-4345-B80F-3947FBD30FCE}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 9", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{99CB5CB4-FF23-4C2B-9FBB-94D7752FCE80}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 10", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{2A550F0A-D5D2-497A-AFF2-EBB330F29A4D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 11", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{FBD12806-F42E-4896-A44D-E0E34C8977BF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 12", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{6552891F-4D35-4B2F-AE7D-B6CCE77B6966}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 13", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{119F60AD-CF01-4F6D-AC9D-F76ED05EF408}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 14", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{7ECBB1CC-6F3A-442E-B063-2B143F26ECF0}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 15", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{58AAA7C2-843B-4B0A-8451-B509284BFC6B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 16", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{C6B341C5-8F1F-4F38-96B1-07873BC03493}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 17", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ] + } + } + }, + { + "Id": { + "id": 31051237008083 + }, + "Name": "SC-Node(OrderedSequencer)", + "Components": { + "Component_[8845125901058188451]": { + "$type": "OrderedSequencer", + "Id": 8845125901058188451, + "Slots": [ + { + "id": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "In", + "Descriptor": { + "ConnectionType": 1, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{E69D1672-B443-49D2-8228-9D45F4A4398C}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 0", + "toolTip": "Output 0", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{58EB3964-B87B-4C73-AD7B-532E4BBAD9E2}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 1", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{E965D8DB-1EDF-4CB2-910E-6782A6DD8487}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 2", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{786CF87F-5153-44CE-A995-59CAAA0ED040}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 3", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{60D9FB27-2CAC-412A-8B3B-2E4B4574FD56}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 4", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{CBD2A485-2FF1-405A-9940-E4268ED8EEC0}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 5", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{F71323EC-F182-465B-8671-C83BB07B227A}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 6", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{AFCB2F92-E497-4BBD-92B4-1E731246B834}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 7", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{973D553A-3231-461F-B46A-9A868846BE0B}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 8", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{251CF78F-0D57-4345-B80F-3947FBD30FCE}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 9", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{99CB5CB4-FF23-4C2B-9FBB-94D7752FCE80}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 10", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{2A550F0A-D5D2-497A-AFF2-EBB330F29A4D}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 11", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{FBD12806-F42E-4896-A44D-E0E34C8977BF}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 12", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{6552891F-4D35-4B2F-AE7D-B6CCE77B6966}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 13", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{119F60AD-CF01-4F6D-AC9D-F76ED05EF408}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 14", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{7ECBB1CC-6F3A-442E-B063-2B143F26ECF0}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 15", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{8BC13109-B3A3-4931-8E54-0DFC6383A274}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 16", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + }, + { + "id": { + "m_id": "{3ED549E3-C72F-4EC5-8CD6-2B8A36A8E503}" + }, + "contracts": [ + { + "$type": "SlotTypeContract" + } + ], + "slotName": "Out 17", + "DisplayGroup": { + "Value": 1020632324 + }, + "Descriptor": { + "ConnectionType": 2, + "SlotType": 1 + } + } + ] + } + } + } + ], + "m_connections": [ + { + "Id": { + "id": 31167201125075 + }, + "Name": "srcEndpoint=(On Graph Start: Out), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[11968085700009090183]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 11968085700009090183, + "sourceEndpoint": { + "nodeId": { + "id": 31072711844563 + }, + "slotId": { + "m_id": "{E1417C09-E03B-4EA9-B9EC-67F8EC862B69}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31171496092371 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 0), destEndpoint=(For Each: In)", + "Components": { + "Component_[14051685564799899080]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 14051685564799899080, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{E69D1672-B443-49D2-8228-9D45F4A4398C}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31089891713747 + }, + "slotId": { + "m_id": "{A9E6B254-446D-492F-B2CF-929CDC04ABFF}" + } + } + } + } + }, + { + "Id": { + "id": 31175791059667 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 1), destEndpoint=(And: In)", + "Components": { + "Component_[5835922357284603096]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 5835922357284603096, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{58EB3964-B87B-4C73-AD7B-532E4BBAD9E2}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31132841386707 + }, + "slotId": { + "m_id": "{FAFAB55A-69F1-495D-82FC-7D36F7842DA9}" + } + } + } + } + }, + { + "Id": { + "id": 31180086026963 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 2), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[11349254841334591199]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 11349254841334591199, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{E965D8DB-1EDF-4CB2-910E-6782A6DD8487}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31085596746451 + }, + "slotId": { + "m_id": "{E4E25252-6AE7-4A4F-A175-50B9C6CD5DAE}" + } + } + } + } + }, + { + "Id": { + "id": 31184380994259 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 3), destEndpoint=(Is Null: In)", + "Components": { + "Component_[11724175899893098283]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 11724175899893098283, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{786CF87F-5153-44CE-A995-59CAAA0ED040}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31046942040787 + }, + "slotId": { + "m_id": "{2215C7E1-3EA3-4487-BA74-0A5628424CEA}" + } + } + } + } + }, + { + "Id": { + "id": 31188675961555 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 4), destEndpoint=(Or: In)", + "Components": { + "Component_[15445788857322783773]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 15445788857322783773, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{60D9FB27-2CAC-412A-8B3B-2E4B4574FD56}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31128546419411 + }, + "slotId": { + "m_id": "{C5E1B10E-FDFA-45F8-B6AF-BD9C672986FC}" + } + } + } + } + }, + { + "Id": { + "id": 31192970928851 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 5), destEndpoint=(Switch: In)", + "Components": { + "Component_[9877129165904558121]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 9877129165904558121, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{CBD2A485-2FF1-405A-9940-E4268ED8EEC0}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31158611190483 + }, + "slotId": { + "m_id": "{52F5A723-7921-4644-AB19-5DCB94B51494}" + } + } + } + } + }, + { + "Id": { + "id": 31197265896147 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 6), destEndpoint=(Not: In)", + "Components": { + "Component_[3561874480108576621]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 3561874480108576621, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{F71323EC-F182-465B-8671-C83BB07B227A}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31094186681043 + }, + "slotId": { + "m_id": "{120C810C-F84A-445F-82E1-FD06CD3AD9B7}" + } + } + } + } + }, + { + "Id": { + "id": 31201560863443 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 10), destEndpoint=(Add (+): In)", + "Components": { + "Component_[15711843380878163015]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 15711843380878163015, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{99CB5CB4-FF23-4C2B-9FBB-94D7752FCE80}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31124251452115 + }, + "slotId": { + "m_id": "{792F23CB-7356-4DCA-A186-69F2A0BBC063}" + } + } + } + } + }, + { + "Id": { + "id": 31205855830739 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 11), destEndpoint=(Math Expression: In)", + "Components": { + "Component_[10938060626218586852]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 10938060626218586852, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{2A550F0A-D5D2-497A-AFF2-EBB330F29A4D}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31081301779155 + }, + "slotId": { + "m_id": "{6F8E4206-72C6-40E6-8AC1-205AA2C04804}" + } + } + } + } + }, + { + "Id": { + "id": 31210150798035 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 12), destEndpoint=(IsZero: In)", + "Components": { + "Component_[7885809696299116611]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 7885809696299116611, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{FBD12806-F42E-4896-A44D-E0E34C8977BF}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31162906157779 + }, + "slotId": { + "m_id": "{048F79E8-478C-46A1-AF3F-0B578022240D}" + } + } + } + } + }, + { + "Id": { + "id": 31214445765331 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 13), destEndpoint=(Extract Properties: In)", + "Components": { + "Component_[4352059250555138202]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4352059250555138202, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{6552891F-4D35-4B2F-AE7D-B6CCE77B6966}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31154316223187 + }, + "slotId": { + "m_id": "{EADFB5B4-ADE0-4935-A102-99F8EC0C711A}" + } + } + } + } + }, + { + "Id": { + "id": 31218740732627 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 14), destEndpoint=(Add (+): In)", + "Components": { + "Component_[4078469470815155794]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4078469470815155794, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{119F60AD-CF01-4F6D-AC9D-F76ED05EF408}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31068416877267 + }, + "slotId": { + "m_id": "{CDEA58A6-1B59-4476-B26E-0D5A828F35C7}" + } + } + } + } + }, + { + "Id": { + "id": 31223035699923 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 15), destEndpoint=(Multiply (*): In)", + "Components": { + "Component_[17350434400301914971]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 17350434400301914971, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{7ECBB1CC-6F3A-442E-B063-2B143F26ECF0}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31115661517523 + }, + "slotId": { + "m_id": "{2D2F75D9-A1FB-4D70-86EF-8518E119DB07}" + } + } + } + } + }, + { + "Id": { + "id": 31227330667219 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 14), destEndpoint=(Add (+): In)", + "Components": { + "Component_[2124314791740833510]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 2124314791740833510, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{119F60AD-CF01-4F6D-AC9D-F76ED05EF408}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31077006811859 + }, + "slotId": { + "m_id": "{CDEA58A6-1B59-4476-B26E-0D5A828F35C7}" + } + } + } + } + }, + { + "Id": { + "id": 31231625634515 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 0), destEndpoint=(For Each: In)", + "Components": { + "Component_[14483355239609043570]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 14483355239609043570, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{E69D1672-B443-49D2-8228-9D45F4A4398C}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31145726288595 + }, + "slotId": { + "m_id": "{A9E6B254-446D-492F-B2CF-929CDC04ABFF}" + } + } + } + } + }, + { + "Id": { + "id": 31235920601811 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 2), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[4849582226410181010]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4849582226410181010, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{E965D8DB-1EDF-4CB2-910E-6782A6DD8487}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31107071582931 + }, + "slotId": { + "m_id": "{E4E25252-6AE7-4A4F-A175-50B9C6CD5DAE}" + } + } + } + } + }, + { + "Id": { + "id": 31240215569107 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 13), destEndpoint=(Extract Properties: In)", + "Components": { + "Component_[16660742051689195679]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 16660742051689195679, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{6552891F-4D35-4B2F-AE7D-B6CCE77B6966}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31150021255891 + }, + "slotId": { + "m_id": "{EADFB5B4-ADE0-4935-A102-99F8EC0C711A}" + } + } + } + } + }, + { + "Id": { + "id": 31244510536403 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 11), destEndpoint=(Math Expression: In)", + "Components": { + "Component_[761902755754097552]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 761902755754097552, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{2A550F0A-D5D2-497A-AFF2-EBB330F29A4D}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31055531975379 + }, + "slotId": { + "m_id": "{6F8E4206-72C6-40E6-8AC1-205AA2C04804}" + } + } + } + } + }, + { + "Id": { + "id": 31248805503699 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 3), destEndpoint=(Is Null: In)", + "Components": { + "Component_[11478294740641420074]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 11478294740641420074, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{786CF87F-5153-44CE-A995-59CAAA0ED040}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31111366550227 + }, + "slotId": { + "m_id": "{2215C7E1-3EA3-4487-BA74-0A5628424CEA}" + } + } + } + } + }, + { + "Id": { + "id": 31253100470995 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 12), destEndpoint=(IsZero: In)", + "Components": { + "Component_[6172045094798670980]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 6172045094798670980, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{FBD12806-F42E-4896-A44D-E0E34C8977BF}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31137136354003 + }, + "slotId": { + "m_id": "{048F79E8-478C-46A1-AF3F-0B578022240D}" + } + } + } + } + }, + { + "Id": { + "id": 31257395438291 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 5), destEndpoint=(Switch: In)", + "Components": { + "Component_[10417773454009289241]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 10417773454009289241, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{CBD2A485-2FF1-405A-9940-E4268ED8EEC0}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31102776615635 + }, + "slotId": { + "m_id": "{52F5A723-7921-4644-AB19-5DCB94B51494}" + } + } + } + } + }, + { + "Id": { + "id": 31261690405587 + }, + "Name": "srcEndpoint=(For Each: Each), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[4836133045899771729]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4836133045899771729, + "sourceEndpoint": { + "nodeId": { + "id": 31089891713747 + }, + "slotId": { + "m_id": "{8A4B7BED-4921-4C08-B35B-56D129A630E9}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31265985372883 + }, + "Name": "srcEndpoint=(For Each: Finished), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[6237489035629954338]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 6237489035629954338, + "sourceEndpoint": { + "nodeId": { + "id": 31089891713747 + }, + "slotId": { + "m_id": "{0DEFFE74-9D9C-4E18-AFA2-12B1657F7D1D}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31270280340179 + }, + "Name": "srcEndpoint=(And: True), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[4927775769680604779]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4927775769680604779, + "sourceEndpoint": { + "nodeId": { + "id": 31132841386707 + }, + "slotId": { + "m_id": "{5BDD309F-0047-43E9-A911-475E47A036EC}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31274575307475 + }, + "Name": "srcEndpoint=(And: False), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[12544845157105431583]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 12544845157105431583, + "sourceEndpoint": { + "nodeId": { + "id": 31132841386707 + }, + "slotId": { + "m_id": "{7438C80C-9044-442D-8C71-827AB7DC3F0B}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31278870274771 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 0), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[13496863929205474320]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 13496863929205474320, + "sourceEndpoint": { + "nodeId": { + "id": 31085596746451 + }, + "slotId": { + "m_id": "{425822FB-C61E-4493-98C3-3A05418BD029}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31283165242067 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 1), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[12523441803443343729]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 12523441803443343729, + "sourceEndpoint": { + "nodeId": { + "id": 31085596746451 + }, + "slotId": { + "m_id": "{8FDC2E61-37AE-4E0F-82FE-7A4D9696123C}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31287460209363 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 2), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[4247029149608940629]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4247029149608940629, + "sourceEndpoint": { + "nodeId": { + "id": 31085596746451 + }, + "slotId": { + "m_id": "{1000AB91-55FB-4615-B0EE-306816CFE895}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31291755176659 + }, + "Name": "srcEndpoint=(Is Null: True), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[2748837971044280491]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 2748837971044280491, + "sourceEndpoint": { + "nodeId": { + "id": 31046942040787 + }, + "slotId": { + "m_id": "{AA375295-D5E8-473C-A073-08A2853E750E}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31296050143955 + }, + "Name": "srcEndpoint=(Is Null: False), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[2379529025270594940]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 2379529025270594940, + "sourceEndpoint": { + "nodeId": { + "id": 31046942040787 + }, + "slotId": { + "m_id": "{342C520C-CA78-4261-91C9-629978B79BA3}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31300345111251 + }, + "Name": "srcEndpoint=(Or: True), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[4662929964571753389]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4662929964571753389, + "sourceEndpoint": { + "nodeId": { + "id": 31128546419411 + }, + "slotId": { + "m_id": "{7FED3519-4670-4B3D-B81F-44393C2D7787}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31304640078547 + }, + "Name": "srcEndpoint=(Or: False), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[10410455197671109469]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 10410455197671109469, + "sourceEndpoint": { + "nodeId": { + "id": 31128546419411 + }, + "slotId": { + "m_id": "{E2D1192C-902D-4C82-9DE4-BBC20B31A54B}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31308935045843 + }, + "Name": "srcEndpoint=(Switch: Out 0), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[10099436517331803126]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 10099436517331803126, + "sourceEndpoint": { + "nodeId": { + "id": 31158611190483 + }, + "slotId": { + "m_id": "{800E14B1-C788-4C7F-B4D4-76121DE547C9}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31313230013139 + }, + "Name": "srcEndpoint=(Switch: Out 1), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[11535766430360773447]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 11535766430360773447, + "sourceEndpoint": { + "nodeId": { + "id": 31158611190483 + }, + "slotId": { + "m_id": "{9828EDD9-2689-424C-9708-304D720B1348}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31317524980435 + }, + "Name": "srcEndpoint=(Switch: Out 2), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[3612784336888322174]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 3612784336888322174, + "sourceEndpoint": { + "nodeId": { + "id": 31158611190483 + }, + "slotId": { + "m_id": "{4A1E25C6-E63B-4BC0-BBDE-533CA69C91C5}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31321819947731 + }, + "Name": "srcEndpoint=(Not: True), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[4611790098876313333]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4611790098876313333, + "sourceEndpoint": { + "nodeId": { + "id": 31094186681043 + }, + "slotId": { + "m_id": "{6E82DFA3-70F4-419F-9971-AD243313E8D9}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31326114915027 + }, + "Name": "srcEndpoint=(Not: False), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[3740076693359624525]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 3740076693359624525, + "sourceEndpoint": { + "nodeId": { + "id": 31094186681043 + }, + "slotId": { + "m_id": "{5C53A008-E808-4D00-A4EC-AC6A0EFDAFB9}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31330409882323 + }, + "Name": "srcEndpoint=(Add (+): Out), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[3850851395875718062]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 3850851395875718062, + "sourceEndpoint": { + "nodeId": { + "id": 31124251452115 + }, + "slotId": { + "m_id": "{775F77BE-A9EC-455D-B378-15D16A0BEA4F}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31334704849619 + }, + "Name": "srcEndpoint=(Math Expression: Out), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[3602036390975897875]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 3602036390975897875, + "sourceEndpoint": { + "nodeId": { + "id": 31081301779155 + }, + "slotId": { + "m_id": "{5E038FBC-9A4B-489C-AB3E-26F103B7102E}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31338999816915 + }, + "Name": "srcEndpoint=(IsZero: Out), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[17614443468886602012]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 17614443468886602012, + "sourceEndpoint": { + "nodeId": { + "id": 31162906157779 + }, + "slotId": { + "m_id": "{2CD5D252-4872-41A2-9C9E-4B81AD9877B7}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31343294784211 + }, + "Name": "srcEndpoint=(Extract Properties: Out), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[4800366554066352627]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4800366554066352627, + "sourceEndpoint": { + "nodeId": { + "id": 31154316223187 + }, + "slotId": { + "m_id": "{AC7594DE-A7F0-4519-9E07-0350AEEB25E0}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31347589751507 + }, + "Name": "srcEndpoint=(Add (+): Out), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[15231344167676276156]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 15231344167676276156, + "sourceEndpoint": { + "nodeId": { + "id": 31068416877267 + }, + "slotId": { + "m_id": "{5E66E5C1-AE26-4919-BFD7-66EC6DE9B7BB}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31351884718803 + }, + "Name": "srcEndpoint=(Multiply (*): Out), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[13866431563723516549]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 13866431563723516549, + "sourceEndpoint": { + "nodeId": { + "id": 31115661517523 + }, + "slotId": { + "m_id": "{7A580403-C074-4DAD-A65E-BF928EF19DC8}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31356179686099 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 16), destEndpoint=(TickBus Handler: Connect)", + "Components": { + "Component_[4065717098596350153]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4065717098596350153, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{8BC13109-B3A3-4931-8E54-0DFC6383A274}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31119956484819 + }, + "slotId": { + "m_id": "{C189EE08-DC89-4AF2-88BC-B564F84F28A6}" + } + } + } + } + }, + { + "Id": { + "id": 31360474653395 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 17), destEndpoint=(TickBus Handler: Disconnect)", + "Components": { + "Component_[451545062627990235]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 451545062627990235, + "sourceEndpoint": { + "nodeId": { + "id": 31051237008083 + }, + "slotId": { + "m_id": "{3ED549E3-C72F-4EC5-8CD6-2B8A36A8E503}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31119956484819 + }, + "slotId": { + "m_id": "{10BB0A14-C955-464E-8745-7FBC88E24049}" + } + } + } + } + }, + { + "Id": { + "id": 31364769620691 + }, + "Name": "srcEndpoint=(TickBus Handler: OnConnected), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[16416933153170812903]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 16416933153170812903, + "sourceEndpoint": { + "nodeId": { + "id": 31119956484819 + }, + "slotId": { + "m_id": "{A7026536-ED61-48CA-8329-601DACF8A178}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31369064587987 + }, + "Name": "srcEndpoint=(TickBus Handler: OnDisconnected), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[16427931620012509498]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 16427931620012509498, + "sourceEndpoint": { + "nodeId": { + "id": 31119956484819 + }, + "slotId": { + "m_id": "{95E02974-9E1C-407C-94DA-087C5B4EC55C}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31373359555283 + }, + "Name": "srcEndpoint=(TickBus Handler: ExecutionSlot:OnTick), destEndpoint=(Ordered Sequencer: In)", + "Components": { + "Component_[12537264777285639380]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 12537264777285639380, + "sourceEndpoint": { + "nodeId": { + "id": 31119956484819 + }, + "slotId": { + "m_id": "{99FA955C-7E6E-4539-85B0-16CBFBB1F0E3}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{06EAF2BD-2430-46D2-A19F-6E785B06A1B2}" + } + } + } + } + }, + { + "Id": { + "id": 31377654522579 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 16), destEndpoint=(TickBus Handler: Connect)", + "Components": { + "Component_[4140744289594349719]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 4140744289594349719, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{58AAA7C2-843B-4B0A-8451-B509284BFC6B}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31059826942675 + }, + "slotId": { + "m_id": "{C189EE08-DC89-4AF2-88BC-B564F84F28A6}" + } + } + } + } + }, + { + "Id": { + "id": 31381949489875 + }, + "Name": "srcEndpoint=(Ordered Sequencer: Out 17), destEndpoint=(TickBus Handler: Disconnect)", + "Components": { + "Component_[6223827301708831635]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 6223827301708831635, + "sourceEndpoint": { + "nodeId": { + "id": 31141431321299 + }, + "slotId": { + "m_id": "{C6B341C5-8F1F-4F38-96B1-07873BC03493}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31059826942675 + }, + "slotId": { + "m_id": "{10BB0A14-C955-464E-8745-7FBC88E24049}" + } + } + } + } + }, + { + "Id": { + "id": 31386244457171 + }, + "Name": "srcEndpoint=(TickBus Handler: OnConnected), destEndpoint=(Once: In)", + "Components": { + "Component_[16328568633919858732]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 16328568633919858732, + "sourceEndpoint": { + "nodeId": { + "id": 31059826942675 + }, + "slotId": { + "m_id": "{A7026536-ED61-48CA-8329-601DACF8A178}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31064121909971 + }, + "slotId": { + "m_id": "{67E7AF1F-F028-4460-819A-3FA6B9135F7B}" + } + } + } + } + }, + { + "Id": { + "id": 31390539424467 + }, + "Name": "srcEndpoint=(TickBus Handler: OnDisconnected), destEndpoint=(Once: In)", + "Components": { + "Component_[5193640857027050517]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 5193640857027050517, + "sourceEndpoint": { + "nodeId": { + "id": 31059826942675 + }, + "slotId": { + "m_id": "{95E02974-9E1C-407C-94DA-087C5B4EC55C}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31064121909971 + }, + "slotId": { + "m_id": "{67E7AF1F-F028-4460-819A-3FA6B9135F7B}" + } + } + } + } + }, + { + "Id": { + "id": 31394834391763 + }, + "Name": "srcEndpoint=(Once: Out), destEndpoint=(Mark Complete: In)", + "Components": { + "Component_[5213414421933364896]": { + "$type": "{64CA5016-E803-4AC4-9A36-BDA2C890C6EB} Connection", + "Id": 5213414421933364896, + "sourceEndpoint": { + "nodeId": { + "id": 31064121909971 + }, + "slotId": { + "m_id": "{922907EE-9B7C-49CF-80A2-0A9FF5CDCB8C}" + } + }, + "targetEndpoint": { + "nodeId": { + "id": 31098481648339 + }, + "slotId": { + "m_id": "{79C2ABDD-F20A-4042-BF5C-8C09DC9332C7}" + } + } + } + } + } + ] + }, + "m_assetType": "{3E2AC8CD-713F-453E-967F-29517F331784}", + "versionData": { + "_grammarVersion": 1, + "_runtimeVersion": 1 + }, + "m_variableCounter": 2, + "GraphCanvasData": [ + { + "Key": { + "id": 31042647073491 + }, + "Value": { + "ComponentData": { + "{5F84B500-8C45-40D1-8EFC-A5306B241444}": { + "$type": "SceneComponentSaveData", + "ViewParams": { + "Scale": 0.2579344, + "AnchorX": -2508.39013671875, + "AnchorY": 1461.6121826171876 + } + } + } + } + }, + { + "Key": { + "id": 31046942040787 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 1240.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{63DF2982-B424-4D30-BF05-9DA9DD5664EC}" + } + } + } + }, + { + "Key": { + "id": 31051237008083 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + -480.0, + 2320.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{AC1D06EF-C967-4F35-95BD-8D822F4A2CE7}" + } + } + } + }, + { + "Key": { + "id": 31055531975379 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 2980.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{C2544B7B-3AA0-4731-81CF-DA88A5E210EC}" + } + } + } + }, + { + "Key": { + "id": 31059826942675 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2080.0, + 4340.0 + ] + }, + "{9E81C95F-89C0-4476-8E82-63CCC4E52E04}": { + "$type": "EBusHandlerNodeDescriptorSaveData", + "DisplayConnections": true, + "EventIds": [ + { + "Value": 1502188240 + } + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{58CBCF78-2B53-43EB-85BE-309EDB183924}" + } + } + } + }, + { + "Key": { + "id": 31064121909971 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2420.0, + 4320.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{0CC6067B-5802-4AB3-9FF4-C1DF2C283DBB}" + } + } + } + }, + { + "Key": { + "id": 31068416877267 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 3780.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{D305A28C-D38B-4A34-BEA1-7E7AA92B853A}" + } + } + } + }, + { + "Key": { + "id": 31072711844563 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "TimeNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + -900.0, + 2400.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{D3649B82-A382-47A3-8168-BC7BA0377449}" + } + } + } + }, + { + "Key": { + "id": 31077006811859 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 3720.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{ABCB6F4F-5683-4958-B544-E543B5591129}" + } + } + } + }, + { + "Key": { + "id": 31081301779155 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 3040.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{32F17925-C934-4CC7-918A-3026954CABD6}" + } + } + } + }, + { + "Key": { + "id": 31085596746451 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 960.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{55307FED-8C26-4EC5-98B5-F080C79E784D}" + } + } + } + }, + { + "Key": { + "id": 31089891713747 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "DefaultNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 400.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{F37ED565-54EF-4A7C-9FB4-ABA1A71A4A36}" + } + } + } + }, + { + "Key": { + "id": 31094186681043 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 2000.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{5E0AD895-3D93-41F0-86D0-0A9DC4305145}" + } + } + } + }, + { + "Key": { + "id": 31098481648339 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "TestingNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2640.0, + 4320.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{90DEA5B5-B658-4163-964E-91DB8D0D0F91}" + } + } + } + }, + { + "Key": { + "id": 31102776615635 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 1680.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{E6DB84DC-F8BE-4C8E-BE0D-A0B96652B2C0}" + } + } + } + }, + { + "Key": { + "id": 31107071582931 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 900.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{12114A6E-22BE-4A7A-8211-7A1282B900EC}" + } + } + } + }, + { + "Key": { + "id": 31111366550227 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 1180.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{9952383B-0B57-43BB-B59C-501C3F2CDE30}" + } + } + } + }, + { + "Key": { + "id": 31115661517523 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 4020.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{E6E72236-4B7B-47AD-ABF9-08E0D1691F72}" + } + } + } + }, + { + "Key": { + "id": 31119956484819 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 340.0, + 4320.0 + ] + }, + "{9E81C95F-89C0-4476-8E82-63CCC4E52E04}": { + "$type": "EBusHandlerNodeDescriptorSaveData", + "DisplayConnections": true, + "EventIds": [ + { + "Value": 1502188240 + } + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{3B6A148E-D130-4461-BA4D-EF0C91E7B729}" + } + } + } + }, + { + "Key": { + "id": 31124251452115 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 2820.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{0F538778-0124-48B9-B8D8-DB50D3620953}" + } + } + } + }, + { + "Key": { + "id": 31128546419411 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 1460.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{0C7217EF-A630-46C6-A1C8-D4202697B60E}" + } + } + } + }, + { + "Key": { + "id": 31132841386707 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 700.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{F60EF486-6C8B-4943-B3F4-600F8148DE78}" + } + } + } + }, + { + "Key": { + "id": 31137136354003 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 3260.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{810D332E-6C30-437C-9BCA-DF663A237034}" + } + } + } + }, + { + "Key": { + "id": 31141431321299 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 1200.0, + 2660.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{05F42C5B-4887-4800-8422-D5E5C1361E5F}" + } + } + } + }, + { + "Key": { + "id": 31145726288595 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "DefaultNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 340.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{EDABFAD6-F9B5-4490-8EC6-165291FF3588}" + } + } + } + }, + { + "Key": { + "id": 31150021255891 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "DefaultNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 2040.0, + 3520.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{EFAA6315-4594-4432-A71C-C50AC21A3B9C}" + } + } + } + }, + { + "Key": { + "id": 31154316223187 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "DefaultNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 3580.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{BB3891CA-9936-4F18-8552-8EB7F2D02206}" + } + } + } + }, + { + "Key": { + "id": 31158611190483 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "LogicNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 1740.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{E6746414-838B-4AF7-AC50-EBEB0D2C06C2}" + } + } + } + }, + { + "Key": { + "id": 31162906157779 + }, + "Value": { + "ComponentData": { + "{24CB38BB-1705-4EC5-8F63-B574571B4DCD}": { + "$type": "NodeSaveData" + }, + "{328FF15C-C302-458F-A43D-E1794DE0904E}": { + "$type": "GeneralNodeTitleComponentSaveData", + "PaletteOverride": "MathNodeTitlePalette" + }, + "{7CC444B1-F9B3-41B5-841B-0C4F2179F111}": { + "$type": "GeometrySaveData", + "Position": [ + 300.0, + 3320.0 + ] + }, + "{B0B99C8A-03AF-4CF6-A926-F65C874C3D97}": { + "$type": "StylingComponentSaveData" + }, + "{B1F49A35-8408-40DA-B79E-F1E3B64322CE}": { + "$type": "PersistentIdComponentSaveData", + "PersistentId": "{AE920511-0E26-4EEF-ADAD-982BEA59BA94}" + } + } + } + } + ], + "StatisticsHelper": { + "InstanceCounter": [ + { + "Key": 1244476766431948410, + "Value": 3 + }, + { + "Key": 1675714605584791791, + "Value": 1 + }, + { + "Key": 1899400123866786017, + "Value": 2 + }, + { + "Key": 4199610336680704683, + "Value": 1 + }, + { + "Key": 4271004856738215795, + "Value": 4 + }, + { + "Key": 5842117451819972883, + "Value": 2 + }, + { + "Key": 7224637793062157918, + "Value": 2 + }, + { + "Key": 7441743364271812807, + "Value": 1 + }, + { + "Key": 10181512461692697578, + "Value": 2 + }, + { + "Key": 10204019744198319120, + "Value": 1 + }, + { + "Key": 11764063517792044591, + "Value": 2 + }, + { + "Key": 12702286953450386850, + "Value": 1 + }, + { + "Key": 14285852892804039565, + "Value": 2 + }, + { + "Key": 14502416192304263066, + "Value": 2 + }, + { + "Key": 14935618182048638376, + "Value": 1 + }, + { + "Key": 18321430858034101497, + "Value": 1 + } + ] + } + }, + "Component_[4373975411826598062]": { + "$type": "EditorGraphVariableManagerComponent", + "Id": 4373975411826598062, + "m_variableData": { + "m_nameVariableMap": [ + { + "Key": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + }, + "Value": { + "Datum": { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 3 + }, + "isNullPointer": false, + "$type": "double", + "value": 0.0, + "label": "Number" + }, + "VariableId": { + "m_id": "{0BA96D88-BF13-4810-B01C-CA513AF84440}" + }, + "VariableName": "Variable 2" + } + }, + { + "Key": { + "m_id": "{39DB51CB-AA6E-4B3A-93EC-D622C44B3F4B}" + }, + "Value": { + "Datum": { + "isOverloadedStorage": false, + "scriptCanvasType": { + "m_type": 4, + "m_azType": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}" + }, + "isNullPointer": false, + "$type": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7} AZStd::vector", + "value": [ + true, + true + ], + "label": "Array" + }, + "VariableId": { + "m_id": "{39DB51CB-AA6E-4B3A-93EC-D622C44B3F4B}" + }, + "VariableName": "Array_of_Bools" + } + } + ] + } + } + } + } + } +} \ No newline at end of file