Files
stas-barecky/Library/PackageCache/com.unity.2d.tooling@55ff0338cdce/Editor/Insider/AnalyzerWindow/SaveData.cs
2026-01-08 20:43:08 +05:00

71 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;
namespace UnityEditor.U2D.Tooling.Analyzer
{
[Serializable]
class SaveData : ISaveFile
{
const int k_Version = 1;
[Serializable]
struct SaveDataContent
{
public string className;
public string assemblyName;
public List<string> content;
}
[SerializeField]
int m_Version = k_Version;
[SerializeField]
List<SaveDataContent> m_Content = new();
public void AddSaveData(ISaveData saveData)
{
var typeName = saveData.GetType().FullName;
var assemblyName = saveData.GetType().Assembly.GetName().Name;
for(int i = 0; i < m_Content.Count; i++)
{
if (m_Content[i].className == typeName &&
m_Content[i].assemblyName == assemblyName)
{
m_Content[i].content.Add(JsonUtility.ToJson(saveData));
return;
}
}
m_Content.Add(new SaveDataContent
{
className = typeName,
assemblyName = assemblyName,
content = new List<string> { JsonUtility.ToJson(saveData) }
});
}
public void GetSaveData<T>(List<T> saveDataList) where T : ISaveData
{
if (m_Version == k_Version)
{
var typeName = typeof(T).FullName;
var assemblyName = typeof(T).Assembly.GetName().Name;
for(int i = 0; i < m_Content.Count; i++)
{
if (m_Content[i].className == typeName &&
m_Content[i].assemblyName == assemblyName)
{
var existingData = m_Content[i].content;
for(int j = 0; j < existingData.Count; j++)
{
T data = JsonUtility.FromJson<T>(existingData[j]);
saveDataList.Add(data);
}
return;
}
}
}
}
}
}