Tilt,Offset,以及谱面合并操作

This commit is contained in:
SoulliesOfficial
2025-06-01 13:01:31 -04:00
parent 61e6ac3a32
commit 4497c3b3da
13 changed files with 37011 additions and 16607 deletions

View File

@@ -31,6 +31,7 @@ namespace Ichni
public LoadManager loadManager;
public ExportManager exportManager;
public BeatmapClipManager beatmapClipManager;
public BeatmapMergeManager beatmapMergeManager;
public NotePrefabManager notePrefabManager;
public AutoSaveManager autoSaveManager;
@@ -40,6 +41,7 @@ namespace Ichni
loadManager = new LoadManager();
exportManager = new ExportManager();
beatmapClipManager = new BeatmapClipManager();
beatmapMergeManager = new BeatmapMergeManager();
notePrefabManager = new NotePrefabManager();
autoSaveManager = new AutoSaveManager();
}
@@ -296,6 +298,57 @@ namespace Ichni
}
}
public class BeatmapMergeManager
{
public void MergeBeatmap(string mergeName)
{
string mergePath = Application.streamingAssetsPath + "/Merges/" + mergeName + ".json";
BeatmapContainer_BM merge = ES3.Load<BeatmapContainer_BM>("Beatmap", mergePath, ProjectManager.SaveSettings);
merge.elementList.ForEach(element =>
{
if (element == null)
{
Debug.LogError("Null element detected in elementList. Skipping execution.");
return;
}
if (BeatmapContainer_BM.LowPriorityGameElementTypes.Contains(element.GetType()))
{
return;
}
if (element is GameElement_BM gameElement)
{
GameElement_BM.identifier.Add(gameElement.elementGuid, gameElement);
}
if (element is GameCamera_BM || GameElement_BM.GetElementBM(element.attachedElementGuid) is GameCamera_BM)
{
return;
}
element.ExecuteBM();
});
merge.elementList.ForEach(element =>
{
if (element == null)
{
Debug.LogError("Null element detected in elementList during low-priority execution. Skipping execution.");
return;
}
if (BeatmapContainer_BM.LowPriorityGameElementTypes.Contains(element.GetType()))
{
element.ExecuteBM();
}
});
EditorManager.instance.beatmapContainer.ExecuteLowPriorityActions();
}
}
public class NotePrefabManager
{
private string notePrefabPath => Application.streamingAssetsPath + "/NotePrefabs";