Add serialization of game settings for proper upgrade when loading deprecated data

This commit is contained in:
Wojtek Figat
2025-01-20 23:47:51 +01:00
parent 8a7ceef288
commit d4a5c76c82
12 changed files with 113 additions and 19 deletions

View File

@@ -42,6 +42,14 @@ public:
};
IMPLEMENT_ENGINE_SETTINGS_GETTER(BuildSettings, GameCooking);
#include "Engine/Content/Deprecated.h"
void GraphicsSettings::SetUeeHDRProbes(bool value)
{
MARK_CONTENT_DEPRECATED();
UseHDRProbes = value;
}
IMPLEMENT_ENGINE_SETTINGS_GETTER(GraphicsSettings, Graphics);
IMPLEMENT_ENGINE_SETTINGS_GETTER(NetworkSettings, Network);
IMPLEMENT_ENGINE_SETTINGS_GETTER(LayersAndTagsSettings, LayersAndTags);
@@ -260,6 +268,27 @@ void GameSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* mo
DESERIALIZE(iOSPlatform);
}
#if USE_EDITOR
void LayersAndTagsSettings::Serialize(SerializeStream& stream, const void* otherObj)
{
SERIALIZE_GET_OTHER_OBJ(LayersAndTagsSettings);
stream.JKEY("Tags");
stream.StartArray();
for (const String& e : Tags)
stream.String(e);
stream.EndArray();
stream.JKEY("Layers");
stream.StartArray();
for (const String& e : Layers)
stream.String(e);
stream.EndArray();
}
#endif
void LayersAndTagsSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
{
const auto tags = stream.FindMember("Tags");
@@ -280,7 +309,7 @@ void LayersAndTagsSettings::Deserialize(DeserializeStream& stream, ISerializeMod
if (layers != stream.MemberEnd() && layers->value.IsArray())
{
auto& layersArray = layers->value;
for (uint32 i = 0; i < layersArray.Size() && i < 32; i++)
for (uint32 i = 0; i < layersArray.Size() && i < ARRAY_COUNT(Layers); i++)
{
auto& v = layersArray[i];
if (v.IsString())
@@ -288,7 +317,7 @@ void LayersAndTagsSettings::Deserialize(DeserializeStream& stream, ISerializeMod
else
Layers[i].Clear();
}
for (uint32 i = layersArray.Size(); i < 32; i++)
for (uint32 i = layersArray.Size(); i < ARRAY_COUNT(Layers); i++)
{
Layers[i].Clear();
}