Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
33790
Assets/FR2_Cache.asset
33790
Assets/FR2_Cache.asset
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -12,7 +12,11 @@ namespace Ichni.Editor
|
||||
{
|
||||
public Button button;
|
||||
public TMP_Text buttonText;
|
||||
public override void Initialize(IBaseElement baseElement, string title, string parameterName)
|
||||
{
|
||||
base.Initialize(baseElement, title, parameterName);
|
||||
|
||||
}
|
||||
public void SetText(string buttonText)
|
||||
{
|
||||
this.buttonText.text = buttonText;
|
||||
@@ -26,10 +30,11 @@ namespace Ichni.Editor
|
||||
button.onClick.AddListener(connectedBaseElement.Refresh);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override DynamicUIElement AddListenerFunction(UnityAction action)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
button.onClick.AddListener(action);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ using Ichni.RhythmGame;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.Profiling;
|
||||
using UnityEngine.UI;
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace Ichni.Editor
|
||||
@@ -70,6 +71,8 @@ namespace Ichni.Editor
|
||||
button.SetText(title);
|
||||
button.Initialize(baseElement, title, string.Empty);
|
||||
button.ApplyFunction(function);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
button.button.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(button);
|
||||
return button;
|
||||
}
|
||||
@@ -80,6 +83,8 @@ namespace Ichni.Editor
|
||||
DynamicUIToggle toggle = Object.Instantiate(EditorManager.instance.basePrefabs.toggle, subcontainer.rect)
|
||||
.GetComponent<DynamicUIToggle>();
|
||||
toggle.Initialize(baseElement, title, parameterName);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
toggle.toggle.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(toggle);
|
||||
return toggle;
|
||||
}
|
||||
@@ -92,6 +97,8 @@ namespace Ichni.Editor
|
||||
.GetComponent<DynamicUIInputField>();
|
||||
inputField.Initialize(null, title, string.Empty);
|
||||
inputField.SetDefaultValue(defaultText);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
inputField.inputField.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(inputField);
|
||||
return inputField;
|
||||
}
|
||||
@@ -103,6 +110,8 @@ namespace Ichni.Editor
|
||||
.Instantiate(EditorManager.instance.basePrefabs.inputField, subcontainer.rect)
|
||||
.GetComponent<DynamicUIInputField>();
|
||||
inputField.Initialize(baseElement, title, parameterName);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
inputField.inputField.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(inputField);
|
||||
return inputField;
|
||||
}
|
||||
@@ -115,6 +124,10 @@ namespace Ichni.Editor
|
||||
.GetComponent<DynamicUIVector3InputField>();
|
||||
vector3InputField.Initialize(null, title, string.Empty);
|
||||
vector3InputField.SetDefaultValue(defaultVector3);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
vector3InputField.inputFieldX.navigation = nav;
|
||||
vector3InputField.inputFieldY.navigation = nav;
|
||||
vector3InputField.inputFieldZ.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(vector3InputField);
|
||||
return vector3InputField;
|
||||
}
|
||||
@@ -127,6 +140,10 @@ namespace Ichni.Editor
|
||||
.GetComponent<DynamicUIVector3InputField>();
|
||||
vector3InputField.Initialize(baseElement, title, parameterName);
|
||||
vector3InputField.SetAutoUpdate(isAutoUpdate);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
vector3InputField.inputFieldX.navigation = nav;
|
||||
vector3InputField.inputFieldY.navigation = nav;
|
||||
vector3InputField.inputFieldZ.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(vector3InputField);
|
||||
return vector3InputField;
|
||||
}
|
||||
@@ -139,6 +156,9 @@ namespace Ichni.Editor
|
||||
.GetComponent<DynamicUIVector2InputField>();
|
||||
vector2InputField.Initialize(baseElement, title, parameterName);
|
||||
vector2InputField.SetAutoUpdate(isAutoUpdate);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
vector2InputField.inputFieldX.navigation = nav;
|
||||
vector2InputField.inputFieldY.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(vector2InputField);
|
||||
return vector2InputField;
|
||||
}
|
||||
@@ -150,6 +170,11 @@ namespace Ichni.Editor
|
||||
.Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, subcontainer.rect)
|
||||
.GetComponent<DynamicUIBaseColorPicker>();
|
||||
colorPicker.Initialize(baseElement, title, parameterName);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
colorPicker.inputFieldBaseR.navigation = nav;
|
||||
colorPicker.inputFieldBaseG.navigation = nav;
|
||||
colorPicker.inputFieldBaseB.navigation = nav;
|
||||
colorPicker.inputFieldBaseA.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(colorPicker);
|
||||
return colorPicker;
|
||||
}
|
||||
@@ -162,6 +187,11 @@ namespace Ichni.Editor
|
||||
.Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, subcontainer.rect)
|
||||
.GetComponent<DynamicUIEmissionColorPicker>();
|
||||
colorPicker.Initialize(baseElement, title, emissionEnabledName, emissionColorName, emissionIntensityName);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
colorPicker.inputFieldEmissionR.navigation = nav;
|
||||
colorPicker.inputFieldEmissionG.navigation = nav;
|
||||
colorPicker.inputFieldEmissionB.navigation = nav;
|
||||
colorPicker.inputFieldEmissionI.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(colorPicker);
|
||||
return colorPicker;
|
||||
}
|
||||
@@ -207,6 +237,8 @@ namespace Ichni.Editor
|
||||
.GetComponent<DynamicUIEnumDropdown>();
|
||||
enumDropdown.SetUpEnum(enumType);
|
||||
enumDropdown.Initialize(baseElement, title, parameterName);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
enumDropdown.dropdown.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(enumDropdown);
|
||||
return enumDropdown;
|
||||
}
|
||||
@@ -219,6 +251,8 @@ namespace Ichni.Editor
|
||||
.GetComponent<DynamicUIStringListDropdown>();
|
||||
stringListDropdown.SetUpStringList(stringList);
|
||||
stringListDropdown.Initialize(baseElement, title, parameterName);
|
||||
var nav = new Navigation { mode = Navigation.Mode.None };
|
||||
stringListDropdown.dropdown.navigation = nav;
|
||||
subcontainer.dynamicUIElements.Add(stringListDropdown);
|
||||
return stringListDropdown;
|
||||
}
|
||||
|
||||
@@ -36,18 +36,139 @@ namespace ichni.RhythmGame // [修复] 修正命名空间首字母大写,符
|
||||
set
|
||||
{
|
||||
_isEnabled = value;
|
||||
foreach (var preview in NotePreviews.Values)
|
||||
{
|
||||
if (preview != null) preview.gameObject.SetActive(showNotePreview);
|
||||
}
|
||||
|
||||
Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public bool showNotePreview
|
||||
{
|
||||
get => _showNotePreview;
|
||||
set
|
||||
{
|
||||
_showNotePreview = value;
|
||||
foreach (var preview in NotePreviews.Values)
|
||||
{
|
||||
if (preview != null) preview.gameObject.SetActive(showNotePreview);
|
||||
}
|
||||
Refresh();
|
||||
}
|
||||
}
|
||||
private bool _showNotePreview = false;
|
||||
BaseElement_BM IBeChangeInExport.MatchingExportElement { get => null; set { } }
|
||||
|
||||
// NotePreview和TextHint的容器
|
||||
private Transform _previewRoot;
|
||||
private Transform PreviewRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_previewRoot == null)
|
||||
{
|
||||
var obj = GameObject.Find("NotePreviewRoot");
|
||||
if (obj == null)
|
||||
{
|
||||
obj = new GameObject("NotePreviewRoot");
|
||||
obj.transform.SetParent(this.transform, false);
|
||||
}
|
||||
_previewRoot = obj.transform;
|
||||
}
|
||||
return _previewRoot;
|
||||
}
|
||||
}
|
||||
|
||||
private class NotePreviewData : MonoBehaviour
|
||||
{
|
||||
public float noteTime;
|
||||
public NoteBase noteBase1;
|
||||
public LineRenderer lineRenderer;
|
||||
|
||||
public void Initialize(float time, NoteBase noteBase)
|
||||
{
|
||||
noteTime = time;
|
||||
noteBase1 = noteBase;
|
||||
lineRenderer = this.gameObject.AddComponent<LineRenderer>();
|
||||
lineRenderer.useWorldSpace = false;
|
||||
lineRenderer.positionCount = 2;
|
||||
lineRenderer.startWidth = 1f;
|
||||
lineRenderer.endWidth = 0f;
|
||||
lineRenderer.material = EditorManager.instance.basePrefabs.defaultTrackMaterial;
|
||||
Color color = new Color(1f, 0.5f, 0f, 0.8f);
|
||||
DOTween.ToAlpha(() => color, c => color = c, 1f, 1f).SetEase(Ease.InOutQuad).OnUpdate(() =>
|
||||
{
|
||||
lineRenderer.startColor = lineRenderer.endColor = color;
|
||||
});
|
||||
|
||||
}
|
||||
public void Refresh(SplineComputer spline, TrackTimeSubmoduleMovable trackTime, float horizonWidth)
|
||||
{
|
||||
float trackPercent = Mathf.Clamp01(trackTime.GetTrackPercentRaw(noteTime));
|
||||
SplineSample sample = spline.Evaluate(trackPercent);
|
||||
Vector3 sideOffset = sample.rotation * (noteBase1.noteVisual != null ? noteBase1.noteVisual.transformSubmodule.originalPosition : Vector3.zero);
|
||||
Vector3 worldPos = sample.position;
|
||||
|
||||
Vector3 localPos = this.transform.parent.InverseTransformPoint(worldPos);
|
||||
Vector3 localOffset = this.transform.parent.InverseTransformVector(Vector3.up);
|
||||
lineRenderer.SetPosition(0, localPos + sideOffset);
|
||||
lineRenderer.SetPosition(1, localPos + localOffset + sideOffset);
|
||||
}
|
||||
void OnDestroy() { }
|
||||
}
|
||||
// NotePreviews字典改为以时间为key
|
||||
private Dictionary<float, NotePreviewData> NotePreviews = new Dictionary<float, NotePreviewData>();
|
||||
public List<LineRenderer> BeatLines = new List<LineRenderer>();
|
||||
public List<float> Beats = new List<float>();
|
||||
public override void Refresh()
|
||||
{
|
||||
base.Refresh();
|
||||
UpdateBeatLine();
|
||||
RefreshNotePreviews();
|
||||
}
|
||||
|
||||
// 刷新NotePreviews,按时间生成预览
|
||||
private void RefreshNotePreviews()
|
||||
{
|
||||
if (TrackedTrack == null) return;
|
||||
if (!_isEnabled) return;
|
||||
if (!showNotePreview) return;
|
||||
var notes = TrackedTrack.childElementList.OfType<NoteBase>().ToList();
|
||||
var times = notes.Select(n => n.exactJudgeTime).ToList();
|
||||
// 移除已不存在的note时间
|
||||
var toRemove = NotePreviews.Keys.Except(times).ToList();
|
||||
foreach (var t in toRemove)
|
||||
{
|
||||
if (NotePreviews[t] != null) Destroy(NotePreviews[t].gameObject);
|
||||
NotePreviews.Remove(t);
|
||||
}
|
||||
// 添加新note时间
|
||||
foreach (var n in notes)
|
||||
{
|
||||
float time = n.exactJudgeTime;
|
||||
if (!NotePreviews.ContainsKey(time))
|
||||
{
|
||||
var obj = new GameObject($"NotePreview_{n.elementName}_{time}");
|
||||
obj.transform.SetParent(PreviewRoot, false);
|
||||
var preview = obj.AddComponent<NotePreviewData>();
|
||||
preview.Initialize(time, n);
|
||||
NotePreviews[time] = preview;
|
||||
}
|
||||
}
|
||||
// 刷新所有预览
|
||||
SplineComputer spline = TrackedTrack.trackPathSubmodule.path;
|
||||
var trackTime = TrackedTrack.trackTimeSubmodule as TrackTimeSubmoduleMovable;
|
||||
foreach (var preview in NotePreviews.Values)
|
||||
{
|
||||
if (preview != null)
|
||||
{
|
||||
Observable.NextFrame().Subscribe(_ =>
|
||||
{
|
||||
preview.Refresh(spline, trackTime, horizonWidth);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int BeatDiver = 1; // [建议] 变量名修正为 BeatDiver (原本是 Beatdiver)
|
||||
@@ -219,6 +340,7 @@ namespace ichni.RhythmGame // [修复] 修正命名空间首字母大写,符
|
||||
if (ForceRefresh)
|
||||
{
|
||||
AdjustBeatLine();
|
||||
RefreshNotePreviews();
|
||||
}
|
||||
|
||||
if (InputListener.instance.isPointerOverUI) return;
|
||||
@@ -229,6 +351,7 @@ namespace ichni.RhythmGame // [修复] 修正命名空间首字母大写,符
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void CastRay()
|
||||
{
|
||||
if (EditorManager.instance.cameraManager.currentCamera == null) return;
|
||||
@@ -372,12 +495,9 @@ namespace ichni.RhythmGame // [修复] 修正命名空间首字母大写,符
|
||||
{
|
||||
// 1. 创建一个新的 GameObject
|
||||
string content = noteBase.elementName;
|
||||
Vector3 worldPos = noteBase.noteVisual.transform.position;
|
||||
GameObject hintObj = new GameObject("NoteHint_" + content);
|
||||
hintObj.transform.position = worldPos;
|
||||
|
||||
hintObj.transform.SetParent(PreviewRoot, false); // 统一放到PreviewRoot下
|
||||
// 2. 添加 TextMeshPro 组件 (注意是 TextMeshPro,不是 TextMeshProUGUI)
|
||||
// 因为我们在 3D 空间生成,所以使用非 UI 版本
|
||||
TextMeshPro text = hintObj.AddComponent<TextMeshPro>();
|
||||
// 3. 配置文字属性
|
||||
text.text = content;
|
||||
@@ -391,13 +511,25 @@ namespace ichni.RhythmGame // [修复] 修正命名空间首字母大写,符
|
||||
// 5. 动画效果:向上移动 1 个单位,并同时淡出
|
||||
// 1 秒后执行
|
||||
hintObj.transform.DOScale(Vector3.one * 1.2f, 1f).SetEase(Ease.OutBack).From(Vector3.zero);
|
||||
hintObj.transform.DOMoveY(worldPos.y + 1f, 1f);
|
||||
// 位置同步协程
|
||||
StartCoroutine(SyncHintPosition(hintObj.transform, noteBase));
|
||||
text.DOFade(0, 1f).OnComplete(() => Destroy(hintObj));
|
||||
// 7. 让文字始终面向相机 (Billboard 效果)
|
||||
// 如果你的相机视角是固定的,可以直接设置旋转
|
||||
// 让文字始终面向相机 (Billboard 效果)
|
||||
hintObj.transform.LookAt(hintObj.transform.position + Camera.main.transform.rotation * Vector3.forward,
|
||||
EditorManager.instance.cameraManager.currentCamera.transform.rotation * Vector3.up);
|
||||
}
|
||||
|
||||
private IEnumerator SyncHintPosition(Transform hint, NoteBase noteBase)
|
||||
{
|
||||
float t = 0f;
|
||||
Vector3 offset = Vector3.up;
|
||||
while (t < 1f && noteBase != null && noteBase.noteVisual != null)
|
||||
{
|
||||
hint.position = noteBase.noteVisual.transform.position + offset;
|
||||
t += Time.deltaTime;
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 后面的 Inspector 和 Export 代码逻辑暂时不需要大改,只要注意变量名 Beatdiver -> BeatDiver
|
||||
@@ -419,6 +551,8 @@ namespace ichni.RhythmGame // [修复] 修正命名空间首字母大写,符
|
||||
inspector.GenerateInputField(this, sub, "Beat Diver", nameof(BeatDiver));
|
||||
inspector.GenerateToggle(this, sub, "Force refresh (cost++)", nameof(ForceRefresh));
|
||||
inspector.GenerateInputField(this, sub, "Horizon Width", nameof(horizonWidth));
|
||||
inspector.GenerateToggle(this, sub, "Show Note Preview", nameof(showNotePreview));
|
||||
|
||||
}
|
||||
|
||||
public static FastNoteTracker GenerateElement(string elementName, Guid id, List<string> tags,
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DG.Tweening;
|
||||
using Ichni;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame;
|
||||
using TMPro;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class PanelDrawer//暂时支持xz
|
||||
public class PanelDrawer : MonoBehaviour //暂时支持xz
|
||||
{
|
||||
public bool isEditing = false;
|
||||
public CameraManager cameraManager => EditorManager.instance.cameraManager;
|
||||
public GameElement connectedGameElement => EditorManager.instance.uiManager.inspector.connectedGameElement;
|
||||
public SceneCamera sceneCamera => cameraManager.sceneCamera;
|
||||
|
||||
public float height
|
||||
@@ -37,6 +42,7 @@ public class PanelDrawer//暂时支持xz
|
||||
}
|
||||
}
|
||||
private float _baseHeight = 0f;
|
||||
private Vector3 tempRot = new Vector3(30, 0, 0);
|
||||
public void startEdit()
|
||||
{
|
||||
isEditing = true;
|
||||
@@ -47,16 +53,86 @@ public class PanelDrawer//暂时支持xz
|
||||
cameraManager.sceneCamera.transform.rotation = cameraManager.gameCamera.transform.rotation;
|
||||
cameraManager.SwitchCamera();
|
||||
cameraManager.sceneCamera.transform.DOMove(cameraManager.gameCamera.transform.position + new Vector3(0, 0, _baseHeight + _height), 0.5f).SetEase(Ease.InOutQuad);
|
||||
tempRot = cameraManager.sceneCamera.transform.eulerAngles;
|
||||
cameraManager.sceneCamera.transform.DORotate(new Vector3(90, 0, 0), 0.5f).SetEase(Ease.InOutQuad);
|
||||
}
|
||||
else
|
||||
{
|
||||
cameraManager.sceneCamera.transform.DOMove(cameraManager.gameCamera.transform.position + new Vector3(0, 0, _baseHeight + _height), 0.5f).SetEase(Ease.InOutQuad);
|
||||
tempRot = cameraManager.sceneCamera.transform.eulerAngles;
|
||||
cameraManager.sceneCamera.transform.DORotate(new Vector3(90, 0, 0), 0.5f).SetEase(Ease.InOutQuad);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public void endEdit()
|
||||
{
|
||||
isEditing = false;
|
||||
cameraManager.sceneCamera.transform.DOMove(cameraManager.gameCamera.transform.position + new Vector3(0, 0, _baseHeight + _height), 0.5f).SetEase(Ease.InOutQuad);
|
||||
cameraManager.sceneCamera.transform.DORotate(tempRot, 0.5f).SetEase(Ease.InOutQuad);
|
||||
}
|
||||
public void SwitchEditing()
|
||||
{
|
||||
if (isEditing)
|
||||
{
|
||||
endEdit();
|
||||
}
|
||||
else
|
||||
{
|
||||
startEdit();
|
||||
}
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
if (isEditing && connectedGameElement is Track &&
|
||||
Keyboard.current.leftCtrlKey.isPressed &&
|
||||
Mouse.current.leftButton.wasPressedThisFrame)
|
||||
{
|
||||
StartCoroutine(Pressing());
|
||||
}
|
||||
}
|
||||
public Texture ingTexture;
|
||||
public Canvas DisplayCanvas;
|
||||
private IEnumerator Pressing()
|
||||
{
|
||||
GameObject gobj = new GameObject("PanelDrawerPreview");
|
||||
RawImage rawImage = gobj.AddComponent<RawImage>();
|
||||
GameObject gobj2 = new GameObject("PanelDrawerText");
|
||||
gobj2.transform.SetParent(gobj.transform, false);
|
||||
TextMeshProUGUI Text = gobj2.AddComponent<TextMeshProUGUI>();
|
||||
Text.rectTransform.position = new Vector3(50, 50, 0);
|
||||
rawImage.texture = ingTexture;
|
||||
rawImage.rectTransform.SetParent(DisplayCanvas.transform);
|
||||
rawImage.rectTransform.sizeDelta = new Vector2(100, 100);
|
||||
Vector3 hitPoint = new Vector3(0, 0, 0);
|
||||
while (Mouse.current.leftButton.isPressed)
|
||||
{
|
||||
|
||||
Ray ray = cameraManager.currentCamera.ScreenPointToRay(Mouse.current.position.ReadValue());
|
||||
Plane plane = new Plane(Vector3.up, new Vector3(0, _baseHeight, 0));
|
||||
if (plane.Raycast(ray, out float enter))
|
||||
{
|
||||
|
||||
hitPoint = ray.GetPoint(enter);
|
||||
if (Keyboard.current.leftAltKey.isPressed)
|
||||
{
|
||||
hitPoint = new Vector3(Mathf.Round(hitPoint.x / 0.5f) * 0.5f, hitPoint.y, Mathf.Round(hitPoint.z / 0.5f) * 0.5f);
|
||||
rawImage.rectTransform.position =
|
||||
new Vector3(Mathf.Round(Mouse.current.position.ReadValue().x / 10) * 10, Mathf.Round(Mouse.current.position.ReadValue().y / 10) * 10, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
rawImage.rectTransform.position = Mouse.current.position.ReadValue();
|
||||
}
|
||||
Text.text = $"X: {hitPoint.x:F2}\nY: {hitPoint.y:F2}\nZ: {hitPoint.z:F2}";
|
||||
|
||||
}
|
||||
yield return null;
|
||||
}
|
||||
Destroy(rawImage.gameObject);
|
||||
var i = PathNode.GenerateElement("new pathnode", Guid.NewGuid(), new List<string>(), true, (Track)connectedGameElement, true);
|
||||
i.transformSubmodule.originalPosition = hitPoint;
|
||||
i.Refresh();
|
||||
connectedGameElement.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,17 +35,12 @@ namespace Ichni.RhythmGame
|
||||
public override void Initialize(string name, Guid elementGuid, List<string> tags, bool isFirstGenerated, GameElement parentElement)
|
||||
{
|
||||
base.Initialize(name, elementGuid, tags, isFirstGenerated, parentElement);
|
||||
|
||||
Update();
|
||||
}
|
||||
public override void AfterInitialize()
|
||||
{
|
||||
base.AfterInitialize();
|
||||
AddinNoteManager();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
public void AddinNoteManager(bool isNewOne = true)
|
||||
{
|
||||
@@ -147,13 +142,13 @@ namespace Ichni.RhythmGame
|
||||
if (isFirstJudged && songTime < exactJudgeTime)
|
||||
{
|
||||
isFirstJudged = false;
|
||||
noteVisual.GetComponent<Collider>().enabled = !isFirstJudged;
|
||||
if (noteVisual != null) noteVisual.GetComponent<Collider>().enabled = !isFirstJudged;
|
||||
}
|
||||
else if (!isFirstJudged && songTime >= exactJudgeTime)
|
||||
{
|
||||
noteAudioSubmodule?.PlayNoteJudgeAudios(editor.currentJudgeType);
|
||||
isFirstJudged = true;
|
||||
noteVisual.GetComponent<Collider>().enabled = !isFirstJudged;
|
||||
if (noteVisual != null) noteVisual.GetComponent<Collider>().enabled = !isFirstJudged;
|
||||
}
|
||||
|
||||
// 判定单元更新
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Ichni.Editor
|
||||
public float sceneCameraMoveSpeed;
|
||||
public float sceneCameraRotateSpeed;
|
||||
|
||||
public PanelDrawer panelDrawer = new();
|
||||
public PanelDrawer panelDrawer => EditorManager.instance.panelDrawer;
|
||||
|
||||
public GameCamera gameCamera;
|
||||
public bool haveGameCamera => gameCamera != null;
|
||||
@@ -54,20 +54,17 @@ namespace Ichni.Editor
|
||||
var switchCameraButton = inspector.GenerateButton(this, cameraSettings, "Switch Camera", SwitchCamera);
|
||||
var cameraMoveSpeedField = inspector.GenerateInputField(this, cameraSettings, "Scene Camera Move Speed", nameof(sceneCameraMoveSpeed));
|
||||
var camMethods = container.GenerateSubcontainer(1);
|
||||
if (!panelDrawer.isEditing)
|
||||
|
||||
{
|
||||
var butt1 = inspector.GenerateButton(this, camMethods, "startEdit", () =>
|
||||
var butt1 = inspector.GenerateButton(this, camMethods, panelDrawer.isEditing ? "End Edit" : "Start Edit", () =>
|
||||
{ });
|
||||
butt1.AddListenerFunction(() =>
|
||||
{
|
||||
panelDrawer.startEdit();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var butt2 = inspector.GenerateButton(this, camMethods, "endEdit", () =>
|
||||
{
|
||||
panelDrawer.endEdit();
|
||||
panelDrawer.SwitchEditing();
|
||||
butt1.buttonText.text = panelDrawer.isEditing ? "End Edit" : "Start Edit";
|
||||
});
|
||||
}
|
||||
|
||||
sceneCamera.SetUpInspector();
|
||||
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace Ichni
|
||||
public BeatmapContainer beatmapContainer;
|
||||
public CommandScripts commandScripts;
|
||||
|
||||
public PanelDrawer panelDrawer;
|
||||
public NoteBase.NoteJudgeType currentJudgeType;
|
||||
public bool useClickSelect;
|
||||
public bool useNotePrefab;
|
||||
@@ -121,6 +122,7 @@ namespace Ichni
|
||||
private void Update()
|
||||
{
|
||||
if (isLoaded) projectManager.autoSaveManager.UpdateAutoSave();
|
||||
|
||||
}
|
||||
|
||||
public void LoadProject(string projectName)
|
||||
|
||||
@@ -88,12 +88,24 @@ namespace Ichni.Editor
|
||||
Vector3 moveDir = Vector3.zero;
|
||||
|
||||
// 计算合成位移向量
|
||||
if (kb.wKey.isPressed) moveDir += sceneCameraTransform.forward;
|
||||
if (kb.sKey.isPressed) moveDir -= sceneCameraTransform.forward;
|
||||
if (kb.dKey.isPressed) moveDir += sceneCameraTransform.right;
|
||||
if (kb.aKey.isPressed) moveDir -= sceneCameraTransform.right;
|
||||
if (kb.eKey.isPressed) moveDir += sceneCameraTransform.up;
|
||||
if (kb.qKey.isPressed) moveDir -= sceneCameraTransform.up;
|
||||
if (EditorManager.instance.cameraManager.sceneCamera.CanBeFreeRotate)
|
||||
{
|
||||
if (kb.wKey.isPressed) moveDir += sceneCameraTransform.forward;
|
||||
if (kb.sKey.isPressed) moveDir -= sceneCameraTransform.forward;
|
||||
if (kb.dKey.isPressed) moveDir += sceneCameraTransform.right;
|
||||
if (kb.aKey.isPressed) moveDir -= sceneCameraTransform.right;
|
||||
if (kb.eKey.isPressed) moveDir += sceneCameraTransform.up;
|
||||
if (kb.qKey.isPressed) moveDir -= sceneCameraTransform.up;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (kb.dKey.isPressed) moveDir += sceneCameraTransform.right;
|
||||
if (kb.aKey.isPressed) moveDir -= sceneCameraTransform.right;
|
||||
if (kb.wKey.isPressed) moveDir += sceneCameraTransform.up;
|
||||
if (kb.sKey.isPressed) moveDir -= sceneCameraTransform.up;
|
||||
if (kb.qKey.isPressed) moveDir += sceneCameraTransform.forward;
|
||||
if (kb.eKey.isPressed) moveDir -= sceneCameraTransform.forward;
|
||||
}
|
||||
|
||||
// 一次性应用位移(如果存在移动)
|
||||
if (moveDir != Vector3.zero)
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Ichni.Editor
|
||||
sceneCamera.transform.eulerAngles = value;
|
||||
}
|
||||
}
|
||||
public bool CanBeFreeRotate => EditorManager.instance.cameraManager.panelDrawer.isEditing;
|
||||
public bool CanBeFreeRotate => !EditorManager.instance.cameraManager.panelDrawer.isEditing;
|
||||
|
||||
|
||||
public void SetUpInspector()
|
||||
|
||||
@@ -495,9 +495,9 @@
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
|
||||
"originalPosition" : {
|
||||
"x" : -5,
|
||||
"x" : -8.12,
|
||||
"y" : 0,
|
||||
"z" : 50
|
||||
"z" : 51.26
|
||||
},
|
||||
"originalEulerAngles" : {
|
||||
"x" : 0,
|
||||
@@ -947,10 +947,10 @@
|
||||
"inTangent" : 0,
|
||||
"outTangent" : 0
|
||||
},{
|
||||
"time" : 0.317499965,
|
||||
"value" : 0.286666751,
|
||||
"inTangent" : 11.9624586,
|
||||
"outTangent" : -387.067
|
||||
"time" : 0.5,
|
||||
"value" : 1,
|
||||
"inTangent" : 0,
|
||||
"outTangent" : 0
|
||||
},{
|
||||
"time" : 1,
|
||||
"value" : 0,
|
||||
@@ -995,6 +995,201 @@
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ebe66488-af8e-44f6-aaad-b9ecf5304514"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
|
||||
"elementName" : "New Track",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "22346647-751b-412e-a32b-82c06a3870b3"
|
||||
}
|
||||
},{
|
||||
"__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" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
|
||||
"trackSpaceType" : 0,
|
||||
"trackSamplingType" : 0,
|
||||
"isClosed" : false,
|
||||
"isShowingDisplay" : false,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
|
||||
"trackPercent" : {
|
||||
"animatedFloatList" : [
|
||||
|
||||
]
|
||||
},
|
||||
"MotionAngles" : false,
|
||||
"elementName" : "New Track Percent Point",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "New Path Node",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "New Path Node",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
|
||||
"originalPosition" : {
|
||||
"x" : -5.16,
|
||||
"y" : 4.376869,
|
||||
"z" : 10.42
|
||||
},
|
||||
"originalEulerAngles" : {
|
||||
"x" : 0,
|
||||
"y" : 0,
|
||||
"z" : 0
|
||||
},
|
||||
"originalScale" : {
|
||||
"x" : 1,
|
||||
"y" : 1,
|
||||
"z" : 1
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
},{
|
||||
"__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" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
}
|
||||
],
|
||||
"attachedElementGuid" : {
|
||||
|
||||
@@ -495,9 +495,9 @@
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
|
||||
"originalPosition" : {
|
||||
"x" : -5,
|
||||
"x" : -8.12,
|
||||
"y" : 0,
|
||||
"z" : 50
|
||||
"z" : 51.26
|
||||
},
|
||||
"originalEulerAngles" : {
|
||||
"x" : 0,
|
||||
@@ -947,10 +947,10 @@
|
||||
"inTangent" : 0,
|
||||
"outTangent" : 0
|
||||
},{
|
||||
"time" : 0.317499965,
|
||||
"value" : 0.286666751,
|
||||
"inTangent" : 11.9624586,
|
||||
"outTangent" : -387.067
|
||||
"time" : 0.5,
|
||||
"value" : 1,
|
||||
"inTangent" : 0,
|
||||
"outTangent" : 0
|
||||
},{
|
||||
"time" : 1,
|
||||
"value" : 0,
|
||||
@@ -995,6 +995,201 @@
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ebe66488-af8e-44f6-aaad-b9ecf5304514"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
|
||||
"elementName" : "New Track",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "22346647-751b-412e-a32b-82c06a3870b3"
|
||||
}
|
||||
},{
|
||||
"__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" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
|
||||
"trackSpaceType" : 0,
|
||||
"trackSamplingType" : 0,
|
||||
"isClosed" : false,
|
||||
"isShowingDisplay" : false,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
|
||||
"trackPercent" : {
|
||||
"animatedFloatList" : [
|
||||
|
||||
]
|
||||
},
|
||||
"MotionAngles" : false,
|
||||
"elementName" : "New Track Percent Point",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "New Path Node",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "New Path Node",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
|
||||
"originalPosition" : {
|
||||
"x" : -5.16,
|
||||
"y" : 4.376869,
|
||||
"z" : 10.42
|
||||
},
|
||||
"originalEulerAngles" : {
|
||||
"x" : 0,
|
||||
"y" : 0,
|
||||
"z" : 0
|
||||
},
|
||||
"originalScale" : {
|
||||
"x" : 1,
|
||||
"y" : 1,
|
||||
"z" : 1
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
},{
|
||||
"__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" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
}
|
||||
],
|
||||
"attachedElementGuid" : {
|
||||
|
||||
@@ -495,9 +495,9 @@
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
|
||||
"originalPosition" : {
|
||||
"x" : -5,
|
||||
"x" : -8.12,
|
||||
"y" : 0,
|
||||
"z" : 50
|
||||
"z" : 51.26
|
||||
},
|
||||
"originalEulerAngles" : {
|
||||
"x" : 0,
|
||||
@@ -935,11 +935,38 @@
|
||||
],"GeneralJudge":[
|
||||
|
||||
],"StartHold":[
|
||||
|
||||
{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.BloomEffect_BM,Assembly-CSharp",
|
||||
"duration" : 1,
|
||||
"peak" : 2,
|
||||
"intensityCurve" : {
|
||||
"keys" : [
|
||||
{
|
||||
"time" : 0,
|
||||
"value" : 0,
|
||||
"inTangent" : 0,
|
||||
"outTangent" : 0
|
||||
},{
|
||||
"time" : 0.5,
|
||||
"value" : 1,
|
||||
"inTangent" : 0,
|
||||
"outTangent" : 0
|
||||
},{
|
||||
"time" : 1,
|
||||
"value" : 0,
|
||||
"inTangent" : 0,
|
||||
"outTangent" : 0
|
||||
}
|
||||
],
|
||||
"preWrapMode" : 8,
|
||||
"postWrapMode" : 8
|
||||
},
|
||||
"effectTime" : 0
|
||||
}
|
||||
],"Holding":[
|
||||
{
|
||||
"__type" : "Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap.DTMNoteHoldingBreath_BM,Assembly-CSharp",
|
||||
"effectTime" : 0.5
|
||||
"effectTime" : 1.2
|
||||
}
|
||||
],"Perfect":[
|
||||
{
|
||||
@@ -968,6 +995,201 @@
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ebe66488-af8e-44f6-aaad-b9ecf5304514"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
|
||||
"elementName" : "New Track",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "22346647-751b-412e-a32b-82c06a3870b3"
|
||||
}
|
||||
},{
|
||||
"__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" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
|
||||
"trackSpaceType" : 0,
|
||||
"trackSamplingType" : 0,
|
||||
"isClosed" : false,
|
||||
"isShowingDisplay" : false,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
|
||||
"trackPercent" : {
|
||||
"animatedFloatList" : [
|
||||
|
||||
]
|
||||
},
|
||||
"MotionAngles" : false,
|
||||
"elementName" : "New Track Percent Point",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "New Path Node",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "New Path Node",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
|
||||
"originalPosition" : {
|
||||
"x" : -5.16,
|
||||
"y" : 4.376869,
|
||||
"z" : 10.42
|
||||
},
|
||||
"originalEulerAngles" : {
|
||||
"x" : 0,
|
||||
"y" : 0,
|
||||
"z" : 0
|
||||
},
|
||||
"originalScale" : {
|
||||
"x" : 1,
|
||||
"y" : 1,
|
||||
"z" : 1
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
},{
|
||||
"__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" : "ffbe8bbf-17cd-447b-9b92-0ef41ec4a1b8"
|
||||
}
|
||||
}
|
||||
],
|
||||
"attachedElementGuid" : {
|
||||
|
||||
@@ -995,6 +995,141 @@
|
||||
"attachedElementGuid" : {
|
||||
"value" : "ebe66488-af8e-44f6-aaad-b9ecf5304514"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
|
||||
"elementName" : "New Track",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "22346647-751b-412e-a32b-82c06a3870b3"
|
||||
}
|
||||
},{
|
||||
"__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" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
|
||||
"trackSpaceType" : 0,
|
||||
"trackSamplingType" : 0,
|
||||
"isClosed" : false,
|
||||
"isShowingDisplay" : false,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
|
||||
"trackPercent" : {
|
||||
"animatedFloatList" : [
|
||||
|
||||
]
|
||||
},
|
||||
"MotionAngles" : false,
|
||||
"elementName" : "New Track Percent Point",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "00aca86b-18e1-4336-865f-ec9dcd2e9ec0"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "New Path Node",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04cd3c42-5287-4a6c-b590-a683adb2a981"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
},{
|
||||
"__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" : "71791de1-4bf1-4c94-a76d-239b7527f90f"
|
||||
}
|
||||
}
|
||||
],
|
||||
"attachedElementGuid" : {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"creatorName" : "0",
|
||||
"editorVersion" : "0.1.0",
|
||||
"createTime" : "2025\/12\/13 19:09:03",
|
||||
"lastSaveTime" : "2026\/2\/9 22:14:37",
|
||||
"lastSaveTime" : "2026\/2\/11 1:23:48",
|
||||
"selectedThemeBundleList" : [
|
||||
"basic","departure_to_multiverse"
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user