From a469c4acdd2d48426f3071205cd0b324ed955952 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Mon, 12 Sep 2022 20:02:06 -0400 Subject: [PATCH] start values can be changed make the old special entity bar visible when the corresponding type is selected --- Assets/Scenes/Editor.unity | 526 +++++++++++++++++- Assets/Scripts/LevelEditor/EditorTheme.cs | 1 + .../SpecialTmeline/SpecialTimeline.cs | 18 +- .../SpecialTmeline/TempoTimelineObj.cs | 7 + .../SpecialTmeline/VolumeTimelineObj.cs | 7 + .../Scripts/LevelEditor/Timeline/Timeline.cs | 92 ++- 6 files changed, 618 insertions(+), 33 deletions(-) diff --git a/Assets/Scenes/Editor.unity b/Assets/Scenes/Editor.unity index 2fcbc4e4c..d64ae0909 100644 --- a/Assets/Scenes/Editor.unity +++ b/Assets/Scenes/Editor.unity @@ -4726,8 +4726,8 @@ RectTransform: 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: -8, y: 0} + m_AnchoredPosition: {x: -0.021976471, y: 0} + m_SizeDelta: {x: -0.044014, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &158195510 MonoBehaviour: @@ -6384,8 +6384,8 @@ MonoBehaviour: m_OnEndEdit: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: RhythmHeavenMania.Editor.Track.TempoTimeline, Assembly-CSharp + - m_Target: {fileID: 1861169747} + m_TargetAssemblyTypeName: HeavenStudio.Editor.Track.Timeline, Assembly-CSharp m_MethodName: UpdateOffsetFromText m_Mode: 1 m_Arguments: @@ -8254,6 +8254,140 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 285804966} m_CullTransparentMesh: 1 +--- !u!1 &297792671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 297792672} + - component: {fileID: 297792674} + - component: {fileID: 297792673} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &297792672 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 297792671} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.01111111, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1542666926} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 1.2, y: 0} + m_SizeDelta: {x: 200, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &297792673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 297792671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Chart Section + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 78e7291cdeccdfc4fa61249845605144, type: 2} + m_sharedMaterial: {fileID: 5250768452915780979, guid: 78e7291cdeccdfc4fa61249845605144, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + 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} +--- !u!222 &297792674 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 297792671} + m_CullTransparentMesh: 1 --- !u!1 &298463366 GameObject: m_ObjectHideFlags: 0 @@ -10059,6 +10193,7 @@ MonoBehaviour: raycastRect: {fileID: 1186810249} hovering: 0 volumeTXT: {fileID: 746356640} + volumeLine: {fileID: 1126835990} volumeChange: beat: 0 length: 0 @@ -12491,6 +12626,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 483251985} m_CullTransparentMesh: 1 +--- !u!1 &490421832 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 490421833} + - component: {fileID: 490421835} + - component: {fileID: 490421834} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &490421833 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 490421832} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.25, y: 0.4, z: 1} + m_Children: [] + m_Father: {fileID: 1542666926} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -14.5} + m_SizeDelta: {x: 0.15, y: 11.84} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &490421834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 490421832} + 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: 1, g: 1, b: 1, a: 1} + 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: 21300000, guid: e3b85a6fda50d2343a8dfb2fc70c2b32, 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 +--- !u!222 &490421835 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 490421832} + m_CullTransparentMesh: 1 --- !u!1 &494449605 GameObject: m_ObjectHideFlags: 0 @@ -14334,7 +14544,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -8, y: 0} + m_SizeDelta: {x: 0, y: 3.9} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &552375322 MonoBehaviour: @@ -18275,6 +18485,7 @@ MonoBehaviour: raycastRect: {fileID: 983551349} hovering: 0 tempoTXT: {fileID: 499528699} + tempoLine: {fileID: 1287203019} tempoChange: beat: 0 length: 0 @@ -19239,6 +19450,7 @@ RectTransform: m_Children: - {fileID: 666273484} - {fileID: 380411594} + - {fileID: 1542666926} m_Father: {fileID: 1852819573} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -19603,6 +19815,81 @@ MonoBehaviour: m_EffectColor: {r: 1, g: 1, b: 1, a: 1} m_EffectDistance: {x: 2, y: -2} m_UseGraphicAlpha: 1 +--- !u!1 &703624043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 703624044} + - component: {fileID: 703624046} + - component: {fileID: 703624045} + m_Layer: 5 + m_Name: Image (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &703624044 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703624043} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.25, y: -0.4, z: 1} + m_Children: [] + m_Father: {fileID: 1542666926} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -14.5} + m_SizeDelta: {x: 0.15, y: 11.84} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &703624045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703624043} + 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: 1, g: 1, b: 1, a: 1} + 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: 21300000, guid: e3b85a6fda50d2343a8dfb2fc70c2b32, 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 +--- !u!222 &703624046 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703624043} + m_CullTransparentMesh: 1 --- !u!1 &704039019 GameObject: m_ObjectHideFlags: 0 @@ -20649,6 +20936,81 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 28} m_Pivot: {x: 0.5, y: 1} +--- !u!1 &738028139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 738028140} + - component: {fileID: 738028142} + - component: {fileID: 738028141} + m_Layer: 5 + m_Name: Raycast + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &738028140 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 738028139} + 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_Children: [] + m_Father: {fileID: 1542666926} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0.36, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &738028141 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 738028139} + 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: 0, b: 0, 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!222 &738028142 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 738028139} + m_CullTransparentMesh: 1 --- !u!1 &746356638 GameObject: m_ObjectHideFlags: 0 @@ -23247,6 +23609,81 @@ RectTransform: m_AnchoredPosition: {x: -0.0024414062, y: -14.7400055} m_SizeDelta: {x: -0.01, y: -36.71} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &856705695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 856705696} + - component: {fileID: 856705698} + - component: {fileID: 856705697} + m_Layer: 5 + m_Name: Image (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &856705696 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 856705695} + 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_Children: [] + m_Father: {fileID: 1542666926} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0.03, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &856705697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 856705695} + 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: 1, g: 1, b: 1, a: 1} + 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!222 &856705698 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 856705695} + m_CullTransparentMesh: 1 --- !u!1 &861788454 GameObject: m_ObjectHideFlags: 0 @@ -23966,7 +24403,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1589389272} m_HandleRect: {fileID: 1589389271} m_Direction: 2 - m_Value: 1 + m_Value: 0 m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: @@ -25711,9 +26148,9 @@ MonoBehaviour: m_OnEndEdit: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: HeavenStudio.Editor.Track.VolumeTimeline, Assembly-CSharp - m_MethodName: UpdateStartingVolumeFromText + - m_Target: {fileID: 1861169747} + m_TargetAssemblyTypeName: HeavenStudio.Editor.Track.Timeline, Assembly-CSharp + m_MethodName: UpdateStartingVolFromText m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -34287,8 +34724,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 0, y: 8.499998} - m_SizeDelta: {x: 0.03, y: -17.000002} + m_AnchoredPosition: {x: 0, y: -0.000011444092} + m_SizeDelta: {x: 0.03, y: -0.000005722} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1287203021 MonoBehaviour: @@ -34982,10 +35419,10 @@ MonoBehaviour: m_OnEndEdit: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: RhythmHeavenMania.Editor.Track.TempoTimeline, Assembly-CSharp + - m_Target: {fileID: 1861169747} + m_TargetAssemblyTypeName: HeavenStudio.Editor.Track.Timeline, Assembly-CSharp m_MethodName: UpdateStartingBPMFromText - m_Mode: 1 + m_Mode: 6 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine @@ -36330,17 +36767,17 @@ MonoBehaviour: m_OnEndEdit: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: RhythmHeavenMania.Editor.Track.TempoTimeline, Assembly-CSharp + - m_Target: {fileID: 1861169747} + m_TargetAssemblyTypeName: HeavenStudio.Editor.Track.Timeline, Assembly-CSharp m_MethodName: UpdateStartingBPMFromText - m_Mode: 1 + m_Mode: 6 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: - m_BoolArgument: 0 + m_BoolArgument: 1 m_CallState: 2 m_OnSubmit: m_PersistentCalls: @@ -36789,7 +37226,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -8, y: 0} + m_SizeDelta: {x: -1.05501385e-10, y: 3.9000003} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1341826587 MonoBehaviour: @@ -41427,6 +41864,46 @@ MonoBehaviour: previewGraphic: {fileID: 1535224919} colorPicker: {fileID: 1489888672} hex: {fileID: 426555699} +--- !u!1 &1542666925 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1542666926} + m_Layer: 5 + m_Name: ChartSection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1542666926 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542666925} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1.0001352, z: 1.0001352} + m_Children: + - {fileID: 490421833} + - {fileID: 703624044} + - {fileID: 856705696} + - {fileID: 297792672} + - {fileID: 738028140} + m_Father: {fileID: 689207020} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0.70999146} + m_SizeDelta: {x: 0.0876, y: 2.8290014} + m_Pivot: {x: 0, y: 1} --- !u!1 &1548381522 GameObject: m_ObjectHideFlags: 0 @@ -45748,8 +46225,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0.5} m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 10.92, y: 0} - m_SizeDelta: {x: 58.5, y: 30.34} + m_AnchoredPosition: {x: 10.956, y: 0} + m_SizeDelta: {x: 22, y: 30.34} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1772187928 MonoBehaviour: @@ -47219,11 +47696,16 @@ MonoBehaviour: snapInterval: 0.25 TimelineSlider: {fileID: 770589360} TimelineGridSelect: {fileID: 238901181} + TimelineEventGrid: {fileID: 1838356727} TimelinePlaybackBeat: {fileID: 117889364} TimelineContent: {fileID: 1852819573} TimelineSongPosLineRef: {fileID: 580861938} TimelineEventObjRef: {fileID: 798021449} LayersRect: {fileID: 1671351975} + FirstBeatOffset: {fileID: 215482487} + StartingTempoSpecialAll: {fileID: 1332021417} + StartingTempoSpecialTempo: {fileID: 1299088428} + StartingVolumeSpecialVolume: {fileID: 967717800} SpecialInfo: {fileID: 689207021} PlayBTN: {fileID: 1345846031} PauseBTN: {fileID: 9435782} @@ -50685,7 +51167,7 @@ RectTransform: 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_SizeDelta: {x: 0, y: 3.9} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1989911454 MonoBehaviour: diff --git a/Assets/Scripts/LevelEditor/EditorTheme.cs b/Assets/Scripts/LevelEditor/EditorTheme.cs index df11c2172..effab54ec 100644 --- a/Assets/Scripts/LevelEditor/EditorTheme.cs +++ b/Assets/Scripts/LevelEditor/EditorTheme.cs @@ -35,6 +35,7 @@ namespace HeavenStudio.Editor tempoLayer.GetComponent().color = theme.properties.TempoLayerCol.Hex2RGB(); musicLayer.GetComponent().color = theme.properties.MusicLayerCol.Hex2RGB(); sectionLayer.GetComponent().color = theme.properties.SectionLayerCol.Hex2RGB(); + Tooltip.AddTooltip(specialLayers.gameObject, $"All Special Tracks"); Tooltip.AddTooltip(tempoLayer.gameObject, $"Tempo Track"); Tooltip.AddTooltip(musicLayer.gameObject, $"Music Volume Track"); Tooltip.AddTooltip(sectionLayer.gameObject, $"Remix Sections Track"); diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs index 0ae3e8847..8a5c6653c 100644 --- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs +++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs @@ -45,17 +45,15 @@ namespace HeavenStudio.Editor.Track public void Setup() { ClearSpecialTimeline(); - for (int i = 0; i < GameManager.instance.Beatmap.tempoChanges.Count; i++) - { - DynamicBeatmap.TempoChange tempoChange = GameManager.instance.Beatmap.tempoChanges[i]; - AddTempoChange(false, tempoChange); - } - for (int i = 0; i < GameManager.instance.Beatmap.volumeChanges.Count; i++) - { - DynamicBeatmap.VolumeChange volumeChange = GameManager.instance.Beatmap.volumeChanges[i]; + foreach (var tempoChange in GameManager.instance.Beatmap.tempoChanges) + AddTempoChange(false, tempoChange); + + foreach (var volumeChange in GameManager.instance.Beatmap.volumeChanges) AddVolumeChange(false, volumeChange); - } + + Timeline.instance.timelineState.SetState(Timeline.CurrentTimelineState.State.Selection); + FixObjectsVisibility(); } private void Update() @@ -139,6 +137,7 @@ namespace HeavenStudio.Editor.Track tempoTimelineObj.tempoChange = tempoChange_; } + tempoTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState); specialTimelineObjs.Add(tempoTimelineObj); @@ -175,6 +174,7 @@ namespace HeavenStudio.Editor.Track volumeTimelineObj.volumeChange = volumeChange_; } + volumeTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState); specialTimelineObjs.Add(volumeTimelineObj); } diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoTimelineObj.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoTimelineObj.cs index 9a45d6dad..3fe34e7a3 100644 --- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoTimelineObj.cs +++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoTimelineObj.cs @@ -12,6 +12,7 @@ namespace HeavenStudio.Editor.Track { [Header("Components")] [SerializeField] private TMP_Text tempoTXT; + [SerializeField] private GameObject tempoLine; public DynamicBeatmap.TempoChange tempoChange; @@ -83,7 +84,13 @@ namespace HeavenStudio.Editor.Track public override void SetVisibility(Timeline.CurrentTimelineState.State state) { if (state == Timeline.CurrentTimelineState.State.TempoChange || state == Timeline.CurrentTimelineState.State.Selection) + { gameObject.SetActive(true); + if (state == Timeline.CurrentTimelineState.State.TempoChange) + tempoLine.SetActive(true); + else + tempoLine.SetActive(false); + } else gameObject.SetActive(false); } diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/VolumeTimelineObj.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/VolumeTimelineObj.cs index af2aa569d..1e68bcb31 100644 --- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/VolumeTimelineObj.cs +++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/VolumeTimelineObj.cs @@ -12,6 +12,7 @@ namespace HeavenStudio.Editor.Track { [Header("Components")] [SerializeField] private TMP_Text volumeTXT; + [SerializeField] private GameObject volumeLine; public DynamicBeatmap.VolumeChange volumeChange; @@ -81,7 +82,13 @@ namespace HeavenStudio.Editor.Track public override void SetVisibility(Timeline.CurrentTimelineState.State state) { if (state == Timeline.CurrentTimelineState.State.MusicVolume || state == Timeline.CurrentTimelineState.State.Selection) + { gameObject.SetActive(true); + if (state == Timeline.CurrentTimelineState.State.MusicVolume) + volumeLine.SetActive(true); + else + volumeLine.SetActive(false); + } else gameObject.SetActive(false); } diff --git a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs index a5b76cf33..8e350c743 100644 --- a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs +++ b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; @@ -119,12 +119,19 @@ namespace HeavenStudio.Editor.Track [Header("Timeline Components")] [SerializeField] private RectTransform TimelineSlider; [SerializeField] private RectTransform TimelineGridSelect; + [SerializeField] private RectTransform TimelineEventGrid; [SerializeField] private TMP_Text TimelinePlaybackBeat; public RectTransform TimelineContent; [SerializeField] private RectTransform TimelineSongPosLineRef; [SerializeField] private RectTransform TimelineEventObjRef; [SerializeField] private RectTransform LayersRect; + [Header("Timeline Inputs")] + public TMP_InputField FirstBeatOffset; + public TMP_InputField StartingTempoSpecialAll; + public TMP_InputField StartingTempoSpecialTempo; + public TMP_InputField StartingVolumeSpecialVolume; + public SpecialTimeline SpecialInfo; private RectTransform TimelineSongPosLine; @@ -172,6 +179,9 @@ namespace HeavenStudio.Editor.Track } SpecialInfo.Setup(); + UpdateOffsetText(); + UpdateStartingBPMText(); + UpdateStartingVolText(); } public void Init() @@ -246,6 +256,10 @@ namespace HeavenStudio.Editor.Track Tooltip.AddTooltip(MusicVolumeBTN.gameObject, "Tool: Music Volume [3]"); Tooltip.AddTooltip(ChartSectionBTN.gameObject, "Tool: Beatmap Sections [4]"); + Tooltip.AddTooltip(StartingTempoSpecialAll.gameObject, "Starting Tempo (BPM)"); + Tooltip.AddTooltip(StartingTempoSpecialTempo.gameObject, "Starting Tempo (BPM)"); + Tooltip.AddTooltip(StartingVolumeSpecialVolume.gameObject, "Starting Volume (%)"); + Tooltip.AddTooltip(PlaybackSpeed.gameObject, "The preview's playback speed. Right click to reset to 1.0"); SetTimeButtonColors(true, false, false); @@ -551,7 +565,7 @@ namespace HeavenStudio.Editor.Track public bool CheckIfMouseInTimeline() { - return (this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(TimelineContent.transform.parent.gameObject.GetComponent(), Input.mousePosition, Editor.instance.EditorCamera)); + return (this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(TimelineEventGrid, Input.mousePosition, Editor.instance.EditorCamera)); } #endregion @@ -737,6 +751,80 @@ namespace HeavenStudio.Editor.Track } } + public void UpdateOffsetText() + { + FirstBeatOffset.text = (GameManager.instance.Beatmap.firstBeatOffset * 1000f).ToString("G"); + } + + public void UpdateOffsetFromText() + { + // Failsafe against empty string. + if (String.IsNullOrEmpty(FirstBeatOffset.text)) + FirstBeatOffset.text = "0"; + + // Convert ms to s. + var newOffset = Convert.ToSingle(FirstBeatOffset.text) / 1000f; + + // Limit decimal places to 4. + newOffset = (float)System.Math.Round(newOffset, 4); + + GameManager.instance.Beatmap.firstBeatOffset = newOffset; + + UpdateOffsetText(); + } + + public void UpdateStartingBPMText() + { + StartingTempoSpecialAll.text = GameManager.instance.Beatmap.bpm.ToString("G"); + StartingTempoSpecialTempo.text = StartingTempoSpecialAll.text; + } + + public void UpdateStartingBPMFromText(bool all) + { + string text = all ? StartingTempoSpecialAll.text : StartingTempoSpecialTempo.text; + // Failsafe against empty string. + if (String.IsNullOrEmpty(text)) + text = "120"; + + var newBPM = Convert.ToDouble(text); + + // Failsafe against negative BPM. + if (newBPM < 1f) + { + text = "1"; + newBPM = 1; + } + + // Limit decimal places to 4. + newBPM = System.Math.Round(newBPM, 4); + + GameManager.instance.Beatmap.bpm = (float) newBPM; + + // In case the newBPM ended up differing from the inputted string. + UpdateStartingBPMText(); + + Timeline.instance.FitToSong(); + } + + public void UpdateStartingVolText() + { + StartingVolumeSpecialVolume.text = (GameManager.instance.Beatmap.musicVolume).ToString("G"); + } + + public void UpdateStartingVolFromText() + { + // Failsafe against empty string. + if (String.IsNullOrEmpty(StartingVolumeSpecialVolume.text)) + StartingVolumeSpecialVolume.text = "100"; + + var newVol = Convert.ToInt32(StartingVolumeSpecialVolume.text); + newVol = Mathf.Clamp(newVol, 0, 100); + + GameManager.instance.Beatmap.musicVolume = newVol; + + UpdateStartingVolText(); + } + #endregion #region Commands