Add SoftTypeReference<T> to scripting API for lazy-load type references (via typename)
This commit is contained in:
@@ -7,7 +7,7 @@ using Newtonsoft.Json;
|
||||
namespace FlaxEngine.Json
|
||||
{
|
||||
/// <summary>
|
||||
/// Serialize references to the FlaxEngine.Object as Guid.
|
||||
/// Serialize references to the <see cref="FlaxEngine.Object"/> as Guid.
|
||||
/// </summary>
|
||||
/// <seealso cref="Newtonsoft.Json.JsonConverter" />
|
||||
internal class FlaxObjectConverter : JsonConverter
|
||||
@@ -46,7 +46,7 @@ namespace FlaxEngine.Json
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serialize SceneReference as Guid in internal format.
|
||||
/// Serialize <see cref="SceneReference"/> as Guid in internal format.
|
||||
/// </summary>
|
||||
/// <seealso cref="Newtonsoft.Json.JsonConverter" />
|
||||
internal class SceneReferenceConverter : JsonConverter
|
||||
@@ -79,7 +79,7 @@ namespace FlaxEngine.Json
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serialize SoftObjectReference as Guid in internal format.
|
||||
/// Serialize <see cref="SoftObjectReference"/> as Guid in internal format.
|
||||
/// </summary>
|
||||
/// <seealso cref="Newtonsoft.Json.JsonConverter" />
|
||||
internal class SoftObjectReferenceConverter : JsonConverter
|
||||
@@ -111,7 +111,36 @@ namespace FlaxEngine.Json
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serialize SoftObjectReference as Guid in internal format.
|
||||
/// Serialize <see cref="SoftTypeReference"/> as typename string in internal format.
|
||||
/// </summary>
|
||||
/// <seealso cref="Newtonsoft.Json.JsonConverter" />
|
||||
internal class SoftTypeReferenceConverter : JsonConverter
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
|
||||
{
|
||||
writer.WriteValue(((SoftTypeReference)value).TypeName);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
|
||||
{
|
||||
var result = new SoftTypeReference();
|
||||
if (reader.TokenType == JsonToken.String)
|
||||
result.TypeName = (string)reader.Value;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return objectType == typeof(SoftTypeReference);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serialize <see cref="Margin"/> as Guid in internal format.
|
||||
/// </summary>
|
||||
/// <seealso cref="Newtonsoft.Json.JsonConverter" />
|
||||
internal class MarginConverter : JsonConverter
|
||||
@@ -237,7 +266,7 @@ namespace FlaxEngine.Json
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serialize LocalizedString as inlined text is not using localization (Id member is empty).
|
||||
/// Serialize <see cref="LocalizedString"/> as inlined text is not using localization (Id member is empty).
|
||||
/// </summary>
|
||||
/// <seealso cref="Newtonsoft.Json.JsonConverter" />
|
||||
internal class LocalizedStringConverter : JsonConverter
|
||||
|
||||
@@ -123,6 +123,7 @@ namespace FlaxEngine.Json
|
||||
settings.Converters.Add(ObjectConverter);
|
||||
settings.Converters.Add(new SceneReferenceConverter());
|
||||
settings.Converters.Add(new SoftObjectReferenceConverter());
|
||||
settings.Converters.Add(new SoftTypeReferenceConverter());
|
||||
settings.Converters.Add(new MarginConverter());
|
||||
settings.Converters.Add(new VersionConverter());
|
||||
settings.Converters.Add(new LocalizedStringConverter());
|
||||
|
||||
Reference in New Issue
Block a user