Clip保存与读取

This commit is contained in:
SoulliesOfficial
2025-03-01 12:50:13 -05:00
parent ed863d6591
commit 6aba331079
27 changed files with 3573 additions and 32 deletions

BIN
Assets/.DS_Store vendored

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,71 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Editor
{
public class ClipManagementWindow : MovableWindow
{
public TMP_InputField clipNameInputField;
public Button applyClipButton;
public void InitializeAsSaveClip()
{
GameElement currentElement = EditorManager.instance.operationManager.currentSelectedElement;
if (currentElement == null)
{
LogWindow.Log("No Game Element selected.", Color.red);
return;
}
if (!OpenWindow())
{
return;
}
InitializeWindow("Save Clip: " + currentElement.elementName);
clipNameInputField.text = currentElement.elementName;
applyClipButton.onClick.RemoveAllListeners();
applyClipButton.onClick.AddListener(() =>
{
EditorManager.instance.projectManager.beatmapClipManager.Save(clipNameInputField.text);
gameObject.SetActive(false);
});
}
public void InitializeAsLoadClip()
{
if (!OpenWindow())
{
return;
}
InitializeWindow("Load Clip");
clipNameInputField.text = "";
applyClipButton.onClick.RemoveAllListeners();
applyClipButton.onClick.AddListener(() =>
{
EditorManager.instance.projectManager.beatmapClipManager.Load(clipNameInputField.text);
gameObject.SetActive(false);
});
}
private bool OpenWindow()
{
if (EditorManager.instance.uiManager.mainPage.toolBar.clipManagementWindow.gameObject.activeSelf)
{
LogWindow.Log("Clip Management Window is already active.");
return false;
}
gameObject.SetActive(true);
return true;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 98c54627a956d42e8af1eb21c396109a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.UI;
@@ -8,16 +9,24 @@ namespace Ichni.Editor
{
public partial class ToolBar : StaticWindow
{
[Title("Buttons")]
public Button projectInfoButton;
public Button songInfoButton;
public Button saveButton;
public Button exportButton;
public Button clipSaveButton;
public Button clipLoadButton;
[Title("Windows")]
public ClipManagementWindow clipManagementWindow;
protected override void Start()
{
base.Start();
saveButton.onClick.AddListener(EditorManager.instance.projectManager.saveManager.Save);
exportButton.onClick.AddListener(EditorManager.instance.projectManager.exportManager.Export);
clipSaveButton.onClick.AddListener(clipManagementWindow.InitializeAsSaveClip);
clipLoadButton.onClick.AddListener(clipManagementWindow.InitializeAsLoadClip);
}
}

View File

@@ -12,5 +12,14 @@ namespace Ichni.Editor
public RectTransform windowRect;
public Button closeButton;
public TMP_Text title;
protected void InitializeWindow(string titleText)
{
title.text = titleText;
closeButton.onClick.AddListener(() =>
{
gameObject.SetActive(false);
});
}
}
}

View File

@@ -70,6 +70,8 @@ namespace Ichni.RhythmGame
{
public abstract class BaseElement_BM
{
public Guid attachedElementGuid;
/// <summary>
/// 从存档类中生成游戏物体
/// </summary>

View File

@@ -126,14 +126,12 @@ namespace Ichni.RhythmGame
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
(attachedElement as IHaveColorSubmodule).colorSubmodule = new ColorSubmodule(attachedElement,
originalBaseColor, emissionEnabled, originalEmissionColor, originalEmissionIntensity);
attachedElement.submoduleList.Add((attachedElement as IHaveColorSubmodule).colorSubmodule);
}
public override void DuplicateBM(GameElement attached)
{
(attached as IHaveColorSubmodule).colorSubmodule = new ColorSubmodule(attached,
originalBaseColor, emissionEnabled, originalEmissionColor, originalEmissionIntensity);
attached.submoduleList.Add((attached as IHaveColorSubmodule).colorSubmodule);
}
}
}

View File

@@ -143,13 +143,11 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
(attachedElement as IHaveEffectSubmodule).effectSubmodule = new EffectSubmodule(attachedElement, effectCollection);
attachedElement.submoduleList.Add((attachedElement as IHaveEffectSubmodule).effectSubmodule);
}
public override void DuplicateBM(GameElement attached)
{
(attached as IHaveEffectSubmodule).effectSubmodule = new EffectSubmodule(attached, effectCollection);
attached.submoduleList.Add((attached as IHaveEffectSubmodule).effectSubmodule);
}
}
}

View File

@@ -16,6 +16,7 @@ namespace Ichni.RhythmGame
public SubmoduleBase(GameElement attachedGameElement)
{
this.attachedGameElement = attachedGameElement;
this.attachedGameElement.submoduleList.Add(this);
}
public abstract void SaveBM();
@@ -46,9 +47,8 @@ namespace Ichni.RhythmGame
{
public abstract class Submodule_BM : BaseElement_BM
{
[System.NonSerialized] public GameElement attachedElement; //存档类对应的游戏物体
public Guid attachedElementGuid;
[System.NonSerialized] protected GameElement attachedElement; //存档类对应的游戏物体
public Submodule_BM()
{

View File

@@ -136,13 +136,11 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
(attachedElement as IHaveTimeDurationSubmodule).timeDurationSubmodule = new TimeDurationSubmodule(attachedElement, isOverridingDuration, startTime, endTime);
attachedElement.submoduleList.Add((attachedElement as IHaveTimeDurationSubmodule).timeDurationSubmodule);
}
public override void DuplicateBM(GameElement attached)
{
{
(attached as IHaveTimeDurationSubmodule).timeDurationSubmodule = new TimeDurationSubmodule(attached, isOverridingDuration, startTime, endTime);
attached.submoduleList.Add((attached as IHaveTimeDurationSubmodule).timeDurationSubmodule);
}
}
}

View File

@@ -228,13 +228,11 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
(attachedElement as IHaveTransformSubmodule).transformSubmodule = new TransformSubmodule(attachedElement, originalPosition, originalEulerAngles, originalScale);
attachedElement.submoduleList.Add((attachedElement as IHaveTransformSubmodule).transformSubmodule);
}
public override void DuplicateBM(GameElement attached)
{
(attached as IHaveTransformSubmodule).transformSubmodule = new TransformSubmodule(attached, originalPosition, originalEulerAngles, originalScale);
attached.submoduleList.Add((attached as IHaveTransformSubmodule).transformSubmodule);
}
}
}

View File

@@ -69,7 +69,7 @@ namespace Ichni.RhythmGame
if (element is GameElement_BM gameElement)
{
#if UNITY_EDITOR
Debug.Log("Adding element to identifier: " + gameElement.elementName + " " + gameElement.elementGuid);
//Debug.Log("Adding element to identifier: " + gameElement.elementName + " " + gameElement.elementGuid);
#endif
GameElement_BM.identifier.Add(gameElement.elementGuid, gameElement);
}

View File

@@ -163,9 +163,10 @@ namespace Ichni.RhythmGame
}
/// <summary>
/// 获取自身和所有子GameElement
/// 获取所有子GameElement
/// </summary>
public List<GameElement> GetAllGameElementsFromThis()
/// <param name="includeThis">是否包括自身</param>
public List<GameElement> GetAllGameElementsFromThis(bool includeThis = true)
{
void GetAllChildrenRecursively(GameElement parent, List<GameElement> elements)
{
@@ -178,6 +179,8 @@ namespace Ichni.RhythmGame
List<GameElement> gameElements = new List<GameElement> { this };
GetAllChildrenRecursively(this, gameElements);
if(!includeThis) gameElements.Remove(this);
return gameElements;
}
@@ -197,7 +200,6 @@ namespace Ichni.RhythmGame
public string elementName;
public List<string> tags;
public Guid elementGuid;
public Guid attachedElementGuid;
public GameElement_BM()
{

View File

@@ -40,13 +40,11 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
(attachedElement as NoteBase).noteJudgeSubmodule = new NoteJudgeSubmodule(attachedElement as NoteBase);
attachedElement.submoduleList.Add((attachedElement as NoteBase).noteJudgeSubmodule);
}
public override void DuplicateBM(GameElement attached)
{
(attached as NoteBase).noteJudgeSubmodule = new NoteJudgeSubmodule(attached as NoteBase);
attached.submoduleList.Add((attached as NoteBase).noteJudgeSubmodule);
}
}

View File

@@ -11,7 +11,6 @@ namespace Ichni.RhythmGame
public TrackSubmodule(Track track) : base(track)
{
this.track = track;
this.track.submoduleList.Add(this);
}
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using Ichni.Editor;
using Ichni.RhythmGame;
using Ichni.RhythmGame.Beatmap;
@@ -28,18 +29,21 @@ namespace Ichni
public SaveManager saveManager;
public LoadManager loadManager;
public ExportManager exportManager;
public BeatmapClipManager beatmapClipManager;
public ProjectManager()
{
saveManager = new SaveManager();
loadManager = new LoadManager();
exportManager = new ExportManager();
beatmapClipManager = new BeatmapClipManager();
}
public void GenerateProject(string projectName)
{
EditorManager.instance.projectInformation = new ProjectInformation(projectName, "Soullies",
"2.0", "2025-02-08", "2025-02-08", new List<string>());
EditorManager.instance.projectInformation = new ProjectInformation(projectName, "Soullies", "2.0",
DateTime.Now.ToString(CultureInfo.CurrentCulture), DateTime.Now.ToString(CultureInfo.CurrentCulture),
new List<string>());
EditorManager.instance.songInformation = new SongInformation("TestSong", 120, 0);
EditorManager.instance.beatmapContainer = new BeatmapContainer();
EditorManager.instance.commandScripts = new CommandScripts(new List<string>());
@@ -156,6 +160,7 @@ namespace Ichni
{
yield return new WaitForEndOfFrame();
}
LoadBeatMap();
LogWindow.Log("Load Complete", Color.green);
}
@@ -184,4 +189,101 @@ namespace Ichni
ProjectManager.SaveSettings).ExecuteBM();
}
}
public class BeatmapClipManager
{
public void Save(string clipName)
{
LogWindow.Log("Start Saving Clip...");
GameElement selectedElement = EditorManager.instance.operationManager.currentSelectedElement;
if (selectedElement is not ElementFolder folder)
{
LogWindow.Log("Please select a folder to save the beatmap clip.", Color.red);
return;
}
SaveClip(folder, clipName);
LogWindow.Log("Save Clip Complete", Color.green);
}
public void Load(string clipName)
{
LogWindow.Log("Start Loading Clip...");
if(!ES3.FileExists(Application.streamingAssetsPath + "/Clips/" + clipName + ".json"))
{
LogWindow.Log("Clip not found", Color.red);
return;
}
LoadClip(clipName);
LogWindow.Log("Load Clip Complete", Color.green);
}
public void SaveClip(ElementFolder folder, string clipName)
{
List<BaseElement_BM> clip = new List<BaseElement_BM>();
folder.SaveBM();
folder.matchedBM.attachedElementGuid = Guid.Empty;
clip.Add(folder.matchedBM);
folder.submoduleList.ForEach(s =>
{
s.SaveBM();
clip.Add(s.matchedBM);
});
folder.GetAllGameElementsFromThis(false).ForEach(e =>
{
e.SaveBM();
clip.Add(e.matchedBM);
e.submoduleList.ForEach(s =>
{
s.SaveBM();
clip.Add(s.matchedBM);
});
});
string filePath = Application.streamingAssetsPath + "/Clips/" + clipName + ".json";
ES3.Save("Clip", clip, filePath, ProjectManager.SaveSettings);
}
public void LoadClip(string clipName)
{
List<BaseElement_BM> GetAllAttachedBaseElements(GameElement_BM gameElement, List<BaseElement_BM> clip)
{
Guid elementGuid = gameElement.elementGuid;
List<BaseElement_BM> result = new List<BaseElement_BM>();
foreach (BaseElement_BM element in clip)
{
if (element.attachedElementGuid == elementGuid)
{
result.Add(element);
}
}
return result;
}
string filePath = Application.streamingAssetsPath + "/Clips/" + clipName + ".json";
List<BaseElement_BM> clip = ES3.Load<List<BaseElement_BM>>("Clip", filePath, ProjectManager.SaveSettings);
foreach (BaseElement_BM element in clip)
{
if (element is GameElement_BM gameElement)
{
List<BaseElement_BM> attachedElements = GetAllAttachedBaseElements(gameElement, clip);
gameElement.elementGuid = Guid.NewGuid();
GameElement_BM.identifier.TryAdd(gameElement.elementGuid, gameElement);
attachedElements.ForEach(e => { e.attachedElementGuid = gameElement.elementGuid; });
}
}
clip.ForEach(e => e.ExecuteBM());
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eb2c44158ee5b46df961dac868c71a55
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,693 @@
{
"Clip" : {
"__type" : "System.Collections.Generic.List`1[[Ichni.RhythmGame.Beatmap.BaseElement_BM, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]],mscorlib",
"value" : [
{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "CroP_Folder",
"tags" : [
],
"elementGuid" : {
"value" : "6aa6e1f4-2df6-4d35-8e77-97b24514e133"
},
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "6aa6e1f4-2df6-4d35-8e77-97b24514e133"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "6aa6e1f4-2df6-4d35-8e77-97b24514e133"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
"elementName" : "New Track",
"tags" : [
],
"elementGuid" : {
"value" : "d6cf19bf-069b-4914-b70c-b18ca00a759b"
},
"attachedElementGuid" : {
"value" : "6aa6e1f4-2df6-4d35-8e77-97b24514e133"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "d6cf19bf-069b-4914-b70c-b18ca00a759b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "d6cf19bf-069b-4914-b70c-b18ca00a759b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
"trackSpaceType" : 0,
"trackSamplingType" : 0,
"isClosed" : false,
"attachedElementGuid" : {
"value" : "d6cf19bf-069b-4914-b70c-b18ca00a759b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackTimeSubmoduleMovable_BM,Assembly-CSharp",
"trackStartTime" : 0,
"trackEndTime" : 1,
"visibleTrackTimeLength" : 1,
"animationCurveType" : 0,
"attachedElementGuid" : {
"value" : "d6cf19bf-069b-4914-b70c-b18ca00a759b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "453d844b-cb17-4d13-a193-63694022c811"
},
"attachedElementGuid" : {
"value" : "d6cf19bf-069b-4914-b70c-b18ca00a759b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -5,
"y" : 5,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "453d844b-cb17-4d13-a193-63694022c811"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "453d844b-cb17-4d13-a193-63694022c811"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "453d844b-cb17-4d13-a193-63694022c811"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "22047ab3-909b-49a7-8e69-24462dbe3b0e"
},
"attachedElementGuid" : {
"value" : "d6cf19bf-069b-4914-b70c-b18ca00a759b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 5,
"y" : 5,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "22047ab3-909b-49a7-8e69-24462dbe3b0e"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "22047ab3-909b-49a7-8e69-24462dbe3b0e"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "22047ab3-909b-49a7-8e69-24462dbe3b0e"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
"elementName" : "New Track",
"tags" : [
],
"elementGuid" : {
"value" : "9df81428-eda6-4943-9b90-e5c942e0d0ce"
},
"attachedElementGuid" : {
"value" : "6aa6e1f4-2df6-4d35-8e77-97b24514e133"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "9df81428-eda6-4943-9b90-e5c942e0d0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "9df81428-eda6-4943-9b90-e5c942e0d0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
"trackSpaceType" : 0,
"trackSamplingType" : 0,
"isClosed" : false,
"attachedElementGuid" : {
"value" : "9df81428-eda6-4943-9b90-e5c942e0d0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackTimeSubmoduleMovable_BM,Assembly-CSharp",
"trackStartTime" : 1,
"trackEndTime" : 2,
"visibleTrackTimeLength" : 1,
"animationCurveType" : 0,
"attachedElementGuid" : {
"value" : "9df81428-eda6-4943-9b90-e5c942e0d0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "cab0c96e-ad58-4f5d-b786-aa7ebf09a795"
},
"attachedElementGuid" : {
"value" : "9df81428-eda6-4943-9b90-e5c942e0d0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 5,
"y" : 5,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "cab0c96e-ad58-4f5d-b786-aa7ebf09a795"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "cab0c96e-ad58-4f5d-b786-aa7ebf09a795"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "cab0c96e-ad58-4f5d-b786-aa7ebf09a795"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "8f49d730-c520-4b36-9e19-2cebfe7e577b"
},
"attachedElementGuid" : {
"value" : "9df81428-eda6-4943-9b90-e5c942e0d0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 5,
"y" : -5,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "8f49d730-c520-4b36-9e19-2cebfe7e577b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "8f49d730-c520-4b36-9e19-2cebfe7e577b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "8f49d730-c520-4b36-9e19-2cebfe7e577b"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
"elementName" : "New Track",
"tags" : [
],
"elementGuid" : {
"value" : "833c897e-6bd6-46a8-a1ce-c7ee8ec67401"
},
"attachedElementGuid" : {
"value" : "6aa6e1f4-2df6-4d35-8e77-97b24514e133"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "833c897e-6bd6-46a8-a1ce-c7ee8ec67401"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "833c897e-6bd6-46a8-a1ce-c7ee8ec67401"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
"trackSpaceType" : 0,
"trackSamplingType" : 0,
"isClosed" : false,
"attachedElementGuid" : {
"value" : "833c897e-6bd6-46a8-a1ce-c7ee8ec67401"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackTimeSubmoduleMovable_BM,Assembly-CSharp",
"trackStartTime" : 2,
"trackEndTime" : 3,
"visibleTrackTimeLength" : 1,
"animationCurveType" : 0,
"attachedElementGuid" : {
"value" : "833c897e-6bd6-46a8-a1ce-c7ee8ec67401"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "744849fa-756d-43c5-b42c-59b662aa9075"
},
"attachedElementGuid" : {
"value" : "833c897e-6bd6-46a8-a1ce-c7ee8ec67401"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 5,
"y" : -5,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "744849fa-756d-43c5-b42c-59b662aa9075"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "744849fa-756d-43c5-b42c-59b662aa9075"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "744849fa-756d-43c5-b42c-59b662aa9075"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "825b0fd6-3175-4088-8457-71dc25ef1445"
},
"attachedElementGuid" : {
"value" : "833c897e-6bd6-46a8-a1ce-c7ee8ec67401"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -5,
"y" : -5,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "825b0fd6-3175-4088-8457-71dc25ef1445"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "825b0fd6-3175-4088-8457-71dc25ef1445"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "825b0fd6-3175-4088-8457-71dc25ef1445"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.CrossTrackPoint_BM,Assembly-CSharp",
"trackSwitch" : {
"value" : 0,
"animations" : [
{
"value" : 0,
"time" : 0
},{
"value" : 1,
"time" : 1
},{
"value" : 2,
"time" : 2
}
]
},
"trackPercent" : {
"value" : 0,
"currentAnimationIndex" : 0,
"animations" : [
{
"startValue" : 0,
"endValue" : 1,
"startTime" : 0,
"endTime" : 1,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 1,
"startTime" : 1,
"endTime" : 2,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 1,
"startTime" : 2,
"endTime" : 3,
"animationCurveType" : 0
}
],
"returnType" : 1
},
"elementName" : "New Cross Track Point",
"tags" : [
],
"elementGuid" : {
"value" : "a503074e-00c6-4cec-b3a3-02fec0c575b3"
},
"attachedElementGuid" : {
"value" : "6aa6e1f4-2df6-4d35-8e77-97b24514e133"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "a503074e-00c6-4cec-b3a3-02fec0c575b3"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "b688b5b5-f1ba-46f9-81df-ea8250479ef0"
},
"attachedElementGuid" : {
"value" : "a503074e-00c6-4cec-b3a3-02fec0c575b3"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "b688b5b5-f1ba-46f9-81df-ea8250479ef0"
}
}
]
}
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9bb884caba3904757aebdf235450ed12
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -1323,7 +1323,7 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.CrossTrackPoint_BM,Assembly-CSharp",
"trackSwitch" : {
"value" : 2,
"value" : 0,
"animations" : [
{
"value" : 0,
@@ -1338,8 +1338,8 @@
]
},
"trackPercent" : {
"value" : 1,
"currentAnimationIndex" : 2,
"value" : 0.7894785,
"currentAnimationIndex" : 0,
"animations" : [
{
"startValue" : 0,
@@ -1361,7 +1361,7 @@
"animationCurveType" : 0
}
],
"returnType" : 3
"returnType" : 1
},
"elementName" : "New Cross Track Point",
"tags" : [
@@ -1506,7 +1506,10 @@
"value" : "0bee35ad-27af-4605-bf96-53790b41beb7"
}
}
]
],
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
}
}
}

View File

@@ -4,7 +4,10 @@
"value" : {
"commandList" : [
]
],
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
}
}
}

View File

@@ -9,7 +9,10 @@
"lastSaveTime" : "2025-02-08",
"selectedThemeBundleList" : [
"basic","departure_to_multiverse"
]
],
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
}
}
}

View File

@@ -4,7 +4,10 @@
"value" : {
"songName" : "TestSong",
"bpm" : 120,
"delay" : 2
"delay" : 2,
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
}
}
}

Binary file not shown.