/// <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); }
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); }
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); } }
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); }
/// <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)); }