*
@@ -0,0 +1,4 @@
|
||||
/Logs
|
||||
/Library
|
||||
/*.sln
|
||||
/UserSettings
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e2b592e494429645ab8bb4c6889cae8
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c2440cadd68180c45bf171fbb634a99c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af3c02025d003bc4a9e9e2a75456fd81
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 25abcbcbd0a73d94a880831ca4707632
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 45ad52670051e204a831e584dcff4feb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6fcaf6b1e8bd34232a5ca886d568629a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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:
|
||||
@@ -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
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5a04610f96d954d629c68779a84e25cf
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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:
|
||||
|
||||
[](https://matthewcpp.github.io/assets/images/score.png)
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 64a8f46618b166440b61581a3b5a8752
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 070c63daef7f65943a931c53a7ed5f61
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2d1df42123d30462dab35fcd4f21d360
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74f9e1ec0c5d11449b5323fe85d5aa66
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a736abcf753a47469fe71e2559cc384
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 603bd412ec430d4409f3d2475b844bb0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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:
|
||||
@@ -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) { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af173254b4880c24f820630816073fd7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f3b46fe4dd2878e4284e77e0c7f6b689
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05961f251d39ffb44af4fc6436d30670
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb92b0385223e544f8efdd1367f42c57
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -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:
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -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:
|
||||
|
After Width: | Height: | Size: 8.0 KiB |
@@ -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:
|
||||
|
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:
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||