This commit is contained in:
2025-05-13 00:35:44 +03:00
parent a2be488330
commit 5334017888
280 changed files with 586645 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
/Logs
/Library
/*.sln
/UserSettings
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8e2b592e494429645ab8bb4c6889cae8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+61
View File
@@ -0,0 +1,61 @@
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Mm]emoryCaptures/
# Asset meta data should only be ignored when the corresponding asset is also ignored
!/[Aa]ssets/**/*.meta
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
[Aa]ssets/Plugins/Editor/JetBrains*
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
# Crashlytics generated file
crashlytics-build.properties
.DS_Store
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 Matthew LaRocca
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c2440cadd68180c45bf171fbb634a99c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: af3c02025d003bc4a9e9e2a75456fd81
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+33
View File
@@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: 9702de8f497a180459f41fa7b1ec81d2
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 25abcbcbd0a73d94a880831ca4707632
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+85
View File
@@ -0,0 +1,85 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Note
m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlphaTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- PixelSnap: 0
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EnableExternalAlpha: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _Flip: {r: 1, g: 1, b: 1, a: 1}
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 45ad52670051e204a831e584dcff4feb
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6fcaf6b1e8bd34232a5ca886d568629a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+57
View File
@@ -0,0 +1,57 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4807823002965126724
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4807823002965126731}
- component: {fileID: 4807823002965126730}
m_Layer: 0
m_Name: ABCLayout
m_TagString: Untagged
m_Icon: {fileID: 2800000, guid: d0aa5f8effbcdcf419c38667b5bde60a, type: 3}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4807823002965126731
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4807823002965126724}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0.05, y: 0.79}
m_SizeDelta: {x: 4.12, y: 1.751}
m_Pivot: {x: 0.5, y: 1}
--- !u!114 &4807823002965126730
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4807823002965126724}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f3b46fe4dd2878e4284e77e0c7f6b689, type: 3}
m_Name:
m_EditorClassIdentifier:
spriteAtlas: {fileID: 4343727234628468602, guid: c135832626606554697bc5e6d39f5867,
type: 2}
layoutScale: 0.35
color: {r: 0, g: 0, b: 0, a: 1}
NoteMaterial: {fileID: 2100000, guid: 45ad52670051e204a831e584dcff4feb, type: 2}
textPrefab: {fileID: 6477534108993699429, guid: 5a04610f96d954d629c68779a84e25cf,
type: 3}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+206
View File
@@ -0,0 +1,206 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8418401375173088395
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5515704533465356849}
- component: {fileID: 7993037897990526596}
- component: {fileID: 1742704412604097032}
- component: {fileID: 2048233103025663448}
- component: {fileID: 6477534108993699429}
m_Layer: 0
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5515704533465356849
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8418401375173088395}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
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: 0.827, y: 1.572}
m_Pivot: {x: 0, y: 0}
--- !u!23 &7993037897990526596
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8418401375173088395}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &1742704412604097032
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8418401375173088395}
m_Mesh: {fileID: 0}
--- !u!222 &2048233103025663448
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8418401375173088395}
m_CullTransparentMesh: 0
--- !u!114 &6477534108993699429
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8418401375173088395}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 1
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 6
m_fontSizeBase: 6
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_textAlignment: 1025
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_firstOverflowCharacterIndex: -1
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 0
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 6477534108993699429}
characterCount: 1
spriteCount: 0
spaceCount: 0
wordCount: 1
linkCount: 0
lineCount: 1
pageCount: 1
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_renderer: {fileID: 7993037897990526596}
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_maskType: 0
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5a04610f96d954d629c68779a84e25cf
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+31
View File
@@ -0,0 +1,31 @@
# ABCUnity
This library renders a subset of [ABC Music Notation](http://abcnotation.com/) in Unity. It is built on the [ABCSharp](https://github.com/matthewcpp/abcsharp) parsing library.
### Installation
The easiest way to to use the library is to download the repo as a zip archive and place the extracted directory into your Assets folder. Optionally the repo can be included as a git submodule in your project.
This project requires the installation of the basic TextMeshPro asset package.
### Basic Usage
The included sample scene shows basic layout usage.
The `ABCLayout` prefab serves as a top level container for all the sprites needed to display the score. The layout will attempt to fill as much as the area defined by the object's RectTransform.
Abc code is rendering using the `LoadString`, `LoadStream`, or `LoadFile` methods on the `ABCUnity.Layout` class.
Individual items can have their color set using the `SetItemColor` method.
### Example
The following text in ABC format:
```
X:1
M:C
L:1/4
V:1
V:2 clef=bass
K:C
[V:1] !5!c>_BAG | FGAF | !2!G/2A/2!4!_B/2G/2 A>G| !1!F !3!E !1!F2 |
[V:2] !3!!5![F,A,]4 | [F,A,]4 | !2!!4![G,_B,]2 !3!!5![F,A,]2| z2 [F,A,]2 |
[V:1] !5!c>_BAG | FGAF | G/2A/2!4!_B/2G/2 A>G| !1!F !3!E !1!F2 | Z |
[V:2] [F,A,]4 | !3!!5![F,A,]4 | !2!!4![G,_B,]2 [F,A,]2| z2 [F,A,]2 | !4!G, > A, !2!_B, G, |
```
Appears in the game engine as:
[![score.png](https://i.postimg.cc/T1Fy1dCJ/score.png)](https://matthewcpp.github.io/assets/images/score.png)
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 64a8f46618b166440b61581a3b5a8752
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 070c63daef7f65943a931c53a7ed5f61
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+601
View File
@@ -0,0 +1,601 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 519420032}
- component: {fileID: 519420031}
- component: {fileID: 519420029}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &519420029
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519420028}
m_Enabled: 1
--- !u!20 &519420031
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519420028}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 20
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 0
m_HDR: 1
m_AllowMSAA: 0
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &519420032
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519420028}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &525257792
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 525257797}
- component: {fileID: 525257796}
- component: {fileID: 525257795}
- component: {fileID: 525257794}
- component: {fileID: 525257793}
m_Layer: 0
m_Name: Title
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &525257793
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 525257792}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Title
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 16
m_fontSizeBase: 16
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_textAlignment: 258
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_firstOverflowCharacterIndex: 0
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 0
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 525257793}
characterCount: 5
spriteCount: 0
spaceCount: 0
wordCount: 1
linkCount: 0
lineCount: 1
pageCount: 1
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_renderer: {fileID: 525257796}
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_maskType: 0
--- !u!222 &525257794
CanvasRenderer:
m_ObjectHideFlags: 2
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 525257792}
m_CullTransparentMesh: 0
--- !u!33 &525257795
MeshFilter:
m_ObjectHideFlags: 2
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 525257792}
m_Mesh: {fileID: 0}
--- !u!23 &525257796
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 525257792}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!224 &525257797
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 525257792}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -0.29, y: 4.94}
m_SizeDelta: {x: 11.251, y: 1.6260157}
m_Pivot: {x: 0.5, y: 1}
--- !u!1 &936662190
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 936662192}
- component: {fileID: 936662191}
m_Layer: 0
m_Name: Sample
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &936662191
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 936662190}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3490e34b6e9af49f6b3c40fec1ec7c1b, type: 3}
m_Name:
m_EditorClassIdentifier:
title: {fileID: 525257793}
resourceName: sample.abc
layoutWidth: 0.9
--- !u!4 &936662192
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 936662190}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &4807823002769706979
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4807823002965126724, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_Name
value: ABCLayout
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126730, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: layoutScale
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126730, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: overrideLineBreaks
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126730, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: staffLineMargin
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126730, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: staffLinePadding
value: 0.4
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126730, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: autosize
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0.05
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0.79
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_SizeDelta.x
value: 4.12
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_SizeDelta.y
value: 1.751
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_AnchorMin.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_AnchorMin.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_AnchorMax.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_AnchorMax.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4807823002965126731, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9,
type: 3}
propertyPath: m_Pivot.y
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5f1f5f7ab76fd8c4b9bfa42892dc57f9, type: 3}
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2d1df42123d30462dab35fcd4f21d360
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+74
View File
@@ -0,0 +1,74 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
namespace ABCUnity.Example
{
public class BasicLayout : MonoBehaviour
{
[SerializeField] private TextMeshPro title;
[SerializeField] private string resourceName;
[Range(0.0f, 1.0f)]public float layoutWidth = 0.8f;
private Camera mainCamera;
private Layout layout;
private float aspect;
private float orthographicSize;
void Awake()
{
mainCamera = Camera.main;
layout = FindObjectOfType<Layout>();
ResizeLayout();
layout.onLoaded += OnLoaded;
}
void OnLoaded(ABC.Tune tune)
{
title.text = tune.title;
}
void Start()
{
if (!string.IsNullOrEmpty(resourceName))
LoadFromResource(resourceName);
}
void Update()
{
if (aspect != mainCamera.aspect || orthographicSize != mainCamera.orthographicSize)
ResizeLayout();
}
public void LoadFromResource(string resourceName)
{
TextAsset abcTextAsset = Resources.Load(resourceName) as TextAsset;
if (abcTextAsset)
layout.LoadString(abcTextAsset.text);
}
private void ResizeLayout()
{
aspect = mainCamera.aspect;
orthographicSize = mainCamera.orthographicSize;
float orthoHeight = orthographicSize* 2.0f;
float targetWidth = (orthoHeight * aspect) * layoutWidth;
var titleTransform = title.rectTransform;
titleTransform.position = new Vector3(0.0f, orthographicSize, 0.0f);
titleTransform.sizeDelta = new Vector2 (targetWidth, titleTransform.sizeDelta.y);
var layoutSpacer = 1.5f;
var layoutTransform = layout.GetComponent<RectTransform>();
layoutTransform.position = new Vector3(0.0f, titleTransform.position.y - titleTransform.rect.height - layoutSpacer, 0.0f);
layoutTransform.sizeDelta = new Vector2(targetWidth, orthoHeight - titleTransform.sizeDelta.y - layoutSpacer);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3490e34b6e9af49f6b3c40fec1ec7c1b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 37aabfa98ece468418c52e07c1337480
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,15 @@
X:1
T:Deck The Halls
M:C
L:1/4
V:1
V:2 clef=bass
K:C
[V:1] !5!c>_BAG | FGAF | !2!G/2A/2!4!_B/2G/2 A>G| !1!F !3!E !1!F2 |
[V:2] !3!!5![F,A,]4 | [F,A,]4 | !2!!4![G,_B,]2 !3!!5![F,A,]2| z2 [F,A,]2 |
[V:1] !5!c>_BAG | FGAF | G/2A/2!4!_B/2G/2 A>G| !1!F !3!E !1!F2 | Z |
[V:2] [F,A,]4 | !3!!5![F,A,]4 | !2!!4![G,_B,]2 [F,A,]2| z2 [F,A,]2 | !4!G, > A, !2!_B, G, |
[V:1] Z | z2 !2!D/2E/2 F | !3!E D C2 | !5!c>BAG|
[V:2] !3!A,>_B,CG, | !3!A,/2!2!=B,/2 C z2 | z !1!!2![F,G,] !1!!5![G,C,]2 | !3!!5![F,A,]4 |
[V:1] FGAF | !2!D/2D/2D/2D/2 C>z| z !1!!3![CE] !4!F2 |
[V:2] [F,A,]4 | z2 z>!2!_B,| A, G, !3!!5![F,A,]2|
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d09642c30c7041b4b8a62e971d82316e
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 74f9e1ec0c5d11449b5323fe85d5aa66
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+131
View File
@@ -0,0 +1,131 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace ABCUnity
{
public class Alignment
{
public class Beat
{
public List<ABC.Item> items = new List<ABC.Item>();
public int beatStart { get; }
public Beat(int beatStart)
{
this.beatStart = beatStart;
}
}
public class Measure
{
public List<Beat> beats { get; } = new List<Beat>();
public ABC.Item bar;
public int lineNumber { get; set; }
public Measure(int lineNumber)
{
this.lineNumber = lineNumber;
}
public bool isRest
{
get { return IsMeasureRest(); }
}
private bool IsMeasureRest()
{
if (beats.Count != 1)
return false;
if (beats[0].items.Count != 1)
return false;
return beats[0].items[0].type == ABC.Item.Type.MultiMeasureRest;
}
}
public List<Measure> measures { get; private set; }
TimeSignature timeSignature;
public void Create(ABC.Voice voice)
{
measures = new List<Measure>();
if (voice.items.Count == 0) return;
var initialTimeSignature = voice.initialTimeSignature;
if (initialTimeSignature == string.Empty)
throw new BeatAlignmentException("Voice does not initially declare a time signature.");
timeSignature = TimeSignature.Parse(initialTimeSignature);
float t = 0;
int currentBeat = 1;
int lineNumber = 0;
Measure measure = new Measure(lineNumber);
Beat beat = new Beat(currentBeat);
for (int i = 0; i < voice.items.Count; i++)
{
switch (voice.items[i].type)
{
case ABC.Item.Type.Chord:
case ABC.Item.Type.Rest:
case ABC.Item.Type.Note:
var noteItem = voice.items[i] as ABC.Duration;
beat.items.Add(noteItem);
t += noteItem.duration;
if (t >= timeSignature.noteValue) // current beat is filled
{
measure.beats.Add(beat);
float beatCount = Mathf.Floor(t / timeSignature.noteValue);
currentBeat += (int)beatCount;
beat = new Beat(currentBeat);
t -= beatCount * timeSignature.noteValue;
}
break;
case ABC.Item.Type.MultiMeasureRest:
var measureRest = voice.items[i] as ABC.MultiMeasureRest;
if (measureRest.count > 1)
throw new LayoutException("Measure Rests of length greater than 1 are not currently supported.");
beat.items.Add(measureRest);
break;
case ABC.Item.Type.Bar:
measure.bar = voice.items[i];
if (beat.items.Count > 0)
measure.beats.Add(beat);
measures.Add(measure);
measure = new Measure(lineNumber);
currentBeat = 1;
beat = new Beat(currentBeat);
t = 0.0f;
break;
case ABC.Item.Type.LineBreak:
lineNumber += 1;
measure.lineNumber = lineNumber;
break;
}
}
if (beat.items.Count > 0)
measure.beats.Add(beat);
if (measure.beats.Count > 0)
measures.Add(measure);
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9a736abcf753a47469fe71e2559cc384
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+365
View File
@@ -0,0 +1,365 @@
using UnityEngine;
using System.Collections.Generic;
namespace ABCUnity
{
class Beam
{
public const float unspecifiedStemHeight = float.MaxValue;
public const float defaultStemHeight = 1.92f;
public static Vector3 stemUpOffset = new Vector3(0.65f, 0.35f, 0.0f);
public static Vector3 stemDownOffset = new Vector3(0.0f, 0.262f, 0.0f);
const float beamHeight = 0.28f;
static Vector3 beamOffset = new Vector3(0.0f, 0.366f, 0.0f);
const float defaultBeamSpacer = 0.2f;
public NoteCreator.NoteDirection noteDirection { get; private set; }
public enum Type {
/// <summary> All the notes contain the same pitch need to render a straight bar.</summary>
Basic,
/// <summary> All Notes are either increasing or decreasing in pitch.</summary>
Angle,
/// <summary> Notes are connected by a straight beam.</summary>
Straight
}
public List<ABC.Duration> items { get; } = new List<ABC.Duration>();
public Type type { get; private set; }
int id { get; }
public ABC.Clef clef { get; }
public float stemHeight { get; set; } = unspecifiedStemHeight;
private int index = 0;
public bool isReadyToCreate { get { return index == items.Count; } }
public Beam(int id, ABC.Clef clef)
{
this.id = id;
this.clef = clef;
}
private ABC.Pitch GetPitchForItem(ABC.Item item)
{
switch(item.type)
{
case ABC.Item.Type.Note:
var note = item as ABC.Note;
return note.pitch;
case ABC.Item.Type.Chord:
var chord = item as ABC.Chord;
if (noteDirection == NoteCreator.NoteDirection.Down)
return chord.notes[0].pitch;
else
return chord.notes[chord.notes.Length - 1].pitch;
default:
throw new LayoutException($"Invalid item in beam: {id}");
}
}
/// <summary> Analyzes the items in the beam and determines relevant info that will control layout. </summary>
public void Analyze()
{
DetermineDirection();
if (IsBasic())
type = Type.Basic;
else if (IsAngled())
type = Type.Angle;
else
{
type = Type.Straight;
DetermineStemHeight();
}
}
/// <summary>
/// Determines the stem height to use for a straight beam.
/// The Height is calculated as the default terminus of the highest note's stem
/// </summary>
void DetermineStemHeight()
{
if (noteDirection == NoteCreator.NoteDirection.Up)
{
ABC.Pitch pitch = ABC.Pitch.A0;
foreach (var item in items)
{
var itemPitch = GetPitchForItem(item);
if (itemPitch > pitch)
pitch = itemPitch;
}
int stepCount = pitch - NoteCreator.clefZero[clef];
stemHeight = NoteCreator.noteStep * stepCount + defaultStemHeight;
}
else
{
ABC.Pitch pitch = ABC.Pitch.C8;
foreach (var item in items)
{
var itemPitch = GetPitchForItem(item);
if (itemPitch < pitch)
pitch = itemPitch;
}
int stepCount = pitch - NoteCreator.clefZero[clef];
stemHeight = NoteCreator.noteStep * (stepCount + 1) - defaultStemHeight;
}
}
/// <summary>
/// Determines the direction of the beam stem.
/// If the average of all notes is above the middle staff value they will be down else, up.
/// </summary>
private void DetermineDirection()
{
int total = 0;
foreach (var item in items)
{
switch (item.type)
{
case ABC.Item.Type.Note:
var note = item as ABC.Note;
total += (int)note.pitch;
break;
case ABC.Item.Type.Chord:
var chord = item as ABC.Chord;
int sum = 0;
foreach (var chordNote in chord.notes)
sum += (int)chordNote.pitch;
total += (int)Mathf.Round(sum / (float)chord.notes.Length);
break;
default:
throw new LayoutException($"Invalid item in beam: {id}");
}
}
float averagePitch = total / (float)items.Count;
noteDirection = (averagePitch > (float)NoteCreator.clefZero[clef] + 3) ? NoteCreator.NoteDirection.Down : NoteCreator.NoteDirection.Up;
}
Bounds first;
Bounds last;
/// <summary>
/// This method is called every time an item in the beam has been laid out.
/// When the final item is laid out the beam will be added to the scene.
/// </summary>
public void Update(Bounds bounds)
{
if (index == 0)
first = bounds;
if (index < items.Count)
{
last = bounds;
index += 1;
}
}
bool IsBasic()
{
var firstNotePitch = GetPitchForItem(items[0]);
for (int i = 0; i < items.Count; i++)
{
if (GetPitchForItem(items[i]) != firstNotePitch)
return false;
}
return true;
}
bool IsAngled()
{
var previousNote = GetPitchForItem(items[0]);
var currentNote = GetPitchForItem(items[1]);
if (currentNote > previousNote)
{
previousNote = currentNote;
for (int i = 2; i < items.Count; i++)
{
currentNote = GetPitchForItem(items[i]);
if (currentNote <= previousNote)
return false;
previousNote = currentNote;
}
return true;
}
else if (currentNote < previousNote)
{
previousNote = currentNote;
for (int i = 2; i < items.Count; i++)
{
currentNote = GetPitchForItem(items[i]);
if (currentNote >= previousNote)
return false;
previousNote = currentNote;
}
return true;
}
return false;
}
/// <summary>
/// Creates a basic straight beam connecting the first and last item in this beam.
/// Note that this method should be used when the first and last items have the same max Y bounding value.
/// </summary>
public bool CreateBasicBeam(SpriteCache cache, GameObject container)
{
if (type != Type.Basic && type != Type.Straight)
return false;
float offsetY = 0.0f;
ABC.Length length = (items[0] as ABC.Duration).length;
for (ABC.Length l = ABC.Length.Eighth; l >= length; l--)
{
var beam = cache.GetSpriteObject($"Note_Beam_{noteDirection}");
beam.transform.parent = container.transform;
float distX;
if (noteDirection == NoteCreator.NoteDirection.Up)
{
var beamPos = first.max;
beam.transform.localPosition = new Vector3(beamPos.x, beamPos.y - offsetY, 0.0f);
distX = last.max.x - beamPos.x;
}
else
{
var beamPos = first.min;
beam.transform.localPosition = new Vector3(beamPos.x, beamPos.y + offsetY, 0.0f);
distX = last.min.x - beamPos.x;
}
beam.transform.localScale = new Vector3(distX, 1.0f, 1.0f);
offsetY += beamHeight + defaultBeamSpacer;
}
return true;
}
/// <summary>
/// Creates a beam connecting the first and last item in this beam.
/// This method should be used when the max values for these items are not at the same height.
/// Mesh vertices are generated as opposed to a sprite as in the straight beam.
/// </summary>
public bool CreateAngledBeam(List<Vector3> vertices)
{
if (type != Type.Angle)
return false;
float offsetY = 0.0f;
ABC.Length length = (items[0] as ABC.Duration).length;
for (ABC.Length l = ABC.Length.Eighth; l >= length; l--)
{
if (noteDirection == NoteCreator.NoteDirection.Up)
{
vertices.Add(new Vector3(first.max.x, first.max.y - offsetY, 0.0f));
vertices.Add(new Vector3(last.max.x, last.max.y - offsetY, 0.0f));
vertices.Add(new Vector3(first.max.x, first.max.y - offsetY - beamHeight, 0.0f));
vertices.Add(new Vector3(last.max.x, last.max.y - offsetY - beamHeight, 0.0f));
}
else
{
vertices.Add(new Vector3(first.min.x, first.min.y + offsetY + beamHeight, 0.0f));
vertices.Add(new Vector3(last.min.x, last.min.y + offsetY + beamHeight, 0.0f));
vertices.Add(new Vector3(first.min.x, first.min.y + offsetY, 0.0f));
vertices.Add(new Vector3(last.min.x, last.min.y + offsetY, 0.0f));
}
offsetY += beamHeight + defaultBeamSpacer;
}
return true;
}
public static void CreateMesh(List<Vector3> vertices, Material material, GameObject container)
{
var mesh = new Mesh();
mesh.vertices = vertices.ToArray();
var triangles = new List<int>();
for (int i = 0; i < vertices.Count; i += 4)
{
triangles.Add(i);
triangles.Add(i + 1);
triangles.Add(i + 2);
triangles.Add(i + 2);
triangles.Add(i + 1);
triangles.Add(i + 3);
}
mesh.triangles = triangles.ToArray();
var item = new GameObject("Beam");
var meshRenderer = item.AddComponent<MeshRenderer>();
meshRenderer.sharedMaterial = material;
var meshFilter = item.AddComponent<MeshFilter>();
meshFilter.mesh = mesh;
item.transform.localPosition = Vector3.zero;
item.transform.parent = container.transform;
}
public static Dictionary<int, Beam> CreateBeams(ABC.Tune tune)
{
var beams = new Dictionary<int, Beam>();
foreach (var voice in tune.voices)
{
foreach (var item in voice.items)
{
var duration = item as ABC.Duration;
if (duration == null)
continue;
// add this note to a beam if necessary
if (duration.beam != 0)
{
beams.TryGetValue(duration.beam, out Beam beam);
if (beam == null)
{
beam = new Beam(duration.beam, voice.clef);
beams[duration.beam] = beam;
}
beam.items.Add(duration);
}
}
}
foreach (var item in beams)
item.Value.Analyze();
return beams;
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 603bd412ec430d4409f3d2475b844bb0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+75
View File
@@ -0,0 +1,75 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D;
using TMPro;
namespace ABCUnity
{
public class CustomStaff
{
SpriteCache cache;
NoteCreator notes;
public Dictionary<int, List<string>> decorations { get; } = new Dictionary<int, List<string>>();
ABC.Clef clef;
public GameObject container { get; }
public bool isInit { get; private set; }
public float staffWidth { get { return currentWidth; } set { SetWidth(value); } }
float staffSpriteBaseWidth = 0.0f;
float currentWidth = 0.0f;
public CustomStaff(GameObject parent, SpriteAtlas spriteAtlas, TextMeshPro textPrefab)
{
var staffContainer = new GameObject("Custom Staff");
staffContainer.transform.parent = parent.transform;
staffContainer.transform.localPosition = Vector3.zero;
this.container = staffContainer;
cache = new SpriteCache(spriteAtlas, textPrefab);
notes = new NoteCreator(cache);
}
public void Init(ABC.Clef clef)
{
this.clef = clef;
var info = notes.CreateStaff(this.clef, container, Vector3.zero);
SetWidth(info.totalBounding.size.x);
isInit = true;
}
private void SetWidth(float newWidth)
{
var staff = container.transform.GetChild(0).gameObject;
var staffRenderer = staff.GetComponent<SpriteRenderer>();
if (staffSpriteBaseWidth == 0.0f)
staffSpriteBaseWidth = staffRenderer.bounds.size.x;
var scaleX = newWidth / staffSpriteBaseWidth;
staffRenderer.transform.localScale = new Vector3(scaleX, 1.0f, 1.0f);
this.currentWidth = newWidth;
}
public GameObject AppendNote(ABC.Note note, float pos)
{
return AppendNote(note, null, pos);
}
public GameObject AppendNote(ABC.Note note, List<string> decorations, float pos)
{
GameObject noteContainer = new GameObject();
noteContainer.transform.parent = container.transform;
notes.CreateNote(note, this.clef, decorations, noteContainer);
noteContainer.transform.localPosition = new Vector3(pos, 0.0f, 0.0f);
noteContainer.transform.localScale = Vector3.one; // clear any scaling set on the parent
return noteContainer;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7d0d151738fbf6848b327dda64e648ba
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+19
View File
@@ -0,0 +1,19 @@
using System;
namespace ABCUnity
{
public class BeatAlignmentException : Exception
{
public BeatAlignmentException(string message) : base(message) {}
}
public class LayoutException : Exception
{
public LayoutException(string message) : base(message) { }
}
public class Exception : System.Exception
{
public Exception(string message) : base(message) { }
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: af173254b4880c24f820630816073fd7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+749
View File
@@ -0,0 +1,749 @@
using System;
using System.IO;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.U2D;
namespace ABCUnity
{
public class Layout : MonoBehaviour
{
[SerializeField] private SpriteAtlas spriteAtlas; // set in editor
[SerializeField] public Color color = Color.black;
[SerializeField] public Material NoteMaterial;
[SerializeField] public TextMeshPro textPrefab;
[SerializeField] public float staffLinePadding = 0.4f;
[SerializeField] public float staffLineMargin = 1.0f;
[SerializeField] public bool overrideLineBreaks = false;
#region Callbacks
public delegate void OnLoaded(ABC.Tune tune);
public OnLoaded onLoaded;
#endregion
#region TuneSpecificMembers
List<VoiceLayout> layouts = new List<VoiceLayout>();
Dictionary<int, Beam> beams;
public ABC.Tune tune { get; private set; }
GameObject scoreContainer;
public Dictionary<int, GameObject> gameObjectMap { get; } = new Dictionary<int, GameObject>();
public Dictionary<GameObject, ABC.Item> itemMap { get; } = new Dictionary<GameObject, ABC.Item>();
private Dictionary<int, List<SpriteRenderer>> spriteRendererCache = new Dictionary<int, List<SpriteRenderer>>();
private TimeSignature timeSignature;
#endregion
private float layoutScale = 1.0f;
public RectTransform rectTransform { get; private set; }
private SpriteCache cache;
private NoteCreator notes;
private bool multilineLayout;
Vector2 staffOffset;
private float horizontalMax;
#region Constants
public const float staffPadding = 0.3f;
public const float measurePadding = 0.5f;
public const float noteAdvance = 0.75f;
const float minimumAdavance = 0.25f;
const float staffHeight = 2.29f;
#endregion
public void Awake()
{
multilineLayout = !overrideLineBreaks;
rectTransform = GetComponent<RectTransform>();
cache = new SpriteCache(spriteAtlas, textPrefab);
layouts.Clear();
if (beams != null)
beams.Clear();
NoteMaterial = GameObject.Instantiate(NoteMaterial);
NoteMaterial.color = color;
}
public void Clear()
{
if (tune == null) return;
GameObject.Destroy(scoreContainer);
layouts.Clear();
gameObjectMap.Clear();
itemMap.Clear();
spriteRendererCache.Clear();
timeSignature = null;
tune = null;
}
public void LoadString(string abc)
{
try
{
Clear();
tune = ABC.Tune.Load(abc);
LayoutTune();
onLoaded?.Invoke(tune);
}
catch (ABC.ParseException e)
{
Debug.Log(e.Message);
}
}
public void LoadStream(Stream stream)
{
try
{
Clear();
tune = ABC.Tune.Load(stream);
LayoutTune();
onLoaded?.Invoke(tune);
}
catch (ABC.ParseException e)
{
Debug.Log(e.Message);
}
}
public void LoadFile(string path)
{
using (FileStream file = File.OpenRead(path))
{
LoadStream(file);
}
}
public GameObject FindItemRootObject(GameObject obj)
{
while (!itemMap.ContainsKey(obj))
obj = obj.transform.parent.gameObject;
return obj;
}
public bool SetItemColor(ABC.Item item, Color color)
{
if (gameObjectMap.TryGetValue(item.id, out GameObject obj))
{
if (!spriteRendererCache.TryGetValue(item.id, out var spriteRenderers))
{
spriteRenderers = Util.GatherSpriteRenderers(obj);
spriteRendererCache[item.id] = spriteRenderers;
}
foreach (var spriteRenderer in spriteRenderers)
spriteRenderer.color = color;
return true;
}
return false;
}
public void ResetItemColors()
{
foreach (var spriteRenderes in spriteRendererCache.Values)
{
foreach (var spriteRenderer in spriteRenderes)
spriteRenderer.color = color;
}
}
public Alignment GetAlignment(int i)
{
return layouts[i].alignment;
}
void SetupVoiceLayouts()
{
// create the layout structures for each voice
int measureCount = 0;
for (int i = 0; i < tune.voices.Count; i++)
{
var layout = new VoiceLayout(tune.voices[i]);
layouts.Add(layout);
layout.Init(multilineLayout);
if (i == 0)
measureCount = layout.alignment.measures.Count;
else if (layout.alignment.measures.Count != measureCount)
throw new LayoutException("All voices must have the same measure count");
}
}
void LayoutScoreLine(int lineNum)
{
for (int measure = 0; measure < layouts[0].scoreLines[lineNum].measures.Count; measure++)
{
float advanceAmount = measurePadding;
foreach (var layout in layouts)
{
layout.beatIndex = 0;
var scoreLine = layout.scoreLines[lineNum];
var measureInfo = scoreLine.measures[measure];
measureInfo.container = new GameObject("Measure");
}
float maxBeatX = 0.0f;
for (int beat = 1; beat <= timeSignature.beatCount; beat++)
{
int beatItemIndex = 0;
while (true)
{
bool more = false;
float alignment = 0.0f;
//layout
foreach (var layout in layouts)
{
var scoreLine = layout.scoreLines[lineNum];
var layoutMeasure = scoreLine.measures[measure];
var beatInfo = layoutMeasure.source.beats[layout.beatIndex];
// advance
// in order to preserve alignment, all layouts will advance to the furthest position of the current beat marker
var delta = maxBeatX - layoutMeasure.insertX;
layoutMeasure.spacers.Add(delta);
layoutMeasure.AdvaceInsertPos(delta);
// if this beat is the start of a new group of notes render them
if (beatInfo.beatStart == beat && beatItemIndex < beatInfo.items.Count)
{
var element = layoutMeasure.AddItem(beatInfo.items[beatItemIndex]);
switch (element.item.type)
{
case ABC.Item.Type.Note:
CreateNoteSprite(layout.voice.clef, element);
break;
case ABC.Item.Type.Chord:
CreateChordSprite(layout.voice.clef, element);
break;
case ABC.Item.Type.Rest:
CreateRestSprite(element);
break;
case ABC.Item.Type.MultiMeasureRest:
CreateMeasureRestSprite(element);
break;
}
gameObjectMap.Add(element.item.id, element.container);
itemMap.Add(element.container, element.item);
// position
var beatItem = layoutMeasure.elements[layoutMeasure.elements.Count - 1];
float alignPos = SetItemReferencePosition(beatItem, layoutMeasure, advanceAmount);
alignment = Mathf.Max(alignment, alignPos);
beatItem.container.transform.parent = layoutMeasure.container.transform;
}
else
{
layoutMeasure.AddItem(null);
layoutMeasure.spacers[layoutMeasure.spacers.Count - 1] += noteAdvance;
layoutMeasure.AdvaceInsertPos(noteAdvance);
}
}
// align
foreach (var layout in layouts)
{
var scoreLine = layout.scoreLines[lineNum];
var layoutMeasure = scoreLine.measures[measure];
var beatInfo = layoutMeasure.source.beats[layout.beatIndex];
if (beatInfo.beatStart == beat && beatItemIndex < beatInfo.items.Count)
{
var beatItem = layoutMeasure.elements[layoutMeasure.elements.Count - 1];
float alignPos = layoutMeasure.insertX - beatItem.totalWidth + beatItem.prefixAmount;
float delta = alignment - alignPos;
layoutMeasure.spacers[layoutMeasure.spacers.Count - 1] += delta;
layoutMeasure.AdvaceInsertPos(delta);
bool allItemsDone = beatItemIndex == beatInfo.items.Count - 1;
if (allItemsDone)
layout.beatIndex = Math.Min(layoutMeasure.source.beats.Count - 1, layout.beatIndex + 1);
else
more = true;
}
maxBeatX = Math.Max(maxBeatX, layoutMeasure.bounds.size.x);
}
beatItemIndex += 1;
advanceAmount = noteAdvance;
if (!more) break;
}
}
// after all items in the measure are placed, add the measure's bar
foreach (var layout in layouts)
{
var layoutMeasure = layout.scoreLines[lineNum].measures[measure];
var delta = maxBeatX - layoutMeasure.insertX;
layoutMeasure.spacers.Add(delta);
layoutMeasure.AdvaceInsertPos(delta);
var element = layoutMeasure.AddItem(layoutMeasure.source.bar);
CreateBarSprite(element);
SetItemReferencePosition(element, layoutMeasure, advanceAmount);
element.container.transform.parent = layoutMeasure.container.transform;
}
}
}
void PositionScoreLine(int lineNum)
{
float startX = float.MinValue;
foreach (var layout in layouts)
{
var scoreLine = layout.scoreLines[lineNum];
scoreLine.container = new GameObject("ScoreLine");
LayoutStaff(scoreLine, layout.voice.clef);
startX = Mathf.Max(startX, scoreLine.insertX);
}
foreach (var layout in layouts)
{
var scoreLine = layout.scoreLines[lineNum];
scoreLine.AdvaceInsertPos(startX - scoreLine.insertX + staffPadding);
}
if (lineNum == 0)
{
foreach (var layout in layouts)
{
var scoreLine = layout.scoreLines[lineNum];
LayoutTimeSignature(scoreLine, layout.voice.initialTimeSignature);
}
}
var measureWidths = CalculateMeasureWidths(lineNum);
foreach (var layout in layouts)
{
var scoreLine = layout.scoreLines[lineNum];
for (int i = 0; i < scoreLine.measures.Count; i++)
{
var measure = scoreLine.measures[i];
Bounds actualMeasureBounds;
if (measure.source.isRest)
actualMeasureBounds = PositionMeasureRest(measure, measureWidths[i]);
else
actualMeasureBounds = PositionMeasureItems(measure, measureWidths[i]);
measure.container.transform.parent = scoreLine.container.transform;
measure.container.transform.localPosition = scoreLine.insertPos;
scoreLine.EncapsulateAppendedBounds(actualMeasureBounds);
}
}
FinalizeScoreLine(lineNum);
}
float[] CalculateMeasureWidths(int lineNum)
{
var scoreLine = layouts[0].scoreLines[lineNum];
float[] measureWidths = new float[scoreLine.measures.Count];
float referenceWidth = 0.0f;
float allocatedSpace = horizontalMax - scoreLine.insertX;
for (int i = 0; i < scoreLine.measures.Count; i++)
{
measureWidths[i] = scoreLine.measures[i].insertX;
referenceWidth += measureWidths[i];
}
for (int i = 0; i < scoreLine.measures.Count; i++)
measureWidths[i] = (measureWidths[i] / referenceWidth) * allocatedSpace;
return measureWidths;
}
/// <summary>
/// Sets the position of a full measure rest such that it is centered in the available space.
/// Positions the bar first, then centers the rest in the remaining space.
/// </summary>
Bounds PositionMeasureRest(VoiceLayout.ScoreLine.Measure measure, float allocatedWidth)
{
var bar = measure.elements[measure.elements.Count - 1];
float barX = allocatedWidth - bar.totalWidth;
bar.container.transform.localPosition = new Vector3(barX, 0.0f, 0.0f);
var rest = measure.elements[0];
var measureCenter = barX / 2.0f;
var posX = measureCenter - rest.info.totalBounding.size.x / 2.0f;
rest.container.transform.localPosition = new Vector3(posX, 0.0f, 0.0f);
Bounds actualBounds = new Bounds(Vector3.zero, Vector3.zero);
actualBounds.Encapsulate(new Vector3(allocatedWidth, 0.0f, 0.0f));
return actualBounds;
}
Bounds PositionMeasureItems(VoiceLayout.ScoreLine.Measure measure, float actualmeasureWidth)
{
Bounds actualBounds = new Bounds(Vector3.zero, Vector3.zero);
List<Vector3> beamVertices = null;
float positionX = 0.0f;
float deltaWidth = actualmeasureWidth - measure.minWidth;
float deltaWidth2 = actualmeasureWidth - measure.insertX;
float spacerAdjust = deltaWidth / (measure.elements.Count - 1);
for (int i = 0; i < measure.elements.Count; i++)
{
var item = measure.elements[i];
positionX += measure.spacers[i];
if (i > 0)
positionX += spacerAdjust;
if (item.item == null)
continue;
Vector3 insertPos = new Vector3(positionX, 0.0f, 0.0f);
item.container.transform.localPosition = insertPos;
positionX += item.totalWidth;
var actualNoteInfo = item.OffsetNoteInfo(insertPos);
actualBounds.Encapsulate(actualNoteInfo.totalBounding);
var duration = item.item as ABC.Duration;
if (duration != null && beams.TryGetValue(duration.beam, out Beam beam))
{
beam.Update(actualNoteInfo.rootBounding);
if (beam.isReadyToCreate)
{
if (beam.type == Beam.Type.Angle)
{
if (beamVertices == null)
beamVertices = new List<Vector3>();
beam.CreateAngledBeam(beamVertices);
}
else
{
beam.CreateBasicBeam(cache, measure.container);
}
}
}
}
if (beamVertices != null)
Beam.CreateMesh(beamVertices, NoteMaterial, measure.container);
return actualBounds;
}
class StafflineHeight
{
public readonly float min, max;
public StafflineHeight(float min, float max)
{
this.min = min;
this.max = max;
}
public float val { get { return max - min; } }
}
private static readonly Dictionary<ABC.Clef, StafflineHeight> baseStaffValues = new Dictionary<ABC.Clef, StafflineHeight>()
{
{ ABC.Clef.Treble, new StafflineHeight(-0.9f, 3.0f) },
{ ABC.Clef.Bass, new StafflineHeight(0.0f, 2.3f) },
};
float CalculateScoreHeight()
{
float height = 0.0f;
for (int i = 0; i < layouts[0].scoreLines.Count; i++)
{
//compute height of this score line
for (int l = 0; l < layouts.Count; l++)
{
var baseValues = baseStaffValues[layouts[l].voice.clef];
float min = baseValues.min;
float max = baseValues.max;
foreach (var measure in layouts[l].scoreLines[i].measures)
{
min = Mathf.Min(min, measure.bounds.min.y);
max = Mathf.Max(max, measure.bounds.max.y);
}
var staffSpacer = l == layouts.Count - 1 ? staffLineMargin : staffLinePadding;
height += (max - min) + staffSpacer;
}
}
return height;
}
void PrepareScoreLines()
{
if (multilineLayout)
{
for (int i = 0; i < layouts[0].scoreLines.Count; i++)
LayoutScoreLine(i);
}
else
{
LayoutScoreLine(0);
PartitionScoreLine();
}
float calculatedHeight = CalculateScoreHeight();
var rectSize = rectTransform.sizeDelta;
if (calculatedHeight > rectSize.y)
layoutScale = rectSize.y / calculatedHeight;
horizontalMax = rectSize.x * 1.0f / layoutScale;
staffOffset = new Vector2(-rectSize.x / 2.0f, 0);
}
void LayoutTune()
{
if (tune == null) return;
notes = new NoteCreator(cache);
cache.color = color;
timeSignature = GetTimeSignature();
Vector3 scale = this.gameObject.transform.localScale;
this.gameObject.transform.localScale = Vector3.one;
beams = Beam.CreateBeams(tune);
SetupVoiceLayouts();
scoreContainer = new GameObject("Score");
scoreContainer.transform.parent = this.transform;
scoreContainer.transform.localPosition = Vector3.zero;
PrepareScoreLines();
for (int i = 0; i < layouts[0].scoreLines.Count; i++)
PositionScoreLine(i);
scoreContainer.transform.localScale = new Vector3(layoutScale, layoutScale, layoutScale);
this.gameObject.transform.localScale = scale;
}
/// <summary> Breaks up a single score line into multiple lines based on the horizontal max</summary>
void PartitionScoreLine()
{
// save off the scorelines that were laid out
int measureCount = layouts[0].scoreLines[0].measures.Count;
var scoreLines = new List<VoiceLayout.ScoreLine.Measure>[layouts.Count];
for (int i = 0; i < scoreLines.Length; i++)
{
scoreLines[i] = layouts[i].scoreLines[0].measures;
layouts[i].scoreLines.Clear();
layouts[i].scoreLines.Add(new VoiceLayout.ScoreLine());
}
float currentWidth = 0.0f;
for (int measureIndex = 0; measureIndex < measureCount; measureIndex++)
{
float measureWidth = float.MinValue;
foreach (var scoreLine in scoreLines)
measureWidth = Mathf.Max(measureWidth, scoreLine[measureIndex].insertX);
// ensure that the measure of each scoreline will fit on the current line.
// If it wont fit make a new line
foreach (var scoreLine in scoreLines)
{
if (currentWidth + scoreLine[measureIndex].insertX > horizontalMax)
{
foreach (var layout in layouts)
layout.scoreLines.Add(new VoiceLayout.ScoreLine());
currentWidth = 0.0f;
break;
}
}
//Add the current measure to the last scoreline
for (int i = 0; i < scoreLines.Length; i++)
{
var scoreLine = layouts[i].scoreLines[layouts[i].scoreLines.Count - 1];
scoreLine.measures.Add(scoreLines[i][measureIndex]);
currentWidth += measureWidth;
}
}
}
TimeSignature GetTimeSignature()
{
TimeSignature result = null;
for (int i = 0; i < tune.voices.Count; i++)
{
var initialTimeSignature = tune.voices[i].initialTimeSignature;
if (initialTimeSignature == string.Empty)
throw new BeatAlignmentException($"Voice {i} does not initially declare a time signature.");
var timeSignature = TimeSignature.Parse(initialTimeSignature);
if (result == null)
result = timeSignature;
else if (!timeSignature.Equals(result))
throw new LayoutException("All voices should have the same time signature");
}
return result;
}
/// <summary>Calculates the final size of the staff and positions it correctly relative to the container.</summary>
void FinalizeScoreLine(int lineNum)
{
//foreach (var layout in layouts)
for (int i = 0; i < layouts.Count; i++)
{
var scoreLine = layouts[i].scoreLines[lineNum];
AdjustStaffScale(scoreLine);
scoreLine.container.transform.parent = scoreContainer.transform;
scoreLine.container.transform.localPosition = new Vector3(staffOffset.x * (1.0f / layoutScale), staffOffset.y - (scoreLine.bounds.max.y), 0.0f);
var staffSpacer = i == layouts.Count - 1 ? staffLineMargin : staffLinePadding;
staffOffset.y -= (scoreLine.bounds.size.y + staffSpacer);
}
RenderConnectorBar(lineNum);
}
void RenderConnectorBar(int lineNum)
{
var barSprite = cache.GetSpriteObject("Bar_Line");
barSprite.transform.parent = scoreContainer.transform;
var topScoreLine = layouts[0].scoreLines[lineNum];
var bottomScoreLine = layouts[layouts.Count - 1].scoreLines[lineNum];
var barPos = bottomScoreLine.container.transform.localPosition;
var topPos = topScoreLine.container.transform.localPosition.y + staffHeight;
var targetHeight = topPos - barPos.y;
var scale = targetHeight / barSprite.bounds.size.y;
barSprite.transform.localPosition = barPos;
barSprite.transform.localScale = new Vector3(1.0f, scale, 1.0f);
}
void LayoutStaff(VoiceLayout.ScoreLine scoreLine, ABC.Clef clef)
{
var staffSprite = cache.GetSpriteObject("Staff");
staffSprite.transform.parent = scoreLine.container.transform;
staffSprite.transform.localPosition = scoreLine.insertPos;
scoreLine.bounds = staffSprite.bounds;
scoreLine.AdvaceInsertPos(staffPadding);
var clefSprite = cache.GetSpriteObject($"Clef_{clef}");
clefSprite.transform.parent = scoreLine.container.transform;
clefSprite.transform.localPosition = scoreLine.insertPos;
scoreLine.bounds.Encapsulate(clefSprite.bounds);
scoreLine.AdvaceInsertPos(staffPadding);
}
void LayoutTimeSignature(VoiceLayout.ScoreLine scoreLine, string timeSignature)
{
var container = new GameObject("Time Signature");
container.transform.parent = scoreLine.container.transform;
var timeSignatureInfo = notes.CreateTimeSignature(timeSignature, container);
container.transform.localPosition = scoreLine.insertPos;
scoreLine.EncapsulateAppendedBounds(timeSignatureInfo.totalBounding);
}
void AdjustStaffScale(VoiceLayout.ScoreLine scoreLine)
{
var currentStaff = scoreLine.container.transform.GetChild(0);
var currentWidth = currentStaff.GetComponent<SpriteRenderer>().bounds.size.x;
var scaleX = scoreLine.insertX / currentWidth;
currentStaff.transform.localScale = new Vector3(scaleX, 1.0f, 1.0f);
}
float SetItemReferencePosition(VoiceLayout.ScoreLine.Element element, VoiceLayout.ScoreLine.Measure measure, float advanceAmount)
{
float spacer = Mathf.Max(minimumAdavance, advanceAmount - element.prefixAmount);
float alignmentPos = measure.insertX + spacer + element.prefixAmount;
measure.spacers[measure.spacers.Count - 1] += spacer;
measure.AdvaceInsertPos(spacer);
measure.EncapsulateAppendedBounds(element.info.totalBounding);
return alignmentPos;
}
void CreateChordSprite(ABC.Clef clef, VoiceLayout.ScoreLine.Element element)
{
var chordItem = element.item as ABC.Chord;
element.container = new GameObject("Chord");
tune.decorations.TryGetValue(chordItem.id, out var decorations);
NoteInfo chordInfo;
if (beams.TryGetValue(chordItem.beam, out Beam beam))
chordInfo = notes.CreateChord(chordItem, beam, decorations, element.container);
else
chordInfo = notes.CreateChord(chordItem, clef, decorations, element.container);
element.info = chordInfo;
}
void CreateNoteSprite(ABC.Clef clef, VoiceLayout.ScoreLine.Element element)
{
var noteItem = element.item as ABC.Note;
element.container = new GameObject("Note");
tune.decorations.TryGetValue(noteItem.id, out var decorations);
NoteInfo noteInfo;
if (beams.TryGetValue(noteItem.beam, out Beam beam))
noteInfo = notes.CreateNote(noteItem, beam, decorations, element.container);
else
noteInfo = notes.CreateNote(noteItem, clef, decorations, element.container);
element.info = noteInfo;
}
void CreateRestSprite(VoiceLayout.ScoreLine.Element element)
{
var restItem = element.item as ABC.Rest;
element.container = new GameObject("Rest");
element.info = notes.CreateRest(restItem, element.container);
}
void CreateBarSprite(VoiceLayout.ScoreLine.Element element)
{
var barItem = element.item as ABC.Bar;
element.container = new GameObject("Bar");
element.info = notes.CreateBar(barItem, element.container);
}
void CreateMeasureRestSprite(VoiceLayout.ScoreLine.Element element)
{
var measureRest = element.item as ABC.MultiMeasureRest;
element.container = new GameObject("Rest");
element.info = notes.CreateMeasureRest(measureRest, element.container);
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f3b46fe4dd2878e4284e77e0c7f6b689
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+837
View File
@@ -0,0 +1,837 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.CompilerServices;
namespace ABCUnity
{
public struct NoteInfo
{
public NoteInfo(Bounds rootBounding, Bounds bounding)
{
this.rootBounding = rootBounding;
this.totalBounding = bounding;
}
public Bounds rootBounding;
public Bounds totalBounding;
}
class NoteCreator
{
private SpriteCache spriteCache;
public NoteCreator(SpriteCache spriteCache)
{
this.spriteCache = spriteCache;
}
public static readonly Dictionary<ABC.Clef, ABC.Pitch> clefZero = new Dictionary<ABC.Clef, ABC.Pitch>()
{
{ ABC.Clef.Treble, ABC.Pitch.F4}, { ABC.Clef.Bass, ABC.Pitch.A2}
};
public enum NoteDirection
{
Down, Up
}
/// <summary> The distance between note values on the staff. </summary>
public const float noteStep = 0.28f;
/// <summary> The distance to offset the Chord dot from its root note.
/// If the stem direction is down this value will need to be negated.
/// </summary>
const float compressedChordNoteOffset = 0.67f;
const float compressedChordWholeNoteOffset = 0.75f;
/// <summary> The distance to offset notes by if they have a mark. This will ensure they are centered. </summary>
const float staffMarkerNoteOffset = 0.14f;
/// <summary> Distance between dots </summary>
const float dotAdvance = 0.2f;
const float wholeNoteStaffMarkerSize = 1.2f;
/// <summary> The step height to use for rest dots. </summary>
const int restDotStepCount = 4;
/// <summary> The space between an accidental and the note it is attached to. </summary>
const float accidentalOffset = 0.25f;
/// <summary> width allocated for an accidental sprite. </summary>
const float accidentalWidth = 0.55f;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private bool NeedsStaffMarkers(int stepCount)
{
return stepCount < -2 || stepCount > 8;
}
public NoteInfo CreateNote(ABC.Note note, Beam beam, IReadOnlyList<string> decorations, GameObject container)
{
int stepCount = note.pitch - clefZero[beam.clef];
return CreateNote(note, beam.clef, stepCount, beam, beam.noteDirection, decorations, container);
}
public NoteInfo CreateNote(ABC.Note note, ABC.Clef clef, IReadOnlyList<string> decorations, GameObject container)
{
int stepCount = note.pitch - clefZero[clef];
var noteDirection = stepCount > 3 ? NoteDirection.Down : NoteDirection.Up;
return CreateNote(note, clef, stepCount, null, noteDirection, decorations, container);
}
public NoteInfo CreateChord(ABC.Chord chord, Beam beam, IReadOnlyList<string> decorations, GameObject container)
{
return CreateChord(chord, beam.clef, beam.noteDirection, beam, decorations, container);
}
public NoteInfo CreateChord(ABC.Chord chord, ABC.Clef clef, IReadOnlyList<string> decorations, GameObject container)
{
var noteDirection = DetermineChordNoteDirection(chord.notes, clef);
if (chord.length == ABC.Length.Whole)
return CreateWholeNoteChord(chord, clef, decorations, container);
else
return CreateChord(chord, clef, noteDirection, null, decorations, container);
}
private NoteInfo CreateNote(ABC.Note note, ABC.Clef clef, int noteStepCount, Beam beam, NoteDirection noteDirection, IReadOnlyList<string> decorations, GameObject container)
{
var notePosition = new Vector3(0.0f, noteStep * noteStepCount, 0.0f);
var totalBounds = new Bounds();
totalBounds.SetMinMax(Vector3.zero, Vector3.zero);
if (note.accidental != ABC.Accidental.Unspecified)
{
var accidental = spriteCache.GetSpriteObject($"Accidental_{note.accidental}");
accidental.transform.parent = container.transform;
accidental.transform.localPosition = notePosition;
totalBounds.Encapsulate(accidental.bounds);
notePosition.x = totalBounds.size.x + accidentalOffset;
}
GameObject staffMarkers = null;
if (NeedsStaffMarkers(noteStepCount))
{
staffMarkers = CreateNoteStaffMarkers(noteDirection, note, clef, notePosition.x, ref totalBounds);
notePosition += new Vector3(staffMarkerNoteOffset, 0.0f, 0.0f);
}
Bounds rootItemBounds;
SpriteRenderer rootItem = null;
if (beam != null && beam.stemHeight != Beam.unspecifiedStemHeight)
{
var noteHead = spriteCache.GetSpriteObject("Chord_Quarter");
noteHead.transform.parent = container.transform;
noteHead.transform.localPosition = notePosition;
rootItemBounds = noteHead.bounds;
rootItem = spriteCache.GetSpriteObject($"Note_Stem_{noteDirection}");
rootItem.transform.parent = container.transform;
var stemPos = notePosition + (noteDirection == NoteDirection.Up ? Beam.stemUpOffset : Beam.stemDownOffset);
rootItem.transform.localPosition = stemPos;
rootItem.transform.localScale = new Vector3(1.0f, Mathf.Abs(beam.stemHeight - stemPos.y), 1.0f);
rootItemBounds.Encapsulate(rootItem.bounds);
}
else
{
var spriteName = GetNoteSpriteName(note.length, note.beam != 0, noteDirection);
rootItem = spriteCache.GetSpriteObject(spriteName);
rootItem.transform.parent = container.transform;
rootItem.transform.localPosition = notePosition;
rootItemBounds = rootItem.bounds;
}
totalBounds.Encapsulate(rootItemBounds);
for (int i = 0; i < note.dotCount; i++)
{
float dotOffset = rootItemBounds.max.x + dotAdvance;
var dot = CreateNoteDot(noteStepCount, container, dotOffset);
totalBounds.Encapsulate(dot.bounds);
}
AddDecorations(note, decorations, rootItemBounds, container, ref totalBounds);
if (staffMarkers != null)
staffMarkers.transform.parent = container.transform;
return new NoteInfo(rootItemBounds, totalBounds);
}
const float minDecorationHeight = 2.5f;
private static HashSet<string> fingeringDecorations = new HashSet<string>()
{
"1", "2", "3", "4", "5"
};
private void AddDecorations(ABC.Item item, IReadOnlyList<string> decorations, Bounds referenceBounding, GameObject container, ref Bounds bounds)
{
if (decorations != null)
{
string decorationText = "";
foreach (var decoration in decorations)
{
if (fingeringDecorations.Contains(decoration))
{
if (decorationText.Length > 0)
decorationText += '\n';
decorationText += decoration;
}
}
if (decorationText.Length > 0)
{
var text = spriteCache.GetTextObject();
text.text = decorationText;
text.transform.parent = container.transform;
var decorationHeight = Mathf.Max(referenceBounding.max.y + 0.2f, minDecorationHeight);
var textPos = new Vector3(referenceBounding.min.x, decorationHeight, 0.0f);
text.transform.position = textPos;
text.ForceMeshUpdate();
Bounds b = new Bounds();
b.SetMinMax(textPos, textPos + text.textBounds.size);
bounds.Encapsulate(b);
}
}
}
private string GetNoteSpriteName(ABC.Length note, bool beam, NoteDirection noteDirection)
{
if (beam)
return $"Note_Quarter_{noteDirection}";
else
return note == ABC.Length.Whole ? "Note_Whole" : $"Note_{note}_{noteDirection}";
}
private Bounds AddChordNoteHead(ABC.Pitch value, ABC.Length length, ABC.Clef clef, NoteDirection noteDirection, GameObject container, Vector3 offset, ref Vector3 notePos)
{
int stepCount = value - clefZero[clef];
notePos = offset + new Vector3(0.0f, noteStep * stepCount, 0.0f);
var spriteName = length == ABC.Length.Whole ? "Note_Whole" : $"Chord_{length}";
var dot = spriteCache.GetSpriteObject(spriteName);
dot.transform.parent = container.transform;
dot.transform.localPosition = notePos;
return dot.bounds;
}
/// <summary>
/// The direction of the chord stem is chosen to minimize stem length outside the staff.
/// The direction is chosen by examining the extreme notes of the chord and picking the direction based on the note which is farthest away from the value of the middle staffline.
/// Precondition: notes array should be sorted in ascending order.
/// </summary>
private NoteDirection DetermineChordNoteDirection(ABC.Chord.Element[] sortedNotes, ABC.Clef clef)
{
var direction = NoteDirection.Down;
var clefCenter = clefZero[clef] + 3;
int lowDistance = Math.Abs(sortedNotes[0].pitch - clefCenter);
int highDistance = Math.Abs(sortedNotes[sortedNotes.Length - 1].pitch - clefCenter);
if (lowDistance > highDistance)
direction = NoteDirection.Up;
return direction;
}
const int chordAccidentalSize = 6;
public static List<List<ABC.Chord.Element>> ComputeChordAccidentalLevels(ABC.Chord.Element[] notes, ABC.Pitch clefZero)
{
List<int> stepLevels = null;
List<List<ABC.Chord.Element>> notesInLevel = null;
foreach (var note in notes)
{
if (note.accidental == ABC.Accidental.Unspecified)
continue;
if (stepLevels == null)
{
stepLevels = new List<int>();
notesInLevel = new List<List<ABC.Chord.Element>>();
}
int stepCount = note.pitch - clefZero;
// place this accidental into the first level it will fit
for (int i = 0; i < stepLevels.Count; i++)
{
if (stepCount - stepLevels[i] > chordAccidentalSize)
{
stepLevels[i] = stepCount;
notesInLevel[i].Add(note);
goto NoteProcessed;
}
}
//Could not fit in an existing level, create a new one
var newLevelNotes = new List<ABC.Chord.Element>();
newLevelNotes.Add(note);
notesInLevel.Add(newLevelNotes);
stepLevels.Add(stepCount);
//proceed to next note
NoteProcessed:;
}
return notesInLevel;
}
private bool CreateChordAccidentals(ABC.Chord.Element[] notes, ABC.Clef clef, ref Vector3 offset, GameObject container, ref Bounds totalBounding)
{
var accidentalLevels = ComputeChordAccidentalLevels(notes, clefZero[clef]);
if (accidentalLevels == null)
return false;
for (int i = accidentalLevels.Count - 1; i >= 0; i--)
{
foreach (var note in accidentalLevels[i])
{
int stepCount = note.pitch - clefZero[clef];
var accidental = spriteCache.GetSpriteObject($"Accidental_{note.accidental}");
accidental.transform.parent = container.transform;
accidental.transform.localPosition = offset + new Vector3(0.0f, noteStep * stepCount, 0.0f);
totalBounding.Encapsulate(accidental.bounds);
}
offset += new Vector3(accidentalWidth, 0.0f, 0.0f);
}
return true;
}
private NoteInfo CreateWholeNoteChord(ABC.Chord chord, ABC.Clef clef, IReadOnlyList<string> decorations, GameObject container)
{
var offset = Vector3.zero;
var totalBounds = new Bounds();
totalBounds.SetMinMax(offset, offset);
if (CreateChordAccidentals(chord.notes, clef, ref offset, container, ref totalBounds))
offset.x = totalBounds.max.x + accidentalOffset;
var staffMarkers = CreateChordStaffMarkersDown(chord, clef, offset.x, compressedChordWholeNoteOffset,ref totalBounds);
if (staffMarkers == null)
staffMarkers = CreateChordStaffMarkersUp(chord, clef, offset.x, compressedChordWholeNoteOffset, ref totalBounds);
if (staffMarkers != null) // this ensures that the note appears centered w.r.t the markers
offset += new Vector3(staffMarkerNoteOffset, 0.0f, 0.0f);
var rootBounds = CreateWholeNoteChordNotes(chord, clef, container, offset, ref totalBounds);
AddDecorations(chord, decorations, rootBounds, container, ref totalBounds);
if (staffMarkers != null)
staffMarkers.transform.parent = container.transform;
return new NoteInfo(rootBounds, totalBounds);
}
private NoteInfo CreateChord(ABC.Chord chord, ABC.Clef clef, NoteDirection noteDirection, Beam beam, IReadOnlyList<string> decorations, GameObject container)
{
var offset = Vector3.zero;
var totalBounds = new Bounds();
totalBounds.SetMinMax(offset, offset);
if (CreateChordAccidentals(chord.notes, clef, ref offset, container, ref totalBounds))
offset.x = totalBounds.max.x + accidentalOffset;
var staffMarkers = CreateChordStaffMarkers(noteDirection, chord, clef, offset.x, compressedChordNoteOffset, ref totalBounds);
if (staffMarkers != null) // this ensures that the note appears centered w.r.t the markers
offset += new Vector3(staffMarkerNoteOffset, 0.0f, 0.0f);
Bounds rootBounds = CreateChordNotes(noteDirection, chord, beam, clef, container, offset, ref totalBounds);
AddDecorations(chord, decorations, rootBounds, container, ref totalBounds);
if (chord.dotCount > 0)
AddChordDots(chord, clef, noteDirection, totalBounds, container, ref totalBounds);
if (staffMarkers != null)
staffMarkers.transform.parent = container.transform;
return new NoteInfo(rootBounds, totalBounds);
}
private GameObject CreateChordStaffMarkers(NoteDirection noteDirection, ABC.Chord chord, ABC.Clef clef, float position, float offsetSize, ref Bounds totalBounds)
{
if (noteDirection == NoteDirection.Up)
return CreateChordStaffMarkersUp(chord, clef, position, offsetSize, ref totalBounds);
else
{
if (ChordIsCompressed(chord, NoteDirection.Down))
position += offsetSize;
return CreateChordStaffMarkersDown(chord, clef, position, -offsetSize, ref totalBounds);
}
}
private GameObject CreateNoteStaffMarkers(NoteDirection noteDirection, ABC.Note note, ABC.Clef clef, float position, ref Bounds totalBounds)
{
if (noteDirection == NoteDirection.Up)
return CreateNoteStaffMarkersUp(note, clef, position, ref totalBounds);
else
return CreateNoteStaffMarkersDown(note, clef, position, ref totalBounds);
}
private GameObject CreateNoteStaffMarkersUp(ABC.Note note, ABC.Clef clef, float position, ref Bounds totalBounds)
{
int stepCount = note.pitch - clefZero[clef];
if (stepCount > -3)
return null;
if (stepCount % 2 == 0)
stepCount += 1;
var staffMarkers = new GameObject("Staff Markers");
float staffMarkerSize = note.length < ABC.Length.Whole ? 1.0f : wholeNoteStaffMarkerSize;
for (int step = stepCount; step <= -3; step += 2)
totalBounds.Encapsulate(CreateStaffMark(step, staffMarkers, position, staffMarkerSize));
return staffMarkers;
}
private GameObject CreateNoteStaffMarkersDown(ABC.Note note, ABC.Clef clef, float position, ref Bounds totalBounds)
{
int stepCount = note.pitch - clefZero[clef];
if (stepCount < 9)
return null;
if (stepCount % 2 == 0)
stepCount -= 1;
var staffMarkers = new GameObject("Staff Markers");
float staffMarkerSize = note.length < ABC.Length.Whole ? 1.0f : wholeNoteStaffMarkerSize;
for (int step = stepCount; step >= 9; step -= 2)
totalBounds.Encapsulate(CreateStaffMark(step, staffMarkers, position, staffMarkerSize));
return staffMarkers;
}
private GameObject CreateChordStaffMarkersUp(ABC.Chord chord, ABC.Clef clef, float position, float offsetSize, ref Bounds totalBounds)
{
int stepCount = chord.notes[0].pitch - clefZero[clef];
if (stepCount > -3)
return null;
if (stepCount % 2 == 0)
stepCount += 1;
var staffMarkers = new GameObject("Staff Markers");
float staffMarkerSize = chord.length < ABC.Length.Whole ? 1.0f : wholeNoteStaffMarkerSize;
for (int step = stepCount; step <= -3; step += 2)
totalBounds.Encapsulate(CreateStaffMark(step, staffMarkers, position, staffMarkerSize));
for (int i = 1; i < chord.notes.Length; i++)
{
if (stepCount > -3)
break;
if (chord.notes[i].pitch - chord.notes[i - 1].pitch == 1)
{
stepCount = chord.notes[i].pitch - clefZero[clef];
if (stepCount % 2 == 0)
stepCount += 1;
for (int step = stepCount; step <= -3; step += 2)
totalBounds.Encapsulate(CreateStaffMark(step, staffMarkers, position + offsetSize, staffMarkerSize));
break;
}
}
return staffMarkers;
}
private GameObject CreateChordStaffMarkersDown(ABC.Chord chord, ABC.Clef clef, float position, float offsetSize, ref Bounds totalBounds)
{
int stepCount = chord.notes[chord.notes.Length - 1].pitch - clefZero[clef];
if (stepCount < 9)
return null;
if (stepCount % 2 == 0)
stepCount -= 1;
var staffMarkers = new GameObject("Staff Markers");
float staffMarkerSize = chord.length < ABC.Length.Whole ? 1.0f : wholeNoteStaffMarkerSize;
for (int step = stepCount; step >= 9; step -= 2)
totalBounds.Encapsulate(CreateStaffMark(step, staffMarkers, position, staffMarkerSize));
for (int i = chord.notes.Length - 2; i >= 0; i--)
{
if (stepCount < 9)
break;
if (chord.notes[i + 1].pitch - chord.notes[i].pitch == 1)
{
stepCount = chord.notes[i].pitch - clefZero[clef];
if (stepCount % 2 == 0)
stepCount -= 1;
for (int step = stepCount; step >= 9; step -= 2)
totalBounds.Encapsulate(CreateStaffMark(step, staffMarkers, position + offsetSize, staffMarkerSize));
break;
}
}
return staffMarkers;
}
private bool ChordIsCompressed(ABC.Chord chord, NoteDirection noteDirection)
{
if (noteDirection == NoteDirection.Down)
{
for (int i = chord.notes.Length - 2; i >= 0; i--)
{
if (chord.notes[i + 1].pitch - chord.notes[i].pitch == 1)
return true;
}
}
else
{
for (int i = 1; i < chord.notes.Length; i++)
{
if (chord.notes[i].pitch - chord.notes[i - 1].pitch == 1)
return true;
}
}
return false;
}
private Bounds CreateChordNotes(NoteDirection noteDirection, ABC.Chord chord, Beam beam, ABC.Clef clef, GameObject container, Vector3 offset, ref Bounds totalBounds)
{
if (noteDirection == NoteDirection.Up)
return CreateChordNotesUp(chord, beam, clef, container, offset, ref totalBounds);
else
return CreateChordNotesDown(chord, beam, clef, container, offset, ref totalBounds);
}
private Bounds CreateChordNotesUp(ABC.Chord chord, Beam beam, ABC.Clef clef, GameObject container, Vector3 offset, ref Bounds totalBounds)
{
var stem = spriteCache.GetSpriteObject("Note_Stem_Up");
stem.transform.parent = container.transform;
var lastNotePos = Vector3.zero;
var dotValue = chord.length > ABC.Length.Quarter ? chord.length : ABC.Length.Quarter;
var rootBounds = AddChordNoteHead(chord.notes[0].pitch, dotValue, clef, NoteDirection.Down, container, offset, ref lastNotePos);
var chordBounds = rootBounds;
var stemPos = chordBounds.min + Beam.stemUpOffset;
stem.transform.localPosition = stemPos;
bool right = false;
for (int i = 1; i < chord.notes.Length; i++)
{
var noteOffset = offset;
if (!right && chord.notes[i].pitch - chord.notes[i - 1].pitch == 1)
{
noteOffset.x += compressedChordNoteOffset;
right = true;
}
else
{
right = false;
}
var noteBounds = AddChordNoteHead(chord.notes[i].pitch, dotValue, clef, NoteDirection.Down, container, noteOffset, ref lastNotePos);
chordBounds.Encapsulate(noteBounds);
if (!right)
rootBounds.Encapsulate(noteBounds);
}
SpriteRenderer flag = null;
lastNotePos += Beam.stemUpOffset;
float stemHeight = Mathf.Abs(lastNotePos.y - stemPos.y) + Beam.defaultStemHeight;
if (beam == null)
{
// If this chord is not part of a beam it may need to have a flag attached.
if (chord.length <= ABC.Length.Eighth)
{
flag = spriteCache.GetSpriteObject($"Note_Flag_{chord.length}_Up");
flag.transform.parent = container.transform;
}
}
else if (beam.stemHeight != Beam.unspecifiedStemHeight)
{
// beam contains notes at different heights, used the calculated stem height
stemHeight = stemHeight - stemPos.y;
}
stem.transform.localScale = new Vector3(1.0f, stemHeight, 1.0f);
var stemBounds = stem.bounds;
if (flag != null)
flag.transform.localPosition = new Vector3(stemBounds.max.x, stemBounds.max.y, 0.0f);
rootBounds.Encapsulate(stemBounds);
chordBounds.Encapsulate(stemBounds);
totalBounds.Encapsulate(chordBounds);
return rootBounds;
}
private Bounds CreateChordNotesDown(ABC.Chord chord, Beam beam, ABC.Clef clef, GameObject container, Vector3 offset, ref Bounds totalBounds)
{
var stem = spriteCache.GetSpriteObject("Note_Stem_Down");
stem.transform.parent = container.transform;
var lastNotePos = Vector3.zero;
if (ChordIsCompressed(chord, NoteDirection.Down))
offset.x += compressedChordNoteOffset;
var dotValue = chord.length > ABC.Length.Quarter ? chord.length : ABC.Length.Quarter;
var rootBounds = AddChordNoteHead(chord.notes[chord.notes.Length - 1].pitch, dotValue, clef, NoteDirection.Down, container, offset, ref lastNotePos);
var chordBounds = rootBounds;
var stemPos = container.transform.GetChild(container.transform.childCount - 1).localPosition + Beam.stemDownOffset;
stem.transform.localPosition = stemPos;
bool left = false;
for (int i = chord.notes.Length - 2; i >= 0; i--)
{
var noteOffset = offset;
if (!left && chord.notes[i + 1].pitch - chord.notes[i].pitch == 1)
{
noteOffset.x -= compressedChordNoteOffset;
left = true;
}
else
{
left = false;
}
var noteBounds = AddChordNoteHead(chord.notes[i].pitch, dotValue, clef, NoteDirection.Down, container, noteOffset, ref lastNotePos);
chordBounds.Encapsulate(noteBounds);
if (!left)
rootBounds.Encapsulate(noteBounds);
}
SpriteRenderer flag = null;
float stemHeight = Mathf.Abs((lastNotePos.y - Beam.defaultStemHeight) - stemPos.y);
if (beam == null)
{
// If this chord is not part of a beam it may need to have a flag attached.
if (chord.length <= ABC.Length.Eighth)
{
flag = spriteCache.GetSpriteObject($"Note_Flag_{chord.length}_Down");
flag.transform.parent = container.transform;
}
}
else if (beam.stemHeight != Beam.unspecifiedStemHeight)
{
// beam contains notes at different heights, used the calculated stem height
stemHeight = Mathf.Abs(stemHeight - stemPos.y);
}
stem.transform.localScale = new Vector3(1.0f, stemHeight, 1.0f);
var stemBounds = stem.bounds;
if (flag != null)
flag.transform.localPosition = new Vector3(stemBounds.max.x, stemBounds.min.y, 0.0f);
rootBounds.Encapsulate(stemBounds);
chordBounds.Encapsulate(stemBounds);
totalBounds.Encapsulate(chordBounds);
return rootBounds;
}
private Bounds CreateWholeNoteChordNotes(ABC.Chord chord, ABC.Clef clef, GameObject container, Vector3 offset, ref Bounds totalBounds)
{
var lastNotePos = Vector3.zero;
var rootBounds = AddChordNoteHead(chord.notes[0].pitch, ABC.Length.Whole, clef, NoteDirection.Down, container, offset, ref lastNotePos);
totalBounds.Encapsulate(rootBounds);
bool right = false;
for (int i = 1; i < chord.notes.Length; i++)
{
var noteOffset = offset;
Bounds itemBounds;
if (!right && chord.notes[i].pitch - chord.notes[i - 1].pitch == 1)
{
noteOffset.x += compressedChordWholeNoteOffset;
right = true;
}
else
{
right = false;
}
itemBounds = AddChordNoteHead(chord.notes[i].pitch, ABC.Length.Whole, clef, NoteDirection.Down, container, noteOffset, ref lastNotePos);
totalBounds.Encapsulate(itemBounds);
if (!right)
rootBounds.Encapsulate(itemBounds);
}
return rootBounds;
}
void AddChordDots(ABC.Chord chord, ABC.Clef clef, NoteDirection noteDirection, Bounds rootItem, GameObject container, ref Bounds totalBounds)
{
int oddStepOffset = noteDirection == NoteDirection.Up ? 1 : -1;
var dotSet = new HashSet<int>();
foreach(var note in chord.notes)
{
int stepCount = note.pitch - clefZero[clef];
if (stepCount % 2 == 1)
stepCount += oddStepOffset;
dotSet.Add(stepCount);
}
foreach (var step in dotSet)
{
var positionX = rootItem.max.x;
for (int i = 0; i < chord.dotCount; i++)
{
var dot = CreateNoteDot(step, container, positionX + dotAdvance);
var dotBounds = dot.bounds;
positionX += dotBounds.size.x;
totalBounds.Encapsulate(dotBounds);
}
}
}
private Bounds CreateStaffMark(int stepCount, GameObject container, float positionX, float localScaleX)
{
var mark = spriteCache.GetSpriteObject("Staff_Mark");
mark.transform.parent = container.transform;
mark.transform.localPosition = new Vector3(positionX, noteStep * stepCount, 0.0f);
mark.transform.localScale = new Vector3(localScaleX, 1.0f, 1.0f);
return mark.bounds;
}
private SpriteRenderer CreateNoteDot(int stepCount, GameObject container, float positionX)
{
var dot = spriteCache.GetSpriteObject("Note_Dot");
dot.transform.parent = container.transform;
dot.transform.localPosition = new Vector3(positionX, noteStep * (stepCount + 1), 0.0f);
return dot;
}
static readonly Dictionary<ABC.Length, float> restHeight = new Dictionary<ABC.Length, float>()
{
{ ABC.Length.Whole, 1.41f }, { ABC.Length.Half, 1.16f }, { ABC.Length.Quarter, 0.3f}, { ABC.Length.Eighth, 0.6f}, { ABC.Length.Sixteenth, 0.0f }
};
public NoteInfo CreateRest(ABC.Rest rest, GameObject container)
{
var restSprite = rest.length == ABC.Length.Whole ? "Rest_Half" : $"Rest_{rest.length}";
var restObj = spriteCache.GetSpriteObject(restSprite);
restObj.transform.parent = container.transform;
restObj.transform.localPosition = new Vector3(0.0f, restHeight[rest.length], 0.0f);
var rootBounds = restObj.bounds;
var totalBounds = rootBounds;
for (int i = 0; i < rest.dotCount; i++)
{
var dotSprite = CreateNoteDot(restDotStepCount, container, totalBounds.max.x + dotAdvance);
totalBounds.Encapsulate(dotSprite.bounds);
}
return new NoteInfo(rootBounds, totalBounds);
}
public NoteInfo CreateMeasureRest(ABC.MultiMeasureRest rest, GameObject container)
{
var restObj = spriteCache.GetSpriteObject("Rest_Half");
restObj.transform.parent = container.transform;
restObj.transform.localPosition = new Vector3(0.0f, restHeight[ABC.Length.Whole], 0.0f);
return new NoteInfo(restObj.bounds, restObj.bounds);
}
public NoteInfo CreateStaff(ABC.Clef clef, GameObject container, Vector3 offset)
{
var staff = spriteCache.GetSpriteObject("Staff");
staff.transform.parent = container.transform;
staff.transform.localPosition = offset;
Bounds bounds = staff.bounds;
offset.x += Layout.staffPadding;
var clefSprite = spriteCache.GetSpriteObject($"Clef_{clef}");
clefSprite.transform.parent = container.transform;
clefSprite.transform.localPosition = offset;
bounds.Encapsulate(clefSprite.bounds);
return new NoteInfo(bounds, bounds);
}
const float TimeSignatureY = 1.15f;
public NoteInfo CreateTimeSignature(string timeSignature, GameObject container)
{
var bounds = new Bounds();
if (timeSignature == "C" || timeSignature == "C|")
{
var spriteName = (timeSignature == "C") ? "Time_Common" : "Time_Cut";
var commonTime = spriteCache.GetSpriteObject(spriteName);
commonTime.transform.parent = container.transform;
commonTime.transform.localPosition = new Vector3(0.0f, TimeSignatureY, 0.0f);
bounds = commonTime.bounds;
}
else
{
var pieces = timeSignature.Split('/');
if (pieces.Length < 2)
throw new LayoutException($"Unable to parse time signature: {timeSignature}");
var sprite = spriteCache.GetSpriteObject($"Time_{pieces[0]}");
sprite.transform.parent = container.transform;
sprite.transform.localPosition = new Vector3(0.0f, TimeSignatureY, 0.0f);
bounds = sprite.bounds;
sprite = spriteCache.GetSpriteObject($"Time_{pieces[1]}");
sprite.transform.parent = container.transform;
sprite.transform.localPosition = Vector3.zero;
bounds.Encapsulate(sprite.bounds);
}
return new NoteInfo(bounds, bounds);
}
public NoteInfo CreateBar(ABC.Bar bar, GameObject container)
{
var sprite = spriteCache.GetSpriteObject($"Bar_{bar.kind}");
sprite.transform.parent = container.transform;
return new NoteInfo(sprite.bounds, sprite.bounds);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: df596e94aa469134eacd4cf445b0e38d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+90
View File
@@ -0,0 +1,90 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D;
using TMPro;
namespace ABCUnity
{
class SpriteCache
{
SpriteAtlas spriteAtlas;
private TextMeshPro textPrefab;
Dictionary<string, Sprite> spriteCache = new Dictionary<string, Sprite>();
List<GameObject> objectPool = new List<GameObject>();
private List<TextMeshPro> textPool = new List<TextMeshPro>();
public Color color { get; set; } = Color.black;
public SpriteCache(SpriteAtlas spriteAtlas, TextMeshPro textPrefab)
{
this.spriteAtlas = spriteAtlas;
this.textPrefab = textPrefab;
}
public TextMeshPro GetTextObject()
{
if (textPool.Count > 0)
{
var text = textPool[textPool.Count - 1];
textPool.RemoveAt(textPool.Count - 1);
return text;
}
else
{
var text = GameObject.Instantiate(textPrefab);
text.color = color;
return text;
}
}
public SpriteRenderer GetSpriteObject(string name)
{
var sprite = GetSprite(name);
if (sprite == null)
Debug.Log($"Warning: could not locate: {name}");
if (objectPool.Count > 0)
{
var obj = objectPool[objectPool.Count - 1];
objectPool.RemoveAt(objectPool.Count - 1);
obj.name = name;
var spriteRenderer = obj.GetComponent<SpriteRenderer>();
spriteRenderer.sprite = sprite;
return spriteRenderer;
}
return CreateSpriteObject(sprite, name);
}
public void ReturnObject(GameObject obj)
{
objectPool.Add(obj);
}
SpriteRenderer CreateSpriteObject(Sprite sprite, string name)
{
var spriteObj = new GameObject(name);
var spriteRenderer = spriteObj.AddComponent<SpriteRenderer>();
spriteRenderer.sprite = sprite;
spriteRenderer.color = color;
return spriteRenderer;
}
private Sprite GetSprite(string name)
{
Sprite sprite;
if (spriteCache.TryGetValue(name, out sprite))
return sprite;
sprite = spriteAtlas.GetSprite(name);
spriteCache[name] = sprite;
return sprite;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3cd980f3b7bd31346a84b856cebca2ef
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+56
View File
@@ -0,0 +1,56 @@
using System;
namespace ABCUnity
{
class TimeSignature
{
public int beatCount { get; }
public float noteValue { get; }
public TimeSignature(int beatCount, float noteValue)
{
this.beatCount = beatCount;
this.noteValue = noteValue;
}
public static TimeSignature Parse(string timeSignature)
{
if (timeSignature == "C")
return new TimeSignature(4, 1.0f / 4.0f);
else if (timeSignature == "C|")
return new TimeSignature(2, 1.0f / 2.0f);
var parts = timeSignature.Split('/');
if (parts.Length < 2)
throw new LayoutException($"Unsupported Time Signature: {timeSignature}");
try
{
var beatCount = int.Parse(parts[0]);
var noteValue = 1 / float.Parse(parts[1]);
return new TimeSignature(beatCount, noteValue);
}
catch (Exception)
{
throw new LayoutException($"Unsupported Time Signature: {timeSignature}");
}
}
public override bool Equals(object obj)
{
return obj is TimeSignature signature &&
beatCount == signature.beatCount &&
noteValue == signature.noteValue;
}
public override int GetHashCode()
{
int hashCode = 1857893462;
hashCode = hashCode * -1521134295 + beatCount.GetHashCode();
hashCode = hashCode * -1521134295 + noteValue.GetHashCode();
return hashCode;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b2901ae97d66e644997b110e1c87befd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+40
View File
@@ -0,0 +1,40 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ABCUnity
{
public static class Util
{
public static void SetObjectColor(GameObject target, Color color)
{
var spriteRenderers = GatherSpriteRenderers(target);
foreach (var spriteRenderer in spriteRenderers)
spriteRenderer.color = color;
}
public static List<SpriteRenderer> GatherSpriteRenderers(GameObject item)
{
var itemTransform = item.transform;
var spriteRenderers = new List<SpriteRenderer>();
for (int i = 0; i < itemTransform.childCount - 1; i++)
spriteRenderers.Add(itemTransform.GetChild(i).GetComponent<SpriteRenderer>());
var lastChild = itemTransform.GetChild(itemTransform.childCount - 1);
if (lastChild.childCount > 0)
{
foreach (Transform child in lastChild)
spriteRenderers.Add(child.GetComponent<SpriteRenderer>());
}
else
{
spriteRenderers.Add(lastChild.GetComponent<SpriteRenderer>());
}
return spriteRenderers;
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 05961f251d39ffb44af4fc6436d30670
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+147
View File
@@ -0,0 +1,147 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ABCUnity
{
class VoiceLayout
{
public ABC.Voice voice { get; }
public class ScoreLine
{
public List<Measure> measures = new List<Measure>();
public GameObject container;
public Bounds bounds = new Bounds(Vector3.zero, Vector3.zero);
public Vector3 insertPos
{
get { return new Vector3(bounds.size.x, 0.0f, 0.0f); }
}
public float insertX { get { return bounds.size.x; } }
public void EncapsulateAppendedBounds(Bounds bounding)
{
bounds.Encapsulate(new Bounds(bounding.center + insertPos, bounding.size));
}
public void AdvaceInsertPos(float amount)
{
var pos = insertPos;
pos.x += amount;
bounds.Encapsulate(pos);
}
public class Measure
{
public Alignment.Measure source { get; }
public float insertX { get { return bounds.size.x; } }
public GameObject container;
public Bounds bounds = new Bounds(Vector3.zero, Vector3.zero);
public List<Element> elements = new List<Element>();
public List<float> spacers = new List<float>();
public float minWidth { get { return GetMinWidth(); } }
public Measure(Alignment.Measure measure)
{
source = measure;
}
public void EncapsulateAppendedBounds(Bounds bounding)
{
bounds.Encapsulate(new Bounds(bounding.center + new Vector3(insertX, 0.0f, 0.0f), bounding.size));
}
public void AdvaceInsertPos(float amount)
{
var pos = new Vector3(insertX, 0.0f, 0.0f);
pos.x += amount;
bounds.Encapsulate(pos);
}
public Element AddItem(ABC.Item item)
{
var element = new Element(item);
elements.Add(element);
return element;
}
private float GetMinWidth()
{
float minWidth = 0.0f;
foreach (var spacer in spacers)
minWidth += spacer;
foreach (var element in elements)
minWidth += element.totalWidth;
return minWidth;
}
}
public class Element
{
public ABC.Item item { get; }
public GameObject container { get; set; }
public NoteInfo info;
public Element(ABC.Item item)
{
this.item = item;
}
public float prefixAmount { get { return info.rootBounding.min.x; } }
public float totalWidth { get { return info.totalBounding.size.x; } }
public NoteInfo OffsetNoteInfo(Vector3 offset)
{
return new NoteInfo(
new Bounds(info.rootBounding.center + offset, info.rootBounding.size),
new Bounds(info.totalBounding.center + offset, info.totalBounding.size));
}
}
}
public List<ScoreLine> scoreLines { get; } = new List<ScoreLine>();
public VoiceLayout(ABC.Voice v)
{
voice = v;
alignment = new Alignment();
alignment.Create(voice);
}
public void Init(bool multiline)
{
// Partitions measures into their appropriate score lines
if (multiline)
{
foreach (var measure in alignment.measures)
{
if (measure.lineNumber >= scoreLines.Count)
scoreLines.Add(new ScoreLine());
scoreLines[measure.lineNumber].measures.Add(new ScoreLine.Measure(measure));
}
}
else
{
var scoreLine = new ScoreLine();
foreach (var measure in alignment.measures)
scoreLine.measures.Add(new ScoreLine.Measure(measure));
scoreLines.Add(scoreLine);
}
}
/// <summary>Beat map for the voice.</summary>
public Alignment alignment { get; }
/// <summary>The index of the current beat that is active for this measure.</summary>
public int beatIndex { get; set; } = 0;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: db4bde7fc75172840899481c8c2351a2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bb92b0385223e544f8efdd1367f42c57
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 9ba701bbe2a76af4aa5cbf4b04f974d6
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0, y: 0.075}
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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
- serializedVersion: 3
buildTarget: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 79b69c47ae9175243b03c0639e2d4d94
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0, y: 0.3}
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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
- serializedVersion: 3
buildTarget: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: d57bdc5f437a5c44db5204cdbdb6a508
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0, y: 0.3}
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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
- serializedVersion: 3
buildTarget: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: ccc5ffc3bd6384980812ebde95398e7a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+152
View File
@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 535a22bc9622942e8ae7ac743f605118
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+127
View File
@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: b61efaf13e7dc2c448d4d2c02fb72af7
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 743b3d504f89b4285a20a345b8d08a39
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 2c5b1712dad5f4d8b894e322dad5d018
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 427447a24b15846dab2a9f8a81584e1c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+152
View File
@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 34817576678fc4b0b86d5e8dbff66c63
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

+151
View File
@@ -0,0 +1,151 @@
fileFormatVersion: 2
guid: 61e5123fdd34c461fb5ab16ff9fa9773
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

@@ -0,0 +1,151 @@
fileFormatVersion: 2
guid: 1e2afd7fa89f0452583229794ceaff27
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+151
View File
@@ -0,0 +1,151 @@
fileFormatVersion: 2
guid: bae87d7032c5cc740bd40821d95511b4
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0, y: -0.22}
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@@ -0,0 +1,151 @@
fileFormatVersion: 2
guid: d0aa5f8effbcdcf419c38667b5bde60a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0, y: 0.23}
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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
- serializedVersion: 3
buildTarget: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,189 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!687078895 &4343727234628468602
SpriteAtlas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: NoteAtlas
m_EditorData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 2
compressionQuality: 50
maxTextureSize: 2048
textureCompression: 0
filterMode: 1
generateMipMaps: 1
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings: []
packingSettings:
serializedVersion: 2
padding: 8
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 0
variantMultiplier: 1
packables:
- {fileID: 2800000, guid: 9ba701bbe2a76af4aa5cbf4b04f974d6, type: 3}
- {fileID: 2800000, guid: 79b69c47ae9175243b03c0639e2d4d94, type: 3}
- {fileID: 2800000, guid: d57bdc5f437a5c44db5204cdbdb6a508, type: 3}
- {fileID: 2800000, guid: ccc5ffc3bd6384980812ebde95398e7a, type: 3}
- {fileID: 2800000, guid: 535a22bc9622942e8ae7ac743f605118, type: 3}
- {fileID: 2800000, guid: b61efaf13e7dc2c448d4d2c02fb72af7, type: 3}
- {fileID: 2800000, guid: 743b3d504f89b4285a20a345b8d08a39, type: 3}
- {fileID: 2800000, guid: 2c5b1712dad5f4d8b894e322dad5d018, type: 3}
- {fileID: 2800000, guid: 427447a24b15846dab2a9f8a81584e1c, type: 3}
- {fileID: 2800000, guid: 34817576678fc4b0b86d5e8dbff66c63, type: 3}
- {fileID: 2800000, guid: 61e5123fdd34c461fb5ab16ff9fa9773, type: 3}
- {fileID: 2800000, guid: 1e2afd7fa89f0452583229794ceaff27, type: 3}
- {fileID: 2800000, guid: bae87d7032c5cc740bd40821d95511b4, type: 3}
- {fileID: 2800000, guid: d0aa5f8effbcdcf419c38667b5bde60a, type: 3}
- {fileID: 2800000, guid: 608ea78db957b7e4cad5007697dc3d01, type: 3}
- {fileID: 2800000, guid: ac60059c9248421418964fd4504260a2, type: 3}
- {fileID: 2800000, guid: 2861bd15868f8d34389b90aa710227cb, type: 3}
- {fileID: 2800000, guid: 718a59936202d8e4eae4a419f43d31a2, type: 3}
- {fileID: 2800000, guid: 890aa6f2c4123ce4f901cf5febc2c960, type: 3}
- {fileID: 2800000, guid: f9efa9d0911ad854db5bba23dd905bc8, type: 3}
- {fileID: 2800000, guid: a4427ef2a55621a4cbbd41a9f15ab676, type: 3}
- {fileID: 2800000, guid: 01944aea3f67cdc42a5a2b8d3e99c15f, type: 3}
- {fileID: 2800000, guid: dd84830ef07e5cf4192887bc6ae2f0e6, type: 3}
- {fileID: 2800000, guid: 1ed4b509da945452aad2de16dea3ad2a, type: 3}
- {fileID: 2800000, guid: dc59fbafdeb4949aca2ed8536cd2545e, type: 3}
- {fileID: 2800000, guid: 142edb644b62fd145aa545b4e51f15de, type: 3}
- {fileID: 2800000, guid: 0ef1e4195af300f4ea8f532883cc6768, type: 3}
- {fileID: 2800000, guid: 85ee6faa8608b0d45af2cb91849e19f7, type: 3}
- {fileID: 2800000, guid: 38101d11fc52541b8bdf8fbfca153631, type: 3}
- {fileID: 2800000, guid: c70af2d15aebd4d5b8a00ca9c0bc7d8d, type: 3}
- {fileID: 2800000, guid: 5e4aa2b23b13d4a0b9c07804729854cc, type: 3}
- {fileID: 2800000, guid: 2343b4bd059904dcb996a5e9c8ed8b0a, type: 3}
- {fileID: 2800000, guid: 39de9bb5df37c54409143d3124387f98, type: 3}
- {fileID: 2800000, guid: e7c078dc210efda4f935a75101013a9c, type: 3}
- {fileID: 2800000, guid: f8632aedeccf8284f9c677b8b97c9b45, type: 3}
- {fileID: 2800000, guid: fd4c8d6a857762f4c9408bfa7bdf5060, type: 3}
- {fileID: 21300000, guid: 4d7a7c66572c8c7408501fa7c935d980, type: 3}
- {fileID: 2800000, guid: 1eeb50072b04d574e8a47aeb5109c855, type: 3}
- {fileID: 2800000, guid: 380571b8da950a546ba5d15a98aecb88, type: 3}
- {fileID: 2800000, guid: 4ed3eb7535126c74091bd78a39fbfb7f, type: 3}
- {fileID: 2800000, guid: 40d2f39dd41b7244bbbb240e4421a4ed, type: 3}
- {fileID: 2800000, guid: 088acb7dccf57e749b5f7d1052416662, type: 3}
- {fileID: 2800000, guid: 421a439d38c5f6a42bba8b8bd6ca4f7d, type: 3}
- {fileID: 2800000, guid: 3bef0d59b3a6fac4f8945f8ae7a9b01e, type: 3}
- {fileID: 2800000, guid: 2891052d14266ec4081eea792282c869, type: 3}
- {fileID: 2800000, guid: ae5b5ecaeb7730f4495c3f79de5fca75, type: 3}
- {fileID: 2800000, guid: d70898e135652664db3b6ced0b4b0e77, type: 3}
- {fileID: 2800000, guid: 0d287075029336a4cac36ea963024e0b, type: 3}
- {fileID: 2800000, guid: def7af34cfa1b8a45b402ea62822dfdb, type: 3}
- {fileID: 2800000, guid: 4f5e52637b152fd40b550038e68deacd, type: 3}
totalSpriteSurfaceArea: 589132
bindAsDefault: 1
m_MasterAtlas: {fileID: 0}
m_PackedSprites:
- {fileID: 21300000, guid: 743b3d504f89b4285a20a345b8d08a39, type: 3}
- {fileID: 21300000, guid: bae87d7032c5cc740bd40821d95511b4, type: 3}
- {fileID: 21300000, guid: f9efa9d0911ad854db5bba23dd905bc8, type: 3}
- {fileID: 21300000, guid: 38101d11fc52541b8bdf8fbfca153631, type: 3}
- {fileID: 21300000, guid: c70af2d15aebd4d5b8a00ca9c0bc7d8d, type: 3}
- {fileID: 21300000, guid: d70898e135652664db3b6ced0b4b0e77, type: 3}
- {fileID: 21300000, guid: b61efaf13e7dc2c448d4d2c02fb72af7, type: 3}
- {fileID: 21300000, guid: 2c5b1712dad5f4d8b894e322dad5d018, type: 3}
- {fileID: 21300000, guid: 427447a24b15846dab2a9f8a81584e1c, type: 3}
- {fileID: 21300000, guid: 5e4aa2b23b13d4a0b9c07804729854cc, type: 3}
- {fileID: 21300000, guid: 890aa6f2c4123ce4f901cf5febc2c960, type: 3}
- {fileID: 21300000, guid: a4427ef2a55621a4cbbd41a9f15ab676, type: 3}
- {fileID: 21300000, guid: 4f5e52637b152fd40b550038e68deacd, type: 3}
- {fileID: 21300000, guid: 718a59936202d8e4eae4a419f43d31a2, type: 3}
- {fileID: 21300000, guid: ccc5ffc3bd6384980812ebde95398e7a, type: 3}
- {fileID: 21300000, guid: def7af34cfa1b8a45b402ea62822dfdb, type: 3}
- {fileID: 21300000, guid: 142edb644b62fd145aa545b4e51f15de, type: 3}
- {fileID: 21300000, guid: 2861bd15868f8d34389b90aa710227cb, type: 3}
- {fileID: 21300000, guid: 0d287075029336a4cac36ea963024e0b, type: 3}
- {fileID: 21300000, guid: 4ed3eb7535126c74091bd78a39fbfb7f, type: 3}
- {fileID: 21300000, guid: 39de9bb5df37c54409143d3124387f98, type: 3}
- {fileID: 21300000, guid: 4d7a7c66572c8c7408501fa7c935d980, type: 3}
- {fileID: 21300000, guid: 34817576678fc4b0b86d5e8dbff66c63, type: 3}
- {fileID: 21300000, guid: 1eeb50072b04d574e8a47aeb5109c855, type: 3}
- {fileID: 21300000, guid: 79b69c47ae9175243b03c0639e2d4d94, type: 3}
- {fileID: 21300000, guid: 380571b8da950a546ba5d15a98aecb88, type: 3}
- {fileID: 21300000, guid: 1ed4b509da945452aad2de16dea3ad2a, type: 3}
- {fileID: 21300000, guid: 0ef1e4195af300f4ea8f532883cc6768, type: 3}
- {fileID: 21300000, guid: 3bef0d59b3a6fac4f8945f8ae7a9b01e, type: 3}
- {fileID: 21300000, guid: fd4c8d6a857762f4c9408bfa7bdf5060, type: 3}
- {fileID: 21300000, guid: 85ee6faa8608b0d45af2cb91849e19f7, type: 3}
- {fileID: 21300000, guid: ae5b5ecaeb7730f4495c3f79de5fca75, type: 3}
- {fileID: 21300000, guid: 01944aea3f67cdc42a5a2b8d3e99c15f, type: 3}
- {fileID: 21300000, guid: 9ba701bbe2a76af4aa5cbf4b04f974d6, type: 3}
- {fileID: 21300000, guid: ac60059c9248421418964fd4504260a2, type: 3}
- {fileID: 21300000, guid: 535a22bc9622942e8ae7ac743f605118, type: 3}
- {fileID: 21300000, guid: e7c078dc210efda4f935a75101013a9c, type: 3}
- {fileID: 21300000, guid: 2891052d14266ec4081eea792282c869, type: 3}
- {fileID: 21300000, guid: 088acb7dccf57e749b5f7d1052416662, type: 3}
- {fileID: 21300000, guid: 608ea78db957b7e4cad5007697dc3d01, type: 3}
- {fileID: 21300000, guid: 421a439d38c5f6a42bba8b8bd6ca4f7d, type: 3}
- {fileID: 21300000, guid: 40d2f39dd41b7244bbbb240e4421a4ed, type: 3}
- {fileID: 21300000, guid: 2343b4bd059904dcb996a5e9c8ed8b0a, type: 3}
- {fileID: 21300000, guid: f8632aedeccf8284f9c677b8b97c9b45, type: 3}
- {fileID: 21300000, guid: dd84830ef07e5cf4192887bc6ae2f0e6, type: 3}
- {fileID: 21300000, guid: d0aa5f8effbcdcf419c38667b5bde60a, type: 3}
- {fileID: 21300000, guid: 61e5123fdd34c461fb5ab16ff9fa9773, type: 3}
- {fileID: 21300000, guid: d57bdc5f437a5c44db5204cdbdb6a508, type: 3}
- {fileID: 21300000, guid: 1e2afd7fa89f0452583229794ceaff27, type: 3}
- {fileID: 21300000, guid: dc59fbafdeb4949aca2ed8536cd2545e, type: 3}
m_PackedSpriteNamesToIndex:
- Bar_RepeatEnd
- Clef_Bass
- Note_Half_Down
- Note_Flag_Eighth_Up
- Note_Flag_Eighth_Down
- Time_6
- Bar_Line
- Bar_RepeatEndStart
- Bar_RepeatStart
- Note_Flag_Sixteenth_Up
- Note_Eighth_Down
- Note_Half_Up
- Time_9
- Note_Eighth_Up
- Bar_DoubleLine
- Time_8
- Note_Stem_Down
- Note_Dot
- Time_7
- Time_Cut
- Rest_Eighth
- Staff
- Bar_Start
- Staff_Mark
- Accidental_Natural
- Time_Common
- Note_Sixteenth_Down
- Note_Stem_Up
- Time_3
- Rest_Sixteenth
- Note_Whole
- Time_5
- Note_Quarter_Up
- Accidental_Flat
- Note_Beam_Up
- Bar_Final
- Rest_Half
- Time_4
- Time_1
- Note_Beam_Down
- Time_2
- Time_0
- Note_Flag_Sixteenth_Down
- Rest_Quarter
- Note_Quarter_Down
- Clef_Treble
- Chord_Half
- Accidental_Sharp
- Chord_Quarter
- Note_Sixteenth_Up
m_Tag: NoteAtlas
m_IsVariant: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c135832626606554697bc5e6d39f5867
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,128 @@
fileFormatVersion: 2
guid: 608ea78db957b7e4cad5007697dc3d01
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,128 @@
fileFormatVersion: 2
guid: ac60059c9248421418964fd4504260a2
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 1
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+91
View File
@@ -0,0 +1,91 @@
fileFormatVersion: 2
guid: 2861bd15868f8d34389b90aa710227cb
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: 890aa6f2c4123ce4f901cf5febc2c960
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0, y: 0.73}
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: 718a59936202d8e4eae4a419f43d31a2
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: c70af2d15aebd4d5b8a00ca9c0bc7d8d
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 38101d11fc52541b8bdf8fbfca153631
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 1
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 2343b4bd059904dcb996a5e9c8ed8b0a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

@@ -0,0 +1,152 @@
fileFormatVersion: 2
guid: 5e4aa2b23b13d4a0b9c07804729854cc
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 1
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: tvOS
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: iPhone
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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: f9efa9d0911ad854db5bba23dd905bc8
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0, y: 0.73}
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: a4427ef2a55621a4cbbd41a9f15ab676
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 6
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 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: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

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