// Token: 0x060000E6 RID: 230 RVA: 0x00008320 File Offset: 0x00006520 public static void Load(GlobalVariables globalVariables, string version) { if (globalVariables == null) { return; } if (string.IsNullOrEmpty(version)) { BinaryDeserializationDeprecated.Load(globalVariables); return; } globalVariables.Variables = null; FieldSerializationData fieldSerializationData; if (globalVariables.VariableData == null || (fieldSerializationData = globalVariables.VariableData.fieldSerializationData).byteData == null || fieldSerializationData.byteData.Count == 0) { return; } if (fieldSerializationData.typeName.Count > 0) { BinaryDeserializationDeprecated.Load(globalVariables); return; } VariableSerializationData variableData = globalVariables.VariableData; fieldSerializationData.byteDataArray = fieldSerializationData.byteData.ToArray(); BinaryDeserialization.updatedSerialization = (globalVariables.Version.CompareTo("1.5.7") >= 0); if (variableData.variableStartIndex != null) { List <SharedVariable> list = new List <SharedVariable>(); Dictionary <int, int> dictionary = ObjectPool.Get <Dictionary <int, int> >(); for (int i = 0; i < variableData.variableStartIndex.Count; i++) { int num = variableData.variableStartIndex[i]; int num2; if (i + 1 < variableData.variableStartIndex.Count) { num2 = variableData.variableStartIndex[i + 1]; } else { num2 = fieldSerializationData.startIndex.Count; } dictionary.Clear(); for (int j = num; j < num2; j++) { dictionary.Add(fieldSerializationData.fieldNameHash[j], fieldSerializationData.startIndex[j]); } SharedVariable sharedVariable = BinaryDeserialization.BytesToSharedVariable(fieldSerializationData, dictionary, fieldSerializationData.byteDataArray, variableData.variableStartIndex[i], globalVariables, false, 0); if (sharedVariable != null) { list.Add(sharedVariable); } } ObjectPool.Return <Dictionary <int, int> >(dictionary); globalVariables.Variables = list; } }
public static void Load(TaskSerializationData taskData, BehaviorSource behaviorSource) { if (taskData != null && string.IsNullOrEmpty(taskData.Version)) { BinaryDeserializationDeprecated.Load(taskData, behaviorSource); return; } behaviorSource.EntryTask = null; behaviorSource.RootTask = null; behaviorSource.DetachedTasks = null; behaviorSource.Variables = null; FieldSerializationData fieldSerializationData; if (taskData == null || (fieldSerializationData = taskData.fieldSerializationData).byteData == null || fieldSerializationData.byteData.Count == 0) { return; } fieldSerializationData.byteDataArray = fieldSerializationData.byteData.ToArray(); BinaryDeserialization.taskIDs = null; BinaryDeserialization.updatedSerialization = (taskData.Version.CompareTo("1.5.7") >= 0); if (BinaryDeserialization.updatedSerialization) { BinaryDeserialization.shaHashSerialization = (taskData.Version.CompareTo("1.5.9") >= 0); } if (taskData.variableStartIndex != null) { List <SharedVariable> list = new List <SharedVariable>(); Dictionary <int, int> dictionary = ObjectPool.Get <Dictionary <int, int> >(); for (int i = 0; i < taskData.variableStartIndex.Count; i++) { int num = taskData.variableStartIndex[i]; int num2; if (i + 1 < taskData.variableStartIndex.Count) { num2 = taskData.variableStartIndex[i + 1]; } else if (taskData.startIndex != null && taskData.startIndex.Count > 0) { num2 = taskData.startIndex[0]; } else { num2 = fieldSerializationData.startIndex.Count; } dictionary.Clear(); for (int j = num; j < num2; j++) { dictionary.Add(fieldSerializationData.fieldNameHash[j], fieldSerializationData.startIndex[j]); } SharedVariable sharedVariable = BinaryDeserialization.BytesToSharedVariable(fieldSerializationData, dictionary, fieldSerializationData.byteDataArray, taskData.variableStartIndex[i], behaviorSource, false, 0); if (sharedVariable != null) { list.Add(sharedVariable); } } ObjectPool.Return <Dictionary <int, int> >(dictionary); behaviorSource.Variables = list; } List <Task> list2 = new List <Task>(); if (taskData.types != null) { for (int k = 0; k < taskData.types.Count; k++) { BinaryDeserialization.LoadTask(taskData, fieldSerializationData, ref list2, ref behaviorSource); } } if (taskData.parentIndex.Count != list2.Count) { Debug.LogError("Deserialization Error: parent index count does not match task list count"); return; } for (int l = 0; l < taskData.parentIndex.Count; l++) { if (taskData.parentIndex[l] == -1) { if (behaviorSource.EntryTask == null) { behaviorSource.EntryTask = list2[l]; } else { if (behaviorSource.DetachedTasks == null) { behaviorSource.DetachedTasks = new List <Task>(); } behaviorSource.DetachedTasks.Add(list2[l]); } } else if (taskData.parentIndex[l] == 0) { behaviorSource.RootTask = list2[l]; } else if (taskData.parentIndex[l] != -1) { ParentTask parentTask = list2[taskData.parentIndex[l]] as ParentTask; if (parentTask != null) { int index = (parentTask.Children != null) ? parentTask.Children.Count : 0; parentTask.AddChild(list2[l], index); } } } if (BinaryDeserialization.taskIDs != null) { foreach (BinaryDeserialization.ObjectFieldMap current in BinaryDeserialization.taskIDs.Keys) { List <int> list3 = BinaryDeserialization.taskIDs[current]; Type fieldType = current.fieldInfo.FieldType; if (typeof(IList).IsAssignableFrom(fieldType)) { if (fieldType.IsArray) { Type elementType = fieldType.GetElementType(); Array array = Array.CreateInstance(elementType, list3.Count); for (int m = 0; m < array.Length; m++) { array.SetValue(list2[list3[m]], m); } current.fieldInfo.SetValue(current.obj, array); } else { Type type = fieldType.GetGenericArguments()[0]; IList list4 = TaskUtility.CreateInstance(typeof(List <>).MakeGenericType(new Type[] { type })) as IList; for (int n = 0; n < list3.Count; n++) { list4.Add(list2[list3[n]]); } current.fieldInfo.SetValue(current.obj, list4); } } else { current.fieldInfo.SetValue(current.obj, list2[list3[0]]); } } } }
// Token: 0x06000104 RID: 260 RVA: 0x00009A48 File Offset: 0x00007C48 public static void Load(BehaviorSource behaviorSource) { BinaryDeserializationDeprecated.Load(behaviorSource.TaskData, behaviorSource); }