コード例 #1
0
        private static object ValueToObject(Task task, Type type, object obj, IVariableSource variableSource, List <UnityEngine.Object> unityObjects)
        {
            if (type.Equals(typeof(SharedVariable)) || type.IsSubclassOf(typeof(SharedVariable)))
            {
                SharedVariable sharedVariable = DeserializeJSON.DeserializeSharedVariable(obj as Dictionary <string, object>, variableSource, false, unityObjects);
                if (sharedVariable == null)
                {
                    sharedVariable = (TaskUtility.CreateInstance(type) as SharedVariable);
                }
                return(sharedVariable);
            }
            if (type.Equals(typeof(UnityEngine.Object)) || type.IsSubclassOf(typeof(UnityEngine.Object)))
            {
                return(DeserializeJSON.IndexToUnityObject(Convert.ToInt32(obj), unityObjects));
            }
            if (!type.IsPrimitive)
            {
                if (!type.Equals(typeof(string)))
                {
                    goto IL_C5;
                }
            }
            try
            {
                object result = Convert.ChangeType(obj, type);
                return(result);
            }
            catch (Exception)
            {
                object result = null;
                return(result);
            }
IL_C5:
            if (type.IsSubclassOf(typeof(Enum)))
            {
                try
                {
                    object result = Enum.Parse(type, (string)obj);
                    return(result);
                }
                catch (Exception)
                {
                    object result = null;
                    return(result);
                }
            }
            if (type.Equals(typeof(Vector2)))
            {
                return(DeserializeJSON.StringToVector2((string)obj));
            }
            if (type.Equals(typeof(Vector3)))
            {
                return(DeserializeJSON.StringToVector3((string)obj));
            }
            if (type.Equals(typeof(Vector4)))
            {
                return(DeserializeJSON.StringToVector4((string)obj));
            }
            if (type.Equals(typeof(Quaternion)))
            {
                return(DeserializeJSON.StringToQuaternion((string)obj));
            }
            if (type.Equals(typeof(Matrix4x4)))
            {
                return(DeserializeJSON.StringToMatrix4x4((string)obj));
            }
            if (type.Equals(typeof(Color)))
            {
                return(DeserializeJSON.StringToColor((string)obj));
            }
            if (type.Equals(typeof(Rect)))
            {
                return(DeserializeJSON.StringToRect((string)obj));
            }
            if (type.Equals(typeof(LayerMask)))
            {
                return(DeserializeJSON.ValueToLayerMask(Convert.ToInt32(obj)));
            }
            if (type.Equals(typeof(AnimationCurve)))
            {
                return(DeserializeJSON.ValueToAnimationCurve((Dictionary <string, object>)obj));
            }
            object obj2 = TaskUtility.CreateInstance(type);

            DeserializeJSON.DeserializeObject(task, obj2, obj as Dictionary <string, object>, variableSource, unityObjects);
            return(obj2);
        }
コード例 #2
0
        private static SharedVariable DeserializeSharedVariable(Dictionary <string, object> dict, IVariableSource variableSource, bool fromSource, List <UnityEngine.Object> unityObjects)
        {
            if (dict == null)
            {
                return(null);
            }
            SharedVariable sharedVariable = null;
            object         obj;

            if (!fromSource && variableSource != null && dict.TryGetValue("Name", out obj))
            {
                object value;
                dict.TryGetValue("IsGlobal", out value);
                if (!dict.TryGetValue("IsGlobal", out value) || !Convert.ToBoolean(value))
                {
                    sharedVariable = variableSource.GetVariable(obj as string);
                }
                else
                {
                    if (DeserializeJSON.globalVariables == null)
                    {
                        DeserializeJSON.globalVariables = GlobalVariables.Instance;
                    }
                    if (DeserializeJSON.globalVariables != null)
                    {
                        sharedVariable = DeserializeJSON.globalVariables.GetVariable(obj as string);
                    }
                }
            }
            Type typeWithinAssembly = TaskUtility.GetTypeWithinAssembly(dict["Type"] as string);

            if (typeWithinAssembly == null)
            {
                return(null);
            }
            bool flag = true;

            if (sharedVariable == null || !(flag = sharedVariable.GetType().Equals(typeWithinAssembly)))
            {
                sharedVariable      = (TaskUtility.CreateInstance(typeWithinAssembly) as SharedVariable);
                sharedVariable.Name = (dict["Name"] as string);
                object obj2;
                if (dict.TryGetValue("IsShared", out obj2))
                {
                    sharedVariable.IsShared = Convert.ToBoolean(obj2);
                }
                if (dict.TryGetValue("IsGlobal", out obj2))
                {
                    sharedVariable.IsGlobal = Convert.ToBoolean(obj2);
                }
                if (dict.TryGetValue("NetworkSync", out obj2))
                {
                    sharedVariable.NetworkSync = Convert.ToBoolean(obj2);
                }
                if (!sharedVariable.IsGlobal && dict.TryGetValue("PropertyMapping", out obj2))
                {
                    sharedVariable.PropertyMapping = (obj2 as string);
                    if (dict.TryGetValue("PropertyMappingOwner", out obj2))
                    {
                        sharedVariable.PropertyMappingOwner = (DeserializeJSON.IndexToUnityObject(Convert.ToInt32(obj2), unityObjects) as GameObject);
                    }
                    sharedVariable.InitializePropertyMapping(variableSource as BehaviorSource);
                }
                if (!flag)
                {
                    sharedVariable.IsShared = true;
                }
                DeserializeJSON.DeserializeObject(null, sharedVariable, dict, variableSource, unityObjects);
            }
            return(sharedVariable);
        }