Vector3 inputfield 改进

This commit is contained in:
SoulliesOfficial
2025-02-12 18:46:46 -05:00
parent 3a1ee5f9ef
commit 8d03acc3cb
30 changed files with 1781 additions and 239 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 51df578950a6d4a35a922e00753efb58
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -36,8 +36,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -25, y: -10} m_AnchoredPosition: {x: -82.5, y: -10}
m_SizeDelta: {x: 150, y: 50} m_SizeDelta: {x: 75, y: 50}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8816247129259985422 --- !u!222 &8816247129259985422
CanvasRenderer: CanvasRenderer:
@@ -252,7 +252,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_text: Track's Name m_text: Vector 3
m_isRightToLeft: 0 m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
@@ -853,8 +853,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 275, y: -10} m_AnchoredPosition: {x: 82.5, y: -10}
m_SizeDelta: {x: 150, y: 50} m_SizeDelta: {x: 75, y: 50}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7596590615969385144 --- !u!222 &7596590615969385144
CanvasRenderer: CanvasRenderer:
@@ -1247,8 +1247,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 125, y: -10} m_AnchoredPosition: {x: 0, y: -10}
m_SizeDelta: {x: 150, y: 50} m_SizeDelta: {x: 75, y: 50}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3841134997005631993 --- !u!222 &3841134997005631993
CanvasRenderer: CanvasRenderer:
@@ -1756,7 +1756,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 240, y: 100}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &9001319910968385871 --- !u!114 &9001319910968385871
MonoBehaviour: MonoBehaviour:
@@ -1773,6 +1773,6 @@ MonoBehaviour:
title: {fileID: 4410930810289194328} title: {fileID: 4410930810289194328}
parameterName: parameterName:
isAlwaysUpdated: 0 isAlwaysUpdated: 0
inputFieldx: {fileID: 564764156102873551} inputFieldX: {fileID: 564764156102873551}
inputFieldy: {fileID: 2615181962848533274} inputFieldY: {fileID: 2615181962848533274}
inputFieldz: {fileID: 1109358340149190358} inputFieldZ: {fileID: 1109358340149190358}

View File

@@ -43,17 +43,8 @@ namespace Ichni.RhythmGame
positionX.UpdateFlexibleFloat(songTime); positionX.UpdateFlexibleFloat(songTime);
positionY.UpdateFlexibleFloat(songTime); positionY.UpdateFlexibleFloat(songTime);
positionZ.UpdateFlexibleFloat(songTime); positionZ.UpdateFlexibleFloat(songTime);
if (positionX.returnType is FlexibleReturnType.After or FlexibleReturnType.Before if (positionX.returnType is FlexibleReturnType.MiddleExecuting or FlexibleReturnType.After or FlexibleReturnType.Before ||
or FlexibleReturnType.MiddleInterval or FlexibleReturnType.None &&
positionY.returnType is FlexibleReturnType.After or FlexibleReturnType.Before
or FlexibleReturnType.MiddleInterval or FlexibleReturnType.None &&
positionZ.returnType is FlexibleReturnType.After or FlexibleReturnType.Before
or FlexibleReturnType.MiddleInterval or FlexibleReturnType.None)
{
// Out of range, do nothing
}
else if (positionX.returnType is FlexibleReturnType.MiddleExecuting or FlexibleReturnType.After or FlexibleReturnType.Before ||
positionY.returnType is FlexibleReturnType.MiddleExecuting or FlexibleReturnType.After or FlexibleReturnType.Before || positionY.returnType is FlexibleReturnType.MiddleExecuting or FlexibleReturnType.After or FlexibleReturnType.Before ||
positionZ.returnType is FlexibleReturnType.MiddleExecuting or FlexibleReturnType.After or FlexibleReturnType.Before) positionZ.returnType is FlexibleReturnType.MiddleExecuting or FlexibleReturnType.After or FlexibleReturnType.Before)
{ {

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Ichni.Editor;
using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.Beatmap;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using UniRx; using UniRx;
@@ -18,6 +19,11 @@ namespace Ichni.RhythmGame
/// </summary> /// </summary>
public void SaveBM(); public void SaveBM();
/// <summary>
/// 刷新物体的状态
/// </summary>
public void Refresh();
/// <summary> /// <summary>
/// 当物体被删除时执行的方法 /// 当物体被删除时执行的方法
/// </summary> /// </summary>
@@ -33,6 +39,8 @@ namespace Ichni.RhythmGame
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public void SetUpInspector();
} }
// public virtual void SetTimeDuration() // public virtual void SetTimeDuration()

View File

@@ -1,6 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Ichni.Editor;
using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.Beatmap;
using UnityEngine; using UnityEngine;
@@ -33,6 +34,18 @@ namespace Ichni.RhythmGame
{ {
attachedGameElement.submoduleList.Remove(this); attachedGameElement.submoduleList.Remove(this);
} }
public Inspector inspector => EditorManager.instance.uiManager.inspector;
public virtual void SetUpInspector()
{
}
public virtual void Refresh()
{
}
} }
namespace Beatmap namespace Beatmap

View File

@@ -82,6 +82,30 @@ namespace Ichni.RhythmGame
{ {
matchedBM = new TransformSubmodule_BM(attachedGameElement); matchedBM = new TransformSubmodule_BM(attachedGameElement);
} }
public override void SetUpInspector()
{
var container = inspector.GenerateContainer("Transform");
var originalPosInputField =
inspector.GenerateVec3InputField(this, container, "Start Position", nameof(originalPosition));
var originalRotInputField =
inspector.GenerateVec3InputField(this, container, "Start Rotation", nameof(originalEulerAngles));
var originalScaleInputField =
inspector.GenerateVec3InputField(this, container, "Start Scale", nameof(originalScale));
var currentPosText =
inspector.GenerateText(this, container, "Current Position", nameof(currentPosition), true);
var currentRotText =
inspector.GenerateText(this, container, "Current Rotation", nameof(currentEulerAngles), true);
var currentScaleText =
inspector.GenerateText(this, container, "Current Scale", nameof(currentScale), true);
}
public override void Refresh()
{
positionDirtyMark = true;
eulerAnglesDirtyMark = true;
scaleDirtyMark = true;
}
} }
public interface IHaveTransformSubmodule public interface IHaveTransformSubmodule

View File

@@ -6,22 +6,18 @@ using UnityEngine;
[CreateAssetMenu(fileName = "BasePrefabsCollection", menuName = "Ichni/BasePrefabsCollection", order = 0)] [CreateAssetMenu(fileName = "BasePrefabsCollection", menuName = "Ichni/BasePrefabsCollection", order = 0)]
public class BasePrefabsCollection : SerializedScriptableObject public class BasePrefabsCollection : SerializedScriptableObject
{ {
[Title("基础预制体")] [Title("基础预制体")] public GameObject emptyObject;
public GameObject emptyObject;
public GameObject elementFolder; public GameObject elementFolder;
public GameObject gameCamera; public GameObject gameCamera;
[Title("Track相关")] [Title("Track相关")] public GameObject track;
public GameObject track;
public GameObject pathNode; public GameObject pathNode;
public Material defaultTrackMaterial; public Material defaultTrackMaterial;
[Title("Trail相关")] [Title("Trail相关")] public GameObject trail;
public GameObject trail;
public Material defaultTrailMaterial; public Material defaultTrailMaterial;
[Title("Note 相关")] [Title("Note 相关")] public GameObject tapNote;
public GameObject tapNote;
public GameObject stayNote; public GameObject stayNote;
public GameObject holdNote; public GameObject holdNote;
public GameObject flickNote; public GameObject flickNote;
@@ -32,12 +28,15 @@ public class BasePrefabsCollection : SerializedScriptableObject
public AudioClip holdNoteEndSound; public AudioClip holdNoteEndSound;
public AudioClip flickNoteSound; public AudioClip flickNoteSound;
[Title("Effect相关")] [Title("Effect相关")] public GameObject bloomShake;
public GameObject bloomShake;
[Title("DynamicUI相关")] public GameObject dynamicUIContainer;
[Title("DynamicUI相关")]
public GameObject dynamicUIContainer;
public GameObject inputField; public GameObject inputField;
public GameObject Vec3inputField; public GameObject Vec3inputField;
public GameObject text; public GameObject text;
public GameObject button;
public GameObject toggle;
public GameObject dropdown;
} }

View File

@@ -50,6 +50,9 @@ namespace Ichni
gameElement.AfterInitialize(); gameElement.AfterInitialize();
gameElement.Refresh(); gameElement.Refresh();
}); });
// projectManager.saveManager.Save();
// projectManager.exportManager.Export();
} }
private void Update() private void Update()
@@ -66,6 +69,17 @@ namespace Ichni
new FlexibleFloat(), new FlexibleFloat(),
new FlexibleFloat(new List<AnimatedFloat>(){new (0,2,0,10, AnimationCurveType.Linear)}), new FlexibleFloat(new List<AnimatedFloat>(){new (0,2,0,10, AnimationCurveType.Linear)}),
new FlexibleFloat()); new FlexibleFloat());
var dis1 = Displacement.GenerateElement("Displacement-1", Guid.NewGuid(), new List<string>(), true, f0,
new FlexibleFloat(new List<AnimatedFloat>()
{
new(0, 0.5f, 0, -4, AnimationCurveType.OutQuad),
new(0.5f, 1, -4, 0, AnimationCurveType.InQuad),
new(1, 1.5f, 0, 4, AnimationCurveType.OutQuad),
new(1.5f, 2, 4, 0, AnimationCurveType.InQuad),
}),
new FlexibleFloat(new List<AnimatedFloat>(){new (0,2,0,-10, AnimationCurveType.Linear)}),
new FlexibleFloat());
var t0 = Track.GenerateElement("Track", Guid.NewGuid(), new List<string>(), true, f0); var t0 = Track.GenerateElement("Track", Guid.NewGuid(), new List<string>(), true, f0);
t0.trackPathSubmodule = new TrackPathSubmodule(t0, Track.TrackSpaceType.Linear, Track.TrackSamplingType.TimeDistributed, false); t0.trackPathSubmodule = new TrackPathSubmodule(t0, Track.TrackSpaceType.Linear, Track.TrackSamplingType.TimeDistributed, false);
t0.submoduleList.Add(t0.trackPathSubmodule); t0.submoduleList.Add(t0.trackPathSubmodule);
@@ -84,15 +98,6 @@ namespace Ichni
var n0 = Tap.GenerateElement("Note-0", Guid.NewGuid(), new List<string>(), true, t0, 1f); var n0 = Tap.GenerateElement("Note-0", Guid.NewGuid(), new List<string>(), true, t0, 1f);
var n0v = BasicNoteVisual.GenerateElement("Note-0-V", Guid.NewGuid(), new List<string>(), true, n0, var n0v = BasicNoteVisual.GenerateElement("Note-0-V", Guid.NewGuid(), new List<string>(), true, n0,
"basic", "BasicNoteTap3D"); "basic", "BasicNoteTap3D");
beatmapContainer.gameElementList.ForEach(e =>
{
e.AfterInitialize();
e.Refresh();
});
projectManager.saveManager.Save();
projectManager.exportManager.Export();
} }
} }

View File

@@ -19,6 +19,16 @@ namespace Ichni.RhythmGame
{ {
matchedBM = new BeatmapContainer_BM(gameElementList); matchedBM = new BeatmapContainer_BM(gameElementList);
} }
public void SetUpInspector()
{
throw new System.NotImplementedException();
}
public void Refresh()
{
throw new System.NotImplementedException();
}
} }
namespace Beatmap namespace Beatmap

View File

@@ -20,6 +20,16 @@ namespace Ichni.RhythmGame
{ {
matchedBM = new CommandScripts_BM(commandList); matchedBM = new CommandScripts_BM(commandList);
} }
public void SetUpInspector()
{
throw new System.NotImplementedException();
}
public void Refresh()
{
throw new System.NotImplementedException();
}
} }
namespace Beatmap namespace Beatmap

View File

@@ -41,6 +41,16 @@ namespace Ichni.RhythmGame
matchedBM = new ProjectInformation_BM(projectName, creatorName, editorVersion, matchedBM = new ProjectInformation_BM(projectName, creatorName, editorVersion,
createTime, lastSaveTime, selectedThemeBundleList); createTime, lastSaveTime, selectedThemeBundleList);
} }
public void SetUpInspector()
{
throw new System.NotImplementedException();
}
public void Refresh()
{
throw new System.NotImplementedException();
}
} }
namespace Beatmap namespace Beatmap

View File

@@ -29,6 +29,16 @@ namespace Ichni.RhythmGame
{ {
matchedBM = new SongInformation_BM(songName, bpm, delay); matchedBM = new SongInformation_BM(songName, bpm, delay);
} }
public void SetUpInspector()
{
throw new System.NotImplementedException();
}
public void Refresh()
{
throw new System.NotImplementedException();
}
} }
namespace Beatmap namespace Beatmap

View File

@@ -13,9 +13,5 @@ namespace Ichni.Editor
public GridLayoutGroup gridLayoutGroup; public GridLayoutGroup gridLayoutGroup;
public List<DynamicUIElement> dynamicUIElements = new List<DynamicUIElement>(); public List<DynamicUIElement> dynamicUIElements = new List<DynamicUIElement>();
[FormerlySerializedAs("container")] public RectTransform rect; [FormerlySerializedAs("container")] public RectTransform rect;
public void setVoH(bool VoH){
if(VoH)gridLayoutGroup.cellSize=new Vector2(250,100);
}
} }
} }

View File

@@ -0,0 +1,35 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Ichni.RhythmGame;
using TMPro;
using UnityEngine;
namespace Ichni.Editor
{
public class DynamicUIDropdown : DynamicUIElement
{
public TMP_Dropdown dropdown;
public override void Initialize(IBaseElement baseElement, string title, string parameterName)
{
base.Initialize(baseElement, title, parameterName);
dropdown.value = (int)connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement); //获取对应变量的值
dropdown.onValueChanged.AddListener(ApplyParameters);
}
public void SetUpEnum(Type enumType)
{
dropdown.options.Clear();
List<string> enumNameList = System.Enum.GetNames(enumType).ToList();
dropdown.AddOptions(enumNameList);
}
private void ApplyParameters(int value)
{
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, value);
connectedBaseElement.Refresh();
}
}
}

View File

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

View File

@@ -9,7 +9,7 @@ namespace Ichni.Editor
public abstract class DynamicUIElement : MonoBehaviour public abstract class DynamicUIElement : MonoBehaviour
{ {
public TMP_Text title; public TMP_Text title;
protected GameElement connectedGameElement => EditorManager.instance.uiManager.inspector.connectedGameElement; public IBaseElement connectedBaseElement;
/// <summary> /// <summary>
/// 参数名,通过反射获取饿修改对应变量的值 /// 参数名,通过反射获取饿修改对应变量的值
@@ -21,8 +21,9 @@ namespace Ichni.Editor
/// </summary> /// </summary>
public bool isAlwaysUpdated; public bool isAlwaysUpdated;
public virtual void Initialize(string title, string parameterName) public virtual void Initialize(IBaseElement baseElement, string title, string parameterName)
{ {
this.connectedBaseElement = baseElement;
this.parameterName = parameterName; this.parameterName = parameterName;
this.title.text = title; this.title.text = title;
} }

View File

@@ -1,5 +1,6 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Ichni.RhythmGame;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
@@ -9,17 +10,18 @@ namespace Ichni.Editor
{ {
public TMP_InputField inputField; public TMP_InputField inputField;
public override void Initialize(string title, string parameterName) public override void Initialize(IBaseElement baseElement, string title, string parameterName)
{ {
base.Initialize(title, parameterName); base.Initialize(baseElement, title, parameterName);
inputField.text = connectedGameElement.GetType().GetField(parameterName).GetValue(connectedGameElement).ToString(); //获取对应变量的值 inputField.text = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement).ToString(); //获取对应变量的值
inputField.onEndEdit.AddListener(ApplyParameters); //输入结束后修改变量 inputField.onEndEdit.AddListener(ApplyParameters);
} }
private void ApplyParameters(string text) private void ApplyParameters(string text)
{ {
connectedGameElement.GetType().GetField(parameterName).SetValue(connectedGameElement, text); connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, text);
connectedBaseElement.Refresh();
} }
} }
} }

View File

@@ -1,6 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Ichni.RhythmGame;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
@@ -10,17 +11,17 @@ namespace Ichni.Editor
{ {
public TMP_Text text; public TMP_Text text;
public override void Initialize(string title, string parameterName) public override void Initialize(IBaseElement baseElement, string title, string parameterName)
{ {
base.Initialize(title, parameterName); base.Initialize(baseElement, title, parameterName);
text.text = connectedGameElement.GetType().GetField(parameterName).GetValue(connectedGameElement).ToString(); text.text = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement).ToString();
} }
private void Update() private void Update()
{ {
if (isAlwaysUpdated) if (isAlwaysUpdated)
{ {
text.text = connectedGameElement.GetType().GetField(parameterName).GetValue(connectedGameElement).ToString(); text.text = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement).ToString();
} }
} }
} }

View File

@@ -1,71 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using JetBrains.Annotations;
using TMPro;
using UnityEngine;
using UnityEngine.UIElements.Experimental;
namespace Ichni.Editor{
public class DynamicUIVec3InputField : DynamicUIElement
{
public TMP_InputField inputFieldx;
public TMP_InputField inputFieldy;
public TMP_InputField inputFieldz;
public TransformSubmodule e=null;
public override void Initialize(string title, string parameterName)
{
foreach(var i in connectedGameElement.submoduleList){
if(i.GetType()==typeof(TransformSubmodule)){
e= (TransformSubmodule)i;
break;
}
}
if (e == null)Destroy(gameObject);
base.Initialize(title, parameterName);
Vector3 pos = (Vector3)e.GetType().GetField(parameterName).GetValue(e); //获取对应变量的值
inputFieldx.text =pos.x.ToString();
inputFieldy.text =pos.y.ToString();
inputFieldz.text =pos.z.ToString();
}//我不应该用这种复制大法的(
public void ApplyParametersx(string text)
{
Vector3 newpos=totramsf(text,0);
e.GetType().GetField(parameterName).SetValue(e, newpos);
}
public void ApplyParametersy(string text)
{
Vector3 newpos=totramsf(text,1);
e.GetType().GetField(parameterName).SetValue(e, newpos);
}
public void ApplyParametersz(string text)
{
Vector3 newpos=totramsf(text,2);
e.GetType().GetField(parameterName).SetValue(e, newpos);
}
Vector3 totramsf(string value,int queue){
float avalue;
if(!float.TryParse(value,out avalue)){
avalue=0f;
}
Vector3 a= (Vector3)e.GetType().GetField(parameterName).GetValue(e); //获取对应变量的值
a[queue]=avalue;
return a;
}
}
}

View File

@@ -0,0 +1,38 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using JetBrains.Annotations;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UIElements.Experimental;
namespace Ichni.Editor
{
public class DynamicUIVector3InputField : DynamicUIElement
{
public TMP_InputField inputFieldX;
public TMP_InputField inputFieldY;
public TMP_InputField inputFieldZ;
public override void Initialize(IBaseElement baseElement, string title, string parameterName)
{
base.Initialize(baseElement, title, parameterName);
Vector3 pos = (Vector3)connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement); //获取对应变量的值
inputFieldX.text = pos.x.ToString();
inputFieldY.text = pos.y.ToString();
inputFieldZ.text = pos.z.ToString();
inputFieldX.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldY.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldZ.onEndEdit.AddListener(_ => ApplyParameters());
}
public void ApplyParameters()
{
Vector3 newValue = new Vector3(float.Parse(inputFieldX.text), float.Parse(inputFieldY.text), float.Parse(inputFieldZ.text));
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newValue);
connectedBaseElement.Refresh();
}
}
}

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.InteropServices.WindowsRuntime; using System.Runtime.InteropServices.WindowsRuntime;
@@ -22,51 +23,73 @@ namespace Ichni.Editor
containers.Clear(); containers.Clear();
connectedGameElement = gameElement; connectedGameElement = gameElement;
connectedGameElement.SetUpInspector(); connectedGameElement.SetUpInspector();
} }
} }
public partial class Inspector public partial class Inspector
{ {
public DynamicUIContainer GenerateContainer(string title) public DynamicUIContainer GenerateContainer(string title)
{ {
DynamicUIContainer container = Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, inspectorRect).GetComponent<DynamicUIContainer>(); DynamicUIContainer container =
Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, inspectorRect)
.GetComponent<DynamicUIContainer>();
container.title.text = title; container.title.text = title;
containers.Add(container); containers.Add(container);
return container; return container;
} }
public DynamicUIContainer GenerateContainer() public DynamicUIContainer GenerateContainer()
{ {
DynamicUIContainer container = Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, inspectorRect).GetComponent<DynamicUIContainer>(); DynamicUIContainer container =
Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, inspectorRect)
.GetComponent<DynamicUIContainer>();
Destroy(container.title.gameObject); Destroy(container.title.gameObject);
containers.Add(container); containers.Add(container);
return container; return container;
} }
public DynamicUIInputField GenerateInputField(DynamicUIContainer container, string title, string parameterName) public DynamicUIInputField GenerateInputField(IBaseElement baseElement, DynamicUIContainer container,
string title, string parameterName)
{ {
DynamicUIInputField inputField = Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect).GetComponent<DynamicUIInputField>(); DynamicUIInputField inputField = Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect)
inputField.Initialize(title, parameterName); .GetComponent<DynamicUIInputField>();
inputField.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(inputField); container.dynamicUIElements.Add(inputField);
return inputField; return inputField;
} }
public DynamicUIVec3InputField GenerateVec3InputField(DynamicUIContainer container, string title, string parameterName){
DynamicUIVec3InputField a=Instantiate(EditorManager.instance.basePrefabs.Vec3inputField,container.rect).GetComponent<DynamicUIVec3InputField>();
a.Initialize(title, parameterName);
container.dynamicUIElements.Add(a);
public DynamicUIVector3InputField GenerateVec3InputField(IBaseElement baseElement, DynamicUIContainer container,
return a; string title, string parameterName)
}
public DynamicUIText GenerateText(DynamicUIContainer container, string title, string parameterName, bool isAlwaysUpdate = false)
{ {
DynamicUIText text = Instantiate(EditorManager.instance.basePrefabs.text, container.rect).GetComponent<DynamicUIText>(); DynamicUIVector3InputField vector3InputField =
text.Initialize(title, parameterName); Instantiate(EditorManager.instance.basePrefabs.Vec3inputField, container.rect)
.GetComponent<DynamicUIVector3InputField>();
vector3InputField.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(vector3InputField);
return vector3InputField;
}
public DynamicUIText GenerateText(IBaseElement baseElement, DynamicUIContainer container, string title,
string parameterName, bool isAlwaysUpdate = false)
{
DynamicUIText text = Instantiate(EditorManager.instance.basePrefabs.text, container.rect)
.GetComponent<DynamicUIText>();
text.Initialize(baseElement, title, parameterName);
text.isAlwaysUpdated = isAlwaysUpdate; text.isAlwaysUpdated = isAlwaysUpdate;
container.dynamicUIElements.Add(text); container.dynamicUIElements.Add(text);
return text; return text;
} }
public DynamicUIDropdown GenerateDropdown(IBaseElement baseElement, DynamicUIContainer container, string title,
Type enumType, string parameterName)
{
DynamicUIDropdown dropdown = Instantiate(EditorManager.instance.basePrefabs.dropdown, container.rect)
.GetComponent<DynamicUIDropdown>();
dropdown.SetUpEnum(enumType);
dropdown.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(dropdown);
return dropdown;
}
} }
} }

View File

@@ -9,6 +9,7 @@ using Unity.VisualScripting;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using UnityEngine.UIElements; using UnityEngine.UIElements;
using Inspector = Ichni.Editor.Inspector;
namespace Ichni.RhythmGame namespace Ichni.RhythmGame
{ {
@@ -38,8 +39,6 @@ namespace Ichni.RhythmGame
//存档类 //存档类
public BaseElement_BM matchedBM { get; set; } public BaseElement_BM matchedBM { get; set; }
public Editor.Inspector inspector;
/// <summary> /// <summary>
/// 首次初始化 /// 首次初始化
@@ -48,7 +47,6 @@ namespace Ichni.RhythmGame
public virtual void Initialize(string name, Guid elementGuid, List<string> tags, public virtual void Initialize(string name, Guid elementGuid, List<string> tags,
bool isFirstGenerated, GameElement parentElement) bool isFirstGenerated, GameElement parentElement)
{ {
inspector=EditorManager.instance.uiManager.inspector;
this.elementName = name; this.elementName = name;
this.elementGuid = elementGuid; this.elementGuid = elementGuid;
this.tags = tags; this.tags = tags;
@@ -75,14 +73,6 @@ namespace Ichni.RhythmGame
} }
/// <summary>
/// 刷新物体的状态
/// </summary>
public virtual void Refresh()
{
}
/// <summary> /// <summary>
/// 设置父物体 /// 设置父物体
/// </summary> /// </summary>
@@ -100,6 +90,12 @@ namespace Ichni.RhythmGame
public abstract partial class GameElement //存档,删除,复制,粘贴 public abstract partial class GameElement //存档,删除,复制,粘贴
{ {
public virtual void Refresh()
{
}
/// <summary> /// <summary>
/// 用于生成存档 /// 用于生成存档
/// </summary> /// </summary>
@@ -143,30 +139,18 @@ namespace Ichni.RhythmGame
public abstract partial class GameElement public abstract partial class GameElement
{ {
public virtual void SetUpInspector()//被点击时设置第一层Inspector public Inspector inspector => EditorManager.instance.uiManager.inspector;
public void SetUpInspector() //被点击时设置第一层Inspector
{ {
var container = inspector.GenerateContainer("Element Info"); var container = inspector.GenerateContainer("Element Info");
var nameInputField = inspector.GenerateInputField(container, GetType().Name+"'s Name", nameof(elementName)); var nameInputField = inspector.GenerateInputField(this, container, GetType().Name + "'s Name", nameof(elementName));
var guidText = inspector.GenerateText(container, "Element GUID", nameof(elementGuid), true); var guidText = inspector.GenerateText(this, container, "Element GUID", nameof(elementGuid), true);
foreach(var i in submoduleList){ foreach (var submodule in submoduleList)
if(i.GetType()==typeof(TransformSubmodule)){ {
SetUpSecondInspector((TransformSubmodule)i); submodule.SetUpInspector();
break; }
}
}
} }
public virtual void SetUpSecondInspector(TransformSubmodule i){
var container2 = inspector.GenerateContainer("Element Property");
container2.setVoH(true);
var posInputField=inspector.GenerateVec3InputField(container2,"Start Position",nameof(i.originalPosition));
var rotInputField=inspector.GenerateVec3InputField(container2,"Start Rotation",nameof(i.originalEulerAngles));
var scaleInputField=inspector.GenerateVec3InputField(container2,"Start Scale",nameof(i.originalScale));
}
} }
namespace Beatmap namespace Beatmap

View File

@@ -1,2 +1,3 @@
;8O¦Òfy{y·yï:%ƒR=¤Ìµùã‰4@§‹:iÑ"ÝÄM2l0oUÜwTøDàu} *lè0Á5êK ëò»î“B_Цм†îø®ä²ÎWL/&)¼e1Ó¹^ØT¿+åƪ}TCl´Ùô{dB²˜Åôêð/©ÒÈ]Œ]F"ÇetY-döX §±E8¼¯ ÞNXª&R1Ϊ8ë˜Ù€<,WPlINûW-rݸU÷ìµÙFq®ã :
•vÇPÔ‹´Ã%"‰Ÿ·!÷ò`—…ìšx\Éj<48>~
´]-¨ùWÕ˜*¬±þ}jû„<C3BB>î|·ïo¦äþQqTtoœ\'W™

View File

@@ -10,7 +10,7 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "9f5ac639-6cf1-46a4-9aa4-6e992f044425" "value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000" "value" : "00000000-0000-0000-0000-000000000000"
@@ -33,7 +33,7 @@
"z" : 1 "z" : 1
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "9f5ac639-6cf1-46a4-9aa4-6e992f044425" "value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -41,7 +41,7 @@
"startTime" : -32767, "startTime" : -32767,
"endTime" : 32767, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "9f5ac639-6cf1-46a4-9aa4-6e992f044425" "value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp",
@@ -56,7 +56,7 @@
"startValue" : 0, "startValue" : 0,
"endValue" : 10, "endValue" : 10,
"startTime" : 0, "startTime" : 0,
"endTime" : 5, "endTime" : 2,
"animationCurveType" : 0 "animationCurveType" : 0
} }
] ]
@@ -71,10 +71,10 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "a44687d5-23cd-48ca-a8e3-f458b424fd96" "value" : "4e670cae-92bf-414d-98fe-5af126b8470c"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "9f5ac639-6cf1-46a4-9aa4-6e992f044425" "value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -82,7 +82,72 @@
"startTime" : -32767, "startTime" : -32767,
"endTime" : 32767, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "a44687d5-23cd-48ca-a8e3-f458b424fd96" "value" : "4e670cae-92bf-414d-98fe-5af126b8470c"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp",
"positionX" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : -4,
"startTime" : 0,
"endTime" : 0.5,
"animationCurveType" : 2
},{
"startValue" : -4,
"endValue" : 0,
"startTime" : 0.5,
"endTime" : 1,
"animationCurveType" : 1
},{
"startValue" : 0,
"endValue" : 4,
"startTime" : 1,
"endTime" : 1.5,
"animationCurveType" : 2
},{
"startValue" : 4,
"endValue" : 0,
"startTime" : 1.5,
"endTime" : 2,
"animationCurveType" : 1
}
]
},
"positionY" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : -10,
"startTime" : 0,
"endTime" : 2,
"animationCurveType" : 0
}
]
},
"positionZ" : {
"animatedFloatList" : [
]
},
"elementName" : "Displacement-1",
"tags" : [
],
"elementGuid" : {
"value" : "08f7383b-ebca-49c7-b543-94811d625215"
},
"attachedElementGuid" : {
"value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "08f7383b-ebca-49c7-b543-94811d625215"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
@@ -91,10 +156,10 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "9f5ac639-6cf1-46a4-9aa4-6e992f044425" "value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
@@ -114,15 +179,15 @@
"z" : 1 "z" : 1
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false, "isOverridingDuration" : false,
"startTime" : 0, "startTime" : -32767,
"endTime" : 5, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
@@ -130,16 +195,16 @@
"trackSamplingType" : 0, "trackSamplingType" : 0,
"isClosed" : false, "isClosed" : false,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TrackTimeSubmoduleMovable_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TrackTimeSubmoduleMovable_BM,Assembly-CSharp",
"trackStartTime" : 0, "trackStartTime" : 0,
"trackEndTime" : 5, "trackEndTime" : 2,
"visibleTrackTimeLength" : 1, "visibleTrackTimeLength" : 1,
"animationCurveType" : 2, "animationCurveType" : 2,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
@@ -149,7 +214,7 @@
"startValue" : 0, "startValue" : 0,
"endValue" : 1, "endValue" : 1,
"startTime" : 0, "startTime" : 0,
"endTime" : 5, "endTime" : 2,
"animationCurveType" : 2 "animationCurveType" : 2
} }
] ]
@@ -159,10 +224,10 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "7c4e4dc8-a28a-45e1-9bc9-99863e5776f4" "value" : "c0d17b10-4c78-4fd2-b133-6147be484a8e"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -170,7 +235,7 @@
"startTime" : -32767, "startTime" : -32767,
"endTime" : 32767, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "7c4e4dc8-a28a-45e1-9bc9-99863e5776f4" "value" : "c0d17b10-4c78-4fd2-b133-6147be484a8e"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
@@ -181,10 +246,10 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "0668db64-e99d-4ab2-bc03-4014b691719a" "value" : "3fdf0e9f-2d69-4f55-8167-a77ade5ac0ac"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "7c4e4dc8-a28a-45e1-9bc9-99863e5776f4" "value" : "c0d17b10-4c78-4fd2-b133-6147be484a8e"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
@@ -204,7 +269,7 @@
"z" : 1 "z" : 1
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "0668db64-e99d-4ab2-bc03-4014b691719a" "value" : "3fdf0e9f-2d69-4f55-8167-a77ade5ac0ac"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
@@ -213,10 +278,10 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "9b2c57b3-266c-4826-9639-d552b94cb635" "value" : "43d26c06-14ad-404b-931b-fd38b8ed9c55"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
@@ -228,7 +293,7 @@
"originalEulerAngles" : { "originalEulerAngles" : {
"x" : 0, "x" : 0,
"y" : 0, "y" : 0,
"z" : 1 "z" : 0
}, },
"originalScale" : { "originalScale" : {
"x" : 1, "x" : 1,
@@ -236,7 +301,7 @@
"z" : 1 "z" : 1
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "9b2c57b3-266c-4826-9639-d552b94cb635" "value" : "43d26c06-14ad-404b-931b-fd38b8ed9c55"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -244,7 +309,7 @@
"startTime" : -32767, "startTime" : -32767,
"endTime" : 32767, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "9b2c57b3-266c-4826-9639-d552b94cb635" "value" : "43d26c06-14ad-404b-931b-fd38b8ed9c55"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
@@ -263,7 +328,7 @@
}, },
"originalEmissionIntensity" : 0, "originalEmissionIntensity" : 0,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "9b2c57b3-266c-4826-9639-d552b94cb635" "value" : "43d26c06-14ad-404b-931b-fd38b8ed9c55"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
@@ -272,10 +337,10 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "a248aa98-c61c-4bbe-a4f7-f4ccf48c739e" "value" : "b6486c6b-7d2f-4f86-87f9-1e652f5648d9"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
@@ -287,7 +352,7 @@
"originalEulerAngles" : { "originalEulerAngles" : {
"x" : 0, "x" : 0,
"y" : 0, "y" : 0,
"z" : 1 "z" : 0
}, },
"originalScale" : { "originalScale" : {
"x" : 1, "x" : 1,
@@ -295,7 +360,7 @@
"z" : 1 "z" : 1
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "a248aa98-c61c-4bbe-a4f7-f4ccf48c739e" "value" : "b6486c6b-7d2f-4f86-87f9-1e652f5648d9"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -303,7 +368,7 @@
"startTime" : -32767, "startTime" : -32767,
"endTime" : 32767, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "a248aa98-c61c-4bbe-a4f7-f4ccf48c739e" "value" : "b6486c6b-7d2f-4f86-87f9-1e652f5648d9"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
@@ -322,20 +387,20 @@
}, },
"originalEmissionIntensity" : 0, "originalEmissionIntensity" : 0,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "a248aa98-c61c-4bbe-a4f7-f4ccf48c739e" "value" : "b6486c6b-7d2f-4f86-87f9-1e652f5648d9"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.Tap_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.Tap_BM,Assembly-CSharp",
"exactJudgeTime" : 2.5, "exactJudgeTime" : 1,
"elementName" : "Note-0", "elementName" : "Note-0",
"tags" : [ "tags" : [
], ],
"elementGuid" : { "elementGuid" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "b3683a28-7806-4123-ad86-c3fbc97bb1a5" "value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
@@ -355,7 +420,7 @@
"z" : 1 "z" : 1
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -363,7 +428,7 @@
"startTime" : -32767, "startTime" : -32767,
"endTime" : 32767, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.NoteJudgeSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.NoteJudgeSubmodule_BM,Assembly-CSharp",
@@ -371,7 +436,7 @@
], ],
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
} }
},{ },{
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteVisual_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteVisual_BM,Assembly-CSharp",
@@ -382,10 +447,10 @@
], ],
"elementGuid" : { "elementGuid" : {
"value" : "4c4650a4-19a8-4715-be40-66d059861376" "value" : "461ebb33-7c3d-47b2-bc0b-7c5ef2cd3e9e"
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
@@ -405,7 +470,7 @@
"z" : 1 "z" : 1
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "4c4650a4-19a8-4715-be40-66d059861376" "value" : "461ebb33-7c3d-47b2-bc0b-7c5ef2cd3e9e"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -413,7 +478,7 @@
"startTime" : -32767, "startTime" : -32767,
"endTime" : 32767, "endTime" : 32767,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "4c4650a4-19a8-4715-be40-66d059861376" "value" : "461ebb33-7c3d-47b2-bc0b-7c5ef2cd3e9e"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
@@ -432,7 +497,7 @@
}, },
"originalEmissionIntensity" : 0, "originalEmissionIntensity" : 0,
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "4c4650a4-19a8-4715-be40-66d059861376" "value" : "461ebb33-7c3d-47b2-bc0b-7c5ef2cd3e9e"
} }
},{ },{
"__type" : "Ichni.RhythmGame.Beatmap.EffectSubmodule_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.Beatmap.EffectSubmodule_BM,Assembly-CSharp",
@@ -441,17 +506,19 @@
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteGenerateExpand_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteGenerateExpand_BM,Assembly-CSharp",
"generateTime" : 1, "generateTime" : 1,
"attachedNoteID" : { "attachedNoteID" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
}, },
"effectTime" : 0.1 "effectTime" : 0.1
} }
],"GeneralJudge":[ ],"GeneralJudge":[
],"Holding":[
],"Perfect":[ ],"Perfect":[
{ {
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNotePerfectBurst_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNotePerfectBurst_BM,Assembly-CSharp",
"attachedNoteID" : { "attachedNoteID" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
}, },
"effectTime" : 0 "effectTime" : 0
} }
@@ -459,7 +526,7 @@
{ {
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteGoodBurst_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteGoodBurst_BM,Assembly-CSharp",
"attachedNoteID" : { "attachedNoteID" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
}, },
"effectTime" : 0 "effectTime" : 0
} }
@@ -467,7 +534,7 @@
{ {
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteBadExpand_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteBadExpand_BM,Assembly-CSharp",
"attachedNoteID" : { "attachedNoteID" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
}, },
"effectTime" : 0 "effectTime" : 0
} }
@@ -475,14 +542,14 @@
{ {
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteMissPale_BM,Assembly-CSharp", "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteMissPale_BM,Assembly-CSharp",
"attachedNoteID" : { "attachedNoteID" : {
"value" : "c539835b-0f98-412e-b004-cb3e68842957" "value" : "c5134d2c-c175-458c-99ff-07523169ec21"
}, },
"effectTime" : 0 "effectTime" : 0
} }
] ]
}, },
"attachedElementGuid" : { "attachedElementGuid" : {
"value" : "4c4650a4-19a8-4715-be40-66d059861376" "value" : "461ebb33-7c3d-47b2-bc0b-7c5ef2cd3e9e"
} }
} }
] ]