Skip to content

Commit 9e11e16

Browse files
committed
Merge branch '12-remove-odin-dependency'
2 parents e3d6e5e + c40390e commit 9e11e16

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

Editor/SOVariant.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@
1616
using System.Reflection;
1717
using Newtonsoft.Json;
1818
using Newtonsoft.Json.Linq;
19-
using Sirenix.Serialization;
2019
using UnityEditor;
2120
using UnityEngine;
22-
using SerializationUtility = Sirenix.Serialization.SerializationUtility;
2321

2422
namespace Giezi.Tools
2523
{
@@ -108,9 +106,8 @@ public void NotifyOverrideChangeInState(string name, bool isOverriden)
108106
targetFieldInfo.GetValue(_target) == parentFieldInfo.GetValue(_parent))
109107
{
110108
object parentObject = parentFieldInfo.GetValue(_parent);
111-
byte[] parentAsData = SerializationUtility.SerializeValueWeak(parentObject, DataFormat.Binary);
112109
object parentObjectCopy =
113-
SerializationUtility.DeserializeValueWeak(parentAsData, DataFormat.Binary);
110+
Clone(parentObject);
114111
targetFieldInfo.SetValue(_target, parentObjectCopy);
115112
}
116113
}
@@ -233,8 +230,9 @@ private Tuple<string, T, List<string>, List<string>> ExtractData(string data)
233230

234231
private List<string> DeserializeChildrenData(string data)
235232
{
236-
byte[] childrenDataStream = data.Split(',').ToList().Select(source => byte.Parse(source)).ToArray();
237-
var children = SerializationUtility.DeserializeValue<List<string>>(childrenDataStream, DataFormat.Binary);
233+
// byte[] childrenDataStream = data.Split(',').ToList().Select(source => byte.Parse(source)).ToArray();
234+
// var children = SerializationUtility.DeserializeValue<List<string>>(childrenDataStream, DataFormat.Binary);
235+
var children = JsonConvert.DeserializeObject<List<string>>(data);
238236
return children;
239237
}
240238

@@ -507,5 +505,19 @@ private string ReadUpdatedMetaFile(string oldData)
507505

508506
return oldData;
509507
}
508+
509+
private T Clone<T>(T source)
510+
{
511+
var jsonSettings = new Newtonsoft.Json.JsonSerializerSettings() {
512+
// Use this option
513+
//
514+
// to ignore reference looping option
515+
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
516+
// Use this option when properties use an Interface as the type
517+
TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All
518+
};
519+
var serialized = JsonConvert.SerializeObject(source, jsonSettings);
520+
return JsonConvert.DeserializeObject<T>(serialized, jsonSettings);
521+
}
510522
}
511523
}

0 commit comments

Comments
 (0)