private void Serialize(BaseEditorFieldWrapper wrapper, object value) { wrapper.SetValue(value); if (!(wrapper is BaseArrayFieldWrapper arrayWrapper)) { WriteFile(m_path, wrapper); return; } arrayWrapper.foldout = MightyGUIUtilities.GetFoldout(m_fileName); WriteFile(m_path, arrayWrapper); }
private void Serialize(string path, string fileName, BaseEditorFieldWrapper wrapper, object value) { wrapper.SetValue(value); if (!(wrapper is BaseArrayFieldWrapper arrayWrapper)) { WriteFile(path, wrapper); return; } arrayWrapper.foldout = EditorDrawUtility.GetFoldout(fileName); WriteFile(path, arrayWrapper); }
private bool Deserialize(BaseEditorFieldWrapper wrapper, out object value) { value = null; if (!Exists()) { return(false); } wrapper.ResetValue(); ReadFile(m_path, wrapper); if (wrapper is BaseArrayFieldWrapper arrayWrapper) { MightyGUIUtilities.SetFoldout(m_fileName, arrayWrapper.foldout); } wrapper.GetValue(out value); return(value != null); }
private bool Deserialize(string path, string fileName, BaseEditorFieldWrapper wrapper, out object value) { value = null; if (!Exists(path)) { return(false); } wrapper.ResetValue(); ReadFile(path, wrapper); if (wrapper is BaseArrayFieldWrapper arrayWrapper) { EditorDrawUtility.SetFoldout(fileName, arrayWrapper.foldout); } wrapper.GetValue(out value); return(value != null); }
private static void ReadFile(string filePath, BaseEditorFieldWrapper wrapper) { try { byte[] bytes; using (var stream = File.OpenRead($"{filePath}.json")) { var length = (int)stream.Length; bytes = new byte[length]; stream.Seek(0, SeekOrigin.Begin); stream.Read(bytes, 0, length); } EditorJsonUtility.FromJsonOverwrite(new UTF8Encoding().GetString(bytes), wrapper); } catch { // ignored } }
private static void WriteFile(string filePath, BaseEditorFieldWrapper wrapper) { var json = EditorJsonUtility.ToJson(wrapper); var bytes = Encoding.GetBytes(json); try { using (var stream = File.Open($"{filePath}.json", FileMode.OpenOrCreate, FileAccess.Write)) { var length = bytes.Length; stream.Seek(0, SeekOrigin.Begin); stream.Write(bytes, 0, length); stream.SetLength(length); } } catch { // ignored } }