Skip to content

Commit 8c50cd1

Browse files
committed
Add UnityEvent converter that goes through JsonUtility
1 parent b88cdfd commit 8c50cd1

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#if !NO_UNITY
2+
using System;
3+
using UnityEngine;
4+
using UnityEngine.Events;
5+
6+
namespace FullSerializer {
7+
partial class fsConverterRegistrar {
8+
public static Internal.Converters.UnityEvent_Converter Register_UnityEvent_Converter;
9+
}
10+
}
11+
12+
namespace FullSerializer.Internal.Converters {
13+
// The standard FS reflection converter has started causing Unity to crash when processing
14+
// UnityEvent. We can send the serialization through JsonUtility which appears to work correctly
15+
// instead.
16+
//
17+
// We have to support legacy serialization formats so importing works as expected.
18+
public class UnityEvent_Converter : fsConverter {
19+
public override bool CanProcess(Type type) {
20+
return typeof(UnityEvent).Resolve().IsAssignableFrom(type) && type.IsGenericType == false;
21+
}
22+
23+
public override bool RequestCycleSupport(Type storageType) {
24+
return false;
25+
}
26+
27+
public override fsResult TryDeserialize(fsData data, ref object instance, Type storageType) {
28+
Type objectType = (Type)instance;
29+
30+
fsResult result = fsResult.Success;
31+
instance = JsonUtility.FromJson(fsJsonPrinter.CompressedJson(data), objectType);
32+
return result;
33+
}
34+
35+
public override fsResult TrySerialize(object instance, out fsData serialized, Type storageType) {
36+
fsResult result = fsResult.Success;
37+
serialized = fsJsonParser.Parse(JsonUtility.ToJson(instance));
38+
return result;
39+
}
40+
}
41+
}
42+
#endif

Assets/FullSerializer/Source/Converters/Unity/UnityEvent_Converter.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)