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