Too much to list all them

This commit is contained in:
Braedon Lewis 2023-09-25 00:12:44 -04:00
parent e0f13e5da4
commit 49b8656882
34 changed files with 3191 additions and 1590 deletions

File diff suppressed because one or more lines are too long

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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: []

View file

@ -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: []

View file

@ -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: []

View 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: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 927b27aa43f92654698b45ec04aef8e5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View 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:

View file

@ -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

View file

@ -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);
}

View file

@ -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;

View file

@ -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)

View file

@ -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);
}
}
}
}

View file

@ -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;
}
}
}

View file

@ -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();
}
}

View file

@ -0,0 +1,8 @@
namespace HeavenStudio.Editor.Commands
{
public interface ICommand
{
void Execute();
void Undo();
}
}

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 64b35e3b4d623144a82ed956ee52a136
guid: 3e3bd3cc84702894b8dff6ecfc62e943
MonoImporter:
externalObjects: {}
serializedVersion: 2

View file

@ -4,7 +4,7 @@ using UnityEngine;
using HeavenStudio.Editor.Commands;
public class TestCommand : IAction
public class TestCommand : ICommand
{
private GameObject prefab;
private Vector3 pos;

View file

@ -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();
});
}

View file

@ -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();

View file

@ -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++;

View file

@ -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;
}
}
}
}

View file

@ -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(
() =>

View file

@ -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();
}
}
}

View file

@ -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)

View file

@ -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);
}

View file

@ -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

View file

@ -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");

View file

@ -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",

View file

@ -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