コード例 #1
0
        internal static object GetValue(object obj, SerializationInfo info, StreamingContext context)
        {
            if (obj is UnityEngine.Vector2)
            {
                return(SimpleUnityStructureSurrogate.GetVector2(info));
            }
            else if (obj is UnityEngine.Vector3)
            {
                return(SimpleUnityStructureSurrogate.GetVector3(info));
            }
            else if (obj is UnityEngine.Vector4)
            {
                return(SimpleUnityStructureSurrogate.GetVector4(info));
            }
            else if (obj is UnityEngine.Quaternion)
            {
                return(SimpleUnityStructureSurrogate.GetQuaternion(info));
            }
            else if (obj is UnityEngine.Color)
            {
                return(SimpleUnityStructureSurrogate.GetColor(info));
            }
            else if (obj is UnityEngine.LayerMask)
            {
                return(SimpleUnityStructureSurrogate.GetLayerMask(info));
            }
            else if (obj is UnityEngine.Matrix4x4)
            {
                return(SimpleUnityStructureSurrogate.GetMatrix4x4(info));
            }

            return(null);
        }
コード例 #2
0
        public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
        {
            if (obj is IPersistentUnityObject)
            {
                if (obj is PersistentAssetToken)
                {
                    (obj as PersistentAssetToken).OnSerialize(info, context);
                }
                else if (obj is IPersistentAsset)
                {
                    if (_proxy == null)
                    {
                        _proxy = new AutoPersistentAssetToken();
                    }

                    info.SetType(typeof(AutoPersistentAssetToken));
                    _proxy.SetObject(obj as IPersistentAsset);
                    _proxy.OnSerialize(info, context);
                    _proxy.SetObject(null);
                }
                else if (obj is PersistentObject)
                {
                    (obj as PersistentObject).OnSerialize(info, context);
                }
                else
                {
                    throw new SerializationException("IPersistentUnityObjects should be handled by an IPersistentAsset, not directly by the serializtion engine.");
                }
            }
            else
            {
                SimpleUnityStructureSurrogate.AddValue(obj, info, context);
            }
        }
コード例 #3
0
        public static bool IsSpeciallySerialized(System.Type tp)
        {
            if (tp == null)
            {
                throw new System.ArgumentNullException("tp");
            }

            if (typeof(IPersistentUnityObject).IsAssignableFrom(tp))
            {
                return(true);
            }

            return(SimpleUnityStructureSurrogate.IsSpeciallySerialized(tp));
        }
コード例 #4
0
 public ISerializationSurrogate GetSurrogate(Type type, StreamingContext context, out ISurrogateSelector selector)
 {
     if (SimpleUnityStructureSurrogate.IsSpeciallySerialized(type))
     {
         selector = this;
         return(this);
     }
     else if (_nextSelector != null)
     {
         return(_nextSelector.GetSurrogate(type, context, out selector));
     }
     else
     {
         selector = null;
         return(null);
     }
 }
コード例 #5
0
        public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
        {
            var we = obj.GetType();

            if (obj is IPersistentUnityObject)
            {
                (obj as IPersistentUnityObject).OnDeserialize(info, context, _assets);
                if (obj is AutoPersistentAssetToken)
                {
                    return((obj as AutoPersistentAssetToken).PreemptiveCreate());
                }
                return(obj);
            }
            else
            {
                return(SimpleUnityStructureSurrogate.GetValue(obj, info, context));
            }
        }
コード例 #6
0
        internal static bool AddValue(object obj, SerializationInfo info, StreamingContext context)
        {
            if (obj is UnityEngine.Vector2)
            {
                SimpleUnityStructureSurrogate.AddValue(info, (UnityEngine.Vector2)obj);
                return(true);
            }
            else if (obj is UnityEngine.Vector3)
            {
                SimpleUnityStructureSurrogate.AddValue(info, (UnityEngine.Vector3)obj);
                return(true);
            }
            else if (obj is UnityEngine.Vector4)
            {
                SimpleUnityStructureSurrogate.AddValue(info, (UnityEngine.Vector4)obj);
                return(true);
            }
            else if (obj is UnityEngine.Quaternion)
            {
                SimpleUnityStructureSurrogate.AddValue(info, (UnityEngine.Quaternion)obj);
                return(true);
            }
            else if (obj is UnityEngine.Color)
            {
                SimpleUnityStructureSurrogate.AddValue(info, (UnityEngine.Color)obj);
                return(true);
            }
            else if (obj is UnityEngine.LayerMask)
            {
                SimpleUnityStructureSurrogate.AddValue(info, (UnityEngine.LayerMask)obj);
                return(true);
            }
            else if (obj is UnityEngine.Matrix4x4)
            {
                SimpleUnityStructureSurrogate.AddValue(info, (UnityEngine.Matrix4x4)obj);
                return(true);
            }

            return(false);
        }
コード例 #7
0
 public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
 {
     return(SimpleUnityStructureSurrogate.GetValue(obj, info, context));
 }
コード例 #8
0
 public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
 {
     SimpleUnityStructureSurrogate.AddValue(obj, info, context);
 }