Too much to list all them
This commit is contained in:
parent
e0f13e5da4
commit
49b8656882
File diff suppressed because one or more lines are too long
|
|
@ -277,6 +277,12 @@ MonoBehaviour:
|
|||
m_LigatureGlyphID: 11856
|
||||
- m_ComponentGlyphIDs: 540000004600000044000000
|
||||
m_LigatureGlyphID: 8189
|
||||
- m_ComponentGlyphIDs: 2800000023000000
|
||||
m_LigatureGlyphID: 8033
|
||||
- m_ComponentGlyphIDs: 4500000023000000
|
||||
m_LigatureGlyphID: 8194
|
||||
- m_ComponentGlyphIDs: 450000004d000000
|
||||
m_LigatureGlyphID: 8024
|
||||
m_GlyphPairAdjustmentRecords:
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 51
|
||||
|
|
@ -593,6 +599,546 @@ MonoBehaviour:
|
|||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: -190041824
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 40
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 13
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 40
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 15
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 40
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 90
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 40
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 220
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 40
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 222
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 83
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 13
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 83
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 15
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 83
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 96
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 83
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 3.6000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 122
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 77
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 10
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 77
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 62
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 77
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 94
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 77
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 96
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 77
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 122
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 52
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 13
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 52
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 15
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 52
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 87
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 52
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 90
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 52
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 220
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 52
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 222
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 69
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 10
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 69
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 62
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 69
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 94
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 36
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 90
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 36
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 220
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 36
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 222
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 14
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 53
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 55
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 58
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 88
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 90
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 191
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 220
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -2.7
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 222
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 45
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 224
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: 14168352
|
||||
m_MarkToBaseAdjustmentRecords: []
|
||||
m_MarkToMarkAdjustmentRecords: []
|
||||
m_ShouldReimportFontFeatures: 0
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ RenderTexture:
|
|||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 1129
|
||||
m_Height: 635
|
||||
m_Width: 1091
|
||||
m_Height: 613
|
||||
m_AntiAliasing: 2
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 92
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ RenderTexture:
|
|||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 1693
|
||||
m_Height: 952
|
||||
m_Width: 1636
|
||||
m_Height: 919
|
||||
m_AntiAliasing: 1
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 92
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ TextureImporter:
|
|||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
|
@ -101,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ TextureImporter:
|
|||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
|
@ -101,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ TextureImporter:
|
|||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
|
@ -101,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
|
|
|||
102
Assets/Resources/Sprites/Editor/UI/wrench.asset
Normal file
102
Assets/Resources/Sprites/Editor/UI/wrench.asset
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 84a92b25f83d49b9bc132d206b370281, type: 3}
|
||||
m_Name: wrench
|
||||
m_EditorClassIdentifier:
|
||||
m_Version: 1.1.0
|
||||
m_FaceInfo:
|
||||
m_FaceIndex: 0
|
||||
m_FamilyName:
|
||||
m_StyleName:
|
||||
m_PointSize: 0
|
||||
m_Scale: 0
|
||||
m_UnitsPerEM: 0
|
||||
m_LineHeight: 0
|
||||
m_AscentLine: 0
|
||||
m_CapLine: 0
|
||||
m_MeanLine: 0
|
||||
m_Baseline: 0
|
||||
m_DescentLine: 0
|
||||
m_SuperscriptOffset: 0
|
||||
m_SuperscriptSize: 0
|
||||
m_SubscriptOffset: 0
|
||||
m_SubscriptSize: 0
|
||||
m_UnderlineOffset: 0
|
||||
m_UnderlineThickness: 0
|
||||
m_StrikethroughOffset: 0
|
||||
m_StrikethroughThickness: 0
|
||||
m_TabWidth: 0
|
||||
m_Material: {fileID: 3056117538008104560}
|
||||
spriteSheet: {fileID: 2800000, guid: 9d635a6edbcd76549a58fd1b4640cc99, type: 3}
|
||||
m_SpriteCharacterTable:
|
||||
- m_ElementType: 2
|
||||
m_Unicode: 65534
|
||||
m_GlyphIndex: 0
|
||||
m_Scale: 1
|
||||
m_Name: wrench
|
||||
m_GlyphTable:
|
||||
- m_Index: 0
|
||||
m_Metrics:
|
||||
m_Width: 64
|
||||
m_Height: 64
|
||||
m_HorizontalBearingX: -32
|
||||
m_HorizontalBearingY: 52.14
|
||||
m_HorizontalAdvance: 64
|
||||
m_GlyphRect:
|
||||
m_X: 0
|
||||
m_Y: 0
|
||||
m_Width: 64
|
||||
m_Height: 64
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
sprite: {fileID: 21300000, guid: 9d635a6edbcd76549a58fd1b4640cc99, type: 3}
|
||||
spriteInfoList: []
|
||||
fallbackSpriteAssets: []
|
||||
--- !u!21 &3056117538008104560
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: wrench Material
|
||||
m_Shader: {fileID: 4800000, guid: cf81c85f95fe47e1a27f6ae460cf182c, type: 3}
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 9d635a6edbcd76549a58fd1b4640cc99, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _ColorMask: 15
|
||||
- _CullMode: 0
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _UseUIAlphaClip: 0
|
||||
m_Colors:
|
||||
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
8
Assets/Resources/Sprites/Editor/UI/wrench.asset.meta
Normal file
8
Assets/Resources/Sprites/Editor/UI/wrench.asset.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 927b27aa43f92654698b45ec04aef8e5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Resources/Sprites/Editor/UI/wrench.png
Normal file
BIN
Assets/Resources/Sprites/Editor/UI/wrench.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
147
Assets/Resources/Sprites/Editor/UI/wrench.png.meta
Normal file
147
Assets/Resources/Sprites/Editor/UI/wrench.png.meta
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9d635a6edbcd76549a58fd1b4640cc99
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -2,14 +2,15 @@
|
|||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: karateman_cellshader
|
||||
m_Shader: {fileID: 4800000, guid: ff54fed5718ccc543808dec1f266d1c8, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
|
|
@ -55,6 +56,7 @@ Material:
|
|||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _ColorMask: 15
|
||||
|
|
@ -82,8 +84,8 @@ Material:
|
|||
m_Colors:
|
||||
- _AddColor: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _ColorAlpha: {r: 0.84705883, g: 0.8156863, b: 0.6901961, a: 1}
|
||||
- _ColorAlpha: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _ColorBravo: {r: 1, g: 0, b: 0, a: 1}
|
||||
- _ColorDelta: {r: 0.972549, g: 0.972549, b: 0.972549, a: 1}
|
||||
- _ColorDelta: {r: 0.81, g: 0.81, b: 0.81, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,8 +1,8 @@
|
|||
using System;
|
||||
|
||||
public static class AppInfo {
|
||||
public const string Version = "0.0.985";
|
||||
public static readonly DateTime Date = new DateTime(2023, 09, 22, 21, 35, 49, 591, DateTimeKind.Utc);
|
||||
public const string Version = "0.0.988";
|
||||
public static readonly DateTime Date = new DateTime(2023, 09, 25, 02, 33, 05, 270, DateTimeKind.Utc);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -683,7 +683,7 @@ namespace HeavenStudio
|
|||
GoForAPerfect.instance.Disable();
|
||||
SectionMedalsManager.instance?.OnRemixEnd();
|
||||
|
||||
GlobalGameManager.UpdateDiscordStatus(Beatmap["remixtitle"], false, true);
|
||||
GlobalGameManager.UpdateDiscordStatus(Beatmap["remixtitle"].ToString(), false, true);
|
||||
|
||||
Play(beat, 1f);
|
||||
yield break;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ namespace HeavenStudio.Editor
|
|||
boxVisual.GetChild(0).GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.BoxSelectionOutlineCol.Hex2RGB();
|
||||
|
||||
sizeText = boxVisual.GetChild(0).GetChild(1).GetComponent<TMPro.TMP_Text>();
|
||||
sizeText.text = string.Empty;
|
||||
|
||||
boxGroup = boxVisual.GetComponent<CanvasGroup>();
|
||||
}
|
||||
|
|
@ -42,7 +43,7 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
if (Input.GetMouseButtonDown(0))
|
||||
{
|
||||
if (!Timeline.instance.CheckIfMouseInTimeline() || TimelineBlockManager.Instance.InteractingWithEvents)
|
||||
if (!Timeline.instance.MouseInTimeline || TimelineBlockManager.Instance.InteractingWithEvents)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -103,7 +104,7 @@ namespace HeavenStudio.Editor
|
|||
// This doesn't take into account blocks the user cannot see, this is intentional.
|
||||
foreach (var marker in TimelineBlockManager.Instance.EntityMarkers.Values)
|
||||
{
|
||||
var markerRect = new Rect((float)marker.entity.beat, marker.entity["track"], marker.entity.length, 1);
|
||||
var markerRect = new Rect((float)marker.entity.beat, (int)marker.entity["track"], marker.entity.length, 1);
|
||||
|
||||
var boxOverMarker = boxRect.Overlaps(markerRect);
|
||||
if (boxOverMarker)
|
||||
|
|
|
|||
|
|
@ -1,210 +1,213 @@
|
|||
using System.Collections;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using Jukebox;
|
||||
using Jukebox.Legacy;
|
||||
|
||||
using HeavenStudio.Editor.Track;
|
||||
using Newtonsoft.Json;
|
||||
using UnityEditor;
|
||||
|
||||
namespace HeavenStudio.Editor.Commands
|
||||
{
|
||||
public class Selection : IAction
|
||||
public class Delete : ICommand
|
||||
{
|
||||
List<TimelineEventObj> eventObjs;
|
||||
List<TimelineEventObj> lastEventObjs;
|
||||
private List<Guid> toDeleteIds;
|
||||
private List<RiqEntityMore> deletedEntities = new();
|
||||
|
||||
public Selection(List<TimelineEventObj> eventObjs)
|
||||
struct RiqEntityMore
|
||||
{
|
||||
this.eventObjs = eventObjs;
|
||||
public RiqEntity riqEntity;
|
||||
public bool selected;
|
||||
}
|
||||
|
||||
public Delete(List<Guid> ids)
|
||||
{
|
||||
toDeleteIds = ids;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
for (int i = 0; i < lastEventObjs.Count; i++)
|
||||
for (var i = 0; i < toDeleteIds.Count; i++)
|
||||
{
|
||||
Selections.instance.ShiftClickSelect(lastEventObjs[i]);
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == toDeleteIds[i]);
|
||||
if (entity != null)
|
||||
{
|
||||
var marker = TimelineBlockManager.Instance.EntityMarkers[entity.guid];
|
||||
|
||||
var clonedEntity = entity.DeepCopy();
|
||||
clonedEntity.guid = entity.guid; // We have to do this because entities (as of when I'm typing this), do not have Guids.
|
||||
|
||||
deletedEntities.Add(new() { riqEntity = clonedEntity, selected = marker.selected });
|
||||
|
||||
|
||||
Selections.instance.Deselect(marker);
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Remove(entity);
|
||||
|
||||
TimelineBlockManager.Instance.EntityMarkers.Remove(entity.guid);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
lastEventObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
for (var i = 0; i < deletedEntities.Count; i++)
|
||||
{
|
||||
Selections.instance.ShiftClickSelect(eventObjs[i]);
|
||||
var deletedEntity = deletedEntities[i];
|
||||
GameManager.instance.Beatmap.Entities.Add(deletedEntity.riqEntity);
|
||||
var marker = TimelineBlockManager.Instance.CreateEntity(deletedEntity.riqEntity);
|
||||
|
||||
/*if (deletedEntities[i].selected)
|
||||
Selections.instance.ShiftClickSelect(marker);*/
|
||||
}
|
||||
GameManager.instance.SortEventsList();
|
||||
deletedEntities.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public class Place : ICommand
|
||||
{
|
||||
private string placedEventJson;
|
||||
private Guid placedEventID;
|
||||
|
||||
// Redo times basically
|
||||
private int placeTimes = 0;
|
||||
|
||||
public Place(string placedEventJson, Guid placedEventID)
|
||||
{
|
||||
this.placedEventJson = placedEventJson;
|
||||
this.placedEventID = placedEventID;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
if (placeTimes > 0)
|
||||
{
|
||||
var entity = JsonConvert.DeserializeObject<RiqEntity>(placedEventJson, new JsonSerializerSettings()
|
||||
{
|
||||
TypeNameHandling = TypeNameHandling.None,
|
||||
});
|
||||
entity.guid = placedEventID;
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Add(entity);
|
||||
|
||||
var marker = TimelineBlockManager.Instance.CreateEntity(entity);
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
placeTimes++;
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
var createdEntity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == placedEventID);
|
||||
if (createdEntity != null)
|
||||
{
|
||||
placedEventJson = JsonConvert.SerializeObject(createdEntity, Formatting.None, new JsonSerializerSettings()
|
||||
{
|
||||
TypeNameHandling = TypeNameHandling.None,
|
||||
NullValueHandling = NullValueHandling.Include,
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
});
|
||||
|
||||
var marker = TimelineBlockManager.Instance.EntityMarkers[createdEntity.guid];
|
||||
|
||||
Selections.instance.Deselect(marker);
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Remove(createdEntity);
|
||||
|
||||
TimelineBlockManager.Instance.EntityMarkers.Remove(createdEntity.guid);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// I spent 7 hours trying to fix this instead of sleeping, which would've probably worked better.
|
||||
// I'll go fuck myself later I'm just glad it works
|
||||
// I give massive props to people who code undo/redo systems
|
||||
// -- Starpelly
|
||||
|
||||
public class Move : IAction
|
||||
public class Move : ICommand
|
||||
{
|
||||
public List<Pos> pos = new List<Pos>();
|
||||
private readonly List<Guid> entityIDs = new();
|
||||
private EntityMove newMove;
|
||||
private EntityMove lastMove;
|
||||
|
||||
public class Pos
|
||||
private struct EntityMove
|
||||
{
|
||||
public TimelineEventObj eventObj;
|
||||
public List<double> beat;
|
||||
public List<int> layer;
|
||||
|
||||
public Vector2 lastPos_;
|
||||
public Vector3 previousPos;
|
||||
public EntityMove(List<double> beat, List<int> layer)
|
||||
{
|
||||
this.beat = beat;
|
||||
this.layer = layer;
|
||||
}
|
||||
}
|
||||
|
||||
public Move(List<TimelineEventObj> eventObjs)
|
||||
public Move(List<RiqEntity> originalEntities, List<double> newBeat, List<int> newLayer)
|
||||
{
|
||||
pos.Clear();
|
||||
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
{
|
||||
Pos p = new Pos();
|
||||
p.eventObj = eventObjs[i];
|
||||
p.lastPos_ = eventObjs[i].moveStartPos;
|
||||
p.previousPos = eventObjs[i].transform.localPosition;
|
||||
this.pos.Add(p);
|
||||
}
|
||||
entityIDs = originalEntities.Select(c => c.guid).ToList();
|
||||
newMove = new EntityMove(newBeat, newLayer);
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
lastMove = new EntityMove();
|
||||
lastMove.beat = new();
|
||||
lastMove.layer = new();
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
for (int i = 0; i < pos.Count; i++)
|
||||
for (var i = 0; i < entityIDs.Count; i++)
|
||||
{
|
||||
EnsureEventObj(i);
|
||||
pos[i].eventObj.transform.localPosition = pos[i].previousPos;
|
||||
pos[i].eventObj.entity.beat = pos[i].eventObj.transform.localPosition.x;
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityIDs[i]);
|
||||
|
||||
lastMove.beat.Add(entity.beat);
|
||||
lastMove.layer.Add((int)entity["track"]);
|
||||
|
||||
entity.beat = newMove.beat[i];
|
||||
entity["track"] = newMove.layer[i];
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
for (int i = 0; i < pos.Count; i++)
|
||||
for (var i = 0; i < entityIDs.Count; i++)
|
||||
{
|
||||
EnsureEventObj(i);
|
||||
pos[i].eventObj.transform.localPosition = pos[i].lastPos_;
|
||||
pos[i].eventObj.entity.beat = pos[i].eventObj.transform.localPosition.x;
|
||||
}
|
||||
}
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityIDs[i]);
|
||||
|
||||
private void EnsureEventObj(int id)
|
||||
{
|
||||
if (pos[id].eventObj == null)
|
||||
{
|
||||
// pos[id].eventObj = Timeline.instance.eventObjs.Find(c => c.eventObjID == pos[id].eventObj.eventObjID);
|
||||
entity.beat = lastMove.beat[i];
|
||||
entity["track"] = lastMove.layer[i];
|
||||
Debug.Log(lastMove.beat[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Place : IAction
|
||||
public class Duplicate : ICommand
|
||||
{
|
||||
TimelineEventObj eventObj;
|
||||
TimelineEventObj deletedObj;
|
||||
public string dupEntityJson;
|
||||
private readonly List<System.Guid> placedEntityIDs = new();
|
||||
|
||||
public Place(TimelineEventObj eventObj)
|
||||
public Duplicate(List<RiqEntity> original)
|
||||
{
|
||||
this.eventObj = eventObj;
|
||||
dupEntityJson = JsonConvert.SerializeObject(original, Formatting.None, new JsonSerializerSettings()
|
||||
{
|
||||
TypeNameHandling = TypeNameHandling.None,
|
||||
NullValueHandling = NullValueHandling.Include,
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
deletedObj = Timeline.instance.AddEventObject(deletedObj.entity.datamodel, false, new Vector3((float) deletedObj.entity.beat, -deletedObj.entity["track"] * Timeline.instance.LayerHeight()), deletedObj.entity, true);
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
deletedObj = eventObj;
|
||||
Selections.instance.Deselect(eventObj);
|
||||
Timeline.instance.DestroyEventObject(eventObj.entity);
|
||||
// RiqEntity e = deletedObjs[i].entity;
|
||||
// Timeline.instance.AddEventObject(e.datamodel, false, new Vector3(e.beat, -e.track * Timeline.instance.LayerHeight()), e, true, e.eventObj.eventObjID);
|
||||
}
|
||||
}
|
||||
|
||||
public class Deletion : IAction
|
||||
{
|
||||
List<TimelineEventObj> eventObjs;
|
||||
List<TimelineEventObj> deletedObjs;
|
||||
|
||||
public Deletion(List<TimelineEventObj> eventObjs)
|
||||
{
|
||||
this.eventObjs = eventObjs;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
deletedObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
{
|
||||
Selections.instance.Deselect(eventObjs[i]);
|
||||
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
deletedObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
{
|
||||
Selections.instance.Deselect(eventObjs[i]);
|
||||
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
for (int i = 0; i < deletedObjs.Count; i++)
|
||||
{
|
||||
RiqEntity e = deletedObjs[i].entity;
|
||||
eventObjs[i] = Timeline.instance.AddEventObject(e.datamodel, false, new Vector3((float)e.beat, -e["track"] * Timeline.instance.LayerHeight()), e, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Duplicate : IAction
|
||||
{
|
||||
List<TimelineEventObj> eventObjs;
|
||||
List<TimelineEventObj> copiedObjs;
|
||||
|
||||
public Duplicate(List<TimelineEventObj> eventObjs)
|
||||
{
|
||||
this.eventObjs = eventObjs;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
for (int i = 0; i < copiedObjs.Count; i++)
|
||||
{
|
||||
RiqEntity e = copiedObjs[i].entity;
|
||||
eventObjs[i] = Timeline.instance.AddEventObject(e.datamodel, false, new Vector3((float)e.beat, -e["track"] * Timeline.instance.LayerHeight()), e, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
copiedObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
{
|
||||
Selections.instance.Deselect(eventObjs[i]);
|
||||
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,37 +8,32 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
public class CommandManager : MonoBehaviour
|
||||
{
|
||||
private Stack<IAction> historyStack = new Stack<IAction>();
|
||||
private Stack<IAction> redoHistoryStack = new Stack<IAction>();
|
||||
public static CommandManager Instance { get; private set; }
|
||||
|
||||
int maxItems = 128;
|
||||
private Stack<ICommand> historyStack = new Stack<ICommand>();
|
||||
private Stack<ICommand> redoHistoryStack = new Stack<ICommand>();
|
||||
|
||||
public int HistoryCount => historyStack.Count;
|
||||
|
||||
private int maxItems = 128;
|
||||
|
||||
public bool canUndo()
|
||||
{
|
||||
return historyStack.Count > 0;
|
||||
}
|
||||
public bool canRedo()
|
||||
{
|
||||
return redoHistoryStack.Count > 0;
|
||||
}
|
||||
|
||||
public static CommandManager instance { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
instance = this;
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
public void Execute(IAction action)
|
||||
public void AddCommand(ICommand command)
|
||||
{
|
||||
action.Execute();
|
||||
historyStack.Push(action);
|
||||
command.Execute();
|
||||
historyStack.Push(command);
|
||||
redoHistoryStack.Clear();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
public void UndoCommand()
|
||||
{
|
||||
if (!canUndo() || Conductor.instance.NotStopped()) return;
|
||||
if (!CanUndo() || Conductor.instance.NotStopped()) return;
|
||||
|
||||
if (historyStack.Count > 0)
|
||||
{
|
||||
|
|
@ -47,22 +42,14 @@ namespace HeavenStudio.Editor
|
|||
}
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
public void RedoCommand()
|
||||
{
|
||||
if (!canRedo() || Conductor.instance.NotStopped()) return;
|
||||
if (!CanRedo() || Conductor.instance.NotStopped()) return;
|
||||
|
||||
if (redoHistoryStack.Count > 0)
|
||||
{
|
||||
historyStack.Push(redoHistoryStack.Peek());
|
||||
redoHistoryStack.Pop().Redo();
|
||||
}
|
||||
}
|
||||
|
||||
// this is here as to not hog up memory, "max undos" basically
|
||||
private void EnsureCapacity()
|
||||
{
|
||||
if (maxItems > 0)
|
||||
{
|
||||
redoHistoryStack.Pop().Execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -71,5 +58,15 @@ namespace HeavenStudio.Editor
|
|||
historyStack.Clear();
|
||||
redoHistoryStack.Clear();
|
||||
}
|
||||
|
||||
public bool CanUndo()
|
||||
{
|
||||
return historyStack.Count > 0;
|
||||
}
|
||||
public bool CanRedo()
|
||||
{
|
||||
return redoHistoryStack.Count > 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace HeavenStudio.Editor.Commands
|
||||
{
|
||||
public interface IAction
|
||||
{
|
||||
void Execute();
|
||||
void Undo();
|
||||
void Redo();
|
||||
}
|
||||
}
|
||||
8
Assets/Scripts/LevelEditor/Commands/ICommand.cs
Normal file
8
Assets/Scripts/LevelEditor/Commands/ICommand.cs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
namespace HeavenStudio.Editor.Commands
|
||||
{
|
||||
public interface ICommand
|
||||
{
|
||||
void Execute();
|
||||
void Undo();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 64b35e3b4d623144a82ed956ee52a136
|
||||
guid: 3e3bd3cc84702894b8dff6ecfc62e943
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
|
@ -4,7 +4,7 @@ using UnityEngine;
|
|||
|
||||
using HeavenStudio.Editor.Commands;
|
||||
|
||||
public class TestCommand : IAction
|
||||
public class TestCommand : ICommand
|
||||
{
|
||||
private GameObject prefab;
|
||||
private Vector3 pos;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,9 @@ using Jukebox;
|
|||
|
||||
using System.IO.Compression;
|
||||
using System.Text;
|
||||
using static Jukebox.Legacy.Beatmap;
|
||||
using UnityEditor;
|
||||
using System.Linq;
|
||||
|
||||
namespace HeavenStudio.Editor
|
||||
{
|
||||
|
|
@ -155,24 +158,24 @@ namespace HeavenStudio.Editor
|
|||
|
||||
if (Input.GetKeyDown(KeyCode.Delete) || Input.GetKeyDown(KeyCode.Backspace))
|
||||
{
|
||||
List<TimelineEventObj> ev = new List<TimelineEventObj>();
|
||||
for (int i = 0; i < Selections.instance.eventsSelected.Count; i++) ev.Add(Selections.instance.eventsSelected[i]);
|
||||
CommandManager.instance.Execute(new Commands.Deletion(ev));
|
||||
CommandManager.Instance.AddCommand(new Commands.Delete(Selections.instance.eventsSelected.Select(c => c.entity.guid).ToList()));
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.LeftControl))
|
||||
{
|
||||
/*
|
||||
if (Input.GetKeyDown(KeyCode.Z))
|
||||
{
|
||||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
CommandManager.instance.Redo();
|
||||
CommandManager.Instance.Redo();
|
||||
else
|
||||
CommandManager.instance.Undo();
|
||||
CommandManager.Instance.Undo();
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.Y))
|
||||
{
|
||||
CommandManager.instance.Redo();
|
||||
CommandManager.Instance.Redo();
|
||||
}
|
||||
*/
|
||||
|
||||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
{
|
||||
|
|
@ -208,12 +211,12 @@ namespace HeavenStudio.Editor
|
|||
}
|
||||
#endregion
|
||||
|
||||
if (CommandManager.instance.canUndo())
|
||||
if (CommandManager.Instance.CanUndo())
|
||||
UndoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
|
||||
else
|
||||
UndoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
|
||||
if (CommandManager.instance.canRedo())
|
||||
if (CommandManager.Instance.CanRedo())
|
||||
RedoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
|
||||
else
|
||||
RedoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
|
|
@ -426,7 +429,7 @@ namespace HeavenStudio.Editor
|
|||
currentRemixPath = path;
|
||||
remixName = Path.GetFileName(path);
|
||||
UpdateEditorStatus(false);
|
||||
CommandManager.instance.Clear();
|
||||
CommandManager.Instance.Clear();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ namespace HeavenStudio.Editor
|
|||
this.entity = entity;
|
||||
|
||||
string col = TrackToThemeColour((int)entity["track"]);
|
||||
Editor.instance.SetGameEventTitle($"Properties for <color=#{col}>{action.displayName}</color> on Beat {entity.beat}");
|
||||
Editor.instance.SetGameEventTitle($"Properties for <color=#{col}>{action.displayName}</color> on Beat {entity.beat.ToString("F2")} on <color=#{col}>Track {(int)entity["track"] + 1}</color>");
|
||||
|
||||
DestroyParams();
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ using DG.Tweening;
|
|||
using Starpelly;
|
||||
|
||||
using HeavenStudio.Editor.Track;
|
||||
using System.Text;
|
||||
|
||||
namespace HeavenStudio.Editor
|
||||
{
|
||||
|
|
@ -166,21 +167,31 @@ namespace HeavenStudio.Editor
|
|||
if (!EventCaller.FXOnlyGames().Contains(SelectedMinigame))
|
||||
{
|
||||
GameObject sg = Instantiate(EventRef, eventsParent);
|
||||
sg.GetComponent<TMP_Text>().text = "Switch Game";
|
||||
sg.GetComponentInChildren<TMP_Text>().text = "Switch Game";
|
||||
sg.SetActive(true);
|
||||
if (index == 0) sg.GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
if (index == 0) sg.GetComponentInChildren<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
} else {
|
||||
index++;
|
||||
if (SelectedMinigame.name == "gameManager") index++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < SelectedMinigame.actions.Count; i++)
|
||||
for (var i = 0; i < SelectedMinigame.actions.Count; i++)
|
||||
{
|
||||
if (SelectedMinigame.actions[i].actionName == "switchGame" || SelectedMinigame.actions[i].hidden) continue;
|
||||
GameObject g = Instantiate(EventRef, eventsParent);
|
||||
g.GetComponent<TMP_Text>().text = SelectedMinigame.actions[i].displayName;
|
||||
var action = SelectedMinigame.actions[i];
|
||||
if (action.actionName == "switchGame" || action.hidden) continue;
|
||||
|
||||
var g = Instantiate(EventRef, eventsParent);
|
||||
var label = g.GetComponentInChildren<TMP_Text>();
|
||||
|
||||
label.text = action.displayName;
|
||||
if (action.parameters != null && action.parameters.Count > 0)
|
||||
g.transform.GetChild(1).gameObject.SetActive(true);
|
||||
|
||||
if (index - 1 == i)
|
||||
label.color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
|
||||
g.SetActive(true);
|
||||
if (index - 1 == i) g.GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -203,12 +214,12 @@ namespace HeavenStudio.Editor
|
|||
|
||||
for (int i = 0; i < eventsParent.transform.childCount; i++)
|
||||
{
|
||||
var eventTxt = eventsParent.GetChild(i).GetComponent<TMP_Text>();
|
||||
var goalX = 25;
|
||||
var eventTxt = eventsParent.GetChild(i).GetChild(0).GetComponent<TMP_Text>();
|
||||
var goalX = -25;
|
||||
if (i == currentEventIndex)
|
||||
{
|
||||
eventTxt.color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
goalX = 45 + 16;
|
||||
goalX = 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -377,7 +388,7 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
if (Conductor.instance.NotStopped() || Editor.instance.inAuthorativeMenu) return;
|
||||
|
||||
if (Timeline.instance.CheckIfMouseInTimeline() && dragTimes < 1)
|
||||
if (Timeline.instance.MouseInTimeline && dragTimes < 1)
|
||||
{
|
||||
Timeline.instance.timelineState.SetState(Timeline.CurrentTimelineState.State.Selection);
|
||||
dragTimes++;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ namespace HeavenStudio.Editor
|
|||
public TMP_Dropdown dropdown;
|
||||
private Array enumVals;
|
||||
|
||||
private bool openedDropdown = false;
|
||||
|
||||
new public void SetProperties(string propertyName, object type, string caption)
|
||||
{
|
||||
InitProperties(propertyName, caption);
|
||||
|
|
@ -51,6 +53,24 @@ namespace HeavenStudio.Editor
|
|||
|
||||
private void Update()
|
||||
{
|
||||
var scrollbar = GetComponentInChildren<ScrollRect>()?.verticalScrollbar;
|
||||
|
||||
// This is bad but we'll fix it later.
|
||||
if (scrollbar != null)
|
||||
{
|
||||
if (openedDropdown == false)
|
||||
{
|
||||
openedDropdown = true;
|
||||
|
||||
var valuePos = (float)dropdown.value / (dropdown.options.Count - 1);
|
||||
var scrollVal = scrollbar.direction == Scrollbar.Direction.TopToBottom ? valuePos : 1.0f - valuePos;
|
||||
scrollbar.value = Mathf.Max(0.001f, scrollVal);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
openedDropdown = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -28,7 +28,7 @@ namespace HeavenStudio.Editor
|
|||
colorPreview.colorPicker.onColorChanged += _ =>
|
||||
parameterManager.chart[propertyName] = colorPreview.colorPicker.color;
|
||||
|
||||
Color paramCol = parameterManager.chart[propertyName];
|
||||
Color paramCol = (Color)parameterManager.chart[propertyName];
|
||||
|
||||
ColorBTN.onClick.AddListener(
|
||||
() =>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@ namespace HeavenStudio.Editor
|
|||
eventsSelected.Add(eventToAdd);
|
||||
eventToAdd.selected = true;
|
||||
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
|
||||
// CommandManager.instance.Execute(new Commands.Selection(new List<TimelineEventObj>() { eventToAdd } ));
|
||||
}
|
||||
|
||||
|
|
@ -58,6 +60,7 @@ namespace HeavenStudio.Editor
|
|||
eventToAdd.selected = false;
|
||||
eventsSelected.Remove(eventToAdd);
|
||||
}
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
|
||||
public void DragSelect(TimelineEventObj eventToAdd)
|
||||
|
|
@ -78,6 +81,7 @@ namespace HeavenStudio.Editor
|
|||
eventObjs[i].selected = true;
|
||||
eventsSelected.Add(eventObjs[i]);
|
||||
}
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
|
||||
public void DeselectAll()
|
||||
|
|
@ -87,6 +91,7 @@ namespace HeavenStudio.Editor
|
|||
@event.selected = false;
|
||||
}
|
||||
eventsSelected.Clear();
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
|
||||
public void Deselect(TimelineEventObj eventToDeselect)
|
||||
|
|
@ -96,6 +101,7 @@ namespace HeavenStudio.Editor
|
|||
eventToDeselect.selected = false;
|
||||
eventsSelected.Remove(eventToDeselect);
|
||||
}
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -12,6 +12,8 @@ using Jukebox.Legacy;
|
|||
using UnityEditor;
|
||||
using static HeavenStudio.Minigames;
|
||||
using static HeavenStudio.Util.BeatAction;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace HeavenStudio.Editor.Track
|
||||
{
|
||||
|
|
@ -43,6 +45,7 @@ namespace HeavenStudio.Editor.Track
|
|||
public float MousePos2Beat { get; private set; }
|
||||
public float MousePos2Layer { get; private set; }
|
||||
public float MousePos2BeatSnap => Mathp.Round2Nearest(MousePos2Beat + (SnapInterval() * 0.5f), SnapInterval());
|
||||
public bool MouseInTimeline { get; private set; }
|
||||
|
||||
private Vector2 relativeMousePos;
|
||||
public Vector2 RelativeMousePos => relativeMousePos;
|
||||
|
|
@ -403,6 +406,8 @@ namespace HeavenStudio.Editor.Track
|
|||
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)),
|
||||
|
|
@ -654,11 +659,6 @@ namespace HeavenStudio.Editor.Track
|
|||
return string.Format("{0:00}:{1:00}:{2:000}", minutes, seconds, milliseconds);
|
||||
}
|
||||
|
||||
public bool CheckIfMouseInTimeline()
|
||||
{
|
||||
return (this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(EventContent, Input.mousePosition, Editor.instance.EditorCamera));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Functions
|
||||
|
|
@ -817,7 +817,8 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
else
|
||||
{
|
||||
GameManager.instance.Beatmap.Entities.Add(tempEntity);
|
||||
// GameManager.instance.Beatmap.Entities.Add(tempEntity);
|
||||
Debug.LogWarning("Weird as fuck case called?");
|
||||
}
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
|
|
@ -830,9 +831,6 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
var marker = TimelineBlockManager.Instance.Pool.Get();
|
||||
|
||||
|
||||
|
||||
|
||||
marker.SetMarkerInfo();
|
||||
|
||||
if (dragNDrop)
|
||||
|
|
@ -847,6 +845,14 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
eventObjs.Add(marker);
|
||||
|
||||
var entitySerialize = JsonConvert.SerializeObject(marker.entity, Formatting.None, new JsonSerializerSettings()
|
||||
{
|
||||
TypeNameHandling = TypeNameHandling.None,
|
||||
NullValueHandling = NullValueHandling.Include,
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
});
|
||||
CommandManager.Instance.AddCommand(new Commands.Place(entitySerialize, marker.entity.guid));
|
||||
|
||||
return marker;
|
||||
}
|
||||
|
||||
|
|
@ -973,12 +979,6 @@ namespace HeavenStudio.Editor.Track
|
|||
return dup;
|
||||
}
|
||||
|
||||
public void FinalizeDuplicateEventStack()
|
||||
{
|
||||
CommandManager.instance.Execute(new Commands.Duplicate(duplicatedEventObjs));
|
||||
duplicatedEventObjs = new List<TimelineEventObj>();
|
||||
}
|
||||
|
||||
public void DestroyEventObject(RiqEntity entity)
|
||||
{
|
||||
if (EventParameterManager.instance.entity == entity)
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using UnityEngine.Pool;
|
|||
|
||||
using Jukebox;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header;
|
||||
using System.Linq;
|
||||
|
||||
namespace HeavenStudio.Editor.Track
|
||||
{
|
||||
|
|
@ -13,7 +14,7 @@ namespace HeavenStudio.Editor.Track
|
|||
public static TimelineBlockManager Instance { get; private set; }
|
||||
|
||||
public TimelineEventObj EntityTemplate;
|
||||
public Dictionary<int, TimelineEventObj> EntityMarkers = new();
|
||||
public Dictionary<Guid, TimelineEventObj> EntityMarkers = new();
|
||||
public ObjectPool<TimelineEventObj> Pool { get; private set; }
|
||||
|
||||
private int firstMarkerToCareAbout = 0;
|
||||
|
|
@ -23,6 +24,7 @@ namespace HeavenStudio.Editor.Track
|
|||
private RiqEntity entityToSet;
|
||||
|
||||
public bool InteractingWithEvents { get; private set; } = false;
|
||||
public bool MovingAnyEvents { get; private set; } = false;
|
||||
|
||||
public void SetEntityToSet(RiqEntity entity)
|
||||
{
|
||||
|
|
@ -64,6 +66,15 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
}
|
||||
|
||||
public TimelineEventObj CreateEntity(RiqEntity entity)
|
||||
{
|
||||
entityToSet = entity;
|
||||
var marker = Pool.Get();
|
||||
marker.UpdateMarker();
|
||||
|
||||
return marker;
|
||||
}
|
||||
|
||||
public void UpdateMarkers()
|
||||
{
|
||||
var timeLeft = timeline.leftSide;
|
||||
|
|
@ -87,11 +98,11 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
var active = vLeft && vRight;
|
||||
|
||||
var containsMarker = EntityMarkers.ContainsKey(entity.uid);
|
||||
var containsMarker = EntityMarkers.ContainsKey(entity.guid);
|
||||
|
||||
if (containsMarker)
|
||||
{
|
||||
var marker = EntityMarkers[entity.uid];
|
||||
var marker = EntityMarkers[entity.guid];
|
||||
if (marker.selected || marker.moving) active = true;
|
||||
}
|
||||
|
||||
|
|
@ -102,20 +113,40 @@ namespace HeavenStudio.Editor.Track
|
|||
entityToSet = entity;
|
||||
Pool.Get();
|
||||
}
|
||||
EntityMarkers[entity.uid].UpdateMarker();
|
||||
EntityMarkers[entity.guid].UpdateMarker();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EntityMarkers.ContainsKey(entity.uid))
|
||||
Pool.Release(EntityMarkers[entity.uid]);
|
||||
if (EntityMarkers.ContainsKey(entity.guid))
|
||||
Pool.Release(EntityMarkers[entity.guid]);
|
||||
}
|
||||
}
|
||||
|
||||
InteractingWithEvents = false;
|
||||
MovingAnyEvents = false;
|
||||
foreach (var marker in EntityMarkers.Values)
|
||||
{
|
||||
if (marker.moving || marker.resizing || marker.mouseHovering)
|
||||
InteractingWithEvents = true;
|
||||
if (marker.moving)
|
||||
MovingAnyEvents = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void SortMarkers()
|
||||
{
|
||||
Debug.Log("Sorted timeline blocks.");
|
||||
|
||||
var sortedBlocks = EntityMarkers.Values.OrderByDescending(c => c.entity.length).ToList();
|
||||
|
||||
var i = 0;
|
||||
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++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -130,13 +161,15 @@ namespace HeavenStudio.Editor.Track
|
|||
marker.SetEntity(entityToSet);
|
||||
marker.SetMarkerInfo();
|
||||
|
||||
SortMarkers();
|
||||
|
||||
marker.gameObject.SetActive(true);
|
||||
EntityMarkers.Add(entityToSet.uid, marker);
|
||||
EntityMarkers.Add(entityToSet.guid, marker);
|
||||
}
|
||||
|
||||
private void OnReturnMarkerToPool(TimelineEventObj marker)
|
||||
{
|
||||
EntityMarkers.Remove(marker.entity.uid);
|
||||
EntityMarkers.Remove(marker.entity.guid);
|
||||
marker.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ using Starpelly;
|
|||
using Jukebox;
|
||||
using TMPro;
|
||||
using UnityEngine.Timeline;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace HeavenStudio.Editor.Track
|
||||
{
|
||||
|
|
@ -27,6 +29,9 @@ namespace HeavenStudio.Editor.Track
|
|||
[SerializeField] private RectTransform rightDrag;
|
||||
|
||||
[SerializeField] private Image outline;
|
||||
[SerializeField] private Image hasPropertiesIcon;
|
||||
|
||||
[SerializeField] private RectTransform visibleRegion;
|
||||
|
||||
// private GameObject moveTemp;
|
||||
|
||||
|
|
@ -54,7 +59,15 @@ namespace HeavenStudio.Editor.Track
|
|||
private float lastBeat = 0.0f;
|
||||
private int lastLayer = 0;
|
||||
|
||||
float leftSide, rightSide;
|
||||
private int lastSiblingIndex;
|
||||
private bool changedSiblingIndex;
|
||||
|
||||
public float zPriority { get; private set; }
|
||||
|
||||
// Difference between mouseHovering is this is regardless if the user can see it.
|
||||
private bool mouseOver;
|
||||
|
||||
private float clickTimer = 0.0f;
|
||||
|
||||
[Header("Colors")]
|
||||
public Color NormalCol;
|
||||
|
|
@ -100,6 +113,8 @@ namespace HeavenStudio.Editor.Track
|
|||
resizeGraphic.gameObject.SetActive(resizable);
|
||||
eventLabel.text = action.displayName;
|
||||
|
||||
hasPropertiesIcon.enabled = action.actionName != "switchGame" && action.parameters != null && action.parameters.Count > 0;
|
||||
|
||||
SetColor((int)entity["track"]);
|
||||
}
|
||||
|
||||
|
|
@ -108,16 +123,26 @@ namespace HeavenStudio.Editor.Track
|
|||
this.entity = entity;
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
clickTimer += Time.deltaTime;
|
||||
}
|
||||
|
||||
public void UpdateMarker()
|
||||
{
|
||||
mouseHovering = Timeline.instance.timelineState.selected &&
|
||||
mouseOver = Timeline.instance.timelineState.selected && Timeline.instance.MouseInTimeline &&
|
||||
Timeline.instance.MousePos2Beat.IsWithin((float)entity.beat, (float)entity.beat + entity.length) &&
|
||||
Timeline.instance.MousePos2Layer == (int)entity["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)
|
||||
{
|
||||
/*
|
||||
|
|
@ -128,7 +153,6 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
*/
|
||||
|
||||
selectedImage.gameObject.SetActive(true);
|
||||
if (moving)
|
||||
outline.color = Color.magenta;
|
||||
else
|
||||
|
|
@ -136,8 +160,6 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
else
|
||||
{
|
||||
selectedImage.gameObject.SetActive(false);
|
||||
|
||||
outline.color = new Color32(0, 0, 0, 51);
|
||||
}
|
||||
|
||||
|
|
@ -154,10 +176,6 @@ namespace HeavenStudio.Editor.Track
|
|||
selectedImage.gameObject.SetActive(false);
|
||||
outline.color = new Color32(0, 0, 0, 51);
|
||||
}
|
||||
|
||||
|
||||
// rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, Timeline.instance.LayerHeight());
|
||||
// this.transform.localPosition = new Vector3(this.transform.localPosition.x, -entity["track"] * Timeline.instance.LayerHeight());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -185,7 +203,27 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
moving = false;
|
||||
|
||||
if (!isCreating && movedEntity)
|
||||
{
|
||||
List<double> lastBeats = new();
|
||||
List<int> lastLayers = new();
|
||||
foreach (var marker in Selections.instance.eventsSelected)
|
||||
{
|
||||
var entity = marker.entity;
|
||||
|
||||
lastBeats.Add(marker.entity.beat);
|
||||
lastLayers.Add((int)marker.entity["track"]);
|
||||
|
||||
entity.beat = marker.lastBeat;
|
||||
entity["track"] = marker.lastLayer;
|
||||
}
|
||||
CommandManager.Instance.AddCommand(new Commands.Move(Selections.instance.eventsSelected.Select(c => c.entity).ToList(), lastBeats, lastLayers));
|
||||
}
|
||||
|
||||
isCreating = false;
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -195,65 +233,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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
int count = 0;
|
||||
foreach (TimelineEventObj e in Timeline.instance.eventObjs)
|
||||
{
|
||||
if (e.moving)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (count > 0 && selected)
|
||||
{
|
||||
Vector3 mousePos = Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition);
|
||||
// duplicate the entity if holding alt
|
||||
if ((!wasDuplicated) && Input.GetKey(KeyCode.LeftAlt))
|
||||
{
|
||||
Selections.instance.Deselect(this);
|
||||
this.wasDuplicated = false;
|
||||
this.moving = false;
|
||||
|
||||
transform.localPosition = moveStartPos;
|
||||
OnComplete(false);
|
||||
|
||||
TimelineEventObj te = Timeline.instance.CopyEventObject(this);
|
||||
TimelineEventObj obj;
|
||||
|
||||
Selections.instance.DragSelect(te);
|
||||
|
||||
te.wasDuplicated = true;
|
||||
te.transform.localPosition = transform.localPosition;
|
||||
te.moveStartPos = transform.localPosition;
|
||||
|
||||
for (int i = 0; i < Timeline.instance.eventObjs.Count; i++)
|
||||
{
|
||||
obj = Timeline.instance.eventObjs[i];
|
||||
obj.startPosX = mousePos.x - obj.transform.position.x;
|
||||
obj.startPosY = mousePos.y - obj.transform.position.y;
|
||||
}
|
||||
|
||||
te.moving = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.transform.position = new Vector3(mousePos.x - startPosX, mousePos.y - startPosY - 0.40f, 0);
|
||||
this.transform.localPosition = new Vector3(Mathf.Max(Mathp.Round2Nearest(this.transform.localPosition.x * Timeline.instance.PixelsPerBeat, Timeline.SnapInterval()), 0), Timeline.instance.SnapToLayer(this.transform.localPosition.y));
|
||||
}
|
||||
|
||||
if (lastPos != transform.localPosition)
|
||||
{
|
||||
OnMove();
|
||||
}
|
||||
|
||||
lastPos = transform.localPosition;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if (Input.GetMouseButtonUp(0))
|
||||
|
|
@ -278,8 +259,25 @@ namespace HeavenStudio.Editor.Track
|
|||
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
|
||||
}
|
||||
|
||||
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, Timeline.instance.LayerHeight());
|
||||
rectTransform.anchoredPosition = new Vector2((float)entity.beat * Timeline.instance.PixelsPerBeat, -(int)entity["track"] * Timeline.instance.LayerHeight());
|
||||
|
||||
zPriority = entity.length;
|
||||
|
||||
if (selected)
|
||||
zPriority += 10000;
|
||||
}
|
||||
|
||||
public void LateUpdate()
|
||||
{
|
||||
var followXL = (Timeline.instance.leftSide - (float)entity.beat) * Timeline.instance.PixelsPerBeat;
|
||||
visibleRegion.offsetMin = new Vector2(
|
||||
Mathf.Clamp(followXL - 2, 0, (entity.length * Timeline.instance.PixelsPerBeat) - Timeline.instance.LayerHeight()),
|
||||
visibleRegion.offsetMin.y);
|
||||
|
||||
var followXR = (Timeline.instance.rightSide - ((float)entity.beat + entity.length)) * Timeline.instance.PixelsPerBeat;
|
||||
visibleRegion.offsetMax = new Vector2(
|
||||
Mathf.Clamp(followXR, -(entity.length * Timeline.instance.PixelsPerBeat) + 8, 0),
|
||||
visibleRegion.offsetMax.y);
|
||||
}
|
||||
|
||||
public void BeginMoving(bool setMovedEntity = true)
|
||||
|
|
@ -299,6 +297,27 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
#region ClickEvents
|
||||
|
||||
public void HoverEnter()
|
||||
{
|
||||
if (!TimelineBlockManager.Instance.MovingAnyEvents)
|
||||
{
|
||||
lastSiblingIndex = gameObject.transform.GetSiblingIndex();
|
||||
gameObject.transform.SetAsLastSibling();
|
||||
changedSiblingIndex = true;
|
||||
}
|
||||
else
|
||||
changedSiblingIndex = false;
|
||||
|
||||
mouseHovering = true;
|
||||
}
|
||||
|
||||
public void HoverExit()
|
||||
{
|
||||
if (changedSiblingIndex)
|
||||
gameObject.transform.SetSiblingIndex(lastSiblingIndex);
|
||||
mouseHovering = false;
|
||||
}
|
||||
|
||||
public void OnDragMain()
|
||||
{
|
||||
if (Input.GetMouseButton(1) || Input.GetMouseButton(2)) return;
|
||||
|
|
@ -333,7 +352,21 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
else
|
||||
{
|
||||
Selections.instance.ClickSelect(this);
|
||||
if (selected && clickTimer < 0.315f)
|
||||
{
|
||||
foreach (var marker in TimelineBlockManager.Instance.EntityMarkers.Values)
|
||||
{
|
||||
if (marker == this) continue;
|
||||
if (marker.mouseOver)
|
||||
{
|
||||
Selections.instance.ClickSelect(marker);
|
||||
marker.clickTimer = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
Selections.instance.ClickSelect(this);
|
||||
}
|
||||
}
|
||||
else if (Input.GetMouseButton(1))
|
||||
|
|
@ -360,6 +393,8 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
GridGameSelector.instance.SelectGame(datamodels[isSwitchGame ? 2 : 0], block);
|
||||
}
|
||||
|
||||
clickTimer = 0;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
@ -475,6 +510,10 @@ namespace HeavenStudio.Editor.Track
|
|||
// better safety net than canada's healthcare system
|
||||
// this is still hilarious
|
||||
// GameManager.instance.Beatmap.Entities.Remove(GameManager.instance.Beatmap.Entities.Find(c => c.eventObj = this));
|
||||
|
||||
// FINALLY, A USE CASE FOR THIS FUNCTION
|
||||
if (Timeline.instance.eventObjs.Contains(this))
|
||||
Timeline.instance.eventObjs.Remove(this);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@ namespace HeavenStudio.Common
|
|||
if (!Conductor.instance.isPlaying) return;
|
||||
Conductor.instance.Pause();
|
||||
pauseBeat = Conductor.instance.songPositionInBeatsAsDouble;
|
||||
chartTitleText.text = GameManager.instance.Beatmap["remixtitle"];
|
||||
chartArtistText.text = GameManager.instance.Beatmap["remixauthor"];
|
||||
chartTitleText.text = GameManager.instance.Beatmap["remixtitle"].ToString();
|
||||
chartArtistText.text = GameManager.instance.Beatmap["remixauthor"].ToString();
|
||||
animator.Play("PauseShow");
|
||||
SoundByte.PlayOneShot("ui/PauseIn");
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
"com.unity.nuget.newtonsoft-json": "3.2.1",
|
||||
"jillejr.newtonsoft.json-for-unity.converters": "1.5.1"
|
||||
},
|
||||
"hash": "ac56f4d95417af5dbedf20f3b8d79b9f67c72659"
|
||||
"hash": "4f75a6f71362da8c873da1e85728757213ad9017"
|
||||
},
|
||||
"com.unity.2d.sprite": {
|
||||
"version": "1.0.0",
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ PlayerSettings:
|
|||
16:10: 1
|
||||
16:9: 1
|
||||
Others: 1
|
||||
bundleVersion: 0.0.985
|
||||
bundleVersion: 0.0.988
|
||||
preloadedAssets:
|
||||
- {fileID: 102900000, guid: 5348c08b82446e0478cee8bda6c02cfc, type: 3}
|
||||
metroInputSource: 0
|
||||
|
|
@ -158,11 +158,11 @@ PlayerSettings:
|
|||
applicationIdentifier:
|
||||
Standalone: com.RHeavenStudio.Heaven-Studio
|
||||
buildNumber:
|
||||
Standalone: 985
|
||||
Standalone: 988
|
||||
iPhone: 0
|
||||
tvOS: 0
|
||||
overrideDefaultApplicationIdentifier: 0
|
||||
AndroidBundleVersionCode: 985
|
||||
AndroidBundleVersionCode: 988
|
||||
AndroidMinSdkVersion: 22
|
||||
AndroidTargetSdkVersion: 0
|
||||
AndroidPreferredInstallLocation: 1
|
||||
|
|
|
|||
Loading…
Reference in a new issue