From c0ed0a792520cd98bf6f2443eea8dbb1f24e1fff Mon Sep 17 00:00:00 2001
From: chcurran <82187351+carlitosan@users.noreply.github.com>
Date: Tue, 10 Aug 2021 16:59:21 -0700
Subject: [PATCH 1/5] Added more tool tip data to repeater.
Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
---
.../Core/RepeaterNodeable.ScriptCanvasNodeable.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/RepeaterNodeable.ScriptCanvasNodeable.xml b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/RepeaterNodeable.ScriptCanvasNodeable.xml
index 14634ff959..951a30ceb1 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/RepeaterNodeable.ScriptCanvasNodeable.xml
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/RepeaterNodeable.ScriptCanvasNodeable.xml
@@ -10,17 +10,17 @@
Category="Nodeables"
GeneratePropertyFriend="True"
Namespace="ScriptCanvas"
- Description="Repeats the output signal the given number of times using the specified delay to space the signals out">
+ Description="Repeats the output signal the given number of times using the specified delay to space the signals out.">
-
+
-
+
From aaa847a56931f1ba9a5ebffe6a1ea1911d9aae1e Mon Sep 17 00:00:00 2001
From: chcurran <82187351+carlitosan@users.noreply.github.com>
Date: Wed, 11 Aug 2021 14:40:34 -0700
Subject: [PATCH 2/5] Remove empty User Functions and Script Event sections
Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
---
.../View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp | 5 ++---
.../Code/Include/ScriptCanvas/Core/SubgraphInterface.cpp | 3 ++-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp
index 8341cc1e24..96b0ac353f 100644
--- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp
+++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp
@@ -80,12 +80,11 @@ namespace ScriptCanvasEditor
GraphCanvas::NodePaletteTreeItem* variablesRoot = root->CreateChildNode("Variables");
root->RegisterCategoryNode(variablesRoot, "Variables");
- // We always want to keep these around as place holders
GraphCanvas::NodePaletteTreeItem* customEventRoot = root->GetCategoryNode("Script Events");
- customEventRoot->SetAllowPruneOnEmpty(false);
+ customEventRoot->SetAllowPruneOnEmpty(true);
GraphCanvas::NodePaletteTreeItem* globalFunctionRoot = root->GetCategoryNode("User Functions");
- globalFunctionRoot->SetAllowPruneOnEmpty(false);
+ globalFunctionRoot->SetAllowPruneOnEmpty(true);
}
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.cpp
index 81d6445556..9d1626fb73 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.cpp
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/SubgraphInterface.cpp
@@ -509,7 +509,8 @@ namespace ScriptCanvas
bool SubgraphInterface::HasAnyFunctionality() const
{
- return IsActiveDefaultObject() || HasPublicFunctionality();
+ // \todo restore default object addition when ndoes can define an variable, as well
+ return /*IsActiveDefaultObject() || */ HasPublicFunctionality();
}
bool SubgraphInterface::HasBranches() const
From 584c125fbc2a69d79934c5ef478f53f9526e5213 Mon Sep 17 00:00:00 2001
From: chcurran <82187351+carlitosan@users.noreply.github.com>
Date: Wed, 11 Aug 2021 15:11:20 -0700
Subject: [PATCH 3/5] rename serializer
Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
---
...ScriptUserDataSerializer.cpp => RuntimeVariableSerializer.cpp} | 0
.../{ScriptUserDataSerializer.h => RuntimeVariableSerializer.h} | 0
2 files changed, 0 insertions(+), 0 deletions(-)
rename Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/{ScriptUserDataSerializer.cpp => RuntimeVariableSerializer.cpp} (100%)
rename Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/{ScriptUserDataSerializer.h => RuntimeVariableSerializer.h} (100%)
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/ScriptUserDataSerializer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp
similarity index 100%
rename from Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/ScriptUserDataSerializer.cpp
rename to Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/ScriptUserDataSerializer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h
similarity index 100%
rename from Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/ScriptUserDataSerializer.h
rename to Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h
From d2c87fd21ffa3406b5f0c774d337d6b7564b4eb5 Mon Sep 17 00:00:00 2001
From: chcurran <82187351+carlitosan@users.noreply.github.com>
Date: Wed, 11 Aug 2021 17:30:16 -0700
Subject: [PATCH 4/5] initial json serialization for editor sc properties
Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
---
.../Code/Include/ScriptCanvas/Core/Datum.h | 3 +
.../Serialization/DatumSerializer.cpp | 196 ++++++++++++++++++
.../Serialization/DatumSerializer.h | 37 ++++
.../RuntimeVariableSerializer.cpp | 28 +--
.../Serialization/RuntimeVariableSerializer.h | 4 +-
.../Code/Source/SystemComponent.cpp | 12 +-
.../Code/scriptcanvasgem_common_files.cmake | 6 +-
7 files changed, 265 insertions(+), 21 deletions(-)
create mode 100644 Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp
create mode 100644 Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.h
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h
index 83db8fc242..4cbc25b500 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.h
@@ -20,6 +20,7 @@
namespace AZ
{
class ReflectContext;
+ class DatumSerializer;
}
namespace ScriptCanvas
@@ -33,6 +34,8 @@ namespace ScriptCanvas
/// in the editor, regardless of their actual ScriptCanvas or BehaviorContext type.
class Datum final
{
+ friend class AZ::DatumSerializer;
+
public:
AZ_TYPE_INFO(Datum, "{8B836FC0-98A8-4A81-8651-35C7CA125451}");
AZ_CLASS_ALLOCATOR(Datum, AZ::SystemAllocator, 0);
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp
new file mode 100644
index 0000000000..207eb842fd
--- /dev/null
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp
@@ -0,0 +1,196 @@
+/*
+ * 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
+
+using namespace ScriptCanvas;
+
+namespace AZ
+{
+ AZ_CLASS_ALLOCATOR_IMPL(DatumSerializer, SystemAllocator, 0);
+
+ JsonSerializationResult::Result DatumSerializer::Load
+ ( void* outputValue
+ , [[maybe_unused]] const Uuid& outputValueTypeId
+ , const rapidjson::Value& inputValue
+ , JsonDeserializerContext& context)
+ {
+ namespace JSR = JsonSerializationResult;
+
+ AZ_Assert(outputValueTypeId == azrtti_typeid(), "DatumSerializer Load against output typeID that was not Datum");
+ AZ_Assert(outputValue, "DatumSerializer Load against null output");
+
+ JsonSerializationResult::ResultCode result(JSR::Tasks::ReadField);
+ auto outputDatum = reinterpret_cast(outputValue);
+
+ bool isOverloadedStorage = false;
+ AZ_Assert(azrtti_typeidm_isOverloadedStorage)>() == azrtti_typeid()
+ , "overloaded storage type changed and won't load properly");
+ result.Combine(ContinueLoadingFromJsonObjectField
+ ( &isOverloadedStorage
+ , azrtti_typeidm_isOverloadedStorage)>()
+ , inputValue
+ , "isOverloadedStorage"
+ , context));
+
+ ScriptCanvas::Data::Type scType;
+ AZ_Assert(azrtti_typeidm_type)>() == azrtti_typeid()
+ , "ScriptCanvas::Data::Type type changed and won't load properly");
+ result.Combine(ContinueLoadingFromJsonObjectField
+ ( &scType
+ , azrtti_typeidm_type)>()
+ , inputValue
+ , "scriptCanvasType"
+ , context));
+
+ ScriptCanvas::Datum::eOriginality originality;
+ AZ_Assert(azrtti_typeidm_originality)>() == azrtti_typeid()
+ , "m_originality type changed and won't load properly");
+ result.Combine(ContinueLoadingFromJsonObjectField
+ ( &originality
+ , azrtti_typeidm_originality)>()
+ , inputValue
+ , "originality"
+ , context));
+
+ AZStd::any storage;
+ { // datum 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("DatumSerializer::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
+ , "DatumSerializer::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, "DatumSerializer::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));
+ } // 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
+ , "originality"
+ , context));
+
+ Datum copy(scType, originality, AZStd::any_cast(&storage), scType.GetAZType());
+ copy.SetLabel(label);
+ *outputDatum = copy;
+
+ return context.Report(result, result.GetProcessing() != JSR::Processing::Halted
+ ? "DatumSerializer Load finished loading Datum"
+ : "DatumSerializer Load failed to load Datum");
+ }
+
+ JsonSerializationResult::Result DatumSerializer::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(), "DatumSerializer Store against value typeID that was not Datum");
+ AZ_Assert(inputValue, "DatumSerializer Store against null inputValue pointer ");
+
+ auto inputScriptDataPtr = reinterpret_cast(inputValue);
+ auto defaultScriptDataPtr = reinterpret_cast(defaultValue);
+
+ if (defaultScriptDataPtr)
+ {
+ if (*inputScriptDataPtr == *defaultScriptDataPtr)
+ {
+ return context.Report
+ ( JSR::Tasks::WriteValue, JSR::Outcomes::DefaultsUsed, "DatumSerializer Store used defaults for Datum");
+ }
+ }
+
+ JSR::ResultCode result(JSR::Tasks::WriteValue);
+ outputValue.SetObject();
+
+ result.Combine(ContinueStoringToJsonObjectField
+ ( outputValue
+ , "isOverloadedStorage"
+ , &inputScriptDataPtr->m_isOverloadedStorage
+ , defaultScriptDataPtr ? &defaultScriptDataPtr->m_isOverloadedStorage : nullptr
+ , azrtti_typeidm_isOverloadedStorage)>()
+ , context));
+
+ result.Combine(ContinueStoringToJsonObjectField
+ ( outputValue
+ , "scriptCanvasType"
+ , &inputScriptDataPtr->GetType()
+ , defaultScriptDataPtr ? &defaultScriptDataPtr->GetType() : nullptr
+ , azrtti_typeidGetType())>()
+ , context));
+
+ result.Combine(ContinueStoringToJsonObjectField
+ ( outputValue
+ , "originality"
+ , &inputScriptDataPtr->m_originality
+ , defaultScriptDataPtr ? &defaultScriptDataPtr->m_originality : nullptr
+ , azrtti_typeidm_originality)>()
+ , 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());
+ }
+
+ result.Combine(ContinueStoringToJsonObjectField
+ ( outputValue
+ , "value"
+ , inputScriptDataPtr->GetAsDanger()
+ , defaultScriptDataPtr ? defaultScriptDataPtr->GetAsDanger() : nullptr
+ , inputScriptDataPtr->GetType().GetAZType()
+ , context));
+ } // datum storage end
+
+ result.Combine(ContinueStoringToJsonObjectField
+ ( outputValue
+ , "label"
+ , &inputScriptDataPtr->m_datumLabel
+ , defaultScriptDataPtr ? &defaultScriptDataPtr->m_datumLabel : nullptr
+ , azrtti_typeidm_datumLabel)>()
+ , context));
+
+ 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/DatumSerializer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.h
new file mode 100644
index 0000000000..003c5c0383
--- /dev/null
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.h
@@ -0,0 +1,37 @@
+/*
+ * 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
+
+namespace AZ
+{
+ class DatumSerializer
+ : public BaseJsonSerializer
+ {
+ public:
+ AZ_RTTI(DatumSerializer, "{FBEBF833-465F-49F4-AFB1-CC9D3B25C16C}", BaseJsonSerializer);
+ AZ_CLASS_ALLOCATOR_DECL;
+
+ private:
+ JsonSerializationResult::Result Load
+ ( void* outputValue
+ , const Uuid& outputValueTypeId
+ , const rapidjson::Value& inputValue
+ , JsonDeserializerContext& context) override;
+
+ JsonSerializationResult::Result Store
+ ( rapidjson::Value& outputValue
+ , const void* inputValue
+ , const void* defaultValue
+ , const Uuid& valueTypeId, JsonSerializerContext& context) override;
+ };
+}
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp
index 64cf665305..763206df38 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp
@@ -8,15 +8,15 @@
#include
#include
-#include
+#include
using namespace ScriptCanvas;
namespace AZ
{
- AZ_CLASS_ALLOCATOR_IMPL(ScriptUserDataSerializer, SystemAllocator, 0);
+ AZ_CLASS_ALLOCATOR_IMPL(RuntimeVariableSerializer, SystemAllocator, 0);
- JsonSerializationResult::Result ScriptUserDataSerializer::Load
+ JsonSerializationResult::Result RuntimeVariableSerializer::Load
( void* outputValue
, [[maybe_unused]] const Uuid& outputValueTypeId
, const rapidjson::Value& inputValue
@@ -24,8 +24,8 @@ namespace AZ
{
namespace JSR = JsonSerializationResult;
- AZ_Assert(outputValueTypeId == azrtti_typeid(), "ScriptUserDataSerializer Load against output typeID that was not RuntimeVariable");
- AZ_Assert(outputValue, "ScriptUserDataSerializer Load against null output");
+ AZ_Assert(outputValueTypeId == azrtti_typeid(), "RuntimeVariableSerializer Load against output typeID that was not RuntimeVariable");
+ AZ_Assert(outputValue, "RuntimeVariableSerializer Load against null output");
auto outputVariable = reinterpret_cast(outputValue);
JsonSerializationResult::ResultCode result(JSR::Tasks::ReadField);
@@ -34,28 +34,28 @@ namespace AZ
auto typeIdMember = inputValue.FindMember(JsonSerialization::TypeIdFieldIdentifier);
if (typeIdMember == inputValue.MemberEnd())
{
- return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Missing, AZStd::string::format("ScriptUserDataSerializer::Load failed to load the %s member", JsonSerialization::TypeIdFieldIdentifier));
+ return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Missing, AZStd::string::format("RuntimeVariableSerializer::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, "ScriptUserDataSerializer::Load failed to load the AZ TypeId of the value");
+ return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Catastrophic, "RuntimeVariableSerializer::Load failed to load the AZ TypeId of the value");
}
outputVariable->value = context.GetSerializeContext()->CreateAny(typeId);
if (outputVariable->value.empty() || outputVariable->value.type() != typeId)
{
- return context.Report(result, "ScriptUserDataSerializer::Load failed to load a value matched the reported AZ TypeId. The C++ declaration may have been deleted or changed.");
+ return context.Report(result, "RuntimeVariableSerializer::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(&outputVariable->value), typeId, inputValue, "value", context));
return context.Report(result, result.GetProcessing() != JSR::Processing::Halted
- ? "ScriptUserDataSerializer Load finished loading RuntimeVariable"
- : "ScriptUserDataSerializer Load failed to load RuntimeVariable");
+ ? "RuntimeVariableSerializer Load finished loading RuntimeVariable"
+ : "RuntimeVariableSerializer Load failed to load RuntimeVariable");
}
- JsonSerializationResult::Result ScriptUserDataSerializer::Store
+ JsonSerializationResult::Result RuntimeVariableSerializer::Store
( rapidjson::Value& outputValue
, const void* inputValue
, const void* defaultValue
@@ -79,7 +79,7 @@ namespace AZ
if (inputDatum == defaultDatum)
{
- return context.Report(JSR::Tasks::WriteValue, JSR::Outcomes::DefaultsUsed, "ScriptUserDataSerializer Store used defaults for RuntimeVariable");
+ return context.Report(JSR::Tasks::WriteValue, JSR::Outcomes::DefaultsUsed, "RuntimeVariableSerializer Store used defaults for RuntimeVariable");
}
}
@@ -95,8 +95,8 @@ namespace AZ
result.Combine(ContinueStoringToJsonObjectField(outputValue, "value", AZStd::any_cast(inputAnyPtr), AZStd::any_cast(defaultAnyPtr), inputAnyPtr->type(), context));
return context.Report(result, result.GetProcessing() != JSR::Processing::Halted
- ? "ScriptUserDataSerializer Store finished saving RuntimeVariable"
- : "ScriptUserDataSerializer Store failed to save RuntimeVariable");
+ ? "RuntimeVariableSerializer Store finished saving RuntimeVariable"
+ : "RuntimeVariableSerializer Store failed to save RuntimeVariable");
}
}
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h
index 720f9481f3..a55770c79f 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h
@@ -14,11 +14,11 @@
namespace AZ
{
- class ScriptUserDataSerializer
+ class RuntimeVariableSerializer
: public BaseJsonSerializer
{
public:
- AZ_RTTI(ScriptUserDataSerializer, "{7E5FC193-8CDB-4251-A68B-F337027381DF}", BaseJsonSerializer);
+ AZ_RTTI(RuntimeVariableSerializer, "{7E5FC193-8CDB-4251-A68B-F337027381DF}", BaseJsonSerializer);
AZ_CLASS_ALLOCATOR_DECL;
private:
diff --git a/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp b/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp
index 9efbb13639..0a82b8cf2a 100644
--- a/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp
+++ b/Gems/ScriptCanvas/Code/Source/SystemComponent.cpp
@@ -23,7 +23,8 @@
#include
#include
#include
-#include
+#include
+#include
#include
#include
@@ -87,8 +88,13 @@ namespace ScriptCanvas
if (AZ::JsonRegistrationContext* jsonContext = azrtti_cast(context))
{
- jsonContext->Serializer()
- ->HandlesType();
+ jsonContext->Serializer()
+ ->HandlesType()
+ ;
+
+ jsonContext->Serializer()
+ ->HandlesType()
+ ;
}
#if defined(SC_EXECUTION_TRACE_ENABLED)
diff --git a/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake b/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake
index 84ba39cc72..f1215dd580 100644
--- a/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake
+++ b/Gems/ScriptCanvas/Code/scriptcanvasgem_common_files.cmake
@@ -539,8 +539,10 @@ set(FILES
Include/ScriptCanvas/Profiler/Aggregator.cpp
Include/ScriptCanvas/Profiler/DrillerEvents.h
Include/ScriptCanvas/Profiler/DrillerEvents.cpp
- Include/ScriptCanvas/Serialization/ScriptUserDataSerializer.h
- Include/ScriptCanvas/Serialization/ScriptUserDataSerializer.cpp
+ Include/ScriptCanvas/Serialization/DatumSerializer.h
+ Include/ScriptCanvas/Serialization/DatumSerializer.cpp
+ Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.h
+ Include/ScriptCanvas/Serialization/RuntimeVariableSerializer.cpp
Include/ScriptCanvas/Data/DataTrait.cpp
Include/ScriptCanvas/Data/DataTrait.h
Include/ScriptCanvas/Data/PropertyTraits.cpp
From fe21b89d8eeca6529e92b0ca852d47593f1632c5 Mon Sep 17 00:00:00 2001
From: chcurran <82187351+carlitosan@users.noreply.github.com>
Date: Thu, 12 Aug 2021 10:24:16 -0700
Subject: [PATCH 5/5] working support for editor property json serialization
Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
---
.../EditorScriptCanvasComponent.cpp | 9 +++----
.../Framework/ScriptCanvasGraphUtilities.inl | 2 +-
.../Execution/RuntimeComponent.cpp | 4 ++--
.../ScriptCanvas/Execution/RuntimeComponent.h | 2 +-
.../Serialization/DatumSerializer.cpp | 24 +++----------------
5 files changed, 10 insertions(+), 31 deletions(-)
diff --git a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp
index dbc525e8e1..2708f95f92 100644
--- a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp
+++ b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp
@@ -322,11 +322,9 @@ namespace ScriptCanvasEditor
return;
}
- auto& variableOverrides = parseOutcome.GetValue();
-
if (!m_variableOverrides.IsEmpty())
{
- variableOverrides.CopyPreviousOverriddenValues(m_variableOverrides);
+ parseOutcome.GetValue().CopyPreviousOverriddenValues(m_variableOverrides);
}
m_variableOverrides = parseOutcome.TakeValue();
@@ -351,8 +349,7 @@ namespace ScriptCanvasEditor
}
auto runtimeComponent = gameEntity->CreateComponent();
- auto runtimeOverrides = ConvertToRuntime(m_variableOverrides);
- runtimeComponent->SetRuntimeDataOverrides(runtimeOverrides);
+ runtimeComponent->TakeRuntimeDataOverrides(ConvertToRuntime(m_variableOverrides));
}
void EditorScriptCanvasComponent::OnCatalogAssetAdded(const AZ::Data::AssetId& assetId)
@@ -518,8 +515,8 @@ namespace ScriptCanvasEditor
[[maybe_unused]] AZ::Entity* scriptCanvasEntity = assetData->GetScriptCanvasEntity();
AZ_Assert(scriptCanvasEntity, "This graph must have a valid entity");
BuildGameEntityData();
- AzToolsFramework::ToolsApplicationNotificationBus::Broadcast(&AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, AzToolsFramework::Refresh_EntireTree_NewContent);
UpdateName();
+ AzToolsFramework::ToolsApplicationNotificationBus::Broadcast(&AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, AzToolsFramework::Refresh_EntireTree_NewContent);
}
}
diff --git a/Gems/ScriptCanvas/Code/Editor/Framework/ScriptCanvasGraphUtilities.inl b/Gems/ScriptCanvas/Code/Editor/Framework/ScriptCanvasGraphUtilities.inl
index 4b22864b6e..05541196f7 100644
--- a/Gems/ScriptCanvas/Code/Editor/Framework/ScriptCanvasGraphUtilities.inl
+++ b/Gems/ScriptCanvas/Code/Editor/Framework/ScriptCanvasGraphUtilities.inl
@@ -283,7 +283,7 @@ namespace ScriptCanvasEditor
loadResult.m_runtimeAsset.Get()->GetData().m_debugMap = luaAssetResult.m_debugMap;
loadResult.m_runtimeComponent = loadResult.m_entity->CreateComponent();
CopyAssetEntityIdsToOverrides(runtimeDataOverrides);
- loadResult.m_runtimeComponent->SetRuntimeDataOverrides(runtimeDataOverrides);
+ loadResult.m_runtimeComponent->TakeRuntimeDataOverrides(AZStd::move(runtimeDataOverrides));
Execution::Context::InitializeActivationData(loadResult.m_runtimeAsset->GetData());
Execution::InitializeInterpretedStatics(loadResult.m_runtimeAsset->GetData());
}
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp
index 2d3fd355e2..ac19028fd5 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp
@@ -93,9 +93,9 @@ namespace ScriptCanvas
return m_runtimeOverrides;
}
- void RuntimeComponent::SetRuntimeDataOverrides(const RuntimeDataOverrides& overrideData)
+ void RuntimeComponent::TakeRuntimeDataOverrides(RuntimeDataOverrides&& overrideData)
{
- m_runtimeOverrides = overrideData;
+ m_runtimeOverrides = AZStd::move(overrideData);
m_runtimeOverrides.EnforcePreloadBehavior();
}
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.h
index 38ff219d4c..8650433b0a 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.h
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.h
@@ -54,7 +54,7 @@ namespace ScriptCanvas
const RuntimeDataOverrides& GetRuntimeDataOverrides() const;
- void SetRuntimeDataOverrides(const RuntimeDataOverrides& overrideData);
+ void TakeRuntimeDataOverrides(RuntimeDataOverrides&& overrideData);
protected:
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp
index 207eb842fd..44ca1730a8 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Serialization/DatumSerializer.cpp
@@ -50,16 +50,6 @@ namespace AZ
, "scriptCanvasType"
, context));
- ScriptCanvas::Datum::eOriginality originality;
- AZ_Assert(azrtti_typeidm_originality)>() == azrtti_typeid()
- , "m_originality type changed and won't load properly");
- result.Combine(ContinueLoadingFromJsonObjectField
- ( &originality
- , azrtti_typeidm_originality)>()
- , inputValue
- , "originality"
- , context));
-
AZStd::any storage;
{ // datum storage begin
AZ::Uuid typeId = AZ::Uuid::CreateNull();
@@ -98,10 +88,10 @@ namespace AZ
( &label
, azrtti_typeidm_datumLabel)>()
, inputValue
- , "originality"
+ , "label"
, context));
- Datum copy(scType, originality, AZStd::any_cast(&storage), scType.GetAZType());
+ Datum copy(scType, Datum::eOriginality::Original, AZStd::any_cast(&storage), scType.GetAZType());
copy.SetLabel(label);
*outputDatum = copy;
@@ -152,15 +142,7 @@ namespace AZ
, defaultScriptDataPtr ? &defaultScriptDataPtr->GetType() : nullptr
, azrtti_typeidGetType())>()
, context));
-
- result.Combine(ContinueStoringToJsonObjectField
- ( outputValue
- , "originality"
- , &inputScriptDataPtr->m_originality
- , defaultScriptDataPtr ? &defaultScriptDataPtr->m_originality : nullptr
- , azrtti_typeidm_originality)>()
- , context));
-
+
{ // datum storage begin
{
rapidjson::Value typeValue;