示例#1
0
        /// <summary>
        /// Serialize the specified object and save serialization data to specified target where it is associated with an identifier.
        /// </summary>
        /// <param name="_object">Object to serialize.</param>
        /// <param name="_serializationID">Identifier associated with serialization data of the target object.</param>
        /// <param name="_saveTarget">Save target for serialization data.</param>
        /// <typeparam name="T">Type of the object to serialize.</typeparam>
        public static void Serialize <T> (T _object, string _serializationID, eSaveTarget _saveTarget)
        {
            if (Instance == null)
            {
                Debug.LogError("[RS] Serialization failed. RSManager instance not found.");
                return;
            }

            Instance.Obj_Serialize <T>(_object, _serializationID, _saveTarget);
        }
示例#2
0
        private void Obj_Serialize <T> (T _object, string _serializationID, eSaveTarget _saveTarget)
        {
            // Check if serialization identifier is non-null
            if (string.IsNullOrEmpty(_serializationID))
            {
                Debug.LogError("[RS] Serialization identifier cant be null/empty.");
                return;
            }

            // Serialize object
            byte[] _serializationData = m_binarySerializer.Serialize(_object, typeof(T));

            // Cache serialization data
            AddSerializationData(_serializationID, _serializationData, _saveTarget);

            // Invoke event
            OnSerializationFinished(_serializationID);
        }
示例#3
0
        private void AddSerializationData(string _serializationID, byte[] _serializationData, eSaveTarget _saveTarget)
        {
            if (_saveTarget == eSaveTarget.PLAYER_PREFS)
            {
                m_save2PrefsSerializationData[_serializationID] = _serializationData;
            }
            else
            {
                string _filePath = GetFilePathForIdentifier(_serializationID);

                // Cache identifier's that were used for serializing to file
                if (!m_save2FileSerializationIdentifiers.Contains(_serializationID))
                {
                    m_save2FileSerializationIdentifiers.Add(_serializationID);
                }

                // Save to file
                FileOperations.WriteAllBytes(_filePath, _serializationData);
            }
        }
示例#4
0
        private bool Obj_RestoreSerializationData(string _serializationDataBase64, string _serializationID, eSaveTarget _saveTarget)
        {
            if (string.IsNullOrEmpty(_serializationDataBase64))
            {
                Debug.LogError("[RS] Restoring data failed. Serialization data cant null/empty.");
                return(false);
            }

            // Deserialise
            byte[] _serializationData       = Convert.FromBase64String(_serializationDataBase64);
            int    _serializedFormatVersion = m_binaryDeserializer.GetVersion(_serializationData);

            // Check if serialization data is compatible with code
            if (_serializedFormatVersion <= Constants.kSerializationSupportedFormatVersions)
            {
                AddSerializationData(_serializationID, _serializationData, _saveTarget);
                return(true);
            }

            Debug.LogWarning("[RS] Failed to restore. Serialized data format not supported please update SDK to the most recent version.");
            return(false);
        }
示例#5
0
        /// <summary>
        /// Saves Base64String format serialization data to specified target location where it is associated with an identifier.
        /// </summary>
        /// <param name="_serializationDataBase64">Serialization data in Base64String format.</param>
        /// <param name="_serializationID">Identifier associated with serialization data.</param>
        /// <param name="_saveTarget">Serialization data save target.</param>
        public static bool RestoreSerializationData(string _serializationDataBase64, string _serializationID, eSaveTarget _saveTarget)
        {
            if (Instance == null)
            {
                Debug.LogError("[RS] RSManager instance not found.");
                return(false);
            }

            return(Instance.Obj_RestoreSerializationData(_serializationDataBase64, _serializationID, _saveTarget));
        }