Merge branch 'release_1'

This commit is contained in:
minenice55 2023-10-05 20:31:12 -04:00
commit 9c2ae80322
111 changed files with 18006 additions and 4811 deletions

View file

@ -73,6 +73,14 @@ namespace Starpelly
return val >= min && val <= max;
}
/// <summary>
/// Returns true if a value is within a certain range.
/// </summary>
public static bool IsWithin(this Vector2 val, Vector2 min, Vector2 max)
{
return val.x.IsWithin(min.x, max.x) && val.y.IsWithin(min.y, max.y);
}
/// <summary>
/// Returns true if value is between two numbers.
/// </summary>

View file

@ -1,6 +1,6 @@
<align="center"><b>Programming</b></align>
-<indent=5%>Megaminerzero</indent>
-<indent=5%>Starpelly <alpha=#88>(Rhythm Heaven Mania)<alpha=#FF></indent>
-<indent=5%>Starpelly</indent>
-<indent=5%>minenice</indent>
-<indent=5%>huantian</indent>
-<indent=5%>Slaith12</indent>
@ -20,7 +20,7 @@
<align="center"><b>Artwork</b></align>
-<indent=5%>Ko Takeuchi <alpha=#88>(Original <i>Rhythm Heaven</i> Assets)<alpha=#FF></indent>
-<indent=5%>Nintendo <alpha=#88>(Original <i>Rhythm Heaven</i> Assets)<alpha=#FF></indent>
-<indent=5%>Starpelly <alpha=#88>(Rhythm Heaven Mania)<alpha=#FF></indent>
-<indent=5%>Starpelly</indent>
-<indent=5%>OctaHeart <alpha=#88>(Logo)<alpha=#FF></indent>
-<indent=5%>ev <alpha=#88>(Editor UI)<alpha=#FF></indent>
-<indent=5%>Seanski2 <alpha=#88>(Minigame Icons)<alpha=#FF></indent>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

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

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 00ba8359d55aea94799b54c203adf38f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
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: FOT-Rodin Pro DB Entity
m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -39,6 +40,7 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Ambient: 1
- _Bevel: 0.5

View file

@ -14,9 +14,9 @@ Texture2D:
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 2
m_Width: 0
m_Height: 0
m_CompleteImageSize: 0
m_Width: 1
m_Height: 1
m_CompleteImageSize: 1
m_MipsStripped: 0
m_TextureFormat: 1
m_MipCount: 1
@ -40,8 +40,8 @@ Texture2D:
m_LightmapFormat: 0
m_ColorSpace: 0
m_PlatformBlob:
image data: 0
_typelessdata:
image data: 1
_typelessdata: 00
m_StreamData:
serializedVersion: 2
offset: 0
@ -59,21 +59,14 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
m_Name: FOT-Rodin Pro DB SDF Dynamic
m_EditorClassIdentifier:
hashCode: -716773919
material: {fileID: 5296781804180034499}
materialHashCode: -1646043487
m_Version: 1.1.0
m_SourceFontFileGUID: d9b391ecd583bd54fa458814fbcad7be
m_SourceFontFile_EditorRef: {fileID: 12800000, guid: d9b391ecd583bd54fa458814fbcad7be, type: 3}
m_SourceFontFile: {fileID: 12800000, guid: d9b391ecd583bd54fa458814fbcad7be, type: 3}
m_AtlasPopulationMode: 1
m_FaceInfo:
m_FaceIndex: 0
m_FamilyName: FOT-Rodin Pro
m_StyleName: DB
m_PointSize: 90
m_Scale: 1
m_UnitsPerEM: 0
m_UnitsPerEM: 1000
m_LineHeight: 180
m_AscentLine: 79.200005
m_CapLine: 71
@ -89,59 +82,16 @@ MonoBehaviour:
m_StrikethroughOffset: 20
m_StrikethroughThickness: 4.5
m_TabWidth: 31
m_GlyphTable: []
m_CharacterTable: []
m_AtlasTextures:
- {fileID: -7616882842637102995}
m_AtlasTextureIndex: 0
m_IsMultiAtlasTexturesEnabled: 1
m_ClearDynamicDataOnBuild: 1
m_UsedGlyphRects: []
m_FreeGlyphRects:
- m_X: 0
m_Y: 0
m_Width: 2047
m_Height: 2047
m_fontInfo:
Name:
PointSize: 0
Scale: 0
CharacterCount: 0
LineHeight: 0
Baseline: 0
Ascender: 0
CapHeight: 0
Descender: 0
CenterLine: 0
SuperscriptOffset: 0
SubscriptOffset: 0
SubSize: 0
Underline: 0
UnderlineThickness: 0
strikethrough: 0
strikethroughThickness: 0
TabWidth: 0
Padding: 0
AtlasWidth: 0
AtlasHeight: 0
atlas: {fileID: 0}
m_AtlasWidth: 2048
m_AtlasHeight: 2048
m_AtlasPadding: 9
m_AtlasRenderMode: 4165
m_glyphInfoList: []
m_KerningTable:
kerningPairs: []
m_FontFeatureTable:
m_GlyphPairAdjustmentRecords: []
fallbackFontAssets: []
m_FallbackFontAssetTable: []
m_Material: {fileID: 5296781804180034499}
m_SourceFontFileGUID: d9b391ecd583bd54fa458814fbcad7be
m_CreationSettings:
sourceFontFileName:
sourceFontFileGUID: d9b391ecd583bd54fa458814fbcad7be
faceIndex: 0
pointSizeSamplingMode: 0
pointSize: 90
padding: 9
paddingMode: 0
packingMode: 0
atlasWidth: 2048
atlasHeight: 2048
@ -153,6 +103,115 @@ MonoBehaviour:
fontStyleModifier: 0
renderMode: 4165
includeFontFeatures: 0
m_SourceFontFile: {fileID: 12800000, guid: d9b391ecd583bd54fa458814fbcad7be, type: 3}
m_SourceFontFilePath:
m_AtlasPopulationMode: 1
InternalDynamicOS: 0
m_GlyphTable: []
m_CharacterTable: []
m_AtlasTextures:
- {fileID: -7616882842637102995}
m_AtlasTextureIndex: 0
m_IsMultiAtlasTexturesEnabled: 1
m_GetFontFeatures: 1
m_ClearDynamicDataOnBuild: 1
m_AtlasWidth: 2048
m_AtlasHeight: 2048
m_AtlasPadding: 9
m_AtlasRenderMode: 4165
m_UsedGlyphRects: []
m_FreeGlyphRects:
- m_X: 0
m_Y: 0
m_Width: 2047
m_Height: 2047
m_FontFeatureTable:
m_MultipleSubstitutionRecords: []
m_LigatureSubstitutionRecords:
- m_ComponentGlyphIDs: 4f000000100000004e000000
m_LigatureGlyphID: 11868
- m_ComponentGlyphIDs: 4f00000054000000
m_LigatureGlyphID: 8029
m_GlyphPairAdjustmentRecords:
- m_FirstAdjustmentRecord:
m_GlyphIndex: 79
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: -1702022880
- m_FirstAdjustmentRecord:
m_GlyphIndex: 79
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0.45000002
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 90
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: -1702022880
- m_FirstAdjustmentRecord:
m_GlyphIndex: 87
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -4.5
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 13
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: -1702022880
- m_FirstAdjustmentRecord:
m_GlyphIndex: 87
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -4.5
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 15
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: -1702022880
- m_FirstAdjustmentRecord:
m_GlyphIndex: 87
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 4.1400003
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 122
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: -1702022880
m_MarkToBaseAdjustmentRecords: []
m_MarkToMarkAdjustmentRecords: []
m_ShouldReimportFontFeatures: 0
m_FallbackFontAssetTable: []
m_FontWeightTable:
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
@ -181,6 +240,33 @@ MonoBehaviour:
boldSpacing: 7
italicStyle: 35
tabSize: 10
m_fontInfo:
Name:
PointSize: 0
Scale: 0
CharacterCount: 0
LineHeight: 0
Baseline: 0
Ascender: 0
CapHeight: 0
Descender: 0
CenterLine: 0
SuperscriptOffset: 0
SubscriptOffset: 0
SubSize: 0
Underline: 0
UnderlineThickness: 0
strikethrough: 0
strikethroughThickness: 0
TabWidth: 0
Padding: 0
AtlasWidth: 0
AtlasHeight: 0
m_glyphInfoList: []
m_KerningTable:
kerningPairs: []
fallbackFontAssets: []
atlas: {fileID: 0}
--- !u!21 &5296781804180034499
Material:
serializedVersion: 8

File diff suppressed because one or more lines are too long

View file

@ -59,7 +59,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.20392157, g: 0.20392157, b: 0.20392157, a: 1}
m_Color: {r: 0.6509804, g: 0.6509804, b: 0.6509804, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
@ -185,15 +185,17 @@ MonoBehaviour:
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
@ -323,7 +325,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 50, y: 50}
m_SizeDelta: {x: 32, y: 32}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8995444694228702769
CanvasRenderer:
@ -474,10 +476,10 @@ RectTransform:
m_Father: {fileID: 8995444695563632161}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -124.099976}
m_SizeDelta: {x: 1202, y: 27.28003}
m_SizeDelta: {x: -64, y: 27.28003}
m_Pivot: {x: 0.5, y: 0}
--- !u!222 &8995444694302297417
CanvasRenderer:
@ -494,7 +496,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8995444694302297421}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
@ -535,7 +537,7 @@ MonoBehaviour:
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_Spacing: 4
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 1
@ -668,15 +670,17 @@ MonoBehaviour:
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
@ -824,7 +828,7 @@ RectTransform:
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -38, y: -38}
m_SizeDelta: {x: 52, y: 52}
m_SizeDelta: {x: 42, y: 42}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8995444695466722202
CanvasRenderer:
@ -854,7 +858,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Sprite: {fileID: 21300000, guid: 77703dfffd29ca6439338d6adfc62c9b, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1

View file

@ -27,6 +27,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216358884288554}
m_Father: {fileID: 3276216360127051165}
@ -73,6 +74,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216360411725377}
m_Father: {fileID: 3276216359486296926}
@ -150,6 +152,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216359673638260}
m_Father: {fileID: 3276216358621914657}
@ -283,6 +286,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216359294279433}
m_Father: {fileID: 3276216359814484404}
@ -416,6 +420,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216360127051165}
m_Father: {fileID: 3276216359861115896}
@ -507,14 +512,15 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3276216360127051165}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 705.5, y: 0}
m_SizeDelta: {x: 1371, y: 0}
m_AnchoredPosition: {x: 627.5, y: 0}
m_SizeDelta: {x: 1215, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3276216359264292463
CanvasRenderer:
@ -587,15 +593,17 @@ MonoBehaviour:
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
@ -675,6 +683,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3276216358902658882}
m_RootOrder: 0
@ -750,6 +759,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3276216359692268649}
m_RootOrder: 0
@ -826,6 +836,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216359861115896}
- {fileID: 3276216358758736494}
@ -918,6 +929,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3276216358884288554}
m_RootOrder: 0
@ -991,6 +1003,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216359458918366}
m_Father: {fileID: 3276216360247263705}
@ -1028,6 +1041,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216358902658882}
m_Father: {fileID: 3276216360127051165}
@ -1075,6 +1089,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216359023061022}
- {fileID: 3276216360247263705}
@ -1141,8 +1156,8 @@ MonoBehaviour:
m_Vertical: 1
m_MovementType: 1
m_Elasticity: 0.1
m_Inertia: 0
m_DecelerationRate: 0.135
m_Inertia: 1
m_DecelerationRate: 0.01
m_ScrollSensitivity: 35
m_Viewport: {fileID: 3276216359023061022}
m_HorizontalScrollbar: {fileID: 0}
@ -1182,6 +1197,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216358621914657}
- {fileID: 3276216359264292461}
@ -1263,6 +1279,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3276216359692268649}
m_Father: {fileID: 3276216359861115896}
@ -1388,6 +1405,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3276216358758736494}
m_RootOrder: 0
@ -1468,15 +1486,17 @@ MonoBehaviour:
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0

View file

@ -14,8 +14,8 @@ RenderTexture:
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 5
m_Width: 1728
m_Height: 972
m_Width: 1109
m_Height: 623
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: 2592
m_Height: 1458
m_Width: 1663
m_Height: 934
m_AntiAliasing: 1
m_MipCount: -1
m_DepthStencilFormat: 92

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 B

After

Width:  |  Height:  |  Size: 225 B

View file

@ -3,7 +3,7 @@ guid: f9232c079e126cd48a7344b23eaf42a5
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
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: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -106,12 +132,13 @@ TextureImporter:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
internalID: 1537655665
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -20,6 +20,15 @@ AnimationClip:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 4.8
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.016666668
value: 4.8
@ -48,15 +57,13 @@ AnimationClip:
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- time: 0.016666668
value: {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
value: {fileID: 1473124820, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
- time: 0.05
value: {fileID: -1354652295505547112, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
value: {fileID: -91994477, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
- time: 0.083333336
value: {fileID: -159972075433952791, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
value: {fileID: -1267118016, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
- time: 0.11666667
value: {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
value: {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
attribute: m_Sprite
path: Graphic
classID: 114
@ -83,11 +90,10 @@ AnimationClip:
customType: 0
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- {fileID: -1354652295505547112, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- {fileID: -159972075433952791, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- {fileID: 1473124820, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
- {fileID: -91994477, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
- {fileID: -1267118016, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
- {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
@ -112,6 +118,15 @@ AnimationClip:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 4.8
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.016666668
value: 4.8

View file

@ -20,7 +20,7 @@ AnimationClip:
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: -9052558874090446877, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
value: {fileID: 2011919177, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
attribute: m_Sprite
path: Graphic
classID: 114
@ -40,7 +40,7 @@ AnimationClip:
customType: 0
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: -9052558874090446877, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- {fileID: 2011919177, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}

View file

@ -20,7 +20,7 @@ AnimationClip:
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
value: {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
attribute: m_Sprite
path: Graphic
classID: 114
@ -40,7 +40,7 @@ AnimationClip:
customType: 0
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
- {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -3,7 +3,7 @@ guid: b7a1fac8b59b4d14289fa198206ef47e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -33,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -67,10 +67,10 @@ TextureImporter:
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
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

@ -3,7 +3,7 @@ guid: 39656548c069d5541a9d9d1a808a76e4
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 6dd981c3e3319f243b56549e3f26fb72
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
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: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -0,0 +1,257 @@
fileFormatVersion: 2
guid: 655fc978fc6e6ca41a3d3104b43298bd
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: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
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: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
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:
- serializedVersion: 2
name: autoplay_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 32
height: 32
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 672ded1a8ba4c93438f5ce6ac146c5c9
internalID: -1983818443
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: autoplay_1
rect:
serializedVersion: 2
x: 32
y: 0
width: 32
height: 32
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 801ff7807807f9b4cbf93407358070b8
internalID: -1267118016
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: autoplay_2
rect:
serializedVersion: 2
x: 64
y: 0
width: 32
height: 32
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 474e20f632bd42344af459b1022c612a
internalID: -91994477
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: autoplay_3
rect:
serializedVersion: 2
x: 96
y: 0
width: 32
height: 32
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 48e39d246f49dc546b5b07e88238cd83
internalID: 1473124820
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: autoplay_4
rect:
serializedVersion: 2
x: 128
y: 0
width: 32
height: 32
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: d479d07287a393649b83a8a3dd03c235
internalID: 2011919177
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable:
autoplay_0: -1983818443
autoplay_1: -1267118016
autoplay_2: -91994477
autoplay_3: 1473124820
autoplay_4: 2011919177
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -3,7 +3,7 @@ guid: e85d5d286a8191b499c570d33dd0899c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -33,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -67,10 +67,10 @@ TextureImporter:
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
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

@ -3,7 +3,7 @@ guid: 49e59e302f4a24a4da56bd63185fcb01
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

View file

@ -0,0 +1,147 @@
fileFormatVersion: 2
guid: 4ea196d68cba90a4d8b08ad6fe012f49
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: 0
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: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
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

@ -3,7 +3,7 @@ guid: dd516f1a3380ca642939d4fa86603249
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

@ -3,7 +3,7 @@ guid: 05e0181d5d7f7144f9263d1ccca41112
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 55bb46a7614176b4c941a5caf846f7e8
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 57971d0838f02124080be29466f8f638
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
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: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -3,7 +3,7 @@ guid: ebef38bdbaa406747b71f2e1944deda2
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -41,7 +42,7 @@ TextureImporter:
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,9 +101,75 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
sprites:
- serializedVersion: 2
name: top
rect:
serializedVersion: 2
x: 0
y: 24
width: 64
height: 40
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 1, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: b2234eea6e56b0345980a27759a8fc26
internalID: 1735959733
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: bottom
rect:
serializedVersion: 2
x: 0
y: 0
width: 64
height: 25
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 64b90d23bd4f157469bed27275bccb02
internalID: -851579828
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
@ -112,6 +180,9 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable:
bottom: -851579828
top: 1735959733
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,147 @@
fileFormatVersion: 2
guid: 1b346468a32e5fa45ba9e3343c18fc43
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: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 7
spritePivot: {x: 0.5, y: 0}
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: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
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: 1537655665
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -3,7 +3,7 @@ guid: a1e215e768b7d1b4e93a60f8ce9c10fc
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 8ae7d31f585b0cf4483963e20305e4f8
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 903 B

View file

@ -0,0 +1,147 @@
fileFormatVersion: 2
guid: 42ffabfe4c37e104d8e9d884fe7db980
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: 0
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: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
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

@ -3,7 +3,7 @@ guid: 1256a95b617ffc0458b3aec7fba83afe
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: ba34210de39bafc4d9bc0bb9163d83c7
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 0c2c8bed0306b7d408a268884c6af79b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 521af96912848ef4887f49a524efb143
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

View file

@ -0,0 +1,345 @@
fileFormatVersion: 2
guid: bd48ded17f064414eb670529c2375358
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: 2
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: 2048
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:
- serializedVersion: 2
name: right
rect:
serializedVersion: 2
x: 0
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 5695434ae09b7894888b9766c0fafe5c
internalID: -1106677661
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: top
rect:
serializedVersion: 2
x: 64
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1350a8d457f4c424f98c69ce6e6df1be
internalID: 1099965293
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: topleft
rect:
serializedVersion: 2
x: 128
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 3f2592c6e00f5894ab312ff3ce6f5dc1
internalID: -997670817
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: topright
rect:
serializedVersion: 2
x: 192
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 782584f2863184b458a12717d9678b79
internalID: -1853719049
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: all
rect:
serializedVersion: 2
x: 256
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 0f3cd91703739b04b86d55ba7d1b25e9
internalID: 1401309272
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: bottom
rect:
serializedVersion: 2
x: 320
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: e3d49d09c750a384aac9b16bb51b26a2
internalID: 1782490243
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: bottomleft
rect:
serializedVersion: 2
x: 384
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: ed9f01dd79b2205449a42f45cb342289
internalID: 1973936073
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: bottomright
rect:
serializedVersion: 2
x: 448
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 03b889313964dcb47baff7696505e9c8
internalID: -520399450
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: left
rect:
serializedVersion: 2
x: 512
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 6, y: 6, z: 6, w: 6}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: c40d45e6189a98a4c873384925aab9f1
internalID: 1937931747
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable:
all: 1401309272
bottom: 1782490243
bottomleft: 1973936073
bottomright: -520399450
left: 1937931747
right: -1106677661
top: 1099965293
topleft: -997670817
topright: -1853719049
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -3,7 +3,7 @@ guid: 9ae7ecf2cc001d14595ec03e1d4d86a6
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 6e7b88d9d62ed1b429c63b83745e3672
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -111,6 +113,18 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -124,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -33,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -67,10 +67,10 @@ TextureImporter:
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
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

@ -3,7 +3,7 @@ guid: e63dfe3b432d7404bab9ef307426a0bf
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 44c391c5df20f2844b9437c0f3138355
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 21da6678ec5624a439f87f3487819ac0
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 348825b5c77b9d143961119fc008e631
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: b29210cf5b7b8234984ec842a3110005
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 027d0a4d1b2bb2d4fa529145afb6e506
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -32,7 +33,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -62,9 +63,58 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
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
@ -88,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 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: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
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

@ -3,7 +3,7 @@ guid: 5562630d3cb1e1b439e6f0d06c45b14a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: 6f76ee0157ff5854295d8d0b12b5f165
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

View file

@ -3,7 +3,7 @@ guid: c158bbf3be7618c468e696e8c2c54e95
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
@ -24,6 +24,7 @@ TextureImporter:
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@ -62,13 +63,14 @@ TextureImporter:
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 64
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -99,6 +101,30 @@ TextureImporter:
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
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: WebGL
maxTextureSize: 64
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@ -112,6 +138,7 @@ TextureImporter:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

View file

@ -0,0 +1,147 @@
fileFormatVersion: 2
guid: a0b769f6af690934f97fb73c271e1830
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: 35, y: 0, z: 35, 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: 128
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: 1537655665
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.982";
public static readonly DateTime Date = new DateTime(2023, 09, 11, 20, 44, 02, 741, DateTimeKind.Utc);
public const string Version = "0.0.1002";
public static readonly DateTime Date = new DateTime(2023, 09, 27, 22, 20, 38, 655, DateTimeKind.Utc);
}

View file

@ -222,6 +222,7 @@ namespace HeavenStudio
Beatmap.AddNewVolumeChange(0, 100f);
Beatmap.data.offset = 0f;
Conductor.instance.musicSource.clip = null;
RiqFileHandler.UnlockCache();
RiqFileHandler.WriteRiq(Beatmap);
AudioLoadDone = true;
}
@ -683,7 +684,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

@ -23,8 +23,7 @@ namespace HeavenStudio.Editor.Track
private float lastPosX;
private float lastContentScale;
private float lastTimelineSize;
private float contentPosX => Mathf.Abs(scrollRect.content.localPosition.x / scrollRect.content.localScale.x);
private float lastZoom;
private List<GameObject> Lines = new List<GameObject>();
@ -50,10 +49,12 @@ namespace HeavenStudio.Editor.Track
{
if (Editor.instance.fullscreen) return;
var x = Mathf.FloorToInt(contentPosX);
// var x = Mathp.Round2Nearest(contentPosX, Timeline.instance.PixelsPerBeat);
var x = Mathp.Round2Nearest(-scrollRect.content.anchoredPosition.x, Timeline.instance.PixelsPerBeat);
var pos = new Vector3(x, transform.localPosition.y, transform.localPosition.z);
transform.localPosition = pos;
GetComponent<RectTransform>().anchoredPosition = new Vector3(rectTransform.anchoredPosition.x, rectTransform.anchoredPosition.y, 0);
rectTransform.anchoredPosition = new Vector3(rectTransform.anchoredPosition.x, rectTransform.anchoredPosition.y, 0);
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, transform.parent.parent.parent.GetComponent<RectTransform>().rect.height);
UpdateCount();
}
@ -62,28 +63,27 @@ namespace HeavenStudio.Editor.Track
private void UpdateCount()
{
var changeScale = (scrollRect.viewport.rect.size.x != lastTimelineSize || scrollRect.content.localScale.x != lastContentScale);
var changeScale = (scrollRect.viewport.rect.size.x != lastTimelineSize || scrollRect.content.localScale.x != lastContentScale) ||
(Timeline.instance.Zoom != lastZoom);
if (changeScale)
{
var rightSide = (scrollRect.viewport.GetComponent<RectTransform>().rect.width / scrollRect.content.localScale.x) + contentPosX;
for (int i = 0; i < Lines.Count; i++)
Destroy(Lines[i].gameObject);
Lines.Clear();
count = Mathf.RoundToInt(rightSide - contentPosX) + 2;
count = Mathf.RoundToInt(scrollRect.viewport.GetComponent<RectTransform>().rect.width / Timeline.instance.PixelsPerBeat) + 2;
for (int i = 0; i < count; i++)
{
var line = Instantiate(transform.GetChild(0).gameObject, transform);
line.transform.localPosition = new Vector3(i, line.transform.localPosition.y, line.transform.localPosition.z);
var line = Instantiate(transform.GetChild(0).gameObject.GetComponent<RectTransform>(), transform);
line.anchoredPosition = new Vector3(i * Timeline.instance.PixelsPerBeat, line.transform.localPosition.y, line.transform.localPosition.z);
var halfBeatRect = line.transform.GetChild(2).GetComponent<RectTransform>();
halfBeatRect.anchoredPosition = new Vector3(scrollRect.content.localScale.x * 0.5f, halfBeatRect.anchoredPosition.y);
halfBeatRect.anchoredPosition = new Vector3(Timeline.instance.PixelsPerBeat * 0.5f, halfBeatRect.anchoredPosition.y);
line.SetActive(true);
line.gameObject.SetActive(true);
Lines.Add(line);
Lines.Add(line.gameObject);
}
UpdateGridNum();
@ -96,6 +96,7 @@ namespace HeavenStudio.Editor.Track
lastContentScale = scrollRect.content.localScale.x;
lastTimelineSize = scrollRect.viewport.rect.size.x;
lastZoom = Timeline.instance.Zoom;
lastPosX = rectTransform.anchoredPosition.x;
}
@ -106,7 +107,7 @@ namespace HeavenStudio.Editor.Track
var line = Lines[i];
if (line.transform.childCount == 0) continue;
var newNum = Mathf.RoundToInt(rectTransform.anchoredPosition.x + ((i) / snap));
var newNum = Mathf.RoundToInt((rectTransform.anchoredPosition.x / Timeline.instance.PixelsPerBeat) + ((i) / snap));
line.transform.GetChild(0).GetComponent<TMP_Text>().text = newNum.ToString(CultureInfo.CurrentCulture);
}
}

View file

@ -1,206 +1,136 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Starpelly;
using HeavenStudio.Editor.Track;
using DG.Tweening;
using Starpelly;
namespace HeavenStudio.Editor
{
public class BoxSelection : MonoBehaviour
{
[SerializeField] private RectTransform boxVisual;
[SerializeField] private RectTransform timelineContent;
private Rect selectionBox;
private Vector2 startPosition = Vector2.zero;
private Vector2 endPosition = Vector2.zero;
public bool selecting = false;
/// <summary>
/// Are we currently drag selecting?
/// </summary>
public bool ActivelySelecting = false;
public bool ActivelySelecting { get; private set; } = false;
private bool clickedInTimeline = false;
private Vector2 startPosition = Vector2.zero;
private Vector2 endPosition = Vector2.zero;
private bool validClick = false;
[SerializeField] private RectTransform boxVisual;
private CanvasGroup boxGroup;
private TMPro.TMP_Text sizeText;
private RectTransform text;
private float timelineLastX;
public static BoxSelection instance { get; private set; }
private void Awake()
{
instance = this;
}
private void Start()
{
DrawVisual();
instance = this;
Color boxCol = EditorTheme.theme.properties.BoxSelectionCol.Hex2RGB();
boxVisual.GetComponent<Image>().color = new Color(boxCol.r, boxCol.g, boxCol.b, 0.3f);
boxVisual.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.BoxSelectionOutlineCol.Hex2RGB();
boxVisual.GetChild(0).GetComponent<Image>().color = new Color(boxCol.r, boxCol.g, boxCol.b, 0.3f);
boxVisual.GetChild(0).GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.BoxSelectionOutlineCol.Hex2RGB();
sizeText = boxVisual.transform.GetChild(1).GetComponent<TMPro.TMP_Text>();
text = boxVisual.transform.GetChild(1).GetComponent<RectTransform>();
sizeText = boxVisual.GetChild(0).GetChild(1).GetComponent<TMPro.TMP_Text>();
sizeText.text = string.Empty;
boxGroup = boxVisual.GetComponent<CanvasGroup>();
}
private void Update()
public void LayerSelectUpdate()
{
if (Editor.instance == null) return;
float deltaTimelineX = timelineContent.transform.localPosition.x - timelineLastX;
Camera camera = Editor.instance.EditorCamera;
Vector3 scale = Editor.instance.MainCanvas.transform.localScale;
boxVisual.transform.localScale = new Vector2((1f / Timeline.instance.TimelineContent.localScale.x) / scale.x, 1f / scale.y);
text.transform.localScale = scale;
if (Selections.instance.eventsSelected.Count > 0 && Timeline.instance.InteractingWithEvents())
{
startPosition = Vector2.zero;
endPosition = Vector2.zero;
DrawVisual();
return;
}
if (Conductor.instance.NotStopped() || !Timeline.instance.timelineState.selected)
{
startPosition = Vector2.zero;
endPosition = Vector2.zero;
DrawVisual();
return;
}
float beatLen = boxVisual.rect.width * boxVisual.transform.localScale.x;
if (beatLen >= 0.5f)
sizeText.text = $"{string.Format("{0:0.000}", beatLen)}";
else
sizeText.text = string.Empty;
// click
if (Input.GetMouseButtonDown(0))
{
clickedInTimeline = Timeline.instance.CheckIfMouseInTimeline();
if (!Timeline.instance.MouseInTimeline || TimelineBlockManager.Instance.InteractingWithEvents || Conductor.instance.NotStopped())
{
return;
}
startPosition = MousePosition();
selectionBox = new Rect();
validClick = true;
startPosition = new Vector2(Timeline.instance.MousePos2Beat, Timeline.instance.MousePos2Layer);
boxGroup.DOKill();
boxGroup.alpha = 1.0f;
}
if (!validClick) return;
var startPos = startPosition;
var endPos = endPosition;
if (Input.GetMouseButton(0))
{
endPos = new Vector2(Timeline.instance.MousePos2Beat,
Timeline.instance.MousePos2Layer +
(Timeline.instance.MousePos2Layer < startPosition.y ? 0 : 1));
startPos = new Vector2(startPos.x,
startPos.y + ((Timeline.instance.MousePos2Layer < startPosition.y) ? 1 : 0));
startPos = new Vector2(startPos.x, Mathf.Clamp(startPos.y, 0, Timeline.instance.LayerCount));
endPos = new Vector2(endPos.x, Mathf.Clamp(endPos.y, 0, Timeline.instance.LayerCount));
ActivelySelecting = true;
}
// dragging
if (Input.GetMouseButton(0) && clickedInTimeline)
{
startPosition.x += deltaTimelineX * scale.x;
endPosition = MousePosition();
DrawSelection();
SelectEvents(); //kek
DrawVisual();
}
// release click
if (Input.GetMouseButtonUp(0))
{
startPosition = Vector2.zero;
endPosition = Vector2.zero;
SelectEvents();
DrawVisual();
ActivelySelecting = false;
}
timelineLastX = timelineContent.transform.localPosition.x;
}
private void DrawVisual()
{
Vector2 boxStart = startPosition;
Vector2 boxEnd = endPosition;
Vector2 boxCenter = (boxStart + boxEnd) / 2;
boxVisual.position = boxCenter;
Vector2 boxSize = new Vector2(Mathf.Abs(boxStart.x - boxEnd.x), Mathf.Abs(boxStart.y - boxEnd.y));
boxVisual.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, boxSize.x);
boxVisual.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, boxSize.y);
}
private void DrawSelection()
{
// X
if (MousePosition().x < startPosition.x)
{
// dragging left
selectionBox.xMin = MousePosition().x;
selectionBox.xMax = startPosition.x;
}
else
{
// dragging right
selectionBox.xMin = startPosition.x;
selectionBox.xMax = MousePosition().x;
}
// Y
if (MousePosition().y < startPosition.y)
{
// dragging down
selectionBox.yMin = MousePosition().y;
selectionBox.yMax = startPosition.y;
}
else
{
// dragging up
selectionBox.yMin = startPosition.y;
selectionBox.yMax = MousePosition().y;
}
}
private void SelectEvents()
{
if (!Input.GetKey(KeyCode.LeftShift) && !Timeline.instance.InteractingWithEvents() && Editor.instance.canSelect) Selections.instance.DeselectAll();
int selected = 0;
for (int i = 0; i < Timeline.instance.eventObjs.Count; i++)
{
TimelineEventObj e = Timeline.instance.eventObjs[i];
if (selectionBox.Overlaps(GetWorldRect(e.GetComponent<RectTransform>())))
if (Conductor.instance.NotStopped())
{
Selections.instance.DragSelect(e);
selected++;
validClick = false;
boxGroup.DOFade(0.0f, 0.3f).SetEase(Ease.OutExpo);
ActivelySelecting = false;
return;
}
}
selecting = selected > 0;
var start = new Vector2(Mathf.Min(startPos.x, endPos.x),
Mathf.Min(startPos.y, endPos.y));
var end = new Vector2(Mathf.Max(startPos.x, endPos.x),
Mathf.Max(startPos.y, endPos.y));
if (Input.GetMouseButtonUp(0))
{
validClick = false;
boxGroup.DOFade(0.0f, 0.3f).SetEase(Ease.OutExpo);
ActivelySelecting = false;
return;
}
boxVisual.anchoredPosition = new Vector2(start.x * Timeline.instance.PixelsPerBeat, Timeline.instance.LayerToY(Mathf.FloorToInt(start.y)));
boxVisual.sizeDelta = new Vector2((end.x - start.x) * Timeline.instance.PixelsPerBeat,
(end.y - start.y) * Timeline.instance.LayerHeight());
var boxLength = end.x - start.x;
if (boxLength > 0.01f)
sizeText.text = (boxLength).ToString("F");
else
sizeText.text = string.Empty;
Select(start, end);
}
public Vector3 MousePosition()
private void Select(Vector2 start, Vector2 end)
{
var mousePos = Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition);
return new Vector3(mousePos.x, mousePos.y, 0);
}
var boxRect = new Rect(start.x, start.y, end.x - start.x, end.y - start.y);
public Rect GetWorldRect(RectTransform rectTransform)
{
Vector3[] corners = new Vector3[4];
rectTransform.GetWorldCorners(corners);
// Get the bottom left corner.
Vector3 position = corners[0];
// 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, (int)marker.entity["track"], marker.entity.length, 1);
Vector2 size = new Vector2(
rectTransform.lossyScale.x * rectTransform.rect.size.x,
rectTransform.lossyScale.y * rectTransform.rect.size.y);
return new Rect(position, size);
var boxOverMarker = boxRect.Overlaps(markerRect);
if (boxOverMarker)
{
if (!marker.selected)
Selections.instance.DragSelect(marker);
}
else
{
if (marker.selected && !Input.GetKey(KeyCode.LeftShift))
Selections.instance.Deselect(marker);
}
}
}
}
}

View file

@ -1,210 +1,386 @@
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;
using UnityEngine.Timeline;
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 RiqEntity placedEntityData;
private Guid placedEventID;
// Redo times basically
private int placeTimes = 0;
public Place(RiqEntity entity, Guid placedEventID)
{
this.placedEntityData = entity.DeepCopy();
this.placedEventID = placedEventID;
}
public void Execute()
{
if (placeTimes > 0)
{
var entity = placedEntityData.DeepCopy();
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)
{
placedEntityData = createdEntity.DeepCopy();
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 Duplicate : ICommand
{
public List<Pos> pos = new List<Pos>();
public List<RiqEntity> dupEntityData = new();
private readonly List<Guid> placedEntityIDs = new();
public class Pos
public Duplicate(List<TimelineEventObj> original)
{
public TimelineEventObj eventObj;
var entities = original.Select(c => c.entity).ToList();
public Vector2 lastPos_;
public Vector3 previousPos;
}
public Move(List<TimelineEventObj> eventObjs)
{
pos.Clear();
for (int i = 0; i < eventObjs.Count; i++)
foreach (var entity in entities)
{
Pos p = new Pos();
p.eventObj = eventObjs[i];
p.lastPos_ = eventObjs[i].moveStartPos;
p.previousPos = eventObjs[i].transform.localPosition;
this.pos.Add(p);
dupEntityData.Add(entity.DeepCopy());
}
for (var i = 0; i < original.Count; i++)
{
placedEntityIDs.Add(Guid.NewGuid());
}
}
public void Execute()
{
}
public void Redo()
{
for (int i = 0; i < pos.Count; i++)
var entities = new List<RiqEntity>();
foreach (var entity in dupEntityData)
{
EnsureEventObj(i);
pos[i].eventObj.transform.localPosition = pos[i].previousPos;
pos[i].eventObj.entity.beat = pos[i].eventObj.transform.localPosition.x;
entities.Add(entity.DeepCopy());
}
Selections.instance.DeselectAll();
for (var i = 0; i < entities.Count; i++)
{
var entity = entities[i];
entity.guid = placedEntityIDs[i];
GameManager.instance.Beatmap.Entities.Add(entity);
var marker = TimelineBlockManager.Instance.CreateEntity(entity);
Selections.instance.DragSelect(marker);
if (i == entities.Count - 1)
marker.BeginMoving(false);
}
GameManager.instance.SortEventsList();
}
public void Undo()
{
for (int i = 0; i < pos.Count; i++)
var deletedEntities = new List<RiqEntity>();
for (var i = 0; i < placedEntityIDs.Count; i++)
{
EnsureEventObj(i);
pos[i].eventObj.transform.localPosition = pos[i].lastPos_;
pos[i].eventObj.entity.beat = pos[i].eventObj.transform.localPosition.x;
}
}
var placedEntityID = placedEntityIDs[i];
var createdEntity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == placedEntityID);
private void EnsureEventObj(int id)
{
if (pos[id].eventObj == null)
if (createdEntity != null)
{
deletedEntities.Add(createdEntity);
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(placedEntityID))
{
var marker = TimelineBlockManager.Instance.EntityMarkers[placedEntityID];
Selections.instance.Deselect(marker);
TimelineBlockManager.Instance.EntityMarkers.Remove(placedEntityID);
GameObject.Destroy(marker.gameObject);
}
GameManager.instance.Beatmap.Entities.Remove(createdEntity);
}
}
GameManager.instance.SortEventsList();
dupEntityData.Clear();
foreach (var entity in deletedEntities)
{
pos[id].eventObj = Timeline.instance.eventObjs.Find(c => c.eventObjID == pos[id].eventObj.eventObjID);
dupEntityData.Add(entity.DeepCopy());
}
}
}
public class Place : IAction
public class Paste : ICommand
{
TimelineEventObj eventObj;
TimelineEventObj deletedObj;
private List<RiqEntity> pasteEntityData = new();
private readonly List<Guid> entityIds = new();
public Place(TimelineEventObj eventObj)
public Paste(List<RiqEntity> original)
{
this.eventObj = eventObj;
original.Sort((x, y) => x.beat.CompareTo(y.beat));
var firstEntityBeat = original[0].beat;
for (var i = 0; i < original.Count; i++)
{
var entity = original[i].DeepCopy();
entity.beat = Conductor.instance.songPositionInBeatsAsDouble + (entity.beat - firstEntityBeat);
entityIds.Add(Guid.NewGuid());
pasteEntityData.Add(entity);
}
}
public void Execute()
{
}
var entities = new List<RiqEntity>();
foreach (var entity in pasteEntityData)
{
entities.Add(entity.DeepCopy());
}
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);
Selections.instance.DeselectAll();
for (var i = 0; i < entities.Count; i++)
{
var entity = entities[i];
entity.guid = entityIds[i];
GameManager.instance.Beatmap.Entities.Add(entity);
var marker = TimelineBlockManager.Instance.CreateEntity(entity);
Selections.instance.DragSelect(marker);
}
GameManager.instance.SortEventsList();
}
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++)
var deletedEntities = new List<RiqEntity>();
for (var i = 0; i < entityIds.Count; i++)
{
Selections.instance.Deselect(eventObjs[i]);
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
var pastedEntityID = entityIds[i];
var pastedEntity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == pastedEntityID);
if (pastedEntity != null)
{
deletedEntities.Add(pastedEntity);
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(pastedEntityID))
{
var marker = TimelineBlockManager.Instance.EntityMarkers[pastedEntityID];
Selections.instance.Deselect(marker);
TimelineBlockManager.Instance.EntityMarkers.Remove(pastedEntityID);
GameObject.Destroy(marker.gameObject);
}
GameManager.instance.Beatmap.Entities.Remove(pastedEntity);
}
}
}
public void Redo()
{
deletedObjs = eventObjs;
for (int i = 0; i < eventObjs.Count; i++)
GameManager.instance.SortEventsList();
pasteEntityData.Clear();
foreach (var entity in deletedEntities)
{
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);
pasteEntityData.Add(entity.DeepCopy());
}
}
}
public class Duplicate : IAction
public class Move : ICommand
{
List<TimelineEventObj> eventObjs;
List<TimelineEventObj> copiedObjs;
private readonly List<Guid> entityIDs = new();
private EntityMove newMove;
private EntityMove lastMove;
public Duplicate(List<TimelineEventObj> eventObjs)
private struct EntityMove
{
this.eventObjs = eventObjs;
public List<double> beat;
public List<int> layer;
public EntityMove(List<double> beat, List<int> layer)
{
this.beat = beat;
this.layer = layer;
}
}
public Move(List<RiqEntity> originalEntities, List<double> newBeat, List<int> newLayer)
{
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 < copiedObjs.Count; i++)
for (var i = 0; i < entityIDs.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);
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];
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entity.guid))
TimelineBlockManager.Instance.EntityMarkers[entity.guid].SetColor((int)entity["track"]);
}
}
public void Undo()
{
copiedObjs = eventObjs;
for (int i = 0; i < eventObjs.Count; i++)
for (var i = 0; i < entityIDs.Count; i++)
{
Selections.instance.Deselect(eventObjs[i]);
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityIDs[i]);
entity.beat = lastMove.beat[i];
entity["track"] = lastMove.layer[i];
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entity.guid))
TimelineBlockManager.Instance.EntityMarkers[entity.guid].SetColor((int)entity["track"]);
}
}
}
public class Resize : ICommand
{
public Guid entityId;
private EntityResize newResize;
private EntityResize lastResize;
public struct EntityResize
{
public double beat;
public float length;
public EntityResize(double beat, float length)
{
this.beat = beat;
this.length = length;
}
}
public Resize(Guid entityId, double newBeat, float newLength)
{
this.entityId = entityId;
newResize = new EntityResize(newBeat, newLength);
}
public void Execute()
{
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityId);
lastResize = new EntityResize(entity.beat, entity.length);
entity.beat = newResize.beat;
entity.length = newResize.length;
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entityId))
TimelineBlockManager.Instance.EntityMarkers[entityId].SetWidthHeight();
}
public void Undo()
{
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityId);
entity.beat = lastResize.beat;
entity.length = lastResize.length;
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entityId))
TimelineBlockManager.Instance.EntityMarkers[entityId].SetWidthHeight();
}
}
}

View file

@ -8,37 +8,30 @@ 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 bool canUndo()
{
return historyStack.Count > 0;
}
public bool canRedo()
{
return redoHistoryStack.Count > 0;
}
public int HistoryCount => historyStack.Count;
public static CommandManager instance { get; private set; }
private int maxItems = 128;
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 +40,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 +56,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: d6a4c5ae13e9de743befd392956aaea7
guid: 3e3bd3cc84702894b8dff6ecfc62e943
MonoImporter:
externalObjects: {}
serializedVersion: 2

View file

@ -0,0 +1,238 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Jukebox;
using HeavenStudio.Editor.Track;
using Newtonsoft.Json;
using UnityEditor;
using UnityEngine.Timeline;
namespace HeavenStudio.Editor.Commands
{
public class AddMarker : ICommand
{
private RiqEntity placedEntityData;
private Guid placedEventID;
private int placedTimes = 0;
private SpecialTimeline.HoveringTypes type;
public AddMarker(RiqEntity placedEntityData, Guid placedEventID, SpecialTimeline.HoveringTypes type)
{
this.placedEntityData = placedEntityData.DeepCopy();
this.placedEventID = placedEventID;
this.type = type;
}
public void Execute()
{
if (placedTimes > 0)
{
var entity = placedEntityData.DeepCopy();
entity.guid = placedEventID;
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
GameManager.instance.Beatmap.TempoChanges.Add(entity);
SpecialTimeline.instance.AddTempoChange(false, entity);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
GameManager.instance.Beatmap.VolumeChanges.Add(entity);
SpecialTimeline.instance.AddVolumeChange(false, entity);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
GameManager.instance.Beatmap.SectionMarkers.Add(entity);
SpecialTimeline.instance.AddChartSection(false, entity);
break;
}
GameManager.instance.SortEventsList();
}
placedTimes++;
}
public void Undo()
{
RiqEntity createdEntity = null;
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
createdEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == placedEventID);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
createdEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == placedEventID);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
createdEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == placedEventID);
break;
}
if (createdEntity != null)
{
placedEntityData = createdEntity.DeepCopy();
var marker = SpecialTimeline.instance.specialTimelineObjs[createdEntity.guid];
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
GameManager.instance.Beatmap.TempoChanges.Remove(createdEntity);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
GameManager.instance.Beatmap.VolumeChanges.Remove(createdEntity);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
GameManager.instance.Beatmap.SectionMarkers.Remove(createdEntity);
break;
}
SpecialTimeline.instance.specialTimelineObjs.Remove(createdEntity.guid);
GameObject.Destroy(marker.gameObject);
GameManager.instance.SortEventsList();
}
}
}
public class DeleteMarker : ICommand
{
private RiqEntity deletedEntityData;
private Guid deletedEventID;
private SpecialTimeline.HoveringTypes type;
public DeleteMarker(Guid deletedEventID, SpecialTimeline.HoveringTypes type)
{
this.deletedEventID = deletedEventID;
this.type = type;
}
public void Execute()
{
RiqEntity deletedEntity = null;
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
deletedEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == deletedEventID);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
deletedEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == deletedEventID);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
deletedEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == deletedEventID);
break;
}
if (deletedEntity != null)
{
var marker = SpecialTimeline.instance.specialTimelineObjs[deletedEntity.guid];
deletedEntityData = deletedEntity.DeepCopy();
deletedEntityData.guid = deletedEntity.guid;
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
GameManager.instance.Beatmap.TempoChanges.Remove(deletedEntity);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
GameManager.instance.Beatmap.VolumeChanges.Remove(deletedEntity);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
GameManager.instance.Beatmap.SectionMarkers.Remove(deletedEntity);
break;
}
SpecialTimeline.instance.specialTimelineObjs.Remove(deletedEntity.guid);
GameObject.Destroy(marker.gameObject);
GameManager.instance.SortEventsList();
}
}
public void Undo()
{
if (deletedEntityData != null)
{
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
GameManager.instance.Beatmap.TempoChanges.Add(deletedEntityData);
SpecialTimeline.instance.AddTempoChange(false, deletedEntityData);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
GameManager.instance.Beatmap.VolumeChanges.Add(deletedEntityData);
SpecialTimeline.instance.AddVolumeChange(false, deletedEntityData);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
GameManager.instance.Beatmap.SectionMarkers.Add(deletedEntityData);
SpecialTimeline.instance.AddChartSection(false, deletedEntityData);
break;
}
deletedEntityData = null;
}
}
}
public class MoveMarker : ICommand
{
private Guid entityId;
private double newBeat, lastBeat;
private SpecialTimeline.HoveringTypes type;
public MoveMarker(Guid entityId, double newBeat, SpecialTimeline.HoveringTypes type)
{
this.entityId = entityId;
this.newBeat = newBeat;
this.type = type;
}
public void Execute()
{
RiqEntity movedEntity = null;
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
movedEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == entityId);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
movedEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == entityId);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
movedEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == entityId);
break;
}
if (movedEntity != null)
{
lastBeat = movedEntity.beat;
movedEntity.beat = newBeat;
}
}
public void Undo()
{
RiqEntity movedEntity = null;
switch (type)
{
case SpecialTimeline.HoveringTypes.TempoChange:
movedEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == entityId);
break;
case SpecialTimeline.HoveringTypes.VolumeChange:
movedEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == entityId);
break;
case SpecialTimeline.HoveringTypes.SectionChange:
movedEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == entityId);
break;
}
if (movedEntity != null)
{
movedEntity.beat = lastBeat;
}
}
}
}

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 64b35e3b4d623144a82ed956ee52a136
guid: 7052872845575e443816f75abb8e7e49
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

@ -1,27 +1,20 @@
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using Newtonsoft.Json;
using TMPro;
using Starpelly;
using SFB;
using HeavenStudio.Common;
using HeavenStudio.Editor.Track;
using HeavenStudio.Util;
using HeavenStudio.StudioDance;
using Jukebox;
using System.IO.Compression;
using System.Text;
using UnityEditor;
using System.Linq;
namespace HeavenStudio.Editor
{
@ -50,6 +43,8 @@ namespace HeavenStudio.Editor
[SerializeField] private Button SaveBTN;
[SerializeField] private Button UndoBTN;
[SerializeField] private Button RedoBTN;
[SerializeField] private Button CopyBTN;
[SerializeField] private Button PasteBTN;
[SerializeField] private Button MusicSelectBTN;
[SerializeField] private Button FullScreenBTN;
[SerializeField] private Button TempoFinderBTN;
@ -63,6 +58,8 @@ namespace HeavenStudio.Editor
[SerializeField] private Button EditorThemeBTN;
[SerializeField] private Button EditorSettingsBTN;
[SerializeField] private GameObject DebugHolder;
[Header("Dialogs")]
[SerializeField] private Dialog[] Dialogs;
@ -84,6 +81,8 @@ namespace HeavenStudio.Editor
public bool isShortcutsEnabled { get { return (!inAuthorativeMenu) && (!editingInputField); } }
private Vector2 lastScreenSize = Vector2.zero;
public static Editor instance { get; private set; }
private void Start()
@ -110,6 +109,8 @@ namespace HeavenStudio.Editor
Tooltip.AddTooltip(SaveBTN.gameObject, "Save Project <color=#adadad>[Ctrl+S]</color>\nSave Project As <color=#adadad>[Ctrl+Alt+S]</color>");
Tooltip.AddTooltip(UndoBTN.gameObject, "Undo <color=#adadad>[Ctrl+Z]</color>");
Tooltip.AddTooltip(RedoBTN.gameObject, "Redo <color=#adadad>[Ctrl+Y or Ctrl+Shift+Z]</color>");
Tooltip.AddTooltip(CopyBTN.gameObject, "Copy <color=#adadad>[Ctrl+C]</color>");
Tooltip.AddTooltip(PasteBTN.gameObject, "Paste <color=#adadad>[Ctrl+V]</color>");
Tooltip.AddTooltip(MusicSelectBTN.gameObject, "Music Select");
Tooltip.AddTooltip(FullScreenBTN.gameObject, "Preview <color=#adadad>[Tab]</color>");
Tooltip.AddTooltip(TempoFinderBTN.gameObject, "Tempo Finder");
@ -145,6 +146,12 @@ namespace HeavenStudio.Editor
public void LateUpdate()
{
if (lastScreenSize != new Vector2(UnityEngine.Screen.width, UnityEngine.Screen.height))
{
// Timeline.OnScreenResize();
}
lastScreenSize = new Vector2(UnityEngine.Screen.width, UnityEngine.Screen.height);
#region Keyboard Shortcuts
if (isShortcutsEnabled)
{
@ -155,9 +162,7 @@ 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))
@ -165,13 +170,21 @@ namespace HeavenStudio.Editor
if (Input.GetKeyDown(KeyCode.Z))
{
if (Input.GetKey(KeyCode.LeftShift))
CommandManager.instance.Redo();
CommandManager.Instance.RedoCommand();
else
CommandManager.instance.Undo();
CommandManager.Instance.UndoCommand();
}
else if (Input.GetKeyDown(KeyCode.Y))
{
CommandManager.instance.Redo();
CommandManager.Instance.RedoCommand();
}
else if (Input.GetKeyDown(KeyCode.C))
{
Timeline.instance.CopySelected();
}
else if (Input.GetKeyDown(KeyCode.V))
{
Timeline.instance.Paste();
}
if (Input.GetKey(KeyCode.LeftShift))
@ -205,21 +218,38 @@ namespace HeavenStudio.Editor
SaveRemix(false);
}
}
if (Input.GetKeyDown(KeyCode.F12))
{
DebugHolder.gameObject.SetActive(!DebugHolder.activeInHierarchy);
}
}
#endregion
if (CommandManager.instance.canUndo())
// Undo+Redo
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;
// Copy+Paste
if (Selections.instance.eventsSelected.Count > 0)
CopyBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
else
CopyBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
if (Timeline.instance.CopiedEntities.Count > 0)
PasteBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
else
PasteBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
if (Timeline.instance.timelineState.selected && Editor.instance.canSelect)
{
/*
if (Input.GetMouseButtonUp(0))
{
List<TimelineEventObj> selectedEvents = Timeline.instance.eventObjs.FindAll(c => c.selected == true && c.eligibleToMove == true);
@ -240,6 +270,7 @@ namespace HeavenStudio.Editor
CommandManager.instance.Execute(new Commands.Move(result));
}
}
*/
}
}
@ -357,6 +388,7 @@ namespace HeavenStudio.Editor
{
try
{
RiqFileHandler.UnlockCache();
RiqFileHandler.WriteRiq(GameManager.instance.Beatmap);
RiqFileHandler.PackRiq(path, true);
Debug.Log("Packed RIQ successfully!");
@ -407,6 +439,7 @@ namespace HeavenStudio.Editor
try
{
RiqFileHandler.UnlockCache();
string tmpDir = RiqFileHandler.ExtractRiq(path);
Debug.Log("Imported RIQ successfully!");
LoadRemix();
@ -424,7 +457,7 @@ namespace HeavenStudio.Editor
currentRemixPath = path;
remixName = Path.GetFileName(path);
UpdateEditorStatus(false);
CommandManager.instance.Clear();
CommandManager.Instance.Clear();
});
}

View file

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

View file

@ -89,8 +89,8 @@ namespace HeavenStudio.Editor
eventSelector.SetActive(false);
this.entity = entity;
string col = TrackToThemeColour(entity["track"]);
Editor.instance.SetGameEventTitle($"Properties for <color=#{col}>{action.displayName}</color> on Beat {entity.beat}");
string col = TrackToThemeColour((int)entity["track"]);
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();
@ -194,7 +194,7 @@ namespace HeavenStudio.Editor
GameObject input = Instantiate(prefab);
input.transform.SetParent(this.gameObject.transform);
input.SetActive(true);
input.transform.localScale = Vector2.one;
input.transform.localScale = Vector3.one;
if(tooltip != string.Empty)
Tooltip.AddTooltip(input, "", tooltip);

View file

@ -10,9 +10,11 @@ using DG.Tweening;
using Starpelly;
using HeavenStudio.Editor.Track;
using System.Text;
namespace HeavenStudio.Editor
{
// I hate the antichrist.
public class GridGameSelector : MonoBehaviour
{
public Minigames.Minigame SelectedMinigame;
@ -39,6 +41,7 @@ namespace HeavenStudio.Editor
private bool gameOpen;
private float selectorHeight;
private float eventSize;
private float timeSinceUpdateIndex = 0.0f;
public static GridGameSelector instance;
@ -93,6 +96,7 @@ namespace HeavenStudio.Editor
currentEventIndex = 0;
CurrentSelected.transform.DOLocalMoveY(eventsParent.transform.GetChild(currentEventIndex).localPosition.y + eventsParent.transform.localPosition.y, 0.35f).SetEase(Ease.OutExpo);
timeSinceUpdateIndex = 0;
}
private void UpdateScrollPosition()
@ -115,6 +119,13 @@ namespace HeavenStudio.Editor
Mathf.Lerp(lastPos.y, end, 12 * Time.deltaTime),
lastPos.z
);
timeSinceUpdateIndex += Time.deltaTime;
CurrentSelected.GetComponent<RectTransform>().anchoredPosition =
new Vector2(
(Mathf.Cos(timeSinceUpdateIndex * 2.65f) * 12) + 12,
CurrentSelected.GetComponent<RectTransform>().anchoredPosition.y);
SetColors();
}
@ -156,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();
}
}
@ -192,9 +213,23 @@ namespace HeavenStudio.Editor
//CurrentSelected.GetComponent<Image>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
for (int i = 0; i < eventsParent.transform.childCount; i++)
eventsParent.GetChild(i).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventNormalCol.Hex2RGB();
eventsParent.GetChild(currentEventIndex).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
{
var eventTxt = eventsParent.GetChild(i).GetChild(0).GetComponent<TMP_Text>();
var goalX = -25;
if (i == currentEventIndex)
{
eventTxt.color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
goalX = 16;
}
else
{
eventTxt.color = EditorTheme.theme.properties.EventNormalCol.Hex2RGB();
}
eventTxt.rectTransform.anchoredPosition =
new Vector2(
Mathf.Lerp(eventTxt.rectTransform.anchoredPosition.x, goalX, Time.deltaTime * 12f),
eventTxt.rectTransform.anchoredPosition.y);
}
}
// TODO: find the equation to get the sizes automatically, nobody's been able to figure one out yet (might have to be manual?)
@ -353,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

@ -20,12 +20,15 @@ namespace HeavenStudio.Editor
private void Update()
{
// Should never happen to begin with.
/*
var buggedSelections = eventsSelected.FindAll(c => c == null);
if (buggedSelections.Count > 0)
{
for (int i = 0; i < buggedSelections.Count; i++)
Deselect(buggedSelections[i]);
}
*/
if (Editor.instance.isShortcutsEnabled)
{
if (Input.GetKey(KeyCode.LeftControl))
@ -38,6 +41,10 @@ namespace HeavenStudio.Editor
{
DeselectAll();
eventsSelected.Add(eventToAdd);
eventToAdd.selected = true;
eventToAdd.OnSelect();
TimelineBlockManager.Instance.SortMarkers();
// CommandManager.instance.Execute(new Commands.Selection(new List<TimelineEventObj>() { eventToAdd } ));
}
@ -46,41 +53,66 @@ namespace HeavenStudio.Editor
{
if (!eventsSelected.Contains(eventToAdd))
{
eventToAdd.selected = true;
eventToAdd.OnSelect();
eventsSelected.Add(eventToAdd);
}
else
{
eventToAdd.selected = false;
eventToAdd.OnDeselect();
eventsSelected.Remove(eventToAdd);
}
TimelineBlockManager.Instance.SortMarkers();
}
public void DragSelect(TimelineEventObj eventToAdd)
{
if (!eventsSelected.Contains(eventToAdd))
{
eventToAdd.selected = true;
eventsSelected.Add(eventToAdd);
eventToAdd.OnSelect();
}
}
public void SelectAll()
{
return;
/*
DeselectAll();
var eventObjs = Timeline.instance.eventObjs;
for (int i = 0; i < eventObjs.Count; i++)
{
eventObjs[i].selected = true;
eventObjs[i].OnSelect();
eventsSelected.Add(eventObjs[i]);
}
TimelineBlockManager.Instance.SortMarkers();
*/
}
public void DeselectAll()
{
foreach (var @event in eventsSelected)
{
@event.selected = false;
@event.OnSelect();
}
eventsSelected.Clear();
TimelineBlockManager.Instance.SortMarkers();
}
public void Deselect(TimelineEventObj eventToDeselect)
{
if (eventsSelected.Contains(eventToDeselect))
{
eventToDeselect.selected = false;
eventToDeselect.OnDeselect();
eventsSelected.Remove(eventToDeselect);
}
TimelineBlockManager.Instance.SortMarkers();
}
}
}

View file

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

View file

@ -1,32 +0,0 @@
using UnityEngine;
using UnityEngine.UI;
namespace HeavenStudio.Editor.Track
{
public class KeepSizeRelativeToContent : MonoBehaviour
{
private RectTransform rectTransform;
public float sizeDeltaXInternal;
public float sizeDeltaX = 1.0f;
public float multiply;
private void Start()
{
rectTransform = GetComponent<RectTransform>();
SetScale(Timeline.instance.TimelineContent.localScale.x);
}
private void LateUpdate()
{
SetScale(Timeline.instance.TimelineContent.localScale.x);
}
private void SetScale(float scale)
{
rectTransform.localScale = new Vector3((1.0f / scale) * multiply, transform.localScale.y, 1);
LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
}
}
}

View file

@ -30,8 +30,8 @@ public class SectionDialog : Dialog
public void SetSectionObj(SectionTimelineObj sectionObj)
{
this.sectionObj = sectionObj;
sectionName.text = sectionObj.chartSection["sectionName"];
challengeEnable.isOn = sectionObj.chartSection["startPerfect"];
sectionName.text = sectionObj.chartEntity["sectionName"];
challengeEnable.isOn = sectionObj.chartEntity["startPerfect"];
}
public void DeleteSection()
@ -41,20 +41,19 @@ public class SectionDialog : Dialog
Editor.instance.inAuthorativeMenu = false;
}
if (sectionObj == null) return;
GameManager.instance.Beatmap.SectionMarkers.Remove(sectionObj.chartSection);
sectionObj.DeleteObj();
}
public void ChangeSectionName(string name)
{
if (sectionObj == null) return;
sectionObj.chartSection["sectionName"] = name;
sectionObj.chartEntity["sectionName"] = name;
sectionObj.UpdateLabel();
}
public void SetSectionChallenge()
{
if (sectionObj == null) return;
sectionObj.chartSection["startPerfect"] = challengeEnable.isOn;
sectionObj.chartEntity["startPerfect"] = challengeEnable.isOn;
}
}

View file

@ -21,7 +21,7 @@ namespace HeavenStudio.Editor.Track
[Header("Components")]
private RectTransform rectTransform;
public List<SpecialTimelineObj> specialTimelineObjs = new List<SpecialTimelineObj>();
public Dictionary<Guid, SpecialTimelineObj> specialTimelineObjs = new();
[System.Flags]
public enum HoveringTypes
@ -48,7 +48,7 @@ namespace HeavenStudio.Editor.Track
{
ClearSpecialTimeline();
GameManager.instance.SortEventsList();
bool first = true;
foreach (var tempoChange in GameManager.instance.Beatmap.TempoChanges)
{
@ -110,7 +110,7 @@ namespace HeavenStudio.Editor.Track
public void FixObjectsVisibility()
{
foreach (SpecialTimelineObj obj in specialTimelineObjs)
foreach (SpecialTimelineObj obj in specialTimelineObjs.Values)
{
obj.SetVisibility(Timeline.instance.timelineState.currentState);
}
@ -118,7 +118,7 @@ namespace HeavenStudio.Editor.Track
public void ClearSpecialTimeline()
{
foreach (SpecialTimelineObj obj in specialTimelineObjs)
foreach (SpecialTimelineObj obj in specialTimelineObjs.Values)
{
Destroy(obj.gameObject);
}
@ -126,7 +126,16 @@ namespace HeavenStudio.Editor.Track
}
public void AddTempoChange(bool create, RiqEntity tempoChange_ = null, bool first = false)
{
{
if (create)
{
foreach (var e in GameManager.instance.Beatmap.TempoChanges)
{
if (Timeline.instance.MousePos2BeatSnap > e.beat - Timeline.instance.snapInterval && Timeline.instance.MousePos2BeatSnap < e.beat + Timeline.instance.snapInterval)
return;
}
}
GameObject tempoChange = Instantiate(RefTempoChange.gameObject, this.transform);
tempoChange.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.TempoLayerCol.Hex2RGB();
@ -136,39 +145,46 @@ namespace HeavenStudio.Editor.Track
tempoChange.SetActive(true);
TempoTimelineObj tempoTimelineObj = tempoChange.GetComponent<TempoTimelineObj>();
tempoTimelineObj.type = HoveringTypes.TempoChange;
if (create == true)
if (create)
{
tempoChange.transform.position = new Vector3(Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition).x + 0.08f, tempoChange.transform.position.y);
tempoChange.transform.localPosition = new Vector3(Starpelly.Mathp.Round2Nearest(tempoChange.transform.localPosition.x, Timeline.SnapInterval()), tempoChange.transform.localPosition.y);
float lastTempo = Conductor.instance.GetBpmAtBeat(tempoChange.transform.localPosition.x);
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
{
lastTempo = lastTempo * 2f;
lastTempo *= 2f;
}
else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
{
lastTempo = lastTempo / 2f;
lastTempo /= 2f;
}
RiqEntity tempoC = GameManager.instance.Beatmap.AddNewTempoChange(tempoChange.transform.localPosition.x, lastTempo);
tempoTimelineObj.tempoChange = tempoC;
RiqEntity tempoC = GameManager.instance.Beatmap.AddNewTempoChange(Timeline.instance.MousePos2BeatSnap, lastTempo);
tempoTimelineObj.chartEntity = tempoC;
CommandManager.Instance.AddCommand(new Commands.AddMarker(tempoC, tempoC.guid, HoveringTypes.TempoChange));
}
else
{
tempoTimelineObj.tempoChange = tempoChange_;
tempoChange.transform.localPosition = new Vector3((float) tempoTimelineObj.tempoChange.beat, tempoChange.transform.localPosition.y);
tempoTimelineObj.chartEntity = tempoChange_;
tempoTimelineObj.first = first;
}
tempoTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState);
specialTimelineObjs.Add(tempoTimelineObj);
specialTimelineObjs.Add(tempoTimelineObj.chartEntity.guid, tempoTimelineObj);
Timeline.instance.FitToSong();
}
public void AddVolumeChange(bool create, RiqEntity volumeChange_ = null, bool first = false)
{
{
if (create)
{
foreach (var e in GameManager.instance.Beatmap.VolumeChanges)
{
if (Timeline.instance.MousePos2BeatSnap > e.beat - Timeline.instance.snapInterval && Timeline.instance.MousePos2BeatSnap < e.beat + Timeline.instance.snapInterval)
return;
}
}
GameObject volumeChange = Instantiate(RefVolumeChange.gameObject, this.transform);
volumeChange.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.MusicLayerCol.Hex2RGB();
@ -178,29 +194,36 @@ namespace HeavenStudio.Editor.Track
volumeChange.SetActive(true);
VolumeTimelineObj volumeTimelineObj = volumeChange.GetComponent<VolumeTimelineObj>();
volumeTimelineObj.type = HoveringTypes.VolumeChange;
if (create == true)
if (create)
{
volumeChange.transform.position = new Vector3(Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition).x + 0.08f, volumeChange.transform.position.y);
volumeChange.transform.localPosition = new Vector3(Starpelly.Mathp.Round2Nearest(volumeChange.transform.localPosition.x, Timeline.SnapInterval()), volumeChange.transform.localPosition.y);
RiqEntity volumeC = GameManager.instance.Beatmap.AddNewVolumeChange(volumeChange.transform.localPosition.x, 100f);
volumeTimelineObj.volumeChange = volumeC;
RiqEntity volumeC = GameManager.instance.Beatmap.AddNewVolumeChange(Timeline.instance.MousePos2BeatSnap, 100f);
volumeTimelineObj.chartEntity = volumeC;
GameManager.instance.Beatmap.VolumeChanges.Add(volumeC);
CommandManager.Instance.AddCommand(new Commands.AddMarker(volumeC, volumeC.guid, HoveringTypes.VolumeChange));
}
else
{
volumeTimelineObj.volumeChange = volumeChange_;
volumeChange.transform.localPosition = new Vector3((float) volumeTimelineObj.volumeChange.beat, volumeChange.transform.localPosition.y);
volumeTimelineObj.chartEntity = volumeChange_;
volumeTimelineObj.first = first;
}
volumeTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState);
specialTimelineObjs.Add(volumeTimelineObj);
specialTimelineObjs.Add(volumeTimelineObj.chartEntity.guid, volumeTimelineObj);
}
public void AddChartSection(bool create, RiqEntity chartSection_ = null)
{
{
if (create)
{
foreach (var e in GameManager.instance.Beatmap.SectionMarkers)
{
if (Timeline.instance.MousePos2BeatSnap > e.beat - Timeline.instance.snapInterval && Timeline.instance.MousePos2BeatSnap < e.beat + Timeline.instance.snapInterval)
return;
}
}
GameObject chartSection = Instantiate(RefSectionChange.gameObject, this.transform);
chartSection.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.SectionLayerCol.Hex2RGB();
@ -211,32 +234,26 @@ namespace HeavenStudio.Editor.Track
chartSection.SetActive(true);
SectionTimelineObj sectionTimelineObj = chartSection.GetComponent<SectionTimelineObj>();
sectionTimelineObj.type = HoveringTypes.SectionChange;
if (create == true)
if (create)
{
chartSection.transform.position = new Vector3(Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition).x + 0.08f, chartSection.transform.position.y);
chartSection.transform.localPosition = new Vector3(Starpelly.Mathp.Round2Nearest(chartSection.transform.localPosition.x, Timeline.SnapInterval()), chartSection.transform.localPosition.y);
RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(Timeline.instance.MousePos2BeatSnap, "New Section");
RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(chartSection.transform.localPosition.x, "New Section");
sectionTimelineObj.chartSection = sectionC;
sectionTimelineObj.chartEntity = sectionC;
GameManager.instance.Beatmap.SectionMarkers.Add(sectionC);
CommandManager.Instance.AddCommand(new Commands.AddMarker(sectionC, sectionC.guid, HoveringTypes.SectionChange));
}
else
{
sectionTimelineObj.chartSection = chartSection_;
chartSection.transform.localPosition = new Vector3((float) sectionTimelineObj.chartSection.beat, chartSection.transform.localPosition.y);
sectionTimelineObj.chartEntity = chartSection_;
}
sectionTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState);
specialTimelineObjs.Add(sectionTimelineObj);
specialTimelineObjs.Add(sectionTimelineObj.chartEntity.guid, sectionTimelineObj);
//auto-open the dialog
sectionTimelineObj.OnRightClick();
}
public bool InteractingWithEvents()
{
return specialTimelineObjs.FindAll(c => c.hovering == true).Count > 0 || specialTimelineObjs.FindAll(c => c.moving == true).Count > 0;
if (create)
sectionTimelineObj.OnRightClick();
}
}
}

View file

@ -16,8 +16,6 @@ namespace HeavenStudio.Editor.Track
[SerializeField] private GameObject chartLine;
[SerializeField] private SectionDialog sectionDialog;
public RiqEntity chartSection;
new private void Update()
{
base.Update();
@ -31,7 +29,9 @@ namespace HeavenStudio.Editor.Track
public void UpdateLabel()
{
sectionLabel.text = chartSection["sectionName"];
sectionLabel.text = chartEntity["sectionName"];
if (!moving)
SetX(chartEntity);
}
public override void Init()
@ -54,16 +54,19 @@ namespace HeavenStudio.Editor.Track
}
}
public override bool OnMove(float beat)
public override bool OnMove(float beat, bool final = false)
{
foreach (RiqEntity sectionChange in GameManager.instance.Beatmap.SectionMarkers)
{
if (this.chartSection == sectionChange)
if (this.chartEntity == sectionChange)
continue;
if (beat > sectionChange.beat - Timeline.instance.snapInterval && beat < sectionChange.beat + Timeline.instance.snapInterval)
return false;
}
this.chartSection.beat = beat;
if (final)
CommandManager.Instance.AddCommand(new Commands.MoveMarker(chartEntity.guid, beat, type));
else
SetX(beat);
return true;
}

View file

@ -5,6 +5,7 @@ using UnityEngine;
using TMPro;
using DG.Tweening;
using Jukebox;
namespace HeavenStudio.Editor.Track
{
@ -17,10 +18,13 @@ namespace HeavenStudio.Editor.Track
private float startPosX;
private float lastPosX;
public SpecialTimeline.HoveringTypes type;
public bool moving = false;
public bool hovering;
public bool first = false;
public RiqEntity chartEntity;
private void Start()
{
rectTransform = GetComponent<RectTransform>();
@ -49,23 +53,22 @@ namespace HeavenStudio.Editor.Track
if (moving)
{
Vector3 mousePos = Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition);
transform.position = new Vector3(mousePos.x - startPosX, transform.position.y, 0);
transform.localPosition = new Vector3(Mathf.Clamp(Starpelly.Mathp.Round2Nearest(transform.localPosition.x, Timeline.SnapInterval()), 0, Mathf.Infinity), transform.localPosition.y);
OnMove(Timeline.instance.MousePos2BeatSnap);
if (Input.GetMouseButtonUp(0))
{
if (!OnMove(transform.localPosition.x))
transform.localPosition = new Vector3(lastPosX, transform.localPosition.y);
/*if (!OnMove(transform.localPosition.x))
transform.localPosition = new Vector3(lastPosX, transform.localPosition.y);*/
moving = false;
OnMove(Timeline.instance.MousePos2BeatSnap, true);
lastPosX = transform.localPosition.x;
}
}
}
else
{
/*
if (moving)
{
if (!OnMove(transform.localPosition.x))
@ -73,10 +76,21 @@ namespace HeavenStudio.Editor.Track
moving = false;
lastPosX = transform.localPosition.x;
}
*/
hovering = false;
}
}
public void SetX(RiqEntity entity)
{
rectTransform.anchoredPosition = new Vector2((float)entity.beat * Timeline.instance.PixelsPerBeat, rectTransform.anchoredPosition.y);
}
public void SetX(float beat)
{
rectTransform.anchoredPosition = new Vector2(beat * Timeline.instance.PixelsPerBeat, rectTransform.anchoredPosition.y);
}
public void StartMove()
{
if (first) return;
@ -89,18 +103,19 @@ namespace HeavenStudio.Editor.Track
public void DeleteObj()
{
if (first) return;
transform.parent.GetComponent<SpecialTimeline>().specialTimelineObjs.Remove(this);
Destroy(this.gameObject);
CommandManager.Instance.AddCommand(new Commands.DeleteMarker(chartEntity.guid, type));
// transform.parent.GetComponent<SpecialTimeline>().specialTimelineObjs.Remove(this);
// Destroy(this.gameObject);
}
//events
public virtual void Init() {}
public virtual void OnLeftClick() {}
public virtual void OnRightClick() {}
public virtual bool OnMove(float beat)
public virtual void Init() { }
public virtual void OnLeftClick() { }
public virtual void OnRightClick() { }
public virtual bool OnMove(float beat, bool final = false)
{
return true;
}
public virtual void SetVisibility(Timeline.CurrentTimelineState.State state) {}
public virtual void SetVisibility(Timeline.CurrentTimelineState.State state) { }
}
}

View file

@ -16,8 +16,6 @@ namespace HeavenStudio.Editor.Track
[SerializeField] private TMP_Text tempoTXT;
[SerializeField] private GameObject tempoLine;
public RiqEntity tempoChange;
new private void Update()
{
base.Update();
@ -31,16 +29,18 @@ namespace HeavenStudio.Editor.Track
if (Input.GetKey(KeyCode.LeftShift))
newTempo *= 5f;
if (Input.GetKey(KeyCode.LeftControl))
newTempo /= 100f;
newTempo *= 0.01f;
tempoChange["tempo"] += newTempo;
chartEntity["tempo"] += newTempo;
//make sure tempo is positive
if (tempoChange["tempo"] < 1)
tempoChange["tempo"] = 1;
if (chartEntity["tempo"] < 1)
chartEntity["tempo"] = 1;
if (first && newTempo != 0)
Timeline.instance.UpdateStartingBPMText();
Timeline.instance.FitToSong();
}
}
@ -49,8 +49,9 @@ namespace HeavenStudio.Editor.Track
private void UpdateTempo()
{
tempoTXT.text = $"{tempoChange["tempo"]} BPM";
Timeline.instance.FitToSong();
tempoTXT.text = chartEntity["tempo"].ToString("F") + $" BPM";
if (!moving)
SetX(chartEntity);
}
public override void Init()
@ -69,21 +70,23 @@ namespace HeavenStudio.Editor.Track
if (first) return;
if (Timeline.instance.timelineState.currentState == Timeline.CurrentTimelineState.State.TempoChange)
{
GameManager.instance.Beatmap.TempoChanges.Remove(tempoChange);
DeleteObj();
}
}
public override bool OnMove(float beat)
public override bool OnMove(float beat, bool final = false)
{
foreach (var tempoChange in GameManager.instance.Beatmap.TempoChanges)
{
if (this.tempoChange == tempoChange)
if (this.chartEntity == tempoChange)
continue;
if (beat > tempoChange.beat - Timeline.instance.snapInterval && beat < tempoChange.beat + Timeline.instance.snapInterval)
return false;
}
this.tempoChange.beat = beat;
if (final)
CommandManager.Instance.AddCommand(new Commands.MoveMarker(chartEntity.guid, beat, type));
else
SetX(beat);
return true;
}

View file

@ -16,8 +16,6 @@ namespace HeavenStudio.Editor.Track
[SerializeField] private TMP_Text volumeTXT;
[SerializeField] private GameObject volumeLine;
public RiqEntity volumeChange;
new private void Update()
{
base.Update();
@ -31,12 +29,12 @@ namespace HeavenStudio.Editor.Track
if (Input.GetKey(KeyCode.LeftShift))
newVolume *= 5f;
if (Input.GetKey(KeyCode.LeftControl))
newVolume /= 100f;
newVolume *= 0.01f;
volumeChange["volume"] += newVolume;
chartEntity["volume"] += newVolume;
//make sure volume is positive
volumeChange["volume"] = Mathf.Clamp(volumeChange["volume"], 0, 100);
chartEntity["volume"] = Mathf.Clamp(chartEntity["volume"], 0, 100);
if (first && newVolume != 0)
Timeline.instance.UpdateStartingVolText();
@ -47,7 +45,9 @@ namespace HeavenStudio.Editor.Track
private void UpdateVolume()
{
volumeTXT.text = $"{volumeChange["volume"]}%";
volumeTXT.text = $"{chartEntity["volume"].ToString("F")}%";
if (!moving)
SetX(chartEntity);
}
public override void Init()
@ -66,21 +66,23 @@ namespace HeavenStudio.Editor.Track
if (first) return;
if (Timeline.instance.timelineState.currentState == Timeline.CurrentTimelineState.State.MusicVolume)
{
GameManager.instance.Beatmap.VolumeChanges.Remove(volumeChange);
DeleteObj();
}
}
public override bool OnMove(float beat)
public override bool OnMove(float beat, bool final = false)
{
foreach (var volumeChange in GameManager.instance.Beatmap.VolumeChanges)
{
if (this.volumeChange == volumeChange)
if (this.chartEntity == volumeChange)
continue;
if (beat > volumeChange.beat - Timeline.instance.snapInterval && beat < volumeChange.beat + Timeline.instance.snapInterval)
return false;
}
this.volumeChange.beat = beat;
if (final)
CommandManager.Instance.AddCommand(new Commands.MoveMarker(chartEntity.guid, beat, type));
else
SetX(beat);
return true;
}

View file

@ -8,7 +8,8 @@ using UnityEngine.EventSystems;
using TMPro;
using Starpelly;
using Jukebox;
using Jukebox.Legacy;
using Newtonsoft.Json;
using System.Linq;
namespace HeavenStudio.Editor.Track
{
@ -20,9 +21,6 @@ namespace HeavenStudio.Editor.Track
[SerializeField] private TMP_Text CurrentTempo;
[Header("Timeline Properties")]
private float lastBeatPos = 0;
private Vector2 lastMousePos;
public List<TimelineEventObj> eventObjs = new List<TimelineEventObj>();
private bool lastFrameDrag;
public int LayerCount = 5;
public bool metronomeEnabled;
@ -33,8 +31,22 @@ namespace HeavenStudio.Editor.Track
[Header("Components")]
[SerializeField] private RawImage waveform;
[SerializeField] private Image layerBG;
[SerializeField] private TimelineZoom zoomComponent;
public Texture2D resizeCursor;
public float WidthPerBeat { get; private set; } = 100.0f;
public float PixelsPerBeat => WidthPerBeat * Zoom;
public float Zoom { get; private set; } = 1.0f;
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;
public float PlaybackBeat = 0.0f;
public static float SnapInterval() { return instance.snapInterval; }
public void SetSnap(float snap) { snapInterval = snap; }
@ -123,16 +135,24 @@ namespace HeavenStudio.Editor.Track
}
}
[Header("Panels")]
[SerializeField] private RectTransform TopPanel;
[SerializeField] private RectTransform TopPanelContent;
[SerializeField] private RectTransform ContentPanel;
[SerializeField] private RectTransform OverlayPanel, OverlayPanelContent;
[Header("Timeline Components")]
[SerializeField] private RectTransform TimelineSlider;
[SerializeField] private RectTransform TimelineGridSelect;
[SerializeField] private RectTransform TimelineEventGrid;
[SerializeField] private TMP_Text TimelinePlaybackBeat;
public ScrollRect TimelineScroll;
public RectTransform TimelineContent;
[SerializeField] private ZoomComponent zoomComponent;
[SerializeField] private RectTransform RealTimelineContent;
[SerializeField] private RectTransform TimelineContent;
public RectTransform EventContent;
[SerializeField] private RectTransform TimelineSongPosLineRef;
[SerializeField] private RectTransform TimelineEventObjRef;
public RectTransform TimelineEventsHolder;
[SerializeField] private RectTransform LayersRect;
[Header("Timeline Inputs")]
@ -162,11 +182,16 @@ namespace HeavenStudio.Editor.Track
public Vector3[] LayerCorners = new Vector3[4];
public float leftSide => (TimelineContent.localPosition.x / TimelineContent.localScale.x) * -1;
public float rightSide => (TimelineScroll.viewport.rect.width / TimelineContent.localScale.x) + leftSide;
public float leftSide => (RealTimelineContent.anchoredPosition.x / PixelsPerBeat) * -1;
public float rightSide => (TimelineScroll.viewport.rect.width / PixelsPerBeat) + leftSide;
private Vector2 lastScreenSize;
public static Timeline instance { get; private set; }
[HideInInspector]
public List<RiqEntity> CopiedEntities = new();
public bool userIsEditingInputField
{
get
@ -180,19 +205,16 @@ namespace HeavenStudio.Editor.Track
public void LoadRemix()
{
// beatmap entities
for (int i = 0; i < eventObjs.Count; i++)
{
Destroy(eventObjs[i].gameObject);
}
eventObjs.Clear();
/*
for (int i = 0; i < GameManager.instance.Beatmap.Entities.Count; i++)
{
var e = GameManager.instance.Beatmap.Entities[i];
AddEventObject(e.datamodel, false, new Vector3((float)e.beat, -e["track"] * LayerHeight()), e, false);
}
*/
TimelineBlockManager.Instance.Load();
SpecialInfo.Setup();
UpdateOffsetText();
@ -206,6 +228,13 @@ namespace HeavenStudio.Editor.Track
{
instance = this;
for (var i = 0; i < LayerCount; i++)
{
var bg = Instantiate(layerBG.gameObject, layerBG.rectTransform.parent).GetComponent<Image>();
if (i % 2 == 0) bg.enabled = false;
}
layerBG.gameObject.SetActive(false);
LoadRemix();
TimelineSlider.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.BeatMarkerCol.Hex2RGB();
@ -214,25 +243,25 @@ namespace HeavenStudio.Editor.Track
TimelineSlider.GetChild(3).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.BeatMarkerCol.Hex2RGB();
TimelineSongPosLineRef.GetComponent<Image>().color = EditorTheme.theme.properties.CurrentTimeMarkerCol.Hex2RGB();
PlayBTN.onClick.AddListener(delegate
PlayBTN.onClick.AddListener(delegate
{
if (Conductor.instance.isPaused)
PlayCheck(false);
else
PlayCheck(true);
PlayCheck(true);
});
PauseBTN.onClick.AddListener(delegate
PauseBTN.onClick.AddListener(delegate
{
if (Conductor.instance.isPlaying && !Conductor.instance.isPaused)
PlayCheck(false);
PlayCheck(false);
});
StopBTN.onClick.AddListener(delegate
StopBTN.onClick.AddListener(delegate
{
if (Conductor.instance.isPlaying || Conductor.instance.isPaused)
PlayCheck(true);
PlayCheck(true);
});
MetronomeBTN.onClick.AddListener(delegate
MetronomeBTN.onClick.AddListener(delegate
{
MetronomeToggle();
});
@ -260,11 +289,11 @@ namespace HeavenStudio.Editor.Track
ZoomInBTN.onClick.AddListener(delegate
{
zoomComponent.ZoomIn(0.015f * TimelineContent.localScale.x, Vector2.zero);
zoomComponent.Zoom(0.25f * zoomComponent.Scale.x, Vector2.zero);
});
ZoomOutBTN.onClick.AddListener(delegate
{
zoomComponent.ZoomOut(-0.0125f * TimelineContent.localScale.x, Vector2.zero);
zoomComponent.Zoom(-0.2f * zoomComponent.Scale.x, Vector2.zero);
});
ZoomResetBTN.onClick.AddListener(delegate
{
@ -304,6 +333,8 @@ namespace HeavenStudio.Editor.Track
SetTimeButtonColors(true, false, false);
MetronomeBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
MetronomeBTN.transform.GetChild(1).GetComponent<Image>().color = Color.gray;
MetronomeBTN.transform.GetChild(2).GetComponent<Image>().color = Color.gray;
timelineState.SetState(CurrentTimelineState.State.Selection);
@ -314,12 +345,14 @@ namespace HeavenStudio.Editor.Track
public void FitToSong()
{
var currentSizeDelta = TimelineContent.sizeDelta;
var currentSizeDelta = RealTimelineContent.sizeDelta;
float songBeats = Conductor.instance.SongLengthInBeats();
if (songBeats == 0) songBeats = 320;
else songBeats += 10;
TimelineContent.sizeDelta = new Vector2(songBeats, currentSizeDelta.y);
TimelineEventGrid.sizeDelta = new Vector2(songBeats, currentSizeDelta.y);
TimelineContent.sizeDelta = new Vector2(songBeats * PixelsPerBeat, currentSizeDelta.y);
// TimelineEventGrid.sizeDelta = new Vector2(songBeats * PixelsPerBeat, currentSizeDelta.y);
RealTimelineContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x / Zoom, RealTimelineContent.sizeDelta.y);
}
public void CreateWaveform()
@ -349,17 +382,20 @@ namespace HeavenStudio.Editor.Track
}
}
public void MetronomeToggle()
{
if (!Conductor.instance.metronome)
{
MetronomeBTN.transform.GetChild(0).GetComponent<Image>().color = "009FC6".Hex2RGB();
MetronomeBTN.transform.GetChild(1).GetComponent<Image>().color = "009FC6".Hex2RGB();
MetronomeBTN.transform.GetChild(2).GetComponent<Image>().color = "009FC6".Hex2RGB();
Conductor.instance.metronome = true;
}
else
{
MetronomeBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
MetronomeBTN.transform.GetChild(1).GetComponent<Image>().color = Color.gray;
MetronomeBTN.transform.GetChild(2).GetComponent<Image>().color = Color.gray;
Conductor.instance.metronome = false;
}
}
@ -373,6 +409,54 @@ namespace HeavenStudio.Editor.Track
private void Update()
{
RectTransformUtility.ScreenPointToLocalPointInRectangle(EventContent, Input.mousePosition, Editor.instance.EditorCamera, out relativeMousePos);
MouseInTimeline = this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(EventContent, Input.mousePosition, Editor.instance.EditorCamera);
/*
if (MouseInTimeline)
{
var wheel = Input.mouseScrollDelta.y;
if (wheel != 0)
{
var incre = 0.0f;
if (wheel > 0)
{
incre += wheel * (Zoom * 0.25f);
}
else
{
incre += wheel * (Zoom * 0.2f);
}
var v = new Vector3[4];
TimelineScroll.viewport.GetWorldCorners(v);
var viewportPos = Editor.instance.EditorCamera.WorldToScreenPoint(v[0]);
var left = leftSide;
var viewportWidth = TimelineScroll.viewport.rect.width;
var localPointRec = Mathf.Lerp(left, left + (viewportWidth / Zoom),
Mathp.Normalize(Input.mousePosition.x, viewportPos.x, viewportPos.x + viewportWidth));
var xPixels = (localPointRec * incre);
xPixels *= (Zoom);
TimelineContent.anchoredPosition = new Vector2(
TimelineContent.anchoredPosition.x - xPixels,
TimelineContent.anchoredPosition.y
);
Zoom += incre;
Zoom = Mathf.Clamp(Zoom, 1, 1000);
}
}
*/
MousePos2Beat = relativeMousePos.x / PixelsPerBeat;
MousePos2Layer = Mathf.Clamp(Mathf.FloorToInt(-(relativeMousePos.y) / LayerHeight()), 0, LayerCount - 1);
Conductor cond = Conductor.instance;
// waveform.rectTransform.anchoredPosition = new Vector2(
// -(GameManager.instance.Beatmap.data.offset / (60.0f / GameManager.instance.Beatmap.bpm)),
@ -382,8 +466,8 @@ namespace HeavenStudio.Editor.Track
if (!cond.isPlaying && !cond.isPaused)
{
SongBeat.text = $"Beat {string.Format("{0:0.000}", TimelineSlider.localPosition.x)}";
SongPos.text = FormatTime(cond.GetSongPosFromBeat(TimelineSlider.localPosition.x));
SongBeat.text = $"Beat {string.Format("{0:0.000}", PlaybackBeat)}";
SongPos.text = FormatTime(cond.GetSongPosFromBeat(PlaybackBeat));
}
else
{
@ -391,12 +475,35 @@ namespace HeavenStudio.Editor.Track
SongPos.text = FormatTime(cond.songPositionAsDouble);
}
// Metronome animation
{
var rectTransform = MetronomeBTN.transform.GetChild(1).GetComponent<RectTransform>();
var rot = 0.0f;
if (Conductor.instance.metronome)
{
var startBeat = Mathf.FloorToInt(Conductor.instance.songPositionInBeats - 0.5f);
var nm = Conductor.instance.GetLoopPositionFromBeat(0.5f, 1f);
var loop = (startBeat % 2 == 0) ? Mathf.SmoothStep(-1.1f, 1f, nm) : Mathf.SmoothStep(1f, -1f, nm);
rot = loop * 45f;
}
else
{
rot = Mathf.LerpAngle(rectTransform.localEulerAngles.z, 0.0f, Time.deltaTime * 16);
}
rectTransform.localEulerAngles =
new Vector3(rectTransform.localEulerAngles.x, rectTransform.localEulerAngles.y,
rot);
}
SliderControl();
#region Keyboard Shortcuts
if ((!userIsEditingInputField) && Editor.instance.isShortcutsEnabled)
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Input.GetKey(KeyCode.LeftShift))
@ -446,11 +553,11 @@ namespace HeavenStudio.Editor.Track
if (Input.GetKey(KeyCode.LeftArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.A)))
{
TimelineContent.transform.localPosition += new Vector3(moveSpeed * Time.deltaTime, 0);
RealTimelineContent.transform.localPosition += new Vector3(moveSpeed * Time.deltaTime, 0);
}
else if (Input.GetKey(KeyCode.RightArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.D)))
{
TimelineContent.transform.localPosition += new Vector3(-moveSpeed * Time.deltaTime, 0);
RealTimelineContent.transform.localPosition += new Vector3(-moveSpeed * Time.deltaTime, 0);
}
}
#endregion
@ -465,29 +572,59 @@ namespace HeavenStudio.Editor.Track
}
if (movingPlayback)
{
RectTransformUtility.ScreenPointToLocalPointInRectangle(TimelineContent, Input.mousePosition, Editor.instance.EditorCamera, out lastMousePos);
TimelineSlider.localPosition = new Vector3(Mathf.Max(Mathp.Round2Nearest(lastMousePos.x + 0.12f, Timeline.SnapInterval()), 0), TimelineSlider.transform.localPosition.y);
var playbackBeat = Mathf.Max(MousePos2BeatSnap, 0);
TimelineSlider.localPosition = new Vector3(playbackBeat * PixelsPerBeat, TimelineSlider.transform.localPosition.y);
if (TimelineSlider.localPosition.x != lastBeatPos)
cond.SetBeat(TimelineSlider.transform.localPosition.x);
lastBeatPos = TimelineSlider.localPosition.x;
cond.SetBeat(playbackBeat);
this.PlaybackBeat = playbackBeat;
}
if (cond.isPlaying)
PlaybackFocus(true);
TimelineContent.transform.localPosition = new Vector3(Mathf.Clamp(TimelineContent.transform.localPosition.x, Mathf.NegativeInfinity, 0), TimelineContent.transform.localPosition.y);
RealTimelineContent.transform.localPosition = new Vector3(Mathf.Clamp(RealTimelineContent.transform.localPosition.x, Mathf.NegativeInfinity, 0), RealTimelineContent.transform.localPosition.y);
CurrentTempo.text = $" = {cond.songBpm}";
LayersRect.GetWorldCorners(LayerCorners);
for (var i = 0; i < LayersRect.childCount; i++)
{
var layerRect = LayersRect.GetChild(i).GetComponent<RectTransform>();
layerRect.anchoredPosition = new Vector2(layerRect.anchoredPosition.x, -LayerHeight() * (i - 1));
layerRect.sizeDelta = new Vector2(layerRect.sizeDelta.x, LayerHeight());
}
for (var i = 0; i < layerBG.rectTransform.parent.childCount; i++)
{
var layerRect = layerBG.rectTransform.parent.GetChild(i).GetComponent<RectTransform>();
layerRect.anchoredPosition = new Vector2(layerRect.anchoredPosition.x, -LayerHeight() * (i - 1));
layerRect.sizeDelta = new Vector2(layerRect.sizeDelta.x, LayerHeight());
}
RealTimelineContent.sizeDelta = new Vector2(RealTimelineContent.sizeDelta.x, LayerHeight() * LayerCount);
}
public void LateUpdate()
{
TimelineBlockManager.Instance.UpdateMarkers();
BoxSelection.instance.LayerSelectUpdate();
TimelineContent.anchoredPosition = RealTimelineContent.anchoredPosition;
TopPanelContent.anchoredPosition = new Vector2(TimelineContent.anchoredPosition.x, TopPanelContent.anchoredPosition.y);
TopPanelContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x, TopPanelContent.sizeDelta.y);
OverlayPanelContent.anchoredPosition = new Vector2(TimelineContent.anchoredPosition.x, OverlayPanelContent.anchoredPosition.y);
OverlayPanelContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x, OverlayPanelContent.sizeDelta.y);
LayersRect.anchoredPosition = new Vector2(LayersRect.anchoredPosition.x, TimelineContent.anchoredPosition.y);
}
public static float GetScaleModifier()
{
Camera cam = Editor.instance.EditorCamera;
return Mathf.Pow(cam.pixelWidth/1280f, 1f) * Mathf.Pow(cam.pixelHeight/720f, 0f);
return Mathf.Pow(cam.pixelWidth / 1280f, 1f) * Mathf.Pow(cam.pixelHeight / 720f, 0f);
}
public Vector2 LayerCornersToDist()
@ -498,12 +635,11 @@ namespace HeavenStudio.Editor.Track
private void SliderControl()
{
TimelinePlaybackBeat.text = $"Beat {string.Format("{0:0.000}", TimelineSlider.localPosition.x)}";
TimelinePlaybackBeat.text = $"Beat {string.Format("{0:0.000}", PlaybackBeat)}";
if (TimelineSongPosLine != null)
{
TimelineSongPosLine.transform.localPosition = new Vector3(Conductor.instance.songPositionInBeats, TimelineSongPosLine.transform.localPosition.y);
TimelineSongPosLine.transform.localScale = new Vector3(1f / TimelineContent.transform.localScale.x, TimelineSongPosLine.transform.localScale.y, 1);
TimelineSongPosLine.transform.localPosition = new Vector3(Conductor.instance.songPositionInBeats * PixelsPerBeat, TimelineSongPosLine.transform.localPosition.y);
}
}
@ -514,13 +650,13 @@ namespace HeavenStudio.Editor.Track
{
if (!Conductor.instance.isPlaying && !Conductor.instance.isPaused)
{
Play(false, TimelineSlider.transform.localPosition.x);
Play(false, PlaybackBeat);
}
else
{
Stop(TimelineSlider.transform.localPosition.x);
Stop(PlaybackBeat);
}
}
else
{
@ -528,11 +664,11 @@ namespace HeavenStudio.Editor.Track
{
if (TimelineSongPosLine == null)
{
Play(false, TimelineSlider.transform.localPosition.x);
Play(false, PlaybackBeat);
}
else
{
Play(false, TimelineSongPosLine.transform.localPosition.x);
Play(false, Conductor.instance.songPositionInBeats);
}
}
else if (!Conductor.instance.isPaused)
@ -571,7 +707,7 @@ namespace HeavenStudio.Editor.Track
// timelineSlider.value = 0;
if (TimelineSongPosLine != null)
Destroy(TimelineSongPosLine.gameObject);
Destroy(TimelineSongPosLine.gameObject);
GameManager.instance.Stop(time);
@ -597,10 +733,11 @@ namespace HeavenStudio.Editor.Track
PauseBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
}
else
{ PauseBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
{
PauseBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
PauseBTN.enabled = false;
}
if (stopEnabled)
{
StopBTN.enabled = true;
@ -624,11 +761,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(TimelineEventGrid, Input.mousePosition, Editor.instance.EditorCamera));
}
#endregion
#region Functions
@ -637,9 +769,10 @@ namespace HeavenStudio.Editor.Track
{
var lerpSpd = (lerp) ? 12f : 10000000; // im lazy
var newPos = new Vector3((-Conductor.instance.songPositionInBeats * TimelineContent.localScale.x) + 200, TimelineContent.transform.localPosition.y);
TimelineContent.transform.localPosition =
Vector3.Lerp(TimelineContent.transform.localPosition, newPos, Time.deltaTime * lerpSpd);
var newPos = new Vector3((-Conductor.instance.songPositionInBeats * PixelsPerBeat) + 200, RealTimelineContent.transform.localPosition.y);
newPos.x = Mathf.Max(newPos.x, -(TimelineContent.rect.width - TimelineScroll.viewport.rect.width));
RealTimelineContent.transform.localPosition =
Vector3.Lerp(RealTimelineContent.transform.localPosition, newPos, Time.deltaTime * lerpSpd);
}
public void WaveformToggle()
@ -740,6 +873,107 @@ namespace HeavenStudio.Editor.Track
return tex2D;
}
public TimelineEventObj AddEventObject(string eventName, bool dragNDrop = false, Vector3 pos = new Vector3(), RiqEntity entity = null, bool addEvent = false)
{
var game = EventCaller.instance.GetMinigame(eventName.Split(0));
var action = EventCaller.instance.GetGameAction(game, eventName.Split(1));
var gameAction = EventCaller.instance.GetGameAction(EventCaller.instance.GetMinigame(eventName.Split(0)), eventName.Split(1));
if (addEvent)
{
RiqEntity tempEntity = entity;
if (entity == null)
{
RiqEntity en = GameManager.instance.Beatmap.AddNewEntity(eventName, 0, gameAction.defaultLength);
tempEntity = en;
// default param values
var ep = action.parameters;
if (ep != null)
{
for (int i = 0; i < ep.Count; i++)
{
object returnVal = ep[i].parameter;
var propertyType = returnVal.GetType();
if (propertyType == typeof(EntityTypes.Integer))
{
returnVal = ((EntityTypes.Integer)ep[i].parameter).val;
}
else if (propertyType == typeof(EntityTypes.Float))
{
returnVal = ((EntityTypes.Float)ep[i].parameter).val;
}
else if (propertyType.IsEnum)
{
returnVal = (int)ep[i].parameter;
}
//tempEntity[ep[i].propertyName] = returnVal;
tempEntity.CreateProperty(ep[i].propertyName, returnVal);
}
}
}
else
{
// GameManager.instance.Beatmap.Entities.Add(tempEntity);
Debug.LogWarning("Weird as fuck case called?");
}
GameManager.instance.SortEventsList();
TimelineBlockManager.Instance.SetEntityToSet(tempEntity);
}
else
{
TimelineBlockManager.Instance.SetEntityToSet(entity);
}
var marker = TimelineBlockManager.Instance.Pool.Get();
marker.SetMarkerInfo();
if (dragNDrop)
{
Selections.instance.ClickSelect(marker);
marker.moving = true;
}
else
{
entity["track"] = marker.GetTrack();
}
CommandManager.Instance.AddCommand(new Commands.Place(marker.entity, marker.entity.guid));
return marker;
}
public void CopySelected()
{
CopyEntities(Selections.instance.eventsSelected.Select(c => c.entity).ToList());
}
public void CopyEntities(List<RiqEntity> original)
{
if (original.Count <= 0) return;
CopiedEntities.Clear();
foreach (RiqEntity entity in original)
{
CopiedEntities.Add(entity.DeepCopy());
}
}
public void Paste()
{
CommandManager.Instance.AddCommand(new Commands.Paste(CopiedEntities));
}
/*
public TimelineEventObj AddEventObject(string eventName, bool dragNDrop = false, Vector3 pos = new Vector3(), RiqEntity entity = null, bool addEvent = false)
{
var game = EventCaller.instance.GetMinigame(eventName.Split(0));
@ -761,7 +995,7 @@ namespace HeavenStudio.Editor.Track
{
if (gameAction.resizable == false)
{
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength, LayerHeight());
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength * Timeline.instance.PixelsPerBeat, LayerHeight());
float length = gameAction.defaultLength;
eventObj.length = length;
}
@ -770,11 +1004,11 @@ namespace HeavenStudio.Editor.Track
eventObj.resizable = true;
if (entity != null && gameAction.defaultLength != entity.length && dragNDrop == false)
{
g.GetComponent<RectTransform>().sizeDelta = new Vector2(entity.length, LayerHeight());
g.GetComponent<RectTransform>().sizeDelta = new Vector2(entity.length * Timeline.instance.PixelsPerBeat, LayerHeight());
}
else
{
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength, LayerHeight());
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength * Timeline.instance.PixelsPerBeat, LayerHeight());
}
}
}
@ -850,6 +1084,7 @@ namespace HeavenStudio.Editor.Track
return eventObj;
}
*/
private List<TimelineEventObj> duplicatedEventObjs = new List<TimelineEventObj>();
public TimelineEventObj CopyEventObject(TimelineEventObj e)
@ -861,51 +1096,22 @@ 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)
EventParameterManager.instance.Disable();
// eventObjs.Remove(entity.eventObj);
foreach (TimelineEventObj e in eventObjs)
{
if (e.entity == entity)
{
Destroy(e.gameObject);
eventObjs.Remove(e);
break;
}
}
GameManager.instance.Beatmap.Entities.Remove(entity);
GameManager.instance.SortEventsList();
}
public bool IsMouseAboveEvents()
{
return Timeline.instance.eventObjs.FindAll(c => c.mouseHovering == true).Count > 0;
}
public bool InteractingWithEvents()
{
return eventObjs.FindAll(c => c.moving == true).Count > 0 || eventObjs.FindAll(c => c.resizing == true).Count > 0;
}
public float SnapToLayer(float y)
{
float size = LayerHeight();
return Mathf.Clamp(Mathp.Round2Nearest(y, size), -size * 4f, 0f);
return Mathf.Clamp(Mathp.Round2Nearest(y, size), -size * (LayerCount - 1), 0f);
}
public float LayerHeight()
{
return LayersRect.rect.height / 5f;
var defaultHeight = 32;
return Mathf.Max(defaultHeight, (LayersRect.rect.height / LayerCount));
// return LayersRect.rect.height / LayerCount;
}
public float LayerToY(int layer)
{
return (-layer * LayerHeight());
}
const float SpeedSnap = 0.25f;
@ -927,6 +1133,16 @@ namespace HeavenStudio.Editor.Track
}
}
public void OnZoom(float zoom)
{
Zoom = zoom;
TimelineSlider.localPosition = new Vector3(Conductor.instance.songPositionInBeats * PixelsPerBeat, TimelineSlider.transform.localPosition.y);
FitToSong();
TimelineBlockManager.Instance.OnZoom();
}
public void UpdateOffsetText()
{
// show up to 4 decimal places
@ -938,7 +1154,7 @@ namespace HeavenStudio.Editor.Track
// Failsafe against empty string.
if (String.IsNullOrEmpty(FirstBeatOffset.text))
FirstBeatOffset.text = "0";
// Convert ms to s.
double newOffset = Convert.ToDouble(FirstBeatOffset.text) / 1000f;
@ -960,7 +1176,7 @@ namespace HeavenStudio.Editor.Track
// Failsafe against empty string.
if (String.IsNullOrEmpty(text))
text = "120";
var newBPM = Convert.ToDouble(text);
// Failsafe against negative BPM.
@ -974,7 +1190,7 @@ namespace HeavenStudio.Editor.Track
newBPM = System.Math.Round(newBPM, 4);
RiqEntity tempoChange = GameManager.instance.Beatmap.TempoChanges[0];
tempoChange["tempo"] = (float) newBPM;
tempoChange["tempo"] = (float)newBPM;
GameManager.instance.Beatmap.TempoChanges[0] = tempoChange;
// In case the newBPM ended up differing from the inputted string.
@ -993,7 +1209,7 @@ namespace HeavenStudio.Editor.Track
// Failsafe against empty string.
if (String.IsNullOrEmpty(StartingVolumeSpecialVolume.text))
StartingVolumeSpecialVolume.text = "100";
var newVol = Convert.ToInt32(StartingVolumeSpecialVolume.text);
newVol = Mathf.Clamp(newVol, 0, 100);
@ -1009,7 +1225,7 @@ namespace HeavenStudio.Editor.Track
#region Commands
public void Move()
{
{
}
public void Undo()

View file

@ -0,0 +1,191 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Pool;
using Jukebox;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header;
using System.Linq;
namespace HeavenStudio.Editor.Track
{
public class TimelineBlockManager : MonoBehaviour
{
public static TimelineBlockManager Instance { get; private set; }
public TimelineEventObj EntityTemplate;
public Dictionary<Guid, TimelineEventObj> EntityMarkers = new();
public ObjectPool<TimelineEventObj> Pool { get; private set; }
private int firstMarkerToCareAbout = 0;
private int lastMarkerToCareAbout = 0;
private Timeline timeline;
private RiqEntity entityToSet;
public bool InteractingWithEvents { get; private set; } = false;
public bool MovingAnyEvents { get; private set; } = false;
public void SetEntityToSet(RiqEntity entity)
{
entityToSet = entity;
}
private void Awake()
{
Instance = this;
timeline = GetComponent<Timeline>();
Pool = new ObjectPool<TimelineEventObj>(CreateMarker, OnTakeMarkerFromPool, OnReturnMarkerToPool, OnDestroyMarker, true, 125, 1500);
}
public void Load()
{
var timeLeft = timeline.leftSide;
var timeRight = timeline.rightSide;
foreach (var marker in EntityMarkers)
{
Destroy(marker.Value.gameObject);
}
EntityMarkers.Clear();
Pool.Clear();
foreach (var entity in GameManager.instance.Beatmap.Entities)
{
var vLeft = entity.beat + entity.length >= timeLeft;
var vRight = entity.beat < timeRight;
var active = vLeft && vRight;
if (!active) continue;
entityToSet = entity;
Pool.Get();
Debug.Log(entity.datamodel);
}
}
public TimelineEventObj CreateEntity(RiqEntity entity)
{
entityToSet = entity;
var marker = Pool.Get();
marker.UpdateMarker();
return marker;
}
public void OnZoom()
{
foreach (var marker in EntityMarkers.Values)
{
marker.SetWidthHeight();
}
}
public void UpdateMarkers()
{
var timeLeft = timeline.leftSide;
var timeRight = timeline.rightSide;
var markersActiveBeats = new List<float>();
foreach (var marker in EntityMarkers.Values)
{
if (marker.selected || marker.moving)
{
markersActiveBeats.Add((float)marker.entity.beat);
}
}
for (var i = 0; i < GameManager.instance.Beatmap.Entities.Count; i++)
{
var entity = GameManager.instance.Beatmap.Entities[i];
var vLeft = entity.beat + entity.length >= timeLeft;
var vRight = entity.beat < timeRight;
var active = vLeft && vRight;
var containsMarker = EntityMarkers.ContainsKey(entity.guid);
if (containsMarker)
{
var marker = EntityMarkers[entity.guid];
if (marker.selected || marker.moving) active = true;
}
if (active)
{
if (!containsMarker)
{
entityToSet = entity;
Pool.Get();
}
EntityMarkers[entity.guid].UpdateMarker();
}
else
{
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);
block.transform.SetSiblingIndex(index + 1);
i++;
}
}
private TimelineEventObj CreateMarker()
{
TimelineEventObj marker = Instantiate(EntityTemplate.gameObject, Timeline.instance.TimelineEventsHolder).GetComponent<TimelineEventObj>();
return marker;
}
private void OnTakeMarkerFromPool(TimelineEventObj marker)
{
marker.SetEntity(entityToSet);
marker.SetMarkerInfo();
SortMarkers();
marker.gameObject.SetActive(true);
EntityMarkers.Add(entityToSet.guid, marker);
}
private void OnReturnMarkerToPool(TimelineEventObj marker)
{
EntityMarkers.Remove(marker.entity.guid);
marker.gameObject.SetActive(false);
}
private void OnDestroyMarker(TimelineEventObj marker)
{
Destroy(marker.gameObject);
}
}
}

Some files were not shown because too many files have changed in this diff Show more