Esempio n. 1
0
            public void GetObjectData(UnitySerializationInfo info)
            {
                int cnt = (_lst != null) ? _lst.Count : 0;

                info.AddValue("count", cnt);
                info.AddValue("assembly", _elementType.Assembly.GetName().Name);
                info.AddValue("type", _elementType.FullName);
                info.AddValue("isArray", _isArray);

                for (int i = 0; i < cnt; i++)
                {
                    info.AddValue("element" + i.ToString(), _lst[i], _elementType);
                }
            }
        public void GetObjectData(object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
        {
            _unitySerialInfo.StartContext(info, context);

            var tp = obj.GetType();

            if (obj is IUnitySerializable)
            {
                (obj as IUnitySerializable).GetObjectData(_unitySerialInfo);
            }
            else
            {
                foreach (var fi in GetAllSerializableFields(tp))
                {
                    try
                    {
                        _unitySerialInfo.AddValue(fi.Name, fi.GetValue(obj), fi.FieldType);
                    } catch (SerializationException ex)
                    {
                        UnityEngine.Debug.LogWarning("Spacepuppy Unity Serialization: " + ex.Message);
                    }
                }
            }
            _unitySerialInfo.EndContext();
        }