diff --git a/Source/Engine/Serialization/JsonSerializer.cs b/Source/Engine/Serialization/JsonSerializer.cs
index a5d6e0771..076e8abe7 100644
--- a/Source/Engine/Serialization/JsonSerializer.cs
+++ b/Source/Engine/Serialization/JsonSerializer.cs
@@ -19,7 +19,7 @@ namespace FlaxEngine.Json
{
internal class SerializerCache
{
- public readonly JsonSerializerSettings JsonSettings;
+ public bool IsManagedOnly;
public Newtonsoft.Json.JsonSerializer JsonSerializer;
public StringBuilder StringBuilder;
public StringWriter StringWriter;
@@ -33,9 +33,9 @@ namespace FlaxEngine.Json
public uint CacheVersion;
#endif
- public unsafe SerializerCache(JsonSerializerSettings settings)
+ public unsafe SerializerCache(bool isManagedOnly)
{
- JsonSettings = settings;
+ IsManagedOnly = isManagedOnly;
StringBuilder = new StringBuilder(256);
StringWriter = new StringWriter(StringBuilder, CultureInfo.InvariantCulture);
MemoryStream = new UnmanagedMemoryStream((byte*)0, 0);
@@ -114,7 +114,7 @@ namespace FlaxEngine.Json
/// Builds the serializer
private void BuildSerializer()
{
- JsonSerializer = Newtonsoft.Json.JsonSerializer.CreateDefault(Settings);
+ JsonSerializer = Newtonsoft.Json.JsonSerializer.CreateDefault(IsManagedOnly ? SettingsManagedOnly : Settings);
JsonSerializer.Formatting = Formatting.Indented;
JsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
}
@@ -149,8 +149,8 @@ namespace FlaxEngine.Json
internal static ExtendedSerializationBinder SerializationBinder;
internal static FlaxObjectConverter ObjectConverter;
internal static ThreadLocal Current = new ThreadLocal();
- internal static ThreadLocal Cache = new ThreadLocal(() => new SerializerCache(Settings));
- internal static ThreadLocal CacheManagedOnly = new ThreadLocal(() => new SerializerCache(SettingsManagedOnly));
+ internal static ThreadLocal Cache = new ThreadLocal(() => new SerializerCache(false));
+ internal static ThreadLocal CacheManagedOnly = new ThreadLocal(() => new SerializerCache(true));
internal static ThreadLocal CachedGuidBuffer = new ThreadLocal(() => Marshal.AllocHGlobal(32 * sizeof(char)), true);
internal static string CachedGuidDigits = "0123456789abcdef";
#if FLAX_EDITOR