Initial draft for save all prefabs workflow
Signed-off-by: srikappa-amzn <srikappa@amazon.com>
This commit is contained in:
+8
@@ -18,6 +18,12 @@
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
enum class SavePrefabsPreference : AZ::s64
|
||||
{
|
||||
Unspecified = 0,
|
||||
SaveAll = 1,
|
||||
SaveNone = -1
|
||||
};
|
||||
|
||||
class PrefabEditorEntityOwnershipInterface
|
||||
{
|
||||
@@ -54,5 +60,7 @@ 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;
|
||||
};
|
||||
}
|
||||
|
||||
+21
@@ -10,6 +10,7 @@
|
||||
#include <AzCore/Component/TransformBus.h>
|
||||
#include <AzCore/Script/ScriptSystemBus.h>
|
||||
#include <AzCore/Serialization/Utils.h>
|
||||
#include <AzCore/Settings/SettingsRegistry.h>
|
||||
#include <AzCore/StringFunc/StringFunc.h>
|
||||
#include <AzFramework/API/ApplicationAPI.h>
|
||||
#include <AzFramework/Entity/GameEntityContextBus.h>
|
||||
@@ -27,6 +28,8 @@
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
static constexpr const char s_savePrefabsKey[] = "/O3DE/Preferences/SavePrefabs";
|
||||
|
||||
PrefabEditorEntityOwnershipService::PrefabEditorEntityOwnershipService(const AzFramework::EntityContextId& entityContextId,
|
||||
AZ::SerializeContext* serializeContext)
|
||||
: m_entityContextId(entityContextId)
|
||||
@@ -607,6 +610,24 @@ 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
|
||||
|
||||
+3
@@ -168,6 +168,9 @@ 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;
|
||||
|
||||
@@ -753,6 +753,17 @@ namespace AzToolsFramework
|
||||
}
|
||||
}
|
||||
|
||||
void PrefabSystemComponent::SaveAllDirtyTemplates()
|
||||
{
|
||||
for (auto& [id, templateObject] : m_templateIdMap)
|
||||
{
|
||||
if (IsTemplateDirty(id))
|
||||
{
|
||||
m_prefabLoader.SaveTemplate(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool PrefabSystemComponent::ConnectTemplates(
|
||||
Link& link,
|
||||
TemplateId sourceTemplateId,
|
||||
|
||||
@@ -183,6 +183,8 @@ namespace AzToolsFramework
|
||||
*/
|
||||
void SetTemplateDirtyFlag(const TemplateId& templateId, bool dirty) override;
|
||||
|
||||
void SaveAllDirtyTemplates() override;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
|
||||
+1
@@ -49,6 +49,7 @@ namespace AzToolsFramework
|
||||
|
||||
virtual bool IsTemplateDirty(const TemplateId& templateId) = 0;
|
||||
virtual void SetTemplateDirtyFlag(const TemplateId& templateId, bool dirty) = 0;
|
||||
virtual void SaveAllDirtyTemplates() = 0;
|
||||
|
||||
virtual PrefabDom& FindTemplateDom(TemplateId templateId) = 0;
|
||||
virtual void UpdatePrefabTemplate(TemplateId templateId, const PrefabDom& updatedDom) = 0;
|
||||
|
||||
Reference in New Issue
Block a user