@@ -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