Add serialization of game settings for proper upgrade when loading deprecated data
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -145,15 +145,12 @@ private:
|
||||
/// Renamed UeeHDRProbes into UseHDRProbes
|
||||
/// [Deprecated on 12.10.2022, expires on 12.10.2024]
|
||||
/// </summary>
|
||||
API_PROPERTY(Attributes="Serialize, Obsolete, NoUndo") bool GetUeeHDRProbes() const
|
||||
API_PROPERTY(Attributes="Serialize, Obsolete, NoUndo") DEPRECATED("Use UseHDRProbes instead.") bool GetUeeHDRProbes() const
|
||||
{
|
||||
return UseHDRProbes;
|
||||
}
|
||||
|
||||
API_PROPERTY(Attributes="Serialize, Obsolete, NoUndo") void SetUeeHDRProbes(bool value)
|
||||
{
|
||||
UseHDRProbes = value;
|
||||
}
|
||||
API_PROPERTY(Attributes="Serialize, Obsolete, NoUndo") DEPRECATED("Use UseHDRProbes instead.") void SetUeeHDRProbes(bool value);
|
||||
|
||||
public:
|
||||
/// <summary>
|
||||
|
||||
@@ -32,5 +32,8 @@ public:
|
||||
|
||||
// [SettingsBase]
|
||||
void Apply() override;
|
||||
#if USE_EDITOR
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
#endif
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override;
|
||||
};
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "Keyboard.h"
|
||||
#include "Mouse.h"
|
||||
#include "Gamepad.h"
|
||||
#include "FlaxEngine.Gen.h"
|
||||
#include "Engine/Platform/Window.h"
|
||||
#include "Engine/Engine/Engine.h"
|
||||
#include "Engine/Engine/EngineService.h"
|
||||
|
||||
@@ -80,6 +80,17 @@ void LocalizationSettings::Apply()
|
||||
Instance.OnLocalizationChanged();
|
||||
}
|
||||
|
||||
#if USE_EDITOR
|
||||
|
||||
void LocalizationSettings::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
SERIALIZE_GET_OTHER_OBJ(LocalizationSettings);
|
||||
SERIALIZE(LocalizedStringTables);
|
||||
SERIALIZE(DefaultFallbackLanguage);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void LocalizationSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
DESERIALIZE(LocalizedStringTables);
|
||||
|
||||
@@ -34,5 +34,8 @@ public:
|
||||
|
||||
// [SettingsBase]
|
||||
void Apply() override;
|
||||
#if USE_EDITOR
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
#endif
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override;
|
||||
};
|
||||
|
||||
@@ -235,6 +235,28 @@ void NavigationSettings::Apply()
|
||||
#endif
|
||||
}
|
||||
|
||||
#if USE_EDITOR
|
||||
|
||||
void NavigationSettings::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
SERIALIZE_GET_OTHER_OBJ(NavigationSettings);
|
||||
SERIALIZE(AutoAddMissingNavMeshes);
|
||||
SERIALIZE(AutoRemoveMissingNavMeshes);
|
||||
SERIALIZE(CellHeight);
|
||||
SERIALIZE(CellSize);
|
||||
SERIALIZE(TileSize);
|
||||
SERIALIZE(MinRegionArea);
|
||||
SERIALIZE(MergeRegionArea);
|
||||
SERIALIZE(MaxEdgeLen);
|
||||
SERIALIZE(MaxEdgeError);
|
||||
SERIALIZE(DetailSamplingDist);
|
||||
SERIALIZE(MaxDetailSamplingError);
|
||||
SERIALIZE(NavMeshes);
|
||||
SERIALIZE(NavAreas);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void NavigationSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
DESERIALIZE(AutoAddMissingNavMeshes);
|
||||
|
||||
@@ -104,5 +104,8 @@ public:
|
||||
|
||||
// [SettingsBase]
|
||||
void Apply() override;
|
||||
#if USE_EDITOR
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
#endif
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override;
|
||||
};
|
||||
|
||||
@@ -49,6 +49,36 @@ PhysicsSettings::PhysicsSettings()
|
||||
LayerMasks[i] = MAX_uint32;
|
||||
}
|
||||
|
||||
#if USE_EDITOR
|
||||
|
||||
void PhysicsSettings::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
SERIALIZE_GET_OTHER_OBJ(PhysicsSettings);
|
||||
|
||||
SERIALIZE(DefaultGravity);
|
||||
SERIALIZE(TriangleMeshTriangleMinAreaThreshold);
|
||||
SERIALIZE(BounceThresholdVelocity);
|
||||
SERIALIZE(FrictionCombineMode);
|
||||
SERIALIZE(RestitutionCombineMode);
|
||||
SERIALIZE(DisableCCD);
|
||||
SERIALIZE(BroadPhaseType);
|
||||
SERIALIZE(SolverType);
|
||||
SERIALIZE(MaxDeltaTime);
|
||||
SERIALIZE(EnableSubstepping);
|
||||
SERIALIZE(SubstepDeltaTime);
|
||||
SERIALIZE(MaxSubsteps);
|
||||
SERIALIZE(QueriesHitTriggers);
|
||||
SERIALIZE(SupportCookingAtRuntime);
|
||||
|
||||
stream.JKEY("LayerMasks");
|
||||
stream.StartArray();
|
||||
for (uint32 e : LayerMasks)
|
||||
stream.Uint(e);
|
||||
stream.EndArray();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void PhysicsSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
DESERIALIZE(DefaultGravity);
|
||||
@@ -71,7 +101,7 @@ void PhysicsSettings::Deserialize(DeserializeStream& stream, ISerializeModifier*
|
||||
{
|
||||
auto& layersArray = layers->value;
|
||||
ASSERT(layersArray.IsArray());
|
||||
for (uint32 i = 0; i < layersArray.Size() && i < 32; i++)
|
||||
for (uint32 i = 0; i < layersArray.Size() && i < ARRAY_COUNT(LayerMasks); i++)
|
||||
{
|
||||
LayerMasks[i] = layersArray[i].GetUint();
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ public:
|
||||
float TriangleMeshTriangleMinAreaThreshold = 5.0f;
|
||||
|
||||
/// <summary>
|
||||
/// If enabled, any Raycast or other scene query that intersects with a Collider marked as a Trigger will returns with a hit. Individual raycasts can override this behavior.
|
||||
/// If enabled, any Raycast or other scene query that intersects with a Collider marked as a Trigger will return with a hit. Individual raycasts can override this behavior.
|
||||
/// </summary>
|
||||
API_FIELD(Attributes="EditorOrder(1200), EditorDisplay(\"Other\")")
|
||||
bool QueriesHitTriggers = true;
|
||||
@@ -166,5 +166,8 @@ public:
|
||||
|
||||
// [SettingsBase]
|
||||
void Apply() override;
|
||||
#if USE_EDITOR
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
#endif
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override;
|
||||
};
|
||||
|
||||
@@ -60,11 +60,6 @@ void StreamingSettings::Apply()
|
||||
TextureGroupSamplers.Resize(TextureGroups.Count(), false);
|
||||
}
|
||||
|
||||
void StreamingSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
DESERIALIZE(TextureGroups);
|
||||
}
|
||||
|
||||
StreamableResource::StreamableResource(StreamingGroup* group)
|
||||
: _group(group)
|
||||
, _isDynamic(true)
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
/// </summary>
|
||||
API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings", NoConstructor) class FLAXENGINE_API StreamingSettings : public SettingsBase
|
||||
{
|
||||
DECLARE_SCRIPTING_TYPE_MINIMAL(StreamingSettings);
|
||||
public:
|
||||
DECLARE_SCRIPTING_TYPE_MINIMAL(StreamingSettings);
|
||||
API_AUTO_SERIALIZATION();
|
||||
|
||||
public:
|
||||
/// <summary>
|
||||
/// Textures streaming configuration (per-group).
|
||||
/// </summary>
|
||||
@@ -20,7 +21,6 @@ public:
|
||||
Array<TextureGroup, InlinedAllocation<32>> TextureGroups;
|
||||
|
||||
public:
|
||||
|
||||
/// <summary>
|
||||
/// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use.
|
||||
/// </summary>
|
||||
@@ -28,5 +28,4 @@ public:
|
||||
|
||||
// [SettingsBase]
|
||||
void Apply() override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user