GraphicEditor基本完成

不过还有优化空间
TODO:
用整个的Rawimage贴图替换beatline
This commit is contained in:
2025-03-08 22:39:54 +08:00
parent cff772d29a
commit 28e0a6e4b0
15 changed files with 99603 additions and 496 deletions

File diff suppressed because one or more lines are too long

View File

@@ -264,11 +264,11 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSize: 25.7
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_enableAutoSizing: 1
m_fontSizeMin: 1
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2

View File

@@ -32,10 +32,11 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5777935905634433341}
- {fileID: 3175553806185877692}
- {fileID: 727824740957793594}
- {fileID: 2664719568639269933}
- {fileID: 5777935905634433341}
- {fileID: 8935249747882042305}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -93,19 +94,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 20904e6182baed446b49fe294fad22b2, type: 3}
m_Name:
m_EditorClassIdentifier:
flexibleFloat:
value: 0
currentAnimationIndex: 0
animations: []
returnType: 0
FatherWindow: {fileID: 0}
eventPoints: []
Area: {fileID: 3373003148740844145}
BeatArea: {fileID: 4199589956708916280}
XBeatArea: {fileID: 8575234652331120996}
eventPoint: {fileID: 647321919972361265, guid: 53e14ab421bb98b48b1d276bf32cddd2,
type: 3}
BeatLine: {fileID: 9159816007915324859, guid: e53cd577e34d8df41b51ef212682a5b6,
type: 3}
Title:
FirstBeatLine: {fileID: 0}
connectFloat:
value: 0
currentAnimationIndex: 0
@@ -155,6 +154,7 @@ RectTransform:
m_Children:
- {fileID: 3373003148740844145}
- {fileID: 4199589956708916280}
- {fileID: 8575234652331120996}
m_Father: {fileID: 7110848561363056186}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.14285715, y: 0.5}
@@ -197,6 +197,41 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1919712600670392048
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8575234652331120996}
m_Layer: 5
m_Name: XBeatLineLists
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8575234652331120996
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1919712600670392048}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2664719568639269933}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2671543657819545764
GameObject:
m_ObjectHideFlags: 0
@@ -337,8 +372,7 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2021310172082328772}
m_Children: []
m_Father: {fileID: 7110848561363056186}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@@ -474,7 +508,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 200, y: 0}
m_AnchoredPosition: {x: 202.5, y: 0}
m_SizeDelta: {x: 5, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8286269559807390178
@@ -505,7 +539,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Sprite: {fileID: 21300000, guid: 4588d5e6aeea92d4b86bd1e976c99baf, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -515,7 +549,7 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &7493294112363221826
--- !u!1 &7171625729032381852
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -523,53 +557,53 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2021310172082328772}
- component: {fileID: 7500112046719515624}
- component: {fileID: 2717686001733842563}
- component: {fileID: 8935249747882042305}
- component: {fileID: 6297248396536211320}
- component: {fileID: 1629575301491717475}
m_Layer: 5
m_Name: Text (TMP)
m_Name: Image (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2021310172082328772
--- !u!224 &8935249747882042305
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7493294112363221826}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_GameObject: {fileID: 7171625729032381852}
m_LocalRotation: {x: 0, y: 0, z: 1, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 727824740957793594}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Father: {fileID: 7110848561363056186}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 197, y: 0}
m_SizeDelta: {x: 5, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7500112046719515624
--- !u!222 &6297248396536211320
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7493294112363221826}
m_GameObject: {fileID: 7171625729032381852}
m_CullTransparentMesh: 1
--- !u!114 &2717686001733842563
--- !u!114 &1629575301491717475
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7493294112363221826}
m_GameObject: {fileID: 7171625729032381852}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
@@ -580,72 +614,13 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Button
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
m_Sprite: {fileID: 21300000, guid: 4588d5e6aeea92d4b86bd1e976c99baf, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

File diff suppressed because it is too large Load Diff

View File

@@ -30,12 +30,11 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2130387296145499012}
- {fileID: 7714795736087029465}
- {fileID: 8136883162607925736}
- {fileID: 2550612146854256134}
- {fileID: 4007148309916291598}
- {fileID: 2945434457675600059}
- {fileID: 6847512078255756217}
- {fileID: 2550612146854256134}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.14285715, y: 0.5}
@@ -69,7 +68,6 @@ MonoBehaviour:
RightSide: {fileID: 2945434457675600059}
selectButton: {fileID: 5893831112785110728}
CurveCanvas: {fileID: 8679436555403734544}
CurveCanvas2: {fileID: 0}
FatherTab: {fileID: 0}
--- !u!1 &2558217958104297320
GameObject:
@@ -254,10 +252,10 @@ RectTransform:
m_Father: {fileID: 4923100616489790604}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 7.5, y: 0}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 15, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &8808131548093437226
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -279,7 +277,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 0, a: 1}
m_Color: {r: 1, g: 1, b: 0, a: 0.39215687}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
@@ -328,11 +326,11 @@ RectTransform:
m_Children: []
m_Father: {fileID: 4923100616489790604}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
m_SizeDelta: {x: 120.85, y: 100}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &8609308304309377454
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -400,8 +398,8 @@ RectTransform:
m_Children: []
m_Father: {fileID: 4923100616489790604}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 102.500015, y: 0}
m_SizeDelta: {x: 5, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
@@ -533,7 +531,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_Mode: 0
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
@@ -566,7 +564,7 @@ MonoBehaviour:
m_Calls:
- m_Target: {fileID: 647321919972361265}
m_TargetAssemblyTypeName: EventPoint, Assembly-CSharp
m_MethodName: UpLoad
m_MethodName: SelectButtonClick
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
@@ -576,81 +574,6 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &7453349056963992468
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7714795736087029465}
- component: {fileID: 3371330676130515629}
- component: {fileID: 8217350423727176546}
m_Layer: 5
m_Name: MoreEvDrawer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7714795736087029465
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7453349056963992468}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4923100616489790604}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 200, y: 0}
m_SizeDelta: {x: 100, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3371330676130515629
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7453349056963992468}
m_CullTransparentMesh: 1
--- !u!114 &8217350423727176546
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7453349056963992468}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 1, b: 1, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &7660379574595415909
GameObject:
m_ObjectHideFlags: 0

File diff suppressed because one or more lines are too long

View File

@@ -5,6 +5,7 @@ using Ichni;
using Ichni.RhythmGame;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class EventPoint : MonoBehaviour
@@ -21,7 +22,7 @@ public class EventPoint : MonoBehaviour
public RectTransform RightSide;
public Button selectButton;
public RawImage CurveCanvas;
public RawImage CurveCanvas2;
public FlexibleFloatTab FatherTab;
public int BeatDeviver => FatherTab.BeatDeviver;
@@ -37,8 +38,8 @@ public class EventPoint : MonoBehaviour
EvDrawimage.rectTransform.sizeDelta = new Vector2(RightSide.localPosition.x - LeftSide.localPosition.x, EvDrawimage.rectTransform.sizeDelta.y);
EvDrawimage.transform.localPosition = new Vector3(EvDrawimage.rectTransform.sizeDelta.x / 2, 0, 0);
OvDrawimage.transform.localPosition = RightSide.localPosition;
CurveCanvas.transform.localPosition = EvDrawimage.transform.localPosition;
CurveCanvas.rectTransform.sizeDelta = new Vector2(EvDrawimage.rectTransform.sizeDelta.x, EvDrawimage.rectTransform.sizeDelta.y + 50);
CurveCanvas.rectTransform.sizeDelta = new Vector2(EvDrawimage.rectTransform.sizeDelta.x, EvDrawimage.rectTransform.sizeDelta.y);
@@ -51,6 +52,7 @@ public class EventPoint : MonoBehaviour
public float value => FatherTab.scalevalue;
public void ReDraw(float value)
{
Texture2D Texture = new Texture2D((int)CurveCanvas.rectTransform.sizeDelta.x / 5, (int)CurveCanvas.rectTransform.sizeDelta.y / 5);
for (int i = 0; i < Texture.width; i++)
{
@@ -60,6 +62,9 @@ public class EventPoint : MonoBehaviour
}
}
Texture.Apply();
int LastEventPointY = 0;
for (int i = 0; i < Texture.width; i++)
{
float t = (float)i / Texture.width;
@@ -67,26 +72,46 @@ public class EventPoint : MonoBehaviour
(Texture.height / 2) + (animatedFloat.startValue * value + ((animatedFloat.endValue - animatedFloat.startValue)
* AnimationCurveEvaluator.Evaluate(animatedFloat.animationCurveType, t) * value))
);
if (f < Texture.height) Texture.SetPixel(i, f, Color.green);//丑陋
//不是哥们
for (int j = LastEventPointY; j < f; j++)
{
if (j < Texture.height) Texture.SetPixel(i, j, Color.green);
else Texture.SetPixel(i, j, Color.red);
}
for (int j = LastEventPointY; j > f; j--)
{
if (j > 0) Texture.SetPixel(i, j, Color.green);
else Texture.SetPixel(i, j, Color.red);
}
if (f < Texture.height && f > 0) Texture.SetPixel(i, f, Color.green);//丑陋
else Texture.SetPixel(i, f, Color.red);
LastEventPointY = f;
}
Texture.Apply();
CurveCanvas.texture = Texture;
if (NextEventPoint != null)
{
OvDrawimage.transform.localPosition = new Vector3(RightSide.transform.localPosition.x, animatedFloat.endValue * value * 5, 0);
OvDrawimage.rectTransform.sizeDelta = new Vector2((NextEventPoint.animatedFloat.startTime - animatedFloat.endTime) / EditorManager.instance.uiManager.timeline.timePerBeat * FatherTab.BeatDeviver, OvDrawimage.rectTransform.sizeDelta.y);
OvDrawimage.transform.localPosition = new Vector3(RightSide.transform.localPosition.x,
animatedFloat.endValue * value * 5, 0);
OvDrawimage.rectTransform.sizeDelta = new Vector2((NextEventPoint.animatedFloat.startTime - animatedFloat.endTime) / EditorManager.instance.uiManager.timeline.timePerBeat * FatherTab.BeatDeviver,
OvDrawimage.rectTransform.sizeDelta.y);
OvDrawimage.color = new Color(0, 1, 0, 1);
while (OvDrawimage.transform.localPosition.y > 130)
while (OvDrawimage.transform.localPosition.y > 100)
{
OvDrawimage.color = new Color(1, 0, 0, 0.3f);
OvDrawimage.transform.localPosition = new Vector3(OvDrawimage.transform.localPosition.x, OvDrawimage.transform.localPosition.y - 260, OvDrawimage.transform.localPosition.z);
OvDrawimage.transform.localPosition = new Vector3(OvDrawimage.transform.localPosition.x, OvDrawimage.transform.localPosition.y - 200, OvDrawimage.transform.localPosition.z);
}
while (OvDrawimage.transform.localPosition.y < -130)
while (OvDrawimage.transform.localPosition.y < -100)
{
OvDrawimage.color = new Color(1, 0, 0, 0.3f);
OvDrawimage.transform.localPosition = new Vector3(OvDrawimage.transform.localPosition.x, OvDrawimage.transform.localPosition.y + 260, OvDrawimage.transform.localPosition.z);
OvDrawimage.transform.localPosition = new Vector3(OvDrawimage.transform.localPosition.x, OvDrawimage.transform.localPosition.y + 200, OvDrawimage.transform.localPosition.z);
}
}
else
@@ -99,46 +124,73 @@ public class EventPoint : MonoBehaviour
selectButton.GetComponent<RectTransform>().sizeDelta = EvDrawimage.rectTransform.sizeDelta;
}
public void SelectButtonClick()
{
if (Keyboard.current.leftShiftKey.isPressed)
{
if (FatherTab.FatherWindow.ClipBoard[FatherTab.Title].Contains(animatedFloat))
{
FatherTab.FatherWindow.ClipBoard[FatherTab.Title].Remove(animatedFloat);
LeftSide.sizeDelta = new Vector2(15, EvDrawimage.rectTransform.sizeDelta.y);
}
else
{
FatherTab.FatherWindow.ClipBoard[FatherTab.Title].Add(animatedFloat);
LeftSide.sizeDelta = EvDrawimage.rectTransform.sizeDelta;
}
}
else UpLoad();
}
public void UpLoad()
{
FatherTab.FatherWindow.animationCurveTypeDropdown.onValueChanged.RemoveAllListeners();
// 如果当前点是已连接点,则取消连接并隐藏可见区域
if (FatherTab.FatherWindow.ConnectedPoint == this)
{
FatherTab.FatherWindow.VisibleArea.SetActive(false);
FatherTab.FatherWindow.ConnectedPoint = null;
EvDrawimage.color = new Color(
EvDrawimage.color.r,
0.3019607843137255f,
EvDrawimage.color.b, 0.5f
);
EvDrawimage.color = new Color(EvDrawimage.color.r, 0.3019607843137255f, EvDrawimage.color.b, 0.5f);
FatherTab.FatherWindow.StartText.text = "";
FatherTab.FatherWindow.EndText.text = "";
FatherTab.FatherWindow.StartValueText.text = "";
FatherTab.FatherWindow.EndValueText.text = "";
return;
}
// 如果有已连接点,则重置其颜色
if (FatherTab.FatherWindow.ConnectedPoint != null)
{
FatherTab.FatherWindow.ConnectedPoint.EvDrawimage.color = new Color(
FatherTab.FatherWindow.ConnectedPoint.EvDrawimage.color.r,
0.3019607843137255f,
FatherTab.FatherWindow.ConnectedPoint.EvDrawimage.color.b, 0.5f)
;
FatherTab.FatherWindow.ConnectedPoint.EvDrawimage.color.r,
0.3019607843137255f,
FatherTab.FatherWindow.ConnectedPoint.EvDrawimage.color.b, 0.5f
);
}
// 设置新的连接点并更新UI
FatherTab.FatherWindow.ConnectedPoint = this;
EvDrawimage.color = new Color(EvDrawimage.color.r, 0.75f, EvDrawimage.color.b, 1f);
// 更新下拉选项
FatherTab.FatherWindow.animationCurveTypeDropdown.ClearOptions();
List<string> enumNameList = System.Enum.GetNames(typeof(AnimationCurveType)).ToList();
FatherTab.FatherWindow.VisibleArea.SetActive(true);
FatherTab.FatherWindow.animationCurveTypeDropdown.ClearOptions();
FatherTab.FatherWindow.animationCurveTypeDropdown.AddOptions(enumNameList);
FatherTab.FatherWindow.animationCurveTypeDropdown.value = (int)animatedFloat.animationCurveType;
FatherTab.FatherWindow.ConnectedPoint = this;
EvDrawimage.color = new Color(
EvDrawimage.color.r,
0.75f,
EvDrawimage.color.b,
1f);
// 更新文本
FatherTab.FatherWindow.StartText.text = animatedFloat.startTime.ToString();
FatherTab.FatherWindow.EndText.text = animatedFloat.endTime.ToString();
FatherTab.FatherWindow.StartValueText.text = animatedFloat.startValue.ToString();
FatherTab.FatherWindow.EndValueText.text = animatedFloat.endValue.ToString();
FatherTab.FatherWindow.animationCurveTypeDropdown.onValueChanged.AddListener(value => FatherTab.FatherWindow.ChangeValue());
}
}

View File

@@ -9,65 +9,106 @@ using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.InputSystem;
public class FlexibleFloatTab : MonoBehaviour
{
public FlexibleFloat flexibleFloat;
public GraphicalFlexibleFloatWindow FatherWindow;
public List<EventPoint> eventPoints;
public RectTransform Area;
public RectTransform BeatArea;
public RectTransform XBeatArea;
public EventPoint eventPoint;
public GameObject BeatLine;
public string Title;
public GameObject FirstBeatLine;
public FlexibleFloat connectFloat;
public int BeatDeviver => FatherWindow.BeatDeviver;
public void Initialize(FlexibleFloat flexibleFloat, string Title)
public int BeatNextDeviver => FatherWindow.BeatNextDeviver;
// 初始化函数
public void Initialize(FlexibleFloat flexibleFloat, string title)
{
Title = title;
ClearChildren(Area);
ClearChildren(BeatArea);
eventPoints = new List<EventPoint>();
connectFloat = flexibleFloat;
CreateBeatLines();
CreateEventPoints();
RedrawEventPoints();
Area.localPosition = new Vector3(FatherWindow.songBeat * BeatDeviver, 0, 0);
}
// 清除子节点
private void ClearChildren(RectTransform parent)
{
for (int i = 0; i < parent.childCount; i++)
{
Destroy(parent.GetChild(i).gameObject);
}
}
// 创建节拍线
private void CreateBeatLines()
{
for (int i = 0; i < (int)EditorManager.instance.songInformation.song.length / FatherWindow.timePerBeat; i++)
{
GameObject u = Instantiate(BeatLine, BeatArea);
u.transform.localPosition = new Vector3(BeatDeviver * i, 0, 0);
if (i == 1) FirstBeatLine = u;
}
for (int i = 0; i <= flexibleFloat.animations.Count - 1; i++)
}
// 创建事件点
private void CreateEventPoints()
{
for (int i = 0; i <= connectFloat.animations.Count - 1; i++)
{
AnimatedFloat animatedFloat = flexibleFloat.animations[i];
AnimatedFloat animatedFloat = connectFloat.animations[i];
EventPoint eventPoint = Instantiate(this.eventPoint, Area);
eventPoint.FatherTab = this;
eventPoint.Initialize(animatedFloat);
eventPoints.Add(eventPoint);
if (i - 1 >= 0)
{
eventPoint.LastEventPoint = eventPoints[i - 1];
eventPoint.LastEventPoint.NextEventPoint = eventPoint;
}
else eventPoint.LastEventPoint = null;
if (i == flexibleFloat.animations.Count - 1) eventPoint.NextEventPoint = null;
LinkEventPoints(i, eventPoint);
}
}
// 连接事件点
private void LinkEventPoints(int index, EventPoint eventPoint)
{
if (index - 1 >= 0)
{
eventPoint.LastEventPoint = eventPoints[index - 1];
eventPoint.LastEventPoint.NextEventPoint = eventPoint;
}
else
{
eventPoint.LastEventPoint = null;
}
if (index == connectFloat.animations.Count - 1)
{
eventPoint.NextEventPoint = null;
}
}
// 重绘事件点
private void RedrawEventPoints()
{
foreach (var i in eventPoints)
{
i.ReDraw(scalevalue);
}
Area.localPosition = new Vector3(FatherWindow.songBeat * BeatDeviver, 0, 0);
}
// 更新函数
public void Update()
{
Area.localPosition = new Vector3(-FatherWindow.songBeat * BeatDeviver, 0, 0);
BeatArea.localPosition = Area.localPosition;
Vector3 newPosition = new Vector3(-FatherWindow.songBeat * BeatDeviver, 0, 0);
Area.localPosition = newPosition;
BeatArea.localPosition = newPosition;
XBeatArea.localPosition = newPosition;
}
// 添加事件
public void AddEvent()
{
if (Keyboard.current.ctrlKey.isPressed)
@@ -76,28 +117,53 @@ public class FlexibleFloatTab : MonoBehaviour
eventPoint.FatherTab = this;
eventPoint.Initialize(new AnimatedFloat(GetBeat(), GetBeat() + 1f, 0, 0, AnimationCurveType.Linear));
eventPoints.Insert(FindInsertIndex(eventPoint.animatedFloat.startTime), eventPoint);
if (eventPoints.IndexOf(eventPoint) - 1 >= 0)
{
eventPoint.LastEventPoint = eventPoints[eventPoints.IndexOf(eventPoint) - 1];
eventPoint.LastEventPoint.NextEventPoint = eventPoint;
}
if (eventPoints.IndexOf(eventPoint) + 1 < eventPoints.Count)
{
eventPoint.NextEventPoint = eventPoints[eventPoints.IndexOf(eventPoint) + 1];
eventPoint.animatedFloat.endTime = eventPoint.NextEventPoint.animatedFloat.startTime;
}
LinkNewEventPoint(eventPoint);
eventPoint.ReDraw(scalevalue);
//print(1);
eventPoint.selectButton.onClick.Invoke();
FatherWindow.ChangeValue();
connectFloat.Add(eventPoint.animatedFloat);
connectFloat.Sort();
}
else
{
if (FatherWindow.ConnectedPoint != null) FatherWindow.ConnectedPoint.UpLoad();
}
}
public void SpawnEvent(AnimatedFloat animatedFloat)
{
EventPoint eventPoint = Instantiate(this.eventPoint, Area);
eventPoint.FatherTab = this;
eventPoint.Initialize(animatedFloat);
eventPoints.Insert(FindInsertIndex(eventPoint.animatedFloat.startTime), eventPoint);
LinkNewEventPoint(eventPoint);
eventPoint.ReDraw(scalevalue);
connectFloat.Add(eventPoint.animatedFloat);
connectFloat.Sort();
}
// 连接新事件点
private void LinkNewEventPoint(EventPoint eventPoint)
{
int index = eventPoints.IndexOf(eventPoint);
if (index - 1 >= 0)
{
eventPoint.LastEventPoint = eventPoints[index - 1];
eventPoint.LastEventPoint.NextEventPoint = eventPoint;
eventPoint.LastEventPoint.ReDraw(scalevalue);
}
if (index + 1 < eventPoints.Count)
{
eventPoint.NextEventPoint = eventPoints[index + 1];
eventPoint.animatedFloat.endTime = eventPoint.NextEventPoint.animatedFloat.startTime;
eventPoint.Initialize(eventPoint.animatedFloat);
eventPoint.NextEventPoint.LastEventPoint = eventPoint;
}
}
// 查找插入索引
public int FindInsertIndex(float startTime)
{
int low = 0;
int high = eventPoints.Count - 1;
while (low <= high)
{
int mid = (low + high) / 2;
@@ -110,51 +176,26 @@ public class FlexibleFloatTab : MonoBehaviour
high = mid - 1;
}
}
return low;
}
float GetBeat()//这里出现问题:转换坐标
// 获取节拍
public float GetBeat()
{
Vector2 mouseLocalPos = MousePosition2Local();
float far = BeatArea.transform.localPosition.x;
int Beat = 0;
while (far < mouseLocalPos.x)
float mouseInputX = Mouse.current.position.ReadValue().x;
float far = BeatArea.transform.position.x;
float Beat = 0;
while (far < mouseInputX)
{
far += BeatDeviver;
Beat++;
far += (FirstBeatLine.transform.position.x - BeatArea.transform.position.x) / BeatNextDeviver;
Beat += 1f / BeatNextDeviver;
}
return FatherWindow.timePerBeat * Beat;
}
Vector2 MousePosition2Local()
{
Vector2 mousePosition = Mouse.current.position.ReadValue(); // 获取屏幕坐标
Debug.Log($"Screen Position: {mousePosition}");
Camera mainCamera;
if (EditorManager.instance.cameraManager.isSceneCameraActive)
{
mainCamera = EditorManager.instance.cameraManager.sceneCamera.sceneCamera;
}
else
{
mainCamera = EditorManager.instance.cameraManager.gameCamera.camera;
}
Vector2 mouseWorldPos = mainCamera.ScreenToWorldPoint(mousePosition); // 屏幕坐标转世界坐标
Debug.Log($"World Position: {mouseWorldPos}");
Vector2 mouseLocalPos = transform.parent.transform.InverseTransformPoint(mouseWorldPos); // 世界坐标转本地坐标
Debug.Log($"Local Position: {mouseLocalPos}");
return mouseLocalPos;
return FatherWindow.timePerBeat * (Beat - (1f / BeatNextDeviver));
}
public float scalevalue => FatherWindow.scalevalue;
// 曲线缩放
public void CurveScale(float value)
{
foreach (EventPoint i in eventPoints)
@@ -162,12 +203,32 @@ public class FlexibleFloatTab : MonoBehaviour
i.ReDraw(value);
}
}
// 改变X轴节拍
public void XbeatCnange(int num)
{
ClearChildren(XBeatArea);
for (int i = 1; i < num; i++)
{
foreach (Transform child in BeatArea)
{
GameObject newChild = Instantiate(child.gameObject, XBeatArea);
CanvasGroup canvasGroup = newChild.GetComponent<CanvasGroup>();
newChild.transform.localPosition = new Vector3(child.localPosition.x + ((float)BeatDeviver) / num * i, child.localPosition.y, child.localPosition.z);
if (canvasGroup == null)
{
canvasGroup = newChild.AddComponent<CanvasGroup>();
}
canvasGroup.alpha = 0.1f;
}
}
}
// 移除动画
public void remoceAnim(AnimatedFloat a)
{
if (connectFloat.animations.Contains(a))
{
connectFloat.animations.Remove(a);
}
}

View File

@@ -6,18 +6,20 @@ using Ichni;
using Ichni.Editor;
using Ichni.RhythmGame;
using Sirenix.OdinInspector;
using Sirenix.Utilities;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public partial class GraphicalFlexibleFloatWindow : MovableWindow
{
public Button addNewUnitButton;
public FlexibleFloatTab unitPrefab;
public IBaseElement connectedBaseElement;
public List<FlexibleFloatTab> unitList;
public string parameterName;
public UnityAction ApplyParameters;
@@ -27,31 +29,34 @@ public partial class GraphicalFlexibleFloatWindow : MovableWindow
public float timePerBeat => 60f / EditorManager.instance.songInformation.bpm;
public int BeatDeviver = 100;
public int BeatNextDeviver = 1;
public void Initialize(IBaseElement baseElement, string title, FlexibleFloat[] FlexibleFloats, string[] Subtitles)
{
scalevalue = 5;
transform.localScale = Vector3.zero;
this.connectedBaseElement = baseElement;
this.title.text = title;
unitList = new List<FlexibleFloatTab>();
for (int i = 0; i <= FlexibleFloats.Length - 1; i++)
{
AddUnit(FlexibleFloats[i], Subtitles[i]);
}
closeButton.onClick.AddListener(Quit);
StartCoroutine(WindowAnim.ShowPanelOnScale(gameObject));
for (int i = 0; i <= FlexibleFloats.Length - 1; i++)
{
ClipBoard.Add(Subtitles[i], new List<AnimatedFloat>());
AddUnit(FlexibleFloats[i], Subtitles[i]);
}
ApplyParameters = () =>
{
for (int i = 0; i <= unitList.Count - 1; i++)
{
unitList[i].flexibleFloat.Sort();
unitList[i].connectFloat.Sort();
}
//Dangered
//connectedBaseElement.SetParameter(parameterName, unitList.Select(unit => unit.flexibleFloat).ToArray());
};
XDeviverScale("1");
}
public void AddUnit(FlexibleFloat flexibleFloat, string Subtitle)
{
@@ -82,6 +87,26 @@ public partial class GraphicalFlexibleFloatWindow : MovableWindow
i.CurveScale(value);
}
}
public void DeviverScale(string Rawvalue)
{
if (ConnectedPoint != null) ConnectedPoint.UpLoad();
BeatDeviver = int.Parse(Rawvalue);
ChangeValue();
for (int i = unitList.Count - 1; i >= 0; i--)
{
unitList[i].Initialize(unitList[i].connectFloat, unitList[i].Title);
}
XDeviverScale(BeatNextDeviver.ToString());
}
public void XDeviverScale(string Rawvalue)
{
BeatNextDeviver = int.Parse(Rawvalue);
foreach (FlexibleFloatTab i in unitList)
{
i.XbeatCnange(BeatNextDeviver);
}
}
}
public partial class GraphicalFlexibleFloatWindow
@@ -106,6 +131,7 @@ public partial class GraphicalFlexibleFloatWindow
{
ConnectedPoint.LastEventPoint.NextEventPoint = ConnectedPoint.NextEventPoint;
if (ConnectedPoint.LastEventPoint.NextEventPoint != null) ConnectedPoint.LastEventPoint.NextEventPoint.ReDraw(scalevalue);
ConnectedPoint.LastEventPoint.ReDraw(scalevalue);
}
if (ConnectedPoint.NextEventPoint != null)
@@ -123,6 +149,8 @@ public partial class GraphicalFlexibleFloatWindow
}
}
public void ChangeValue()
{
if (ConnectedPoint != null)
{
@@ -140,4 +168,49 @@ public partial class GraphicalFlexibleFloatWindow
ConnectedPoint.ReDraw(scalevalue);
}
}
public Dictionary<string, List<AnimatedFloat>> ClipBoard = new();
public float MinCopyTime = 0f;
public void Update()
{
if (Keyboard.current.shiftKey.isPressed && Keyboard.current.vKey.wasPressedThisFrame)
{
Paste();
}
}
public void Paste()
{
float time = unitList[0].GetBeat();
print(time);
FindMinStartTime();
foreach (KeyValuePair<string, List<AnimatedFloat>> i in ClipBoard)
{
foreach (AnimatedFloat j in i.Value)
{
AnimatedFloat newone = new AnimatedFloat(j.startTime, j.endTime, j.startValue, j.endValue, j.animationCurveType)
{
startTime = j.startTime - MinCopyTime + time,
endTime = j.endTime - MinCopyTime + time
};
unitList.Find(x => x.Title == i.Key).SpawnEvent(newone);
}
}
}
public void FindMinStartTime()
{
MinCopyTime = float.MaxValue;
foreach (var list in ClipBoard.Values)
{
foreach (var animatedFloat in list)
{
if (animatedFloat.startTime < MinCopyTime)
{
MinCopyTime = animatedFloat.startTime;
}
}
}
}
}

View File

@@ -1323,7 +1323,7 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.CrossTrackPoint_BM,Assembly-CSharp",
"trackSwitch" : {
"value" : 0,
"value" : 2,
"animations" : [
{
"value" : 0,
@@ -1338,8 +1338,8 @@
]
},
"trackPercent" : {
"value" : 0,
"currentAnimationIndex" : 0,
"value" : 1,
"currentAnimationIndex" : 2,
"animations" : [
{
"startValue" : 0,
@@ -1361,7 +1361,7 @@
"animationCurveType" : 0
}
],
"returnType" : 1
"returnType" : 3
},
"elementName" : "New Cross Track Point",
"tags" : [
@@ -1505,6 +1505,351 @@
"attachedElementGuid" : {
"value" : "0bee35ad-27af-4605-bf96-53790b41beb7"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "New Folder",
"tags" : [
],
"elementGuid" : {
"value" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
},
"attachedElementGuid" : {
"value" : "48db0eab-2ed9-4179-8bdf-e90970d046ca"
}
},{
"__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" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
"elementName" : "New Track",
"tags" : [
],
"elementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
},
"attachedElementGuid" : {
"value" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
}
},{
"__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" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
"trackSpaceType" : 0,
"trackSamplingType" : 0,
"isClosed" : false,
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "23be055c-6144-473d-924d-6e9dbae6acc9"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -15,
"y" : 0,
"z" : 5
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "23be055c-6144-473d-924d-6e9dbae6acc9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "23be055c-6144-473d-924d-6e9dbae6acc9"
}
},{
"__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" : "23be055c-6144-473d-924d-6e9dbae6acc9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 15,
"y" : 0,
"z" : 5
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
}
},{
"__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" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
"trackPercent" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 1,
"startTime" : 0,
"endTime" : 15,
"animationCurveType" : 0
}
]
},
"elementName" : "New Track Percent Point",
"tags" : [
],
"elementGuid" : {
"value" : "836e47a5-2d32-468a-bfaf-770f8e08e952"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "836e47a5-2d32-468a-bfaf-770f8e08e952"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 5,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 0.5,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "b1cf5808-501f-493e-bcc6-1e84be72c8a6"
},
"attachedElementGuid" : {
"value" : "836e47a5-2d32-468a-bfaf-770f8e08e952"
}
},{
"__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" : "b1cf5808-501f-493e-bcc6-1e84be72c8a6"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp",
"positionX" : {
"animatedFloatList" : [
]
},
"positionY" : {
"animatedFloatList" : [
]
},
"positionZ" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 5,
"startTime" : 0,
"endTime" : 1,
"animationCurveType" : 5
},{
"startValue" : 5,
"endValue" : -5,
"startTime" : 3,
"endTime" : 6,
"animationCurveType" : 6
},{
"startValue" : -5,
"endValue" : 5,
"startTime" : 8.5,
"endTime" : 13,
"animationCurveType" : 3
}
]
},
"elementName" : "New Displacement",
"tags" : [
],
"elementGuid" : {
"value" : "650f213a-3694-44b1-a7aa-ab6188edff1e"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "650f213a-3694-44b1-a7aa-ab6188edff1e"
}
}
],
"attachedElementGuid" : {

View File

@@ -0,0 +1,97 @@
{
"Clip" : {
"__type" : "System.Collections.Generic.List`1[[Ichni.RhythmGame.Beatmap.BaseElement_BM, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]],mscorlib",
"value" : [
{
"__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp",
"positionX" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 2,
"startTime" : 0,
"endTime" : 1,
"animationCurveType" : 2
},{
"startValue" : 0,
"endValue" : 2,
"startTime" : 2,
"endTime" : 3,
"animationCurveType" : 5
},{
"startValue" : 0,
"endValue" : 2,
"startTime" : 3.3,
"endTime" : 22,
"animationCurveType" : 29
}
]
},
"positionY" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 30,
"startTime" : 0,
"endTime" : 2,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 0,
"startTime" : 3.5,
"endTime" : 4.5,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 30,
"startTime" : 5,
"endTime" : 7,
"animationCurveType" : 0
}
]
},
"positionZ" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 0,
"startTime" : 1,
"endTime" : 2,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 0,
"startTime" : 2,
"endTime" : 3,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 0,
"startTime" : 6,
"endTime" : 7,
"animationCurveType" : 0
}
]
},
"elementName" : "New Displacement",
"tags" : [
],
"elementGuid" : {
"value" : "0bee35ad-27af-4605-bf96-53790b41beb7"
},
"attachedElementGuid" : {
"value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "0bee35ad-27af-4605-bf96-53790b41beb7"
}
}
]
}
}

View File

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

View File

@@ -386,7 +386,7 @@
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "Folder",
"elementName" : "33",
"tags" : [
],
@@ -1323,7 +1323,7 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.CrossTrackPoint_BM,Assembly-CSharp",
"trackSwitch" : {
"value" : 0,
"value" : 2,
"animations" : [
{
"value" : 0,
@@ -1338,8 +1338,8 @@
]
},
"trackPercent" : {
"value" : 0.7894785,
"currentAnimationIndex" : 0,
"value" : 1,
"currentAnimationIndex" : 2,
"animations" : [
{
"startValue" : 0,
@@ -1361,7 +1361,7 @@
"animationCurveType" : 0
}
],
"returnType" : 1
"returnType" : 3
},
"elementName" : "New Cross Track Point",
"tags" : [
@@ -1463,10 +1463,22 @@
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 0,
"endValue" : 30,
"startTime" : 0,
"endTime" : 2,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 0,
"startTime" : 3.5,
"endTime" : 4.5,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 30,
"startTime" : 5,
"endTime" : 7,
"animationCurveType" : 0
}
]
},
@@ -1484,6 +1496,12 @@
"startTime" : 2,
"endTime" : 3,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 0,
"startTime" : 6,
"endTime" : 7,
"animationCurveType" : 0
}
]
},
@@ -1505,6 +1523,351 @@
"attachedElementGuid" : {
"value" : "0bee35ad-27af-4605-bf96-53790b41beb7"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "New Folder",
"tags" : [
],
"elementGuid" : {
"value" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
},
"attachedElementGuid" : {
"value" : "48db0eab-2ed9-4179-8bdf-e90970d046ca"
}
},{
"__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" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
"elementName" : "New Track",
"tags" : [
],
"elementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
},
"attachedElementGuid" : {
"value" : "ec8c78cb-4862-4f41-a860-f86472e0ca71"
}
},{
"__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" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
"trackSpaceType" : 0,
"trackSamplingType" : 0,
"isClosed" : false,
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "23be055c-6144-473d-924d-6e9dbae6acc9"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -15,
"y" : 0,
"z" : 5
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "23be055c-6144-473d-924d-6e9dbae6acc9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "23be055c-6144-473d-924d-6e9dbae6acc9"
}
},{
"__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" : "23be055c-6144-473d-924d-6e9dbae6acc9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 15,
"y" : 0,
"z" : 5
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
}
},{
"__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" : "2da1ee64-53a8-4651-8d45-ea55c514abef"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
"trackPercent" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 1,
"startTime" : 0,
"endTime" : 15,
"animationCurveType" : 0
}
]
},
"elementName" : "New Track Percent Point",
"tags" : [
],
"elementGuid" : {
"value" : "836e47a5-2d32-468a-bfaf-770f8e08e952"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "836e47a5-2d32-468a-bfaf-770f8e08e952"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 5,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 0.5,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 0,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "b1cf5808-501f-493e-bcc6-1e84be72c8a6"
},
"attachedElementGuid" : {
"value" : "836e47a5-2d32-468a-bfaf-770f8e08e952"
}
},{
"__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" : "b1cf5808-501f-493e-bcc6-1e84be72c8a6"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp",
"positionX" : {
"animatedFloatList" : [
]
},
"positionY" : {
"animatedFloatList" : [
]
},
"positionZ" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 5,
"startTime" : 0,
"endTime" : 1,
"animationCurveType" : 5
},{
"startValue" : 5,
"endValue" : -5,
"startTime" : 3,
"endTime" : 6,
"animationCurveType" : 6
},{
"startValue" : -5,
"endValue" : 5,
"startTime" : 8.5,
"endTime" : 13,
"animationCurveType" : 3
}
]
},
"elementName" : "New Displacement",
"tags" : [
],
"elementGuid" : {
"value" : "650f213a-3694-44b1-a7aa-ab6188edff1e"
},
"attachedElementGuid" : {
"value" : "a677b9fe-f2fa-40fb-af54-7a7204125cf9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "650f213a-3694-44b1-a7aa-ab6188edff1e"
}
}
],
"attachedElementGuid" : {

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff