You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
538 lines
32 KiB
C++
538 lines
32 KiB
C++
/*
|
|
* 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 <AzCore/UserSettings/UserSettingsProvider.h>
|
|
|
|
#include <GraphCanvas/Components/Nodes/Comment/CommentBus.h>
|
|
|
|
#include "Settings.h"
|
|
|
|
#include <ScriptCanvas/Assets/ScriptCanvasAsset.h>
|
|
#include <ScriptCanvas/Data/Data.h>
|
|
|
|
#include <Editor/GraphCanvas/GraphCanvasEditorNotificationBusId.h>
|
|
#include <Editor/View/Widgets/VariablePanel/GraphVariablesTableView.h>
|
|
|
|
namespace SettingsCpp
|
|
{
|
|
void UpdateProcessingSettings()
|
|
{
|
|
if (auto userSettings = AZ::UserSettings::CreateFind<ScriptCanvasEditor::EditorSettings::ScriptCanvasEditorSettings>(AZ_CRC("ScriptCanvasPreviewSettings", 0x1c5a2965), AZ::UserSettings::CT_LOCAL))
|
|
{
|
|
ScriptCanvas::Grammar::g_saveRawTranslationOuputToFile = userSettings->m_saveRawTranslationOuputToFile;
|
|
ScriptCanvas::Grammar::g_printAbstractCodeModel = userSettings->m_printAbstractCodeModel;
|
|
}
|
|
}
|
|
}
|
|
|
|
namespace ScriptCanvasEditor
|
|
{
|
|
namespace EditorSettings
|
|
{
|
|
/////////////////////////////////
|
|
// ScriptCanvasConstructPresets
|
|
/////////////////////////////////
|
|
|
|
ScriptCanvasConstructPresets::ScriptCanvasConstructPresets()
|
|
{
|
|
}
|
|
|
|
void ScriptCanvasConstructPresets::InitializeConstructType(GraphCanvas::ConstructType constructType)
|
|
{
|
|
if (constructType == GraphCanvas::ConstructType::NodeGroup)
|
|
{
|
|
GraphCanvas::NodeGroupPresetBucket* nodeGroupPresetBucket = static_cast<GraphCanvas::NodeGroupPresetBucket*>(ModPresetBuckket(GraphCanvas::ConstructType::NodeGroup));
|
|
|
|
if (nodeGroupPresetBucket)
|
|
{
|
|
nodeGroupPresetBucket->ClearPresets();
|
|
|
|
AZStd::vector< AZStd::pair< AZStd::string, AZ::Color > > defaultGroupPresets = {
|
|
{ "Initialization", AZ::Color(0.188f, 0.972f, 0.243f, 1.0f) },
|
|
{ "UI", AZ::Color(0.741f, 0.372f, 0.545f, 1.0f) },
|
|
{ "AI", AZ::Color(0.396f, 0.788f, 0.788f, 1.0f) },
|
|
{ "Physics", AZ::Color(0.866f, 0.498f, 0.427f, 1.0f) },
|
|
{ "Input", AZ::Color(0.396f, 0.788f, 0.549f, 1.0f) }
|
|
};
|
|
|
|
for (auto groupPairing : defaultGroupPresets)
|
|
{
|
|
AZStd::shared_ptr< GraphCanvas::ConstructPreset > initializaitonGroupPreset = nodeGroupPresetBucket->CreateNewPreset(groupPairing.first);
|
|
|
|
if (initializaitonGroupPreset)
|
|
{
|
|
const auto& presetSaveData = initializaitonGroupPreset->GetPresetData();
|
|
|
|
GraphCanvas::CommentNodeTextSaveData* saveData = presetSaveData.FindSaveDataAs<GraphCanvas::CommentNodeTextSaveData>();
|
|
|
|
if (saveData)
|
|
{
|
|
saveData->m_backgroundColor = groupPairing.second;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (constructType == GraphCanvas::ConstructType::CommentNode)
|
|
{
|
|
GraphCanvas::CommentPresetBucket* commentPresetBucket = static_cast<GraphCanvas::CommentPresetBucket*>(ModPresetBuckket(GraphCanvas::ConstructType::CommentNode));
|
|
commentPresetBucket->ClearPresets();
|
|
}
|
|
}
|
|
|
|
////////////////////
|
|
// EditorWorkspace
|
|
////////////////////
|
|
|
|
// WorkspaceAssetSaveData
|
|
EditorWorkspace::WorkspaceAssetSaveData::WorkspaceAssetSaveData()
|
|
: m_assetType(azrtti_typeid<ScriptCanvasAsset>())
|
|
{
|
|
}
|
|
|
|
EditorWorkspace::WorkspaceAssetSaveData::WorkspaceAssetSaveData(const AZ::Data::AssetId& assetId)
|
|
: m_assetId(assetId)
|
|
, m_assetType(azrtti_typeid<ScriptCanvasAsset>())
|
|
{
|
|
}
|
|
|
|
bool EditorWorkspace::VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& rootDataElementNode)
|
|
{
|
|
if (rootDataElementNode.GetVersion() < 3)
|
|
{
|
|
AZStd::vector<WorkspaceAssetSaveData> assetSaveData;
|
|
AZStd::vector<AZ::Data::AssetId> assetIds;
|
|
auto subElement = rootDataElementNode.FindSubElement(AZ_CRC("ActiveAssetIds", 0xe445268a));
|
|
|
|
if (subElement)
|
|
{
|
|
if (subElement->GetData(assetIds))
|
|
{
|
|
assetSaveData.reserve(assetIds.size());
|
|
for (const AZ::Data::AssetId& assetId : assetIds)
|
|
{
|
|
assetSaveData.emplace_back(assetId);
|
|
}
|
|
}
|
|
}
|
|
|
|
rootDataElementNode.RemoveElementByName(AZ_CRC("ActiveAssetIds", 0xe445268a));
|
|
rootDataElementNode.AddElementWithData(context, "ActiveAssetData", assetSaveData);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void EditorWorkspace::Reflect(AZ::ReflectContext* context)
|
|
{
|
|
AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context);
|
|
if (serialize)
|
|
{
|
|
serialize->Class<WorkspaceAssetSaveData>()
|
|
->Version(1)
|
|
->Field("AssetId", &WorkspaceAssetSaveData::m_assetId)
|
|
->Field("AssetType", &WorkspaceAssetSaveData::m_assetType)
|
|
;
|
|
|
|
serialize->Class<EditorWorkspace>()
|
|
->Version(3, &EditorWorkspace::VersionConverter)
|
|
->Field("m_storedWindowState", &EditorWorkspace::m_storedWindowState)
|
|
->Field("m_windowGeometry", &EditorWorkspace::m_windowGeometry)
|
|
->Field("FocusedAssetId", &EditorWorkspace::m_focusedAssetId)
|
|
->Field("ActiveAssetData", &EditorWorkspace::m_activeAssetData)
|
|
;
|
|
}
|
|
}
|
|
|
|
void EditorWorkspace::ConfigureActiveAssets(AZ::Data::AssetId focussedAssetId, const AZStd::vector< WorkspaceAssetSaveData >& activeAssetData)
|
|
{
|
|
m_focusedAssetId = focussedAssetId;
|
|
m_activeAssetData = activeAssetData;
|
|
}
|
|
|
|
AZ::Data::AssetId EditorWorkspace::GetFocusedAssetId() const
|
|
{
|
|
return m_focusedAssetId;
|
|
}
|
|
|
|
AZStd::vector< EditorWorkspace::WorkspaceAssetSaveData > EditorWorkspace::GetActiveAssetData() const
|
|
{
|
|
return m_activeAssetData;
|
|
}
|
|
|
|
void EditorWorkspace::Init(const QByteArray& windowState, const QByteArray& windowGeometry)
|
|
{
|
|
m_storedWindowState.clear();
|
|
|
|
m_windowState.assign((AZ::u8*)windowState.begin(), (AZ::u8*)windowState.end());
|
|
m_windowGeometry.assign((AZ::u8*)windowGeometry.begin(), (AZ::u8*)windowGeometry.end());
|
|
|
|
m_storedWindowState.assign((AZ::u8*)windowState.begin(), (AZ::u8*)windowState.end());
|
|
}
|
|
|
|
void EditorWorkspace::Restore(QMainWindow* window)
|
|
{
|
|
AZ_Assert(window, "A valid window must be provided to restore its state.");
|
|
|
|
QByteArray windowStateData((const char*)GetWindowState().data(), (int)GetWindowState().size());
|
|
window->restoreState(windowStateData);
|
|
}
|
|
|
|
const AZStd::vector<AZ::u8>& EditorWorkspace::GetWindowState()
|
|
{
|
|
m_windowState.clear();
|
|
m_windowState.assign(m_storedWindowState.begin(), m_storedWindowState.end());
|
|
return m_windowState;
|
|
}
|
|
|
|
////////////////////
|
|
// StylingSettings
|
|
////////////////////
|
|
|
|
void StylingSettings::Reflect(AZ::ReflectContext* reflectContext)
|
|
{
|
|
AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(reflectContext);
|
|
|
|
if (serializeContext)
|
|
{
|
|
serializeContext->Class<StylingSettings>()
|
|
->Version(1)
|
|
->Field("ConnectionCurveType", &StylingSettings::m_connectionCurveType)
|
|
->Field("DataConnectionCurveType", &StylingSettings::m_dataConnectionCurveType)
|
|
;
|
|
|
|
AZ::EditContext* editContext = serializeContext->GetEditContext();
|
|
if (editContext)
|
|
{
|
|
editContext->Class<StylingSettings>("StylingSettings", "All of the styling configurations that can be customized per user.")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->DataElement(AZ::Edit::UIHandlers::ComboBox, &StylingSettings::m_connectionCurveType, "Connection Curve Type", "Controls the curve style of general connections.")
|
|
->EnumAttribute(GraphCanvas::Styling::ConnectionCurveType::Straight, "Straight")
|
|
->EnumAttribute(GraphCanvas::Styling::ConnectionCurveType::Curved, "Curved")
|
|
->DataElement(AZ::Edit::UIHandlers::ComboBox, &StylingSettings::m_dataConnectionCurveType, "Data Connection Curve Type", "Controls the curve style of data connections.")
|
|
->EnumAttribute(GraphCanvas::Styling::ConnectionCurveType::Straight, "Straight")
|
|
->EnumAttribute(GraphCanvas::Styling::ConnectionCurveType::Curved, "Curved")
|
|
;
|
|
}
|
|
}
|
|
}
|
|
|
|
///////////////////////////////
|
|
// ScriptCanvasEditorSettings
|
|
///////////////////////////////
|
|
|
|
bool ScriptCanvasEditorSettings::VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement)
|
|
{
|
|
if (classElement.GetVersion() <= 5)
|
|
{
|
|
AZ::Crc32 dragCouplingEnabledId = AZ_CRC("m_enableNodeDragCoupling", 0x3edd74aa);
|
|
AZ::Crc32 dragCouplingTimeId = AZ_CRC("m_dragNodeCouplingTime", 0xe6f213ae);
|
|
|
|
AZ::Crc32 dragSplicingEnabledId = AZ_CRC("m_enableNodeDragConnectionSplicing", 0x77957b8f);
|
|
AZ::Crc32 dragSplicingTimeId = AZ_CRC("m_dragNodeConnectionSplicingTime", 0x3e3742fb);
|
|
|
|
AZ::Crc32 dropSplicingEnabledId = AZ_CRC("m_enableNodeDropConnectionSplicing", 0x371180a9);
|
|
AZ::Crc32 dropSplicingTimeId = AZ_CRC("m_dropNodeConnectionSplicingTime", 0xba85498e);
|
|
|
|
ToggleableConfiguration dragCouplingConfiguration(false,1000);
|
|
ToggleableConfiguration dragSplicingConfiguration(true, 1000);
|
|
ToggleableConfiguration dropSplicingConfiguration(true, 1000);
|
|
|
|
// Drag Coupling
|
|
AZ::SerializeContext::DataElementNode* dataNode = classElement.FindSubElement(dragCouplingEnabledId);
|
|
|
|
if (dataNode)
|
|
{
|
|
dataNode->GetData(dragCouplingConfiguration.m_enabled);
|
|
}
|
|
|
|
classElement.RemoveElementByName(dragCouplingEnabledId);
|
|
|
|
dataNode = classElement.FindSubElement(dragCouplingTimeId);
|
|
|
|
if (dataNode)
|
|
{
|
|
dataNode->GetData(dragCouplingConfiguration.m_timeMS);
|
|
}
|
|
|
|
classElement.RemoveElementByName(dragCouplingTimeId);
|
|
|
|
// Drag Splicing
|
|
dataNode = classElement.FindSubElement(dragSplicingEnabledId);
|
|
|
|
if (dataNode)
|
|
{
|
|
dataNode->GetData(dragSplicingConfiguration.m_timeMS);
|
|
}
|
|
|
|
classElement.RemoveElementByName(dragSplicingEnabledId);
|
|
|
|
dataNode = classElement.FindSubElement(dragSplicingTimeId);
|
|
|
|
if (dataNode)
|
|
{
|
|
dataNode->GetData(dragSplicingConfiguration.m_timeMS);
|
|
}
|
|
|
|
classElement.RemoveElementByName(dragSplicingTimeId);
|
|
|
|
// Drop Splicing
|
|
dataNode = classElement.FindSubElement(dropSplicingEnabledId);
|
|
|
|
if (dataNode)
|
|
{
|
|
dataNode->GetData(dropSplicingConfiguration.m_timeMS);
|
|
}
|
|
|
|
classElement.RemoveElementByName(dropSplicingEnabledId);
|
|
|
|
dataNode = classElement.FindSubElement(dropSplicingTimeId);
|
|
|
|
if (dataNode)
|
|
{
|
|
dataNode->GetData(dropSplicingConfiguration.m_timeMS);
|
|
}
|
|
|
|
classElement.RemoveElementByName(dropSplicingTimeId);
|
|
|
|
classElement.AddElementWithData(context, "DragCouplingConfiguration", dragCouplingConfiguration);
|
|
classElement.AddElementWithData(context, "DragSplicingConfiguration", dragSplicingConfiguration);
|
|
classElement.AddElementWithData(context, "DropSplicingConfiguration", dropSplicingConfiguration);
|
|
}
|
|
|
|
if (classElement.GetVersion() <= 11)
|
|
{
|
|
classElement.RemoveElementByName(AZ::Crc32("ConstructPresets"));
|
|
}
|
|
|
|
if (classElement.GetVersion() <= 14)
|
|
{
|
|
classElement.RemoveElementByName(AZ_CRC("m_showPreviewMessage", 0x375b279b));
|
|
classElement.RemoveElementByName(AZ_CRC("m_showExcludedNodes", 0x4c802d0c));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void ScriptCanvasEditorSettings::Reflect(AZ::ReflectContext* context)
|
|
{
|
|
StylingSettings::Reflect(context);
|
|
|
|
AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context);
|
|
if (serialize)
|
|
{
|
|
serialize->Class<ScriptCanvasConstructPresets, GraphCanvas::EditorConstructPresets>()
|
|
->Version(1)
|
|
;
|
|
|
|
serialize->Class<ToggleableConfiguration>()
|
|
->Version(1)
|
|
->Field("Enabled", &ToggleableConfiguration::m_enabled)
|
|
->Field("TimeMS", &ToggleableConfiguration::m_timeMS)
|
|
;
|
|
|
|
serialize->Class<AutoSaveSettings>()
|
|
->Version(1)
|
|
->Field("Enabled", &AutoSaveSettings::m_enabled)
|
|
->Field("TimeSeconds", &AutoSaveSettings::m_timeSeconds)
|
|
;
|
|
|
|
serialize->Class<ShakeToDespliceSettings>()
|
|
->Version(1)
|
|
->Field("Enabled", &ShakeToDespliceSettings::m_enabled)
|
|
->Field("ShakeCount", &ShakeToDespliceSettings::m_shakeCount)
|
|
->Field("ShakeLength", &ShakeToDespliceSettings::m_minimumShakeLengthPercent)
|
|
->Field("DeadZone", &ShakeToDespliceSettings::m_deadZonePercent)
|
|
->Field("ShakeTime", &ShakeToDespliceSettings::m_maximumShakeTimeMS)
|
|
->Field("Straightness", &ShakeToDespliceSettings::m_straightnessPercent)
|
|
;
|
|
|
|
serialize->Class<EdgePanningSettings>()
|
|
->Version(1)
|
|
->Field("EdgePercent", &EdgePanningSettings::m_edgeScrollPercent)
|
|
->Field("ScrollSpeed", &EdgePanningSettings::m_edgeScrollSpeed)
|
|
;
|
|
|
|
serialize->Class<ZoomSettings>()
|
|
->Version(2)
|
|
->Field("MinZoom", &ZoomSettings::m_zoomInSetting)
|
|
;
|
|
|
|
serialize->Class<ExperimentalSettings>()
|
|
->Version(1)
|
|
->Field("ShowNetworkProperties", &ExperimentalSettings::m_showNetworkProperties)
|
|
;
|
|
|
|
serialize->Class<ScriptCanvasEditorSettings>()
|
|
->Version(19, ScriptCanvasEditorSettings::VersionConverter)
|
|
->Field("m_snapDistance", &ScriptCanvasEditorSettings::m_snapDistance)
|
|
->Field("m_enableGroupDoubleClickCollapse", &ScriptCanvasEditorSettings::m_enableGroupDoubleClickCollapse)
|
|
->Field("m_pinnedDataTypes", &ScriptCanvasEditorSettings::m_pinnedDataTypes)
|
|
->Field("m_allowBookmarkViewpointControl", &ScriptCanvasEditorSettings::m_allowBookmarkViewpointControl)
|
|
->Field("DragCouplingConfiguration", &ScriptCanvasEditorSettings::m_dragNodeCouplingConfig)
|
|
->Field("DragSplicingConfiguration", &ScriptCanvasEditorSettings::m_dragNodeSplicingConfig)
|
|
->Field("DropSplicingConfiguration", &ScriptCanvasEditorSettings::m_dropNodeSplicingConfig)
|
|
->Field("AutoSaveConfiguration", &ScriptCanvasEditorSettings::m_autoSaveConfig)
|
|
->Field("ShakeToDespliceConfiguration", &ScriptCanvasEditorSettings::m_shakeDespliceConfig)
|
|
->Field("VariableColumnSorting", &ScriptCanvasEditorSettings::m_variablePanelSorting)
|
|
->Field("ShowWarnings", &ScriptCanvasEditorSettings::m_showValidationWarnings)
|
|
->Field("ShowErrors", &ScriptCanvasEditorSettings::m_showValidationErrors)
|
|
->Field("saveRawTranslationOuputToFile", &ScriptCanvasEditorSettings::m_saveRawTranslationOuputToFile)
|
|
->Field("printAbstractCodeModel", &ScriptCanvasEditorSettings::m_printAbstractCodeModel)
|
|
->Field("AllowNodeNudging", &ScriptCanvasEditorSettings::m_allowNodeNudging)
|
|
->Field("AlignmentTime", &ScriptCanvasEditorSettings::m_alignmentTimeMS)
|
|
->Field("EdgePanningSettings", &ScriptCanvasEditorSettings::m_edgePanningSettings)
|
|
->Field("ConstructPresets", &ScriptCanvasEditorSettings::m_constructPresets)
|
|
->Field("StylingSettings", &ScriptCanvasEditorSettings::m_stylingSettings)
|
|
->Field("RememberOpenCanvases", &ScriptCanvasEditorSettings::m_rememberOpenCanvases)
|
|
->Field("ShowUpgradeDialog", &ScriptCanvasEditorSettings::m_showUpgradeDialog)
|
|
->Field("ZoomSettings", &ScriptCanvasEditorSettings::m_zoomSettings)
|
|
->Field("ExperimentalSettings", &ScriptCanvasEditorSettings::m_experimentalSettings)
|
|
;
|
|
|
|
AZ::EditContext* editContext = serialize->GetEditContext();
|
|
if (editContext)
|
|
{
|
|
editContext->Class<ToggleableConfiguration>("Configuration", "A pair of configuration values for actions that can be enabled/disabled and occur after a certain amount of time.")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ToggleableConfiguration::m_enabled, "Enabled", "Controls whether or not the action is Enabled.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ToggleableConfiguration::m_timeMS, "Time MS", "Controls how long until the action takes place.")
|
|
->Attribute(AZ::Edit::Attributes::Suffix, "ms")
|
|
->Attribute(AZ::Edit::Attributes::Min, 1)
|
|
;
|
|
|
|
editContext->Class<AutoSaveSettings>("Auto Save Configuration", "A pair of configuration values for actions that can be enabled/disabled and occur after a certain amount of time.")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &AutoSaveSettings::m_enabled, "Enabled", "Controls whether or not the action is Enabled.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &AutoSaveSettings::m_timeSeconds, "Time Seconds", "Controls how long until the action takes place.")
|
|
->Attribute(AZ::Edit::Attributes::Suffix, "seconds")
|
|
->Attribute(AZ::Edit::Attributes::Min, 10)
|
|
;
|
|
|
|
editContext->Class<ShakeToDespliceSettings>("Shake To Desplice", "Settings that control various parameters of the shake to desplice feature")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ShakeToDespliceSettings::m_enabled, "Enabled", "Controls whether or not this feature is enabled")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ShakeToDespliceSettings::m_shakeCount, "Shake Count", "Controls the number of shakes that must occur in order to trigger the splice")
|
|
->DataElement(AZ::Edit::UIHandlers::Slider, &ShakeToDespliceSettings::m_minimumShakeLengthPercent, "Shake Length", "Controls how long each motion must be in order to be registered as a shake.")
|
|
->Attribute(AZ::Edit::Attributes::Min, 0.0)
|
|
->Attribute(AZ::Edit::Attributes::Max, 100.0)
|
|
->Attribute(AZ::Edit::Attributes::Step, 1.0)
|
|
->DataElement(AZ::Edit::UIHandlers::Slider, &ShakeToDespliceSettings::m_deadZonePercent, "Dead Zone", "Controls how far the cursor must move before a check is initiated.")
|
|
->Attribute(AZ::Edit::Attributes::Min, 0.0)
|
|
->Attribute(AZ::Edit::Attributes::Max, 100.0)
|
|
->Attribute(AZ::Edit::Attributes::Step, 1.0)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ShakeToDespliceSettings::m_maximumShakeTimeMS, "Maximum Shake Time", "Sets a cap on how long it consider a series of actions as a single shake gesture")
|
|
->Attribute(AZ::Edit::Attributes::Suffix, "ms")
|
|
->Attribute(AZ::Edit::Attributes::Min, 1)
|
|
->DataElement(AZ::Edit::UIHandlers::Slider, &ShakeToDespliceSettings::m_straightnessPercent, "Straightness Percent", "Controls how aligned the individual motions must be in order to qualify as a shake")
|
|
->Attribute(AZ::Edit::Attributes::Min, 0.0)
|
|
->Attribute(AZ::Edit::Attributes::Max, 100.0)
|
|
->Attribute(AZ::Edit::Attributes::Step, 1.0)
|
|
;
|
|
|
|
editContext->Class<EdgePanningSettings>("Edge Panning Settings", "Settings that control various parameters of the edge panning feature")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->DataElement(AZ::Edit::UIHandlers::Slider, &EdgePanningSettings::m_edgeScrollPercent, "Percentage from Edge", "The percentage of the visible area to start scrolling when the mouse cursor is dragged into.")
|
|
->Attribute(AZ::Edit::Attributes::Min, 0.0)
|
|
->Attribute(AZ::Edit::Attributes::Max, 50.0)
|
|
->Attribute(AZ::Edit::Attributes::Step, 1.0)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &EdgePanningSettings::m_edgeScrollSpeed, "Scroll Speed", "How fast the scene will scroll when scrolling")
|
|
->Attribute(AZ::Edit::Attributes::Min, 1.0)
|
|
;
|
|
|
|
editContext->Class<ZoomSettings>("Zoom Settings", "Settings that control the degree to which the scene can be zoomed in or out.")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->DataElement(AZ::Edit::UIHandlers::Slider, &ZoomSettings::m_zoomInSetting, "Maximum Zoom In", "Controls the maximum magnification for zooming in")
|
|
->Attribute(AZ::Edit::Attributes::Min, 1.0)
|
|
->Attribute(AZ::Edit::Attributes::Max, 5.0)
|
|
->Attribute(AZ::Edit::Attributes::Step, 0.1)
|
|
->Attribute(AZ::Edit::Attributes::Suffix, "X")
|
|
;
|
|
|
|
editContext->Class<ScriptCanvasEditorSettings>("Script Canvas Editor Preferences", "Preferences relating to the Script Canvas editor.")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20))
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_snapDistance, "Connection Snap Distance", "The distance from a slot under which connections will snap to it.")
|
|
->Attribute(AZ::Edit::Attributes::Min, 10.0)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_enableGroupDoubleClickCollapse, "Double Click to Collapse/Uncollapse Group", "Enables the user to decide whether you can double click on a group to collapse/uncollapse a group.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_allowBookmarkViewpointControl, "Bookmark Zooming", "Will cause the bookmarks to force the viewport into the state determined by the bookmark type\nBookmark Anchors - The viewport that exists when the bookmark is created.\nNode Groups - The area the Node Group covers")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dragNodeCouplingConfig, "Node Coupling Configuration", "Controls for managing Node Coupling.\nNode Coupling is when you are dragging a node and leave it hovered over another Node, we will try to connect the sides you overlapped with each other.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dragNodeSplicingConfig, "Drag Node Splicing Configuration", "Controls for managing Node Splicing on a Drag.\nNode Splicing on a Drag will let you drag a node onto a connection, and splice that node onto the specified connection.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dropNodeSplicingConfig, "Drop Node Splicing Configuration", "Controls for managing Node Splicing on a Drag.\nNode Splicing on a drop will let you drop a node onto a connection from the Node Palette, and splice that node onto the specified connection.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_autoSaveConfig, "AutoSave Configuration", "Controls for managing Auto Saving.\nAuto Saving will occur after the specified time of inactivity on a graph.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_shakeDespliceConfig, "Shake To Desplice", "Settings that controls various parameters of the Shake to Desplice feature")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_allowNodeNudging, "Allow Node Nudging", "Controls whether or not nodes will attempt to nudge each other out of the way under various interactions.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_alignmentTimeMS, "Alignment Time", "Controls the amount of time nodes will take to slide into place when performing alignment commands")
|
|
->Attribute(AZ::Edit::Attributes::Min, 0)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_edgePanningSettings, "Edge Panning Settings", "Settings that control how the panning at the edge of the scene will be handled.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_zoomSettings, "Zoom Settings", "Settings that will control the boundaries of the zoom settings")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_rememberOpenCanvases, "Remember Open Canvases", "Determines whether or ScriptCanvses that were open when the editor is closed will be re-opened on the next open.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_showUpgradeDialog, "Show Upgrade Dialog", "Upon opening the Script Canvas editor this will prompt whether to upgrade all existing Script Canvas graphs.")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_stylingSettings, "Styling Settings", "Settings that will control various visual styling aspects of the Script Canvas Scene")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_experimentalSettings, "Experimental Settings", "Settings that will control elements that are under development and may not work as expected")
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_saveRawTranslationOuputToFile, "Save Translation File", "Save out the raw result of translation for debug purposes")
|
|
->Attribute(AZ::Edit::Attributes::ChangeNotify, &SettingsCpp::UpdateProcessingSettings)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_printAbstractCodeModel, "Print Abstract Modeld", "Print out the Abstract Code Model to the console at the end of parsing for debug purposes")
|
|
->Attribute(AZ::Edit::Attributes::ChangeNotify, &SettingsCpp::UpdateProcessingSettings)
|
|
;
|
|
|
|
editContext->Class<ExperimentalSettings>("Experimental", "Settings for features under development that may not behave as expected yet.")
|
|
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
|
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
|
->DataElement(AZ::Edit::UIHandlers::Default, &ExperimentalSettings::m_showNetworkProperties, "Variable Network Support", "Enables variable replication support over the network")
|
|
;
|
|
}
|
|
}
|
|
}
|
|
|
|
ScriptCanvasEditorSettings::ScriptCanvasEditorSettings()
|
|
: m_snapDistance(10.0)
|
|
, m_enableGroupDoubleClickCollapse(true)
|
|
, m_allowBookmarkViewpointControl(true)
|
|
, m_allowNodeNudging(true)
|
|
, m_rememberOpenCanvases(true)
|
|
, m_showUpgradeDialog(true)
|
|
, m_dragNodeCouplingConfig(true, 750)
|
|
, m_dragNodeSplicingConfig(true, 1000)
|
|
, m_dropNodeSplicingConfig(true, 1000)
|
|
, m_autoSaveConfig(false, 10)
|
|
, m_pinnedDataTypes({
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::Number()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::Boolean()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::String()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::Color()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::EntityID()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::Transform()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::Vector2()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::Vector3()),
|
|
ScriptCanvas::Data::ToAZType(ScriptCanvas::Data::Type::Vector4())
|
|
})
|
|
, m_variablePanelSorting(GraphVariablesModel::Name)
|
|
, m_showValidationWarnings(true)
|
|
, m_showValidationErrors(true)
|
|
, m_alignmentTimeMS(250)
|
|
{
|
|
GraphCanvas::AssetEditorPresetNotificationBus::Handler::BusConnect(ScriptCanvasEditor::AssetEditorId);
|
|
}
|
|
|
|
void ScriptCanvasEditorSettings::OnConstructPresetsChanged(GraphCanvas::ConstructType /*constructType*/)
|
|
{
|
|
AZ::UserSettingsOwnerRequestBus::Event(AZ::UserSettings::CT_LOCAL, &AZ::UserSettingsOwnerRequests::SaveSettings);
|
|
SettingsCpp::UpdateProcessingSettings();
|
|
}
|
|
}
|
|
}
|