Skip to content

Commit 9833db8

Browse files
committed
fix: fix error where old method was used to split data instead of json
1 parent 033ae82 commit 9833db8

1 file changed

Lines changed: 30 additions & 52 deletions

File tree

Editor/SOVariant.cs

Lines changed: 30 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,9 @@ public void NotifyOverrideChangeInState(string name, bool isOverriden)
107107
{
108108
object parentObject = parentFieldInfo.GetValue(_parent);
109109

110-
var jsonSettings = new Newtonsoft.Json.JsonSerializerSettings() {
111-
// Use this option
112-
//
113-
// to ignore reference looping option
114-
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
115-
// Use this option when properties use an Interface as the type
110+
var jsonSettings = new Newtonsoft.Json.JsonSerializerSettings()
111+
{
112+
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
116113
TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All
117114
};
118115
var serialized = JsonConvert.SerializeObject(parentObject, jsonSettings);
@@ -177,9 +174,9 @@ public void LoadData(T targetObject)
177174
{
178175
string data = _import.userData;
179176
var extractedData = ExtractData(data);
180-
_parent = extractedData.Item2;
181-
_overridden = extractedData.Item3 ?? new List<string>();
182-
_children = extractedData.Item4 ?? new List<string>();
177+
_parent = extractedData.parent;
178+
_overridden = extractedData.overridden ?? new List<string>();
179+
_children = extractedData.children ?? new List<string>();
183180
}
184181
catch
185182
{
@@ -189,26 +186,28 @@ public void LoadData(T targetObject)
189186
}
190187
}
191188

192-
private Tuple<string, T, List<string>, List<string>> ExtractData(string data)
189+
190+
private (string parentGUID, T parent, List<string> overridden, List<string>children) ExtractData(string data)
193191
{
194192
if(!CheckForDataString(data))
195-
return new Tuple<string, T, List<string>, List<string>>(null, null, null, null);
193+
return (null, null, null, null);
196194
try
197195
{
198196
string dataJson = GetSOVariantData(data);
199197
if(! CheckForDataString(dataJson))
200-
return new Tuple<string, T, List<string>, List<string>>(null, null, null, null);
198+
return (null, null, null, null);
201199
Dictionary<string, string> containedData =
202200
JsonConvert.DeserializeObject<Dictionary<string, string>>(dataJson);
203201

204202
string parentGUID = containedData["parentGUID"];
203+
205204
var parent = AssetDatabase.LoadAssetAtPath<T>(AssetDatabase.GUIDToAssetPath(parentGUID));
206205

207206
var overridden = JsonConvert.DeserializeObject<List<string>>(containedData["overriddenFields"]);
208207

209208
var children = JsonConvert.DeserializeObject<List<string>>(containedData["childrenGUIDs"]);
210209

211-
return new Tuple<string, T, List<string>, List<string>>(parentGUID, parent, overridden, children);
210+
return (parentGUID, parent, overridden, children);
212211
}
213212
catch
214213
{
@@ -226,16 +225,16 @@ private Tuple<string, T, List<string>, List<string>> ExtractData(string data)
226225
"Try again"))
227226
{
228227
case (0):
229-
return new Tuple<string, T, List<string>, List<string>>(null, null, null, null);
228+
return (null, null, null, null);
230229
case (1):
231230
Debug.Log($"UserData not overwritten.");
232231
_SOVariantProperlyLoaded = false;
233-
return null;
232+
return (null, null, null, null);;
234233
case (2):
235234
return ExtractData(ReadUpdatedMetaFile(data));
236235
}
237236
}
238-
return null;
237+
return (null, null, null, null);
239238
}
240239

241240
private static string GetSOVariantData(string data)
@@ -249,14 +248,6 @@ private bool CheckForDataString(string data)
249248
return !string.IsNullOrEmpty(data) ;
250249
}
251250

252-
private List<string> DeserializeChildrenData(string data)
253-
{
254-
// byte[] childrenDataStream = data.Split(',').ToList().Select(source => byte.Parse(source)).ToArray();
255-
// var children = SerializationUtility.DeserializeValue<List<string>>(childrenDataStream, DataFormat.Binary);
256-
var children = JsonConvert.DeserializeObject<List<string>>(data);
257-
return children;
258-
}
259-
260251
private void SetAllFieldsToParent()
261252
{
262253
foreach (FieldInfo fieldInfo in FieldInfoHelper.GetAllFields(_parent.GetType()))
@@ -322,15 +313,15 @@ private void PropagateValuesToChildren(T target, string targetGUID, ref List<str
322313

323314
var extractedData = ExtractData(childImporter.userData);
324315

325-
if (extractedData.Item1 == null || extractedData.Item2 == null || extractedData.Item3 == null ||
326-
extractedData.Item4 == null)
316+
if (extractedData.parentGUID == null || extractedData.parent == null || extractedData.overridden == null ||
317+
extractedData.children == null)
327318
{
328319
children.Remove(child);
329320
childrenUpdated = true;
330321
continue;
331322
}
332323

333-
string parentGUID = extractedData.Item1;
324+
string parentGUID = extractedData.parentGUID;
334325

335326
if (parentGUID != targetGUID)
336327
{
@@ -339,7 +330,7 @@ private void PropagateValuesToChildren(T target, string targetGUID, ref List<str
339330
continue;
340331
}
341332

342-
List<string> overridden = extractedData.Item3;
333+
List<string> overridden = extractedData.overridden;
343334
T childObject = AssetDatabase.LoadAssetAtPath<T>(childPath);
344335
bool childChanged = false;
345336
foreach (FieldInfo fieldInfo in fieldInfos)
@@ -360,7 +351,7 @@ private void PropagateValuesToChildren(T target, string targetGUID, ref List<str
360351
EditorUtility.SetDirty(childObject);
361352

362353

363-
List<string> newChildrenList = extractedData.Item4;
354+
List<string> newChildrenList = extractedData.children;
364355
if (newChildrenList.Count > 0)
365356
PropagateValuesToChildren(childObject, AssetDatabase.AssetPathToGUID(childPath),
366357
ref newChildrenList, importer, changedValues);
@@ -374,37 +365,27 @@ private void PropagateValuesToChildren(T target, string targetGUID, ref List<str
374365

375366
private void AddToChildrenData(AssetImporter importer, string newChild)
376367
{
377-
Debug.Log(importer.userData);
378-
string[] data = importer.userData.Split('*');
379-
if (data.Length != 3)
380-
{
381-
WriteOnlyChildrenData(importer, new List<string>() {newChild});
382-
return;
383-
}
368+
var extractedData = ExtractData(importer.userData);
384369

385-
List<string> children = DeserializeChildrenData(data[2]);
370+
List<string> children = extractedData.children ?? new List<string>();
386371
children.Add(newChild);
387-
WriteOnlyChildrenData(importer, children);
372+
WriteToImporter(importer, SerializeParentData(extractedData.parent), SerializeOverrideData(extractedData.overridden), SerializeChildrenData(children));
388373
}
389374

390375
public void RemoveFromChildrenData(AssetImporter importer, string oldChild)
391376
{
392-
string[] data = importer.userData.Split('*');
393-
if (data.Length != 3)
394-
return;
395-
List<string> children = DeserializeChildrenData(data[2]);
377+
var extractedData = ExtractData(importer.userData);
378+
379+
List<string> children = extractedData.children ?? new List<string>();
380+
396381
children.Remove(oldChild);
397-
WriteOnlyChildrenData(importer, children);
382+
WriteToImporter(importer, SerializeParentData(extractedData.parent), SerializeOverrideData(extractedData.overridden), SerializeChildrenData(children));
398383
}
399384

400385
private void WriteOnlyChildrenData(AssetImporter importer, List<string> children)
401386
{
402-
string[] data = importer.userData.Split('*');
403-
if (data.Length == 3)
404-
WriteToImporter(importer, data[0], data[1], SerializeChildrenData(children));
405-
else
406-
WriteToImporter(importer, SerializeParentData(null), SerializeOverrideData(new List<string>()),
407-
SerializeChildrenData(children));
387+
var extractedData = ExtractData(importer.userData);
388+
WriteToImporter(importer, SerializeParentData(extractedData.parent), SerializeOverrideData(extractedData.overridden), SerializeChildrenData(children));
408389
}
409390

410391
public void SaveData(List<string> overriddenMembers, List<string> changedValues = null)
@@ -429,13 +410,11 @@ public void SaveData(List<string> overriddenMembers, List<string> changedValues
429410

430411
private string SerializeChildrenData(List<string> children)
431412
{
432-
// return string.Join(",", SerializationUtility.SerializeValue<List<string>>(children, DataFormat.Binary));
433413
return JsonConvert.SerializeObject(children);
434414
}
435415

436416
private string SerializeParentData(T parent)
437417
{
438-
// return string.Join(",", SerializationUtility.SerializeValue<string>(AssetDatabase.GUIDFromAssetPath(AssetDatabase.GetAssetPath(parent)).ToString(), DataFormat.Binary));
439418
return AssetDatabase.GUIDFromAssetPath(AssetDatabase.GetAssetPath(parent)).ToString();
440419
}
441420

@@ -445,7 +424,6 @@ private string SerializeOverrideData(List<string> overrides)
445424
overrides.All(s => s != _otherSerializationBackend.First()))
446425
overrides.AddRange(_otherSerializationBackend);
447426

448-
// return string.Join(",", SerializationUtility.SerializeValue<List<string>>(overrides, DataFormat.Binary));
449427
return JsonConvert.SerializeObject(overrides);
450428
}
451429

0 commit comments

Comments
 (0)