예제 #1
0
    // 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;
        }
    }
예제 #2
0
        public static void Save(GlobalVariables variables)
        {
            if (variables == null)
            {
                return;
            }
            SerializeJSON.variableSerializationData = new VariableSerializationData();
            SerializeJSON.fieldSerializationData    = SerializeJSON.variableSerializationData.fieldSerializationData;
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("Variables", SerializeJSON.SerializeVariables(variables.Variables, ref SerializeJSON.fieldSerializationData.unityObjects));
            SerializeJSON.variableSerializationData.JSONSerialization = MiniJSON.Serialize(dictionary);
            variables.VariableData = SerializeJSON.variableSerializationData;
            EditorUtility.SetDirty(variables);
        }
예제 #3
0
    public static void Load(GlobalVariables globalVariables)
    {
        if (globalVariables == null)
        {
            return;
        }
        globalVariables.Variables = null;
        FieldSerializationData fieldSerializationData;

        if (globalVariables.VariableData == null || (fieldSerializationData = globalVariables.VariableData.fieldSerializationData).byteData == null || fieldSerializationData.byteData.Count == 0)
        {
            return;
        }
        VariableSerializationData variableData = globalVariables.VariableData;

        fieldSerializationData.byteDataArray = fieldSerializationData.byteData.ToArray();
        if (variableData.variableStartIndex != null)
        {
            List <SharedVariable>    list       = new List <SharedVariable>();
            Dictionary <string, int> dictionary = ObjectPool.Get <Dictionary <string, 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.typeName[j], fieldSerializationData.startIndex[j]);
                }
                SharedVariable sharedVariable = BytesToSharedVariable(fieldSerializationData, dictionary, fieldSerializationData.byteDataArray, variableData.variableStartIndex[i], globalVariables, false, string.Empty);
                if (sharedVariable != null)
                {
                    list.Add(sharedVariable);
                }
            }
            ObjectPool.Return(dictionary);
            globalVariables.Variables = list;
        }
    }