redcode sc asset files bloodbath

Signed-off-by: carlitosan <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
carlitosan
2021-12-14 15:09:46 -08:00
parent e078eac379
commit 2271fa3dc6
13 changed files with 36 additions and 179 deletions
@@ -6,15 +6,15 @@
*
*/
#include <AzCore/Asset/AssetSerializer.h>
#include <AzToolsFramework/API/EditorAssetSystemAPI.h>
#include <Builder/ScriptCanvasBuilder.h>
#include <Builder/ScriptCanvasBuilderWorker.h>
#include <ScriptCanvas/Assets/ScriptCanvasFileHandling.h>
#include <ScriptCanvas/Components/EditorDeprecationData.h>
#include <ScriptCanvas/Components/EditorGraph.h>
#include <ScriptCanvas/Components/EditorGraphVariableManagerComponent.h>
#include <ScriptCanvas/Grammar/AbstractCodeModel.h>
#include <AzCore/Asset/AssetSerializer.h>
#include <ScriptCanvas/Assets/ScriptCanvasFileHandling.h>
#include <ScriptCanvas/Components/EditorGraph.h>
namespace BuildVariableOverridesCpp
{
@@ -41,7 +41,7 @@ namespace BuildVariableOverridesCpp
}
auto& sourceElement = rootElement.GetSubElement(sourceIndex);
AZ::Data::Asset<ScriptCanvasEditor::ScriptCanvasAsset> asset;
AZ::Data::Asset<ScriptCanvasEditor::Deprecated::ScriptCanvasAsset> asset;
if (!sourceElement.GetData(asset))
{
AZ_Error("ScriptCanvas", false, "BuildVariableOverrides coversion failed: could not retrieve 'source' data");
@@ -15,7 +15,6 @@
namespace ScriptCanvasEditor
{
class ScriptCanvasAsset;
class EditorAssetTree;
}
@@ -96,8 +96,6 @@ namespace ScriptCanvasBuilder
builderDescriptor.m_productsToKeepOnFailure[s_scriptCanvasProcessJobKey] = { AZ_CRC("SubgraphInterface", 0xdfe6dc72) };
m_scriptCanvasBuilder.BusConnect(builderDescriptor.m_busId);
AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, builderDescriptor);
AzToolsFramework::ToolsAssetSystemBus::Broadcast(&AzToolsFramework::ToolsAssetSystemRequests::RegisterSourceAssetType, azrtti_typeid<ScriptCanvasEditor::ScriptCanvasAsset>(), ScriptCanvasEditor::ScriptCanvasAsset::Description::GetFileFilter<ScriptCanvasEditor::ScriptCanvasAsset>());
}
m_sharedHandlers = HandleAssetTypes();
@@ -109,7 +107,6 @@ namespace ScriptCanvasBuilder
{
// Finish all queued work
AZ::Data::AssetBus::ExecuteQueuedEvents();
AzToolsFramework::ToolsAssetSystemBus::Broadcast(&AzToolsFramework::ToolsAssetSystemRequests::UnregisterSourceAssetType, azrtti_typeid<ScriptCanvasEditor::ScriptCanvasAsset>());
m_scriptCanvasBuilder.BusDisconnect();
m_sharedHandlers.DeleteOwnedHandlers();
}
@@ -44,10 +44,8 @@ namespace ScriptCanvasBuilder
AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, false);
AzFramework::StringFunc::Path::Normalize(fullPath);
AZ::Data::Asset<ScriptCanvasEditor::ScriptCanvasAsset> asset;
const ScriptCanvasEditor::Graph* sourceGraph = nullptr;
const ScriptCanvas::GraphData* graphData = nullptr;
ScriptCanvasEditor::SourceHandle sourceHandle;
auto sourceOutcome = ScriptCanvasEditor::LoadFromFile(fullPath);
@@ -57,7 +55,14 @@ namespace ScriptCanvasBuilder
sourceGraph = sourceHandle.Get();
graphData = sourceGraph->GetGraphDataConst();
}
else
{
AZ_TracePrintf(s_scriptCanvasBuilder, "Failed to load the file: %s", fullPath.c_str());
response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed;
}
// in terms of job creation, assert on anything but smooth sailing from this point
AZ_Assert(sourceGraph, "Graph component is missing from entity.");
AZ_Assert(graphData, "GraphData is missing from entity");
@@ -36,7 +36,6 @@ namespace ScriptCanvas
namespace ScriptCanvasEditor
{
class Graph;
class ScriptCanvasAsset;
class SourceHandle;
}
@@ -132,8 +131,6 @@ namespace ScriptCanvasBuilder
int GetBuilderVersion();
AZ::Outcome<AZ::Data::Asset<ScriptCanvasEditor::ScriptCanvasAsset>, AZStd::string> LoadEditorAsset(AZStd::string_view graphPath, AZ::Data::AssetId assetId, AZ::Data::AssetFilterCB assetFilterCB = {});
AZ::Outcome<ScriptCanvas::Grammar::AbstractCodeModelConstPtr, AZStd::string> ParseGraph(AZ::Entity& buildEntity, AZStd::string_view graphPath);
AZ::Outcome<void, AZStd::string> ProcessTranslationJob(ProcessTranslationJobInput& input);
@@ -59,7 +59,7 @@ namespace ScriptCanvasEditor
}
auto assetElement = rootElement.GetSubElement(assetElementIndex);
AZ::Data::Asset<ScriptCanvasAsset> scriptCanvasAsset;
AZ::Data::Asset<Deprecated::ScriptCanvasAsset> scriptCanvasAsset;
if (!assetElement.GetData(scriptCanvasAsset))
{
AZ_Error("Script Canvas", false, "Unable to find Script Canvas Asset on a Version %u Editor ScriptCanvas Component", rootElement.GetVersion());
@@ -42,8 +42,6 @@ namespace ScriptCanvas
namespace ScriptCanvasEditor
{
class ScriptCanvasAsset;
struct LoadTestGraphResult
{
AZStd::unique_ptr<AZ::Entity> m_entity;
@@ -20,7 +20,6 @@
#include <GraphCanvas/Editor/EditorTypes.h>
#include <GraphCanvas/Types/EntitySaveData.h>
#include <Editor/Include/ScriptCanvas/Assets/ScriptCanvasAsset.h>
#include <Editor/Include/ScriptCanvas/Bus/NodeIdPair.h>
#include <ScriptCanvas/Core/ExecutionNotificationsBus.h>
#include <ScriptCanvas/Variable/VariableCore.h>
@@ -11,67 +11,34 @@
#include <AzCore/Component/EntityId.h>
#include <AzCore/Asset/AssetCommon.h>
#include <ScriptCanvas/Core/Core.h>
class ScriptCanvasAsset;
#include <AzCore/Asset/AssetCommon.h>
namespace ScriptCanvasEditor
{
namespace Deprecated
{
/* source file description
ScriptCanvasAssetDescription()
: ScriptCanvas::AssetDescription(
"{FA10C3DA-0717-4B72-8944-CD67D13DFA2B}", // type
"Script Canvas", // name
"Script Canvas Graph Asset", // description
"@projectroot@/scriptcanvas", // suggested save path
".scriptcanvas", // fileExtention
"Script Canvas", // group
"Untitled-%i", // asset name pattern
"Script Canvas Files (*.scriptcanvas)", // file filter
"Script Canvas", // asset type display name
"Script Canvas", // entity name
"Icons/ScriptCanvas/Viewport/ScriptCanvas.png", // icon path
AZ::Color(0.321f, 0.302f, 0.164f, 1.0f), // display color
true // is editable type
)
{}
AssetDescription( AZ::Data::AssetType assetType,
const char* name,
const char* description,
const char* suggestedSavePath,
const char* fileExtension,
const char* group,
const char* assetNamePattern,
const char* fileFilter,
const char* assetTypeDisplayName,
const char* entityName,
const char* iconPath,
AZ::Color displayColor,
bool isEditableType)
*/
class ScriptCanvasAssetHolder
{
public:
AZ_TYPE_INFO(ScriptCanvasAssetHolder, "{3E80CEE3-2932-4DC1-AADF-398FDDC6DEFE}");
AZ_CLASS_ALLOCATOR(ScriptCanvasAssetHolder, AZ::SystemAllocator, 0);
ScriptCanvasAssetHolder() = default;
static void Reflect(AZ::ReflectContext* context);
AZ::Data::Asset<ScriptCanvasAsset> m_scriptCanvasAsset;
ScriptCanvasAssetHolder() = default;
};
// only is used as a pass-through to loading a guid / hint during versioning
class ScriptCanvasAsset
: public AZ::Data::AssetData
{
public:
AZ_TYPE_INFO(ScriptCanvasAsset, "{3E80CEE3-2932-4DC1-AADF-398FDDC6DEFE}");
AZ_TYPE_INFO(ScriptCanvasAsset, "{FA10C3DA-0717-4B72-8944-CD67D13DFA2B}");
AZ_CLASS_ALLOCATOR(ScriptCanvasAsset, AZ::SystemAllocator, 0);
ScriptCanvasAsset() = default;
static void Reflect(AZ::ReflectContext * context);
};
}
}
@@ -21,14 +21,8 @@
namespace ScriptCanvasEditor
{
/*! EditorScriptCanvasComponent
The user facing Editor Component for interfacing with ScriptCanvas
It connects to the AssetCatalogEventBus in order to remove the ScriptCanvasAssetHolder asset reference
when the asset is removed from the file system. The reason the ScriptCanvasAssetHolder holder does not
remove the asset reference itself is because the ScriptCanvasEditor MainWindow has a ScriptCanvasAssetHolder
which it uses to maintain the asset data in memory. Therefore removing an open ScriptCanvasAsset from the file system
will remove the reference from the EditorScriptCanvasComponent, but not the reference from the MainWindow allowing the
ScriptCanvas graph to still be modified while open
Finally per graph instance variables values are stored on the EditorScriptCanvasComponent and injected into the runtime ScriptCanvas component in BuildGameEntity
The user facing Editor Component for interfacing with ScriptCanvas.
Per graph instance variables values are stored here and injected into the runtime ScriptCanvas component in BuildGameEntity.
*/
class EditorScriptCanvasComponent
: public AzToolsFramework::Components::EditorComponentBase
@@ -88,13 +82,6 @@ namespace ScriptCanvasEditor
AZ::Data::AssetId GetAssetId() const override;
//=====================================================================
//=====================================================================
// EditorEntityContextNotificationBus
protected:
enum class SourceChangeDescription : AZ::u8
{
@@ -434,8 +434,9 @@ namespace ScriptCanvasEditor
m_scriptCanvasAssetModel = new ScriptCanvasAssetBrowserModel(this);
AzToolsFramework::AssetBrowser::AssetGroupFilter* scriptCanvasAssetFilter = new AzToolsFramework::AssetBrowser::AssetGroupFilter();
// #sc_editor_asset_redux this may not be needed, may not be doing the right thing at all...
scriptCanvasAssetFilter->SetAssetGroup(ScriptCanvasAsset::Description::GetGroup(azrtti_typeid<ScriptCanvas::SubgraphInterfaceAsset>()));
// #sc_editor_asset_redux this may not be needed, may not be doing the right thing at all, verify that searching through
// the subgraph interface assets is the correct thing to do
scriptCanvasAssetFilter->SetAssetGroup(ScriptCanvas::SubgraphInterfaceAssetDescription().GetGroupImpl());
scriptCanvasAssetFilter->SetFilterPropagation(AzToolsFramework::AssetBrowser::AssetBrowserEntryFilter::PropagateDirection::Down);
m_scriptCanvasAssetModel->setSourceModel(assetBrowserModel);
@@ -1483,17 +1484,17 @@ namespace ScriptCanvasEditor
for (;;)
{
ScriptCanvasAssetDescription description;
AZStd::string newAssetName = AZStd::string::format(description.GetAssetNamePatternImpl(), ++scriptCanvasEditorDefaultNewNameCount);
AZStd::string newAssetName = AZStd::string::format(SourceDescription::GetAssetNamePattern()
, ++scriptCanvasEditorDefaultNewNameCount);
AZStd::array<char, AZ::IO::MaxPathLength> assetRootArray;
if (!AZ::IO::FileIOBase::GetInstance()->ResolvePath(description.GetSuggestedSavePathImpl()
if (!AZ::IO::FileIOBase::GetInstance()->ResolvePath(SourceDescription::GetSuggestedSavePath()
, assetRootArray.data(), assetRootArray.size()))
{
AZ_ErrorOnce("Script Canvas", false, "Unable to resolve @projectroot@ path");
}
AzFramework::StringFunc::Path::Join(assetRootArray.data(), (newAssetName + description.GetExtensionImpl()).data(), assetPath);
AzFramework::StringFunc::Path::Join(assetRootArray.data(), (newAssetName + SourceDescription::GetFileExtension()).data(), assetPath);
AZ::Data::AssetInfo assetInfo;
if (!AssetHelpers::GetAssetInfo(assetPath, assetInfo))
@@ -1621,7 +1622,6 @@ namespace ScriptCanvasEditor
}
PrepareAssetForSave(inMemoryAssetId);
ScriptCanvasAssetDescription assetDescription;
AZStd::string suggestedFilename;
AZStd::string suggestedFileFilter;
@@ -1630,16 +1630,16 @@ namespace ScriptCanvasEditor
if (save == Save::InPlace)
{
isValidFileName = true;
suggestedFileFilter = ScriptCanvasAssetDescription().GetExtensionImpl();
suggestedFileFilter = SourceDescription::GetFileExtension();
suggestedFilename = inMemoryAssetId.Path().c_str();
}
else
{
suggestedFileFilter = ScriptCanvasAssetDescription().GetExtensionImpl();
suggestedFileFilter = SourceDescription::GetFileExtension();
if (inMemoryAssetId.Path().empty())
{
suggestedFilename = ScriptCanvasAssetDescription().GetSuggestedSavePathImpl();
suggestedFilename = SourceDescription::GetSuggestedSavePath();
}
else
{
@@ -1661,9 +1661,9 @@ namespace ScriptCanvasEditor
{
AZStd::string filePath = selectedFile.toUtf8().data();
if (!AZ::StringFunc::EndsWith(filePath, assetDescription.GetExtensionImpl(), false))
if (!AZ::StringFunc::EndsWith(filePath, SourceDescription::GetFileExtension(), false))
{
filePath += assetDescription.GetExtensionImpl();
filePath += SourceDescription::GetFileExtension();
}
AZStd::string fileName;
@@ -1695,9 +1695,9 @@ namespace ScriptCanvasEditor
AZStd::string internalStringFile = selectedFile.toUtf8().data();
if (!AZ::StringFunc::EndsWith(internalStringFile, assetDescription.GetExtensionImpl(), false))
if (!AZ::StringFunc::EndsWith(internalStringFile, SourceDescription::GetFileExtension(), false))
{
internalStringFile += assetDescription.GetExtensionImpl();
internalStringFile += SourceDescription::GetFileExtension();
}
if (!AssetHelpers::IsValidSourceFile(internalStringFile, GetActiveScriptCanvasId()))
@@ -1,89 +0,0 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#include <AzCore/std/smart_ptr/enable_shared_from_this.h>
#include <AzCore/Asset/AssetCommon.h>
#include <Editor/Include/ScriptCanvas/Assets/ScriptCanvasAssetBus.h>
#include <Editor/Include/ScriptCanvas/Assets/ScriptCanvasBaseAssetData.h>
#include <ScriptCanvas/Asset/AssetDescription.h>
namespace ScriptCanvas
{
class ScriptCanvasAssetBase
: public AZ::Data::AssetData
, public AZStd::enable_shared_from_this<ScriptCanvasAssetBase>
, ScriptCanvas::ScriptCanvasAssetBusRequestBus::Handler
{
public:
AZ_RTTI(ScriptCanvasAssetBase, "{D07DBDE4-A169-4650-871B-FC75AFEEB03E}", AZ::Data::AssetData);
AZ_CLASS_ALLOCATOR(ScriptCanvasAssetBase, AZ::SystemAllocator, 0);
ScriptCanvasAssetBase(const AZ::Data::AssetId& assetId = AZ::Data::AssetId(AZ::Uuid::CreateRandom()),
AZ::Data::AssetData::AssetStatus status = AZ::Data::AssetData::AssetStatus::NotLoaded)
: AZ::Data::AssetData(assetId, status)
{
ScriptCanvas::ScriptCanvasAssetBusRequestBus::Handler::BusConnect(GetId());
}
virtual ~ScriptCanvasAssetBase()
{
delete m_data;
ScriptCanvas::ScriptCanvasAssetBusRequestBus::Handler::BusDisconnect();
}
template <typename DataType>
DataType* GetScriptCanvasDataAs()
{
return azrtti_cast<DataType*>(m_data);
}
template <typename DataType>
const DataType* GetScriptCanvasDataAs() const
{
return azrtti_cast<DataType*>(m_data);
}
virtual ScriptCanvasData& GetScriptCanvasData()
{
return *m_data;
}
virtual const ScriptCanvasData& GetScriptCanvasData() const
{
return *m_data;
}
AZ::Entity* GetScriptCanvasEntity() const
{
return m_data->m_scriptCanvasEntity.get();
}
virtual void SetScriptCanvasEntity(AZ::Entity* scriptCanvasEntity)
{
if (m_data->m_scriptCanvasEntity.get() != scriptCanvasEntity)
{
m_data->m_scriptCanvasEntity.reset(scriptCanvasEntity);
}
}
virtual ScriptCanvas::AssetDescription GetAssetDescription() const = 0;
protected:
ScriptCanvasData* m_data;
void SetAsNewAsset() override
{
m_status = AZ::Data::AssetData::AssetStatus::Ready;
}
};
}
@@ -17,9 +17,6 @@ set(FILES
Editor/QtMetaTypes.h
Editor/Assets/ScriptCanvasAssetHelpers.h
Editor/Assets/ScriptCanvasAssetHelpers.cpp
Editor/Include/ScriptCanvas/Assets/ScriptCanvasBaseAssetData.h
Editor/Include/ScriptCanvas/Assets/ScriptCanvasBaseAssetData.cpp
Editor/Include/ScriptCanvas/Assets/ScriptCanvasAssetBus.h
Editor/Include/ScriptCanvas/Assets/ScriptCanvasFileHandling.h
Editor/Assets/ScriptCanvasFileHandling.cpp
Editor/Assets/ScriptCanvasUndoHelper.h