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