timeline zoom

This commit is contained in:
Braedon Lewis 2023-09-26 22:52:51 -04:00
parent 495131053e
commit c6519bd00c
20 changed files with 840 additions and 604 deletions

File diff suppressed because one or more lines are too long

View file

@ -14,8 +14,8 @@ RenderTexture:
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 5
m_Width: 1272
m_Height: 715
m_Width: 1127
m_Height: 633
m_AntiAliasing: 2
m_MipCount: -1
m_DepthStencilFormat: 92

View file

@ -14,8 +14,8 @@ RenderTexture:
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 5
m_Width: 1908
m_Height: 1072
m_Width: 1690
m_Height: 949
m_AntiAliasing: 1
m_MipCount: -1
m_DepthStencilFormat: 92

View file

@ -33,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1

View file

@ -33,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1

View file

@ -33,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1

View file

@ -33,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1

View file

@ -511,7 +511,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -3016,7 +3016,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -7138,7 +7138,7 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 14
m_fontSize: 9.95
m_fontSizeBase: 14.3
m_fontWeight: 400
m_enableAutoSizing: 1
@ -9505,7 +9505,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -9791,10 +9791,8 @@ GameObject:
m_Component:
- component: {fileID: 441876681}
- component: {fileID: 441876684}
- component: {fileID: 441876682}
- component: {fileID: 441876685}
- component: {fileID: 441876686}
- component: {fileID: 441876687}
m_Layer: 5
m_Name: Timeline
m_TagString: Untagged
@ -9811,7 +9809,7 @@ RectTransform:
m_GameObject: {fileID: 441876680}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.0000799, y: 1.0000799, z: 1.0000799}
m_LocalScale: {x: 1.0000798, y: 1.0000798, z: 1.0000798}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 861177305}
@ -9819,44 +9817,14 @@ RectTransform:
- {fileID: 620950453}
- {fileID: 1046888175}
- {fileID: 1536668599}
m_Father: {fileID: 1004641245}
m_RootOrder: 0
m_Father: {fileID: 538158677}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &441876682
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441876680}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b7d55b221d856de4f9bc712751f8cbd2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Content: {fileID: 1852819573}
m_Horizontal: 1
m_Vertical: 1
m_MovementType: 2
m_Elasticity: 0.1
m_Inertia: 1
m_DecelerationRate: 0.01
m_ScrollSensitivity: 0
m_Viewport: {fileID: 547319783}
m_HorizontalScrollbar: {fileID: 608588499}
m_VerticalScrollbar: {fileID: 1610635822}
m_HorizontalScrollbarVisibility: 1
m_VerticalScrollbarVisibility: 1
m_HorizontalScrollbarSpacing: 0
m_VerticalScrollbarSpacing: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!222 &441876684
CanvasRenderer:
m_ObjectHideFlags: 0
@ -9909,26 +9877,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Padding: {x: 0, y: 0, z: 0, w: 0}
m_Softness: {x: 0, y: 0}
--- !u!114 &441876687
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441876680}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: 1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &446434228
GameObject:
m_ObjectHideFlags: 0
@ -10046,7 +9994,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 177.66988, y: -60.01}
m_AnchoredPosition: {x: 177.66986, y: -60.01}
m_SizeDelta: {x: 42, y: 42}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &449176922
@ -11427,7 +11375,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.007843138, g: 0.7137255, b: 0.5686275, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -11682,6 +11630,65 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 537615367}
m_CullTransparentMesh: 1
--- !u!1 &538158676
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 538158677}
- component: {fileID: 538158678}
m_Layer: 5
m_Name: Timeline
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &538158677
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 538158676}
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:
- {fileID: 1463975199}
- {fileID: 441876681}
m_Father: {fileID: 1004641245}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &538158678
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 538158676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: 1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &539838475
GameObject:
m_ObjectHideFlags: 0
@ -11781,7 +11788,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1969940937}
- {fileID: 1588658939}
m_Father: {fileID: 1050802356}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -11804,15 +11810,15 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Content: {fileID: 830452352}
m_Horizontal: 0
m_Vertical: 1
m_Vertical: 0
m_MovementType: 2
m_Elasticity: 0.05
m_Inertia: 0
m_DecelerationRate: 0.135
m_ScrollSensitivity: 36
m_ScrollSensitivity: 0
m_Viewport: {fileID: 1969940937}
m_HorizontalScrollbar: {fileID: 0}
m_VerticalScrollbar: {fileID: 1588658940}
m_VerticalScrollbar: {fileID: 0}
m_HorizontalScrollbarVisibility: 2
m_VerticalScrollbarVisibility: 2
m_HorizontalScrollbarSpacing: -3
@ -12930,7 +12936,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607845, g: 1, b: 0.19607845, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -14307,6 +14313,43 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!1 &635327593
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 635327594}
m_Layer: 5
m_Name: Viewport
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &635327594
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 635327593}
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:
- {fileID: 1702073031}
m_Father: {fileID: 1463975199}
m_RootOrder: 0
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: -84}
m_SizeDelta: {x: 0, y: -84}
m_Pivot: {x: 0, y: 1}
--- !u!1 &641594207
GameObject:
m_ObjectHideFlags: 0
@ -15971,7 +16014,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &683816222
RectTransform:
m_ObjectHideFlags: 0
@ -17979,7 +18022,6 @@ GameObject:
m_Component:
- component: {fileID: 770589360}
- component: {fileID: 770589362}
- component: {fileID: 770589361}
m_Layer: 5
m_Name: TimelineSlider
m_TagString: Untagged
@ -18011,18 +18053,6 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 50, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &770589361
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 770589359}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0ebb4f22da63ed144917cdff47f9c93c, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!222 &770589362
CanvasRenderer:
m_ObjectHideFlags: 0
@ -18621,6 +18651,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: eb5481d804b2aec42a04ea8f659fdc5a, type: 3}
m_Name:
m_EditorClassIdentifier:
interacting: 0
moveStartPos: {x: 0, y: 0}
PosPreview: {fileID: 0}
PosPreviewRef: {fileID: 2142375787}
@ -19470,7 +19501,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 830452351}
m_Enabled: 0
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
@ -20484,7 +20515,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:
@ -22151,7 +22182,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 441876681}
- {fileID: 538158677}
- {fileID: 1610635821}
m_Father: {fileID: 1798785971}
m_RootOrder: 0
@ -25053,7 +25084,7 @@ RectTransform:
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: 0, y: 127.63256}
m_AnchoredPosition: {x: 0, y: 142.53061}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &1154875945
@ -27102,7 +27133,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.16862746}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -27666,82 +27697,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1287203019}
m_CullTransparentMesh: 1
--- !u!1 &1292844876
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1292844877}
- component: {fileID: 1292844879}
- component: {fileID: 1292844878}
m_Layer: 8
m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1292844877
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1292844876}
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: 1304677024}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1292844878
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1292844876}
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.20392159, g: 0.20392159, b: 0.20392159, 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: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
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 &1292844879
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1292844876}
m_CullTransparentMesh: 1
--- !u!1 &1296765241
GameObject:
m_ObjectHideFlags: 0
@ -28009,43 +27964,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1299088426}
m_CullTransparentMesh: 1
--- !u!1 &1304677023
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1304677024}
m_Layer: 8
m_Name: Sliding Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1304677024
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1304677023}
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:
- {fileID: 1292844877}
m_Father: {fileID: 1588658939}
m_RootOrder: 0
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: -20, y: -20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1310571273
GameObject:
m_ObjectHideFlags: 0
@ -30691,6 +30609,74 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1462347073}
m_CullTransparentMesh: 1
--- !u!1 &1463975198
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1463975199}
- component: {fileID: 1463975200}
m_Layer: 5
m_Name: RealTimeline
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1463975199
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1463975198}
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:
- {fileID: 635327594}
m_Father: {fileID: 538158677}
m_RootOrder: 0
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_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1463975200
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1463975198}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b7d55b221d856de4f9bc712751f8cbd2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Content: {fileID: 1702073031}
m_Horizontal: 1
m_Vertical: 1
m_MovementType: 2
m_Elasticity: 0.1
m_Inertia: 1
m_DecelerationRate: 0.01
m_ScrollSensitivity: 0
m_Viewport: {fileID: 635327594}
m_HorizontalScrollbar: {fileID: 608588499}
m_VerticalScrollbar: {fileID: 1610635822}
m_HorizontalScrollbarVisibility: 1
m_VerticalScrollbarVisibility: 1
m_HorizontalScrollbarSpacing: 0
m_VerticalScrollbarSpacing: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!1 &1466780684
GameObject:
m_ObjectHideFlags: 0
@ -33714,149 +33700,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1585542809}
m_CullTransparentMesh: 1
--- !u!1 &1588658938
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1588658939}
- component: {fileID: 1588658942}
- component: {fileID: 1588658941}
- component: {fileID: 1588658940}
- component: {fileID: 1588658943}
m_Layer: 8
m_Name: Scrollbar Vertical
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1588658939
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1588658938}
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:
- {fileID: 1304677024}
m_Father: {fileID: 546272877}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -2.0117188, y: 0}
m_SizeDelta: {x: 17.99, y: -0}
m_Pivot: {x: 1, y: 1}
--- !u!114 &1588658940
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1588658938}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1292844878}
m_HandleRect: {fileID: 1292844877}
m_Direction: 2
m_Value: 1
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!114 &1588658941
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1588658938}
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: 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: 1
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 &1588658942
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1588658938}
m_CullTransparentMesh: 1
--- !u!114 &1588658943
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1588658938}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: db125c7de00668f4e98849d0aaf366d7, type: 3}
m_Name:
m_EditorClassIdentifier:
m_EffectColor: {r: 0.20392159, g: 0.20392159, b: 0.20392159, a: 1}
m_EffectDistance: {x: 2, y: -2}
m_UseGraphicAlpha: 0
--- !u!1 &1589389270
GameObject:
m_ObjectHideFlags: 0
@ -34017,8 +33860,8 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 1220118245}
m_HandleRect: {fileID: 1220118244}
m_Direction: 2
m_Value: 1
m_Size: 0.65924203
m_Value: 1.0000004
m_Size: 0.78268224
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -35502,6 +35345,97 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1700850420}
m_CullTransparentMesh: 1
--- !u!1 &1702073030
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1702073031}
- component: {fileID: 1702073034}
- component: {fileID: 1702073033}
- component: {fileID: 1702073032}
m_Layer: 5
m_Name: Content
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1702073031
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1702073030}
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: 635327594}
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: -0.000030517578}
m_SizeDelta: {x: 100, y: 350}
m_Pivot: {x: 0, y: 1}
--- !u!114 &1702073032
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1702073030}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8e80cb56c71364447b2840dfa6622172, type: 3}
m_Name:
m_EditorClassIdentifier:
minScale: 0.64
initialScale: {x: 1, y: 1}
--- !u!114 &1702073033
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1702073030}
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: 0, b: 0.9456892, 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 &1702073034
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1702073030}
m_CullTransparentMesh: 1
--- !u!1 &1709317942
GameObject:
m_ObjectHideFlags: 0
@ -35973,7 +35907,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
snap: 1
count: 13
scrollRect: {fileID: 441876682}
scrollRect: {fileID: 1463975200}
--- !u!1 &1766883148
GameObject:
m_ObjectHideFlags: 0
@ -36829,7 +36763,7 @@ Canvas:
m_RenderMode: 1
m_Camera: {fileID: 2047408675}
m_PlaneDistance: 100
m_PixelPerfect: 1
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
@ -37445,9 +37379,9 @@ RectTransform:
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 320, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!1 &1852819572
GameObject:
@ -37460,7 +37394,6 @@ GameObject:
- component: {fileID: 1852819573}
- component: {fileID: 1852819575}
- component: {fileID: 1852819574}
- component: {fileID: 1852819576}
m_Layer: 5
m_Name: Content
m_TagString: Untagged
@ -37504,7 +37437,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -37528,22 +37461,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852819572}
m_CullTransparentMesh: 1
--- !u!114 &1852819576
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852819572}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d6a4c5ae13e9de743befd392956aaea7, type: 3}
m_Name:
m_EditorClassIdentifier:
_minimumScale: 20
_initialScale: {x: 1, y: 1}
_maximumScale: 5000
_scaleIncrement: 12
--- !u!1 &1856185012
GameObject:
m_ObjectHideFlags: 0
@ -37655,10 +37572,10 @@ MonoBehaviour:
TimelineGridSelect: {fileID: 238901181}
TimelineEventGrid: {fileID: 1838356727}
TimelinePlaybackBeat: {fileID: 117889364}
TimelineScroll: {fileID: 441876682}
TimelineScroll: {fileID: 1463975200}
RealTimelineContent: {fileID: 1702073031}
TimelineContent: {fileID: 1852819573}
EventContent: {fileID: 259713290}
zoomComponent: {fileID: 1852819576}
TimelineSongPosLineRef: {fileID: 580861938}
TimelineEventObjRef: {fileID: 798021449}
TimelineEventsHolder: {fileID: 1962968340}
@ -39281,7 +39198,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.007843138, g: 0.7137255, b: 0.5686275, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -39559,9 +39476,9 @@ RectTransform:
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {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: -14.99, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1969940938
MonoBehaviour:

View file

@ -23,8 +23,7 @@ namespace HeavenStudio.Editor.Track
private float lastPosX;
private float lastContentScale;
private float lastTimelineSize;
private float contentPosX => Mathf.Abs(scrollRect.content.localPosition.x / scrollRect.content.localScale.x);
private float lastZoom;
private List<GameObject> Lines = new List<GameObject>();
@ -50,7 +49,8 @@ namespace HeavenStudio.Editor.Track
{
if (Editor.instance.fullscreen) return;
var x = Mathp.Round2Nearest(contentPosX, Timeline.instance.PixelsPerBeat);
// var x = Mathp.Round2Nearest(contentPosX, Timeline.instance.PixelsPerBeat);
var x = Mathp.Round2Nearest(-scrollRect.content.anchoredPosition.x, Timeline.instance.PixelsPerBeat);
var pos = new Vector3(x, transform.localPosition.y, transform.localPosition.z);
transform.localPosition = pos;
rectTransform.anchoredPosition = new Vector3(rectTransform.anchoredPosition.x, rectTransform.anchoredPosition.y, 0);
@ -63,7 +63,8 @@ namespace HeavenStudio.Editor.Track
private void UpdateCount()
{
var changeScale = (scrollRect.viewport.rect.size.x != lastTimelineSize || scrollRect.content.localScale.x != lastContentScale);
var changeScale = (scrollRect.viewport.rect.size.x != lastTimelineSize || scrollRect.content.localScale.x != lastContentScale) ||
(Timeline.instance.Zoom != lastZoom);
if (changeScale)
{
for (int i = 0; i < Lines.Count; i++)
@ -95,6 +96,7 @@ namespace HeavenStudio.Editor.Track
lastContentScale = scrollRect.content.localScale.x;
lastTimelineSize = scrollRect.viewport.rect.size.x;
lastZoom = Timeline.instance.Zoom;
lastPosX = rectTransform.anchoredPosition.x;
}

View file

@ -28,16 +28,32 @@ namespace HeavenStudio.Editor
private void Awake()
{
var defaultTheme = JsonConvert.DeserializeObject<Theme>(ThemeTXT.text);
if (File.Exists(Application.persistentDataPath + "/editorTheme.json"))
{
string json = File.ReadAllText(Application.persistentDataPath + "/editorTheme.json");
theme = JsonConvert.DeserializeObject<Theme>(json);
// Naive way of doing it? Possibly, but we should have a theme editor in the future.
if (defaultTheme.properties.LayerColors != null)
{
theme.properties.LayerColors = defaultTheme.properties.LayerColors;
// Create a function for this in the future.
var savedTheme = JsonConvert.SerializeObject(theme, Formatting.Indented, new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.None,
NullValueHandling = NullValueHandling.Include,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
});
PersistentDataManager.SaveTheme(savedTheme);
}
}
else
{
PersistentDataManager.SaveTheme(ThemeTXT.text);
theme = JsonConvert.DeserializeObject<Theme>(ThemeTXT.text);
theme = defaultTheme;
}
theme.SetLayersGradient();
}
private void Start()
@ -61,30 +77,12 @@ namespace HeavenStudio.Editor
layer.SetActive(true);
layer.transform.GetChild(0).GetComponent<TMP_Text>().text = $"Track {i + 1}";
Color c = Color.white;
switch (i)
{
case 0:
c = theme.properties.Layer1Col.Hex2RGB();
break;
case 1:
c = theme.properties.Layer2Col.Hex2RGB();
break;
case 2:
c = theme.properties.Layer3Col.Hex2RGB();
break;
case 3:
c = theme.properties.Layer4Col.Hex2RGB();
break;
case 4:
c = theme.properties.Layer5Col.Hex2RGB();
break;
}
Color c = theme.LayersGradient.Evaluate(i / (float)(Timeline.instance.LayerCount - 1));
layer.GetComponent<Image>().color = c;
Tooltip.AddTooltip(layer, $"Track {i + 1}");
}
Destroy(layer);
}
}

View file

@ -42,6 +42,7 @@ namespace HeavenStudio.Editor
DeselectAll();
eventsSelected.Add(eventToAdd);
eventToAdd.selected = true;
eventToAdd.OnSelect();
TimelineBlockManager.Instance.SortMarkers();
@ -53,11 +54,13 @@ namespace HeavenStudio.Editor
if (!eventsSelected.Contains(eventToAdd))
{
eventToAdd.selected = true;
eventToAdd.OnSelect();
eventsSelected.Add(eventToAdd);
}
else
{
eventToAdd.selected = false;
eventToAdd.OnDeselect();
eventsSelected.Remove(eventToAdd);
}
TimelineBlockManager.Instance.SortMarkers();
@ -69,6 +72,7 @@ namespace HeavenStudio.Editor
{
eventToAdd.selected = true;
eventsSelected.Add(eventToAdd);
eventToAdd.OnSelect();
}
}
@ -79,6 +83,8 @@ namespace HeavenStudio.Editor
for (int i = 0; i < eventObjs.Count; i++)
{
eventObjs[i].selected = true;
eventObjs[i].OnSelect();
eventsSelected.Add(eventObjs[i]);
}
TimelineBlockManager.Instance.SortMarkers();
@ -89,6 +95,7 @@ namespace HeavenStudio.Editor
foreach (var @event in eventsSelected)
{
@event.selected = false;
@event.OnSelect();
}
eventsSelected.Clear();
TimelineBlockManager.Instance.SortMarkers();
@ -99,6 +106,7 @@ namespace HeavenStudio.Editor
if (eventsSelected.Contains(eventToDeselect))
{
eventToDeselect.selected = false;
eventToDeselect.OnDeselect();
eventsSelected.Remove(eventToDeselect);
}
TimelineBlockManager.Instance.SortMarkers();

View file

@ -1,4 +1,7 @@
using Newtonsoft.Json;
using Starpelly;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace HeavenStudio.Editor
@ -23,6 +26,8 @@ namespace HeavenStudio.Editor
public string Layer4Col;
public string Layer5Col;
public string[] LayerColors = null;
public string EventSelectedCol;
public string EventNormalCol;
@ -32,5 +37,23 @@ namespace HeavenStudio.Editor
public string BoxSelectionCol;
public string BoxSelectionOutlineCol;
}
[JsonIgnore]
public Gradient LayersGradient { get; private set; }
public void SetLayersGradient()
{
if (properties.LayerColors == null) return;
LayersGradient = new Gradient();
var colorKeys = new List<GradientColorKey>();
for (var i = 0; i < properties.LayerColors.Length; i++)
{
var color = properties.LayerColors[i];
colorKeys.Add(new GradientColorKey(color.Hex2RGB(), (float)i / (properties.LayerColors.Length - 1)));
}
LayersGradient.colorKeys = colorKeys.ToArray();
}
}
}

View file

@ -41,6 +41,8 @@ namespace HeavenStudio.Editor.Track
if (first && newTempo != 0)
Timeline.instance.UpdateStartingBPMText();
Timeline.instance.FitToSong();
}
}
@ -50,7 +52,6 @@ namespace HeavenStudio.Editor.Track
private void UpdateTempo()
{
tempoTXT.text = tempoChange["tempo"].ToString("F") + $" BPM";
Timeline.instance.FitToSong();
SetX(tempoChange);
}

View file

@ -8,11 +8,6 @@ using UnityEngine.EventSystems;
using TMPro;
using Starpelly;
using Jukebox;
using Jukebox.Legacy;
using UnityEditor;
using static HeavenStudio.Minigames;
using static HeavenStudio.Util.BeatAction;
using System.Linq;
using Newtonsoft.Json;
namespace HeavenStudio.Editor.Track
@ -151,9 +146,9 @@ namespace HeavenStudio.Editor.Track
[SerializeField] private RectTransform TimelineEventGrid;
[SerializeField] private TMP_Text TimelinePlaybackBeat;
public ScrollRect TimelineScroll;
public RectTransform TimelineContent;
[SerializeField] private RectTransform RealTimelineContent;
[SerializeField] private RectTransform TimelineContent;
public RectTransform EventContent;
[SerializeField] private ZoomComponent zoomComponent;
[SerializeField] private RectTransform TimelineSongPosLineRef;
[SerializeField] private RectTransform TimelineEventObjRef;
public RectTransform TimelineEventsHolder;
@ -186,7 +181,7 @@ namespace HeavenStudio.Editor.Track
public Vector3[] LayerCorners = new Vector3[4];
public float leftSide => (TimelineContent.localPosition.x / PixelsPerBeat) * -1;
public float leftSide => (RealTimelineContent.anchoredPosition.x / PixelsPerBeat) * -1;
public float rightSide => (TimelineScroll.viewport.rect.width / PixelsPerBeat) + leftSide;
public static Timeline instance { get; private set; }
@ -295,15 +290,15 @@ namespace HeavenStudio.Editor.Track
ZoomInBTN.onClick.AddListener(delegate
{
zoomComponent.ZoomIn(0.015f * TimelineContent.localScale.x, Vector2.zero);
// zoomComponent.ZoomIn(0.015f * TimelineContent.localScale.x, Vector2.zero);
});
ZoomOutBTN.onClick.AddListener(delegate
{
zoomComponent.ZoomOut(-0.0125f * TimelineContent.localScale.x, Vector2.zero);
// zoomComponent.ZoomOut(-0.0125f * TimelineContent.localScale.x, Vector2.zero);
});
ZoomResetBTN.onClick.AddListener(delegate
{
zoomComponent.ResetZoom();
// zoomComponent.ResetZoom();
});
WaveformBTN.onClick.AddListener(delegate
{
@ -351,12 +346,16 @@ namespace HeavenStudio.Editor.Track
public void FitToSong()
{
var currentSizeDelta = TimelineContent.sizeDelta;
var currentSizeDelta = RealTimelineContent.sizeDelta;
float songBeats = Conductor.instance.SongLengthInBeats();
if (songBeats == 0) songBeats = 320;
else songBeats += 10;
Debug.Log("test");
TimelineContent.sizeDelta = new Vector2(songBeats * PixelsPerBeat, currentSizeDelta.y);
TimelineEventGrid.sizeDelta = new Vector2(songBeats * PixelsPerBeat, currentSizeDelta.y);
// TimelineEventGrid.sizeDelta = new Vector2(songBeats * PixelsPerBeat, currentSizeDelta.y);
RealTimelineContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x / Zoom, RealTimelineContent.sizeDelta.y);
}
public void CreateWaveform()
@ -415,11 +414,52 @@ namespace HeavenStudio.Editor.Track
{
RectTransformUtility.ScreenPointToLocalPointInRectangle(EventContent, Input.mousePosition, Editor.instance.EditorCamera, out relativeMousePos);
MouseInTimeline = this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(EventContent, Input.mousePosition, Editor.instance.EditorCamera);
/*
if (MouseInTimeline)
{
var wheel = Input.mouseScrollDelta.y;
if (wheel != 0)
{
var incre = 0.0f;
if (wheel > 0)
{
incre += wheel * (Zoom * 0.25f);
}
else
{
incre += wheel * (Zoom * 0.2f);
}
var v = new Vector3[4];
TimelineScroll.viewport.GetWorldCorners(v);
var viewportPos = Editor.instance.EditorCamera.WorldToScreenPoint(v[0]);
var left = leftSide;
var viewportWidth = TimelineScroll.viewport.rect.width;
var localPointRec = Mathf.Lerp(left, left + (viewportWidth / Zoom),
Mathp.Normalize(Input.mousePosition.x, viewportPos.x, viewportPos.x + viewportWidth));
var xPixels = (localPointRec * incre);
xPixels *= (Zoom);
TimelineContent.anchoredPosition = new Vector2(
TimelineContent.anchoredPosition.x - xPixels,
TimelineContent.anchoredPosition.y
);
Zoom += incre;
Zoom = Mathf.Clamp(Zoom, 1, 1000);
}
}
*/
MousePos2Beat = relativeMousePos.x / PixelsPerBeat;
MousePos2Layer = Mathf.Clamp(Mathf.FloorToInt(-(relativeMousePos.y) / LayerHeight()), 0, LayerCount - 1);
MouseInTimeline = this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(EventContent, Input.mousePosition, Editor.instance.EditorCamera);
Conductor cond = Conductor.instance;
// waveform.rectTransform.anchoredPosition = new Vector2(
// -(GameManager.instance.Beatmap.data.offset / (60.0f / GameManager.instance.Beatmap.bpm)),
@ -516,11 +556,11 @@ namespace HeavenStudio.Editor.Track
if (Input.GetKey(KeyCode.LeftArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.A)))
{
TimelineContent.transform.localPosition += new Vector3(moveSpeed * Time.deltaTime, 0);
RealTimelineContent.transform.localPosition += new Vector3(moveSpeed * Time.deltaTime, 0);
}
else if (Input.GetKey(KeyCode.RightArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.D)))
{
TimelineContent.transform.localPosition += new Vector3(-moveSpeed * Time.deltaTime, 0);
RealTimelineContent.transform.localPosition += new Vector3(-moveSpeed * Time.deltaTime, 0);
}
}
#endregion
@ -545,7 +585,7 @@ namespace HeavenStudio.Editor.Track
if (cond.isPlaying)
PlaybackFocus(true);
TimelineContent.transform.localPosition = new Vector3(Mathf.Clamp(TimelineContent.transform.localPosition.x, Mathf.NegativeInfinity, 0), TimelineContent.transform.localPosition.y);
RealTimelineContent.transform.localPosition = new Vector3(Mathf.Clamp(RealTimelineContent.transform.localPosition.x, Mathf.NegativeInfinity, 0), RealTimelineContent.transform.localPosition.y);
CurrentTempo.text = $" = {cond.songBpm}";
@ -565,7 +605,7 @@ namespace HeavenStudio.Editor.Track
layerRect.sizeDelta = new Vector2(layerRect.sizeDelta.x, LayerHeight());
}
TimelineContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x, LayerHeight() * LayerCount);
RealTimelineContent.sizeDelta = new Vector2(RealTimelineContent.sizeDelta.x, LayerHeight() * LayerCount);
TimelineBlockManager.Instance.UpdateMarkers();
BoxSelection.instance.LayerSelectUpdate();
@ -573,6 +613,8 @@ namespace HeavenStudio.Editor.Track
public void LateUpdate()
{
TimelineContent.anchoredPosition = RealTimelineContent.anchoredPosition;
TopPanelContent.anchoredPosition = new Vector2(TimelineContent.anchoredPosition.x, TopPanelContent.anchoredPosition.y);
TopPanelContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x, TopPanelContent.sizeDelta.y);
@ -729,10 +771,10 @@ namespace HeavenStudio.Editor.Track
{
var lerpSpd = (lerp) ? 12f : 10000000; // im lazy
var newPos = new Vector3((-Conductor.instance.songPositionInBeats * PixelsPerBeat) + 200, TimelineContent.transform.localPosition.y);
var newPos = new Vector3((-Conductor.instance.songPositionInBeats * PixelsPerBeat) + 200, RealTimelineContent.transform.localPosition.y);
newPos.x = Mathf.Max(newPos.x, -(TimelineContent.rect.width - TimelineScroll.viewport.rect.width));
TimelineContent.transform.localPosition =
Vector3.Lerp(TimelineContent.transform.localPosition, newPos, Time.deltaTime * lerpSpd);
RealTimelineContent.transform.localPosition =
Vector3.Lerp(RealTimelineContent.transform.localPosition, newPos, Time.deltaTime * lerpSpd);
}
public void WaveformToggle()
@ -1099,6 +1141,13 @@ namespace HeavenStudio.Editor.Track
}
}
public void OnZoom(float zoom)
{
Zoom = zoom;
FitToSong();
TimelineBlockManager.Instance.OnZoom();
}
public void UpdateOffsetText()
{
// show up to 4 decimal places

View file

@ -21,6 +21,7 @@ namespace HeavenStudio.Editor.Track
private int lastMarkerToCareAbout = 0;
private Timeline timeline;
private RiqEntity entityToSet;
public bool InteractingWithEvents { get; private set; } = false;
@ -75,6 +76,14 @@ namespace HeavenStudio.Editor.Track
return marker;
}
public void OnZoom()
{
foreach (var marker in EntityMarkers.Values)
{
marker.SetWidthHeight();
}
}
public void UpdateMarkers()
{
var timeLeft = timeline.leftSide;
@ -143,7 +152,6 @@ namespace HeavenStudio.Editor.Track
foreach (var block in EntityMarkers.Values)
{
var index = sortedBlocks.FindIndex(c => c.entity.guid == block.entity.guid);
Debug.Log(index);
block.transform.SetSiblingIndex(index + 1);
i++;

View file

@ -12,6 +12,8 @@ namespace HeavenStudio.Editor.Track
{
public class TimelineEventObj : MonoBehaviour
{
public bool interacting;
private Vector3 lastPos;
public Vector2 moveStartPos;
private RectTransform rectTransform;
@ -116,6 +118,8 @@ namespace HeavenStudio.Editor.Track
hasPropertiesIcon.enabled = action.actionName != "switchGame" && action.parameters != null && action.parameters.Count > 0;
SetColor((int)entity["track"]);
SetWidthHeight();
selectedImage.gameObject.SetActive(false);
}
public void SetEntity(RiqEntity entity)
@ -136,23 +140,8 @@ namespace HeavenStudio.Editor.Track
eventLabel.overflowMode = (mouseHovering || moving) ? TextOverflowModes.Overflow : TextOverflowModes.Ellipsis;
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, Timeline.instance.LayerHeight());
Icon.rectTransform.sizeDelta = new Vector2(Timeline.instance.LayerHeight() - 8, Timeline.instance.LayerHeight() - 8);
eventLabel.rectTransform.offsetMin = new Vector2(Icon.rectTransform.anchoredPosition.x + Icon.rectTransform.sizeDelta.x + 4, eventLabel.rectTransform.offsetMin.y);
SetColor((int)entity["track"]);
selectedImage.gameObject.SetActive(selected || mouseHovering);
if (selected)
{
/*
if (Input.GetKeyDown(KeyCode.Delete))
{
Selections.instance.Deselect(this);
Timeline.instance.DestroyEventObject(entity);
}
*/
if (moving)
outline.color = Color.magenta;
else
@ -233,6 +222,8 @@ namespace HeavenStudio.Editor.Track
{
marker.entity.beat = Mathf.Max(Timeline.instance.MousePos2BeatSnap - marker.initMoveX, 0);
marker.entity["track"] = Mathf.Clamp(Timeline.instance.MousePos2Layer - marker.initMoveY, 0, Timeline.instance.LayerCount - 1);
marker.SetColor((int)entity["track"]);
marker.SetWidthHeight();
}
}
}
@ -309,6 +300,7 @@ namespace HeavenStudio.Editor.Track
changedSiblingIndex = false;
mouseHovering = true;
selectedImage.gameObject.SetActive(true);
}
public void HoverExit()
@ -316,6 +308,7 @@ namespace HeavenStudio.Editor.Track
if (changedSiblingIndex)
gameObject.transform.SetSiblingIndex(lastSiblingIndex);
mouseHovering = false;
selectedImage.gameObject.SetActive(false);
}
public void OnDragMain()
@ -471,26 +464,7 @@ namespace HeavenStudio.Editor.Track
public void SetColor(int type)
{
Color c = Color.white;
switch (type)
{
case 0:
c = EditorTheme.theme.properties.Layer1Col.Hex2RGB();
break;
case 1:
c = EditorTheme.theme.properties.Layer2Col.Hex2RGB();
break;
case 2:
c = EditorTheme.theme.properties.Layer3Col.Hex2RGB();
break;
case 3:
c = EditorTheme.theme.properties.Layer4Col.Hex2RGB();
break;
case 4:
c = EditorTheme.theme.properties.Layer5Col.Hex2RGB();
break;
}
// c = new Color(c.r, c.g, c.b, 0.85f);
var c = EditorTheme.theme.LayersGradient.Evaluate(type / (float)(Timeline.instance.LayerCount - 1));
transform.GetChild(0).GetComponent<Image>().color = c;
if (resizable)
@ -500,6 +474,13 @@ namespace HeavenStudio.Editor.Track
}
}
public void SetWidthHeight()
{
rectTransform.sizeDelta = new Vector2(entity.length * Timeline.instance.PixelsPerBeat, Timeline.instance.LayerHeight());
Icon.rectTransform.sizeDelta = new Vector2(Timeline.instance.LayerHeight() - 8, Timeline.instance.LayerHeight() - 8);
eventLabel.rectTransform.offsetMin = new Vector2(Icon.rectTransform.anchoredPosition.x + Icon.rectTransform.sizeDelta.x + 4, eventLabel.rectTransform.offsetMin.y);
}
public int GetTrack()
{
return (int)Mathf.Round(this.transform.localPosition.y / Timeline.instance.LayerHeight()) * -1;
@ -517,5 +498,15 @@ namespace HeavenStudio.Editor.Track
}
#endregion
public void OnSelect()
{
selectedImage.gameObject.SetActive(true);
}
public void OnDeselect()
{
selectedImage.gameObject.SetActive(false);
}
}
}

View file

@ -0,0 +1,82 @@
using UnityEngine;
using UnityEngine.EventSystems;
namespace HeavenStudio.Editor.Track
{
public class TimelineZoom : MonoBehaviour, IScrollHandler
{
[SerializeField] private float minScale = 0.5f;
[SerializeField] private float maxScale => float.MaxValue;
[SerializeField] private Vector2 initialScale = Vector2.one;
private Vector3 _scale;
private Vector2 relMousePos;
private RectTransform rectTransform;
private void Awake()
{
initialScale = transform.localScale;
rectTransform = transform as RectTransform;
_scale.Set(initialScale.x, initialScale.y, 1);
rectTransform.localScale = _scale;
}
public void OnScroll(PointerEventData eventData)
{
if (Conductor.instance.NotStopped()) return;
relMousePos = rectTransform.anchoredPosition;
Vector2 relativeMousePosition;
var cam = Editor.instance.EditorCamera;
if (cam == null) Debug.LogError("Camera not set!");
RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, Input.mousePosition, cam, out relativeMousePosition);
float delta = eventData.scrollDelta.y;
if (delta > 0)
{
Zoom(0.25f * _scale.x, relativeMousePosition);
}
else if (delta < 0)
{
var incre = -0.2f * _scale.x;
if (_scale.x + incre > minScale - 0.1f)
Zoom(-0.2f * _scale.x, relativeMousePosition);
}
}
public void Zoom(float incre, Vector2 relativeMousePosition)
{
if (!(_scale.x < maxScale)) return;
var newScale = Mathf.Clamp(_scale.x + incre, minScale, maxScale);
_scale.Set(newScale, 1, 1);
relativeMousePosition = new Vector2(relativeMousePosition.x, 0);
relMousePos -= (relativeMousePosition * incre);
rectTransform.localScale = _scale;
rectTransform.anchoredPosition = relMousePos;
rectTransform.localScale =
new Vector3(Mathf.Clamp(rectTransform.localScale.x, minScale, Mathf.Infinity),
rectTransform.localScale.y);
Timeline.instance.OnZoom(newScale);
}
public void SetNewPos(float newX)
{
relMousePos = new Vector2(newX, relMousePos.y);
}
public void ResetZoom()
{
_scale.Set(1, 1, 1);
rectTransform.localScale = _scale;
}
}
}

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d6a4c5ae13e9de743befd392956aaea7
guid: 8e80cb56c71364447b2840dfa6622172
MonoImporter:
externalObjects: {}
serializedVersion: 2

View file

@ -1,82 +0,0 @@
using UnityEngine;
using UnityEngine.EventSystems;
using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray;
namespace HeavenStudio.Editor.Track
{
public class ZoomComponent : MonoBehaviour, IScrollHandler
{
[SerializeField] float _minimumScale = 0.5f;
[SerializeField] Vector2 _initialScale = Vector2.one;
[SerializeField] float _maximumScale = 3f;
[SerializeField] float _scaleIncrement = .5f;
[HideInInspector] Vector3 _scale;
RectTransform _thisTransform;
private void Awake()
{
_initialScale = transform.localScale;
_thisTransform = transform as RectTransform;
_scale.Set(_initialScale.x, _initialScale.y, 1);
_thisTransform.localScale = _scale;
}
public void OnScroll(PointerEventData eventData)
{
Vector2 relativeMousePosition;
RectTransformUtility.ScreenPointToLocalPointInRectangle(_thisTransform, Input.mousePosition, Editor.instance.EditorCamera, out relativeMousePosition);
float delta = eventData.scrollDelta.y;
delta = Mathf.Clamp(delta, -1f, 1f);
_scaleIncrement = 0.1f * _scale.x;
if (delta > 0)
{
ZoomIn(delta, relativeMousePosition);
}
else if (delta < 0)
{
ZoomOut(delta, relativeMousePosition);
}
}
public void ZoomIn(float delta, Vector2 relativeMousePosition)
{
if (!(_scale.x < _maximumScale)) return;
if (TimelineBlockManager.Instance.InteractingWithEvents || SpecialTimeline.instance.InteractingWithEvents()) return;
float incre = _scaleIncrement * delta;
var newScale = Mathf.Clamp(_scale.x + incre, _minimumScale, _maximumScale);
_scale.Set(newScale, 1, 1);
_thisTransform.localScale = _scale;
relativeMousePosition = new Vector2(relativeMousePosition.x, 0);
_thisTransform.anchoredPosition -= (relativeMousePosition * incre);
}
public void ZoomOut(float delta, Vector2 relativeMousePosition)
{
if (!(_scale.x > _minimumScale)) return;
if (TimelineBlockManager.Instance.InteractingWithEvents || SpecialTimeline.instance.InteractingWithEvents()) return;
float incre = _scaleIncrement * -delta;
var newScale = _scale.x - incre;
_scale.Set(newScale, 1, 1);
_thisTransform.localScale = _scale;
relativeMousePosition = new Vector2(relativeMousePosition.x, 0);
_thisTransform.anchoredPosition += (relativeMousePosition * incre);
}
public void ResetZoom()
{
_scale.Set(100, 1, 1);
_thisTransform.localScale = _scale;
}
}
}

View file

@ -16,6 +16,14 @@
"Layer3Col": "ffd166",
"Layer4Col": "06d6a0",
"Layer5Col": "118ab2",
"LayerColors": [
"ef476f",
"f5813d",
"ffd166",
"06d6a0",
"118ab2"
],
"EventSelectedCol": "61e5ff",
"EventNormalCol": "FFFFFF",