Moved PrefabSavePreference settings registry code from PrefabEditorEntityOwnershipInterface to PrefabLoaderInterface

Signed-off-by: srikappa-amzn <srikappa@amazon.com>
This commit is contained in:
srikappa-amzn
2021-08-24 18:34:51 -07:00
parent 79dd041d02
commit 1ca67cad80
13 changed files with 95 additions and 69 deletions
@@ -18,13 +18,6 @@
namespace AzToolsFramework
{
enum class SavePrefabsPreference : AZ::s64
{
Unspecified = 0,
SaveAll = 1,
SaveNone = -1
};
class PrefabEditorEntityOwnershipInterface
{
public:
@@ -60,7 +53,5 @@ namespace AzToolsFramework
virtual void StopPlayInEditor() = 0;
virtual void CreateNewLevelPrefab(AZStd::string_view filename, const AZStd::string& templateFilename) = 0;
virtual SavePrefabsPreference GetSavePrefabsPreference() = 0;
virtual void SetSavePrefabsPreference(SavePrefabsPreference savePrefabsPreference) = 0;
};
}
@@ -28,8 +28,6 @@
namespace AzToolsFramework
{
static constexpr const char s_savePrefabsKey[] = "/O3DE/Preferences/SavePrefabs";
PrefabEditorEntityOwnershipService::PrefabEditorEntityOwnershipService(const AzFramework::EntityContextId& entityContextId,
AZ::SerializeContext* serializeContext)
: m_entityContextId(entityContextId)
@@ -610,24 +608,6 @@ namespace AzToolsFramework
m_playInEditorData.m_isEnabled = false;
}
SavePrefabsPreference PrefabEditorEntityOwnershipService::GetSavePrefabsPreference()
{
AZ::s64 savePrefabsPreference = static_cast<AZ::s64>(SavePrefabsPreference::Unspecified);
if (auto* registry = AZ::SettingsRegistry::Get())
{
registry->Get(savePrefabsPreference, s_savePrefabsKey);
}
return static_cast<SavePrefabsPreference>(savePrefabsPreference);
}
void PrefabEditorEntityOwnershipService::SetSavePrefabsPreference(SavePrefabsPreference savePrefabsPreference)
{
if (auto* registry = AZ::SettingsRegistry::Get())
{
registry->Set(s_savePrefabsKey, static_cast<AZ::s64>(savePrefabsPreference));
}
}
//////////////////////////////////////////////////////////////////////////
// Slice Buses implementation with Assert(false), this will exist only during Slice->Prefab
// development to pinpoint and replace specific calls to Slice system
@@ -168,9 +168,6 @@ namespace AzToolsFramework
void CreateNewLevelPrefab(AZStd::string_view filename, const AZStd::string& templateFilename) override;
SavePrefabsPreference GetSavePrefabsPreference() override;
void SetSavePrefabsPreference(SavePrefabsPreference savePrefabsPreference) override;
protected:
AZ::SliceComponent::SliceInstanceAddress GetOwningSlice() override;
@@ -25,6 +25,19 @@ namespace AzToolsFramework
{
namespace Prefab
{
static constexpr const char s_savePrefabsKey[] = "/O3DE/Preferences/SavePrefabs";
void PrefabLoader::Reflect(AZ::ReflectContext* context)
{
if (auto* serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
{
serializeContext->Enum<SavePrefabsPreference>()
->Value("Unspecified", SavePrefabsPreference::Unspecified)
->Value("SaveAll", SavePrefabsPreference::SaveAll)
->Value("SaveNone", SavePrefabsPreference::SaveNone);
}
}
void PrefabLoader::RegisterPrefabLoaderInterface()
{
m_prefabSystemComponentInterface = AZ::Interface<PrefabSystemComponentInterface>::Get();
@@ -656,6 +669,24 @@ namespace AzToolsFramework
return finalPath;
}
SavePrefabsPreference PrefabLoader::GetSavePrefabsPreference()
{
SavePrefabsPreference savePrefabsPreference = SavePrefabsPreference::Unspecified;
if (auto* registry = AZ::SettingsRegistry::Get())
{
registry->GetObject(savePrefabsPreference, s_savePrefabsKey);
}
return static_cast<SavePrefabsPreference>(savePrefabsPreference);
}
void PrefabLoader::SetSavePrefabsPreference(SavePrefabsPreference savePrefabsPreference)
{
if (auto* registry = AZ::SettingsRegistry::Get())
{
registry->SetObject(s_savePrefabsKey, savePrefabsPreference);
}
}
AZ::IO::Path PrefabLoaderInterface::GeneratePath()
{
return AZStd::string::format("Prefab_%s", AZ::Entity::MakeId().ToString().c_str());
@@ -39,6 +39,8 @@ namespace AzToolsFramework
AZ_CLASS_ALLOCATOR(PrefabLoader, AZ::SystemAllocator, 0);
AZ_RTTI(PrefabLoader, "{A302B072-4DC4-4B7E-9188-226F56A3429C8}", PrefabLoaderInterface);
static void Reflect(AZ::ReflectContext* context);
//////////////////////////////////////////////////////////////////////////
// PrefabLoaderInterface interface implementation
@@ -108,6 +110,9 @@ namespace AzToolsFramework
//! Returns if the path is a valid path for a prefab
static bool IsValidPrefabPath(AZ::IO::PathView path);
SavePrefabsPreference GetSavePrefabsPreference() override;
void SetSavePrefabsPreference(SavePrefabsPreference savePrefabsPreference) override;
private:
/**
* Copies the template dom provided and manipulates it into the proper format to be saved to disk.
@@ -17,6 +17,13 @@ namespace AzToolsFramework
{
namespace Prefab
{
enum class SavePrefabsPreference : AZ::u8
{
Unspecified = 0,
SaveAll = 1,
SaveNone = 2
};
/*!
* PrefabLoaderInterface
* Interface for saving/loading Prefab files.
@@ -84,6 +91,9 @@ namespace AzToolsFramework
//! The path will always use the '/' separator.
virtual AZ::IO::Path GenerateRelativePath(AZ::IO::PathView path) = 0;
virtual SavePrefabsPreference GetSavePrefabsPreference() = 0;
virtual void SetSavePrefabsPreference(SavePrefabsPreference savePrefabsPreference) = 0;
protected:
// Generates a new path
@@ -93,3 +103,8 @@ namespace AzToolsFramework
} // namespace Prefab
} // namespace AzToolsFramework
namespace AZ
{
AZ_TYPE_INFO_SPECIALIZE(AzToolsFramework::Prefab::SavePrefabsPreference, "{7E61EA82-4DE4-4A3F-945F-C8FEDC1114B5}");
}
@@ -57,6 +57,7 @@ namespace AzToolsFramework
AzToolsFramework::Prefab::PrefabConversionUtils::PrefabCatchmentProcessor::Reflect(context);
AzToolsFramework::Prefab::PrefabConversionUtils::EditorInfoRemover::Reflect(context);
PrefabPublicRequestHandler::Reflect(context);
PrefabLoader::Reflect(context);
AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context);
if (serialize)