diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 0000000..d70cd98 --- /dev/null +++ b/.vsconfig @@ -0,0 +1,6 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.ManagedGame" + ] +} diff --git a/Assets/1x20Cube.prefab b/Assets/1x20Cube.prefab new file mode 100644 index 0000000..4b14f4b --- /dev/null +++ b/Assets/1x20Cube.prefab @@ -0,0 +1,315 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &589623276620307787 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2549211768804229017} + - component: {fileID: 1052484998016832026} + - component: {fileID: 2381076109874992468} + - component: {fileID: 1721641481729382250} + - component: {fileID: 3332178016245946598} + m_Layer: 0 + m_Name: 1x20Cube + m_TagString: Wall + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2549211768804229017 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589623276620307787} + 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} +--- !u!114 &1052484998016832026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589623276620307787} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MeshFormatVersion: 1 + m_Faces: + - m_Indexes: 000000000100000002000000010000000300000002000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 040000000500000006000000050000000700000006000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 08000000090000000a000000090000000b0000000a000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 100000001100000012000000110000001300000012000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 140000001500000016000000150000001700000016000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + m_SharedVertices: + - m_Vertices: 000000000d00000016000000 + - m_Vertices: 010000000400000017000000 + - m_Vertices: 020000000f00000010000000 + - m_Vertices: 030000000600000011000000 + - m_Vertices: 050000000800000015000000 + - m_Vertices: 070000000a00000013000000 + - m_Vertices: 090000000c00000014000000 + - m_Vertices: 0b0000000e00000012000000 + m_SharedTextures: [] + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 20, y: 0, z: 0} + - {x: 0, y: 2, z: 0} + - {x: 20, y: 2, z: 0} + - {x: 20, y: 0, z: 0} + - {x: 20, y: 0, z: -1} + - {x: 20, y: 2, z: 0} + - {x: 20, y: 2, z: -1} + - {x: 20, y: 0, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 20, y: 2, z: -1} + - {x: 0, y: 2, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 2, z: -1} + - {x: 0, y: 2, z: 0} + - {x: 0, y: 2, z: 0} + - {x: 20, y: 2, z: 0} + - {x: 0, y: 2, z: -1} + - {x: 20, y: 2, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 20, y: 0, z: -1} + - {x: 0, y: 0, z: 0} + - {x: 20, y: 0, z: 0} + m_Textures0: + - {x: 0, y: 0} + - {x: -20, y: 0} + - {x: 0, y: 2} + - {x: -20, y: 2} + - {x: 0, y: 0} + - {x: -1, y: 0} + - {x: 0, y: 2} + - {x: -1, y: 2} + - {x: 20, y: 0} + - {x: 0, y: 0} + - {x: 20, y: 2} + - {x: 0, y: 2} + - {x: 1, y: 0} + - {x: 0, y: 0} + - {x: 1, y: 2} + - {x: 0, y: 2} + - {x: 0, y: 0} + - {x: 20, y: 0} + - {x: 0, y: -1} + - {x: 20, y: -1} + - {x: 0, y: -1} + - {x: -20, y: -1} + - {x: 0, y: 0} + - {x: -20, y: 0} + m_Textures2: [] + m_Textures3: [] + m_Tangents: + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + m_Colors: [] + m_UnwrapParameters: + m_HardAngle: 88 + m_PackMargin: 20 + m_AngleError: 8 + m_AreaError: 15 + m_PreserveMeshAssetOnDestroy: 0 + assetGuid: + m_Mesh: {fileID: 0} + m_IsSelectable: 1 + m_SelectedFaces: + m_SelectedEdges: [] + m_SelectedVertices: +--- !u!23 &2381076109874992468 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589623276620307787} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e7fec641232aada4b9419c7ece6a7203, 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: 2 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1721641481729382250 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589623276620307787} + m_Mesh: {fileID: 0} +--- !u!64 &3332178016245946598 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589623276620307787} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} diff --git a/Assets/1x20Cube.prefab.meta b/Assets/1x20Cube.prefab.meta new file mode 100644 index 0000000..5f97772 --- /dev/null +++ b/Assets/1x20Cube.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 21c16987bc303a7479256130e9b40fbb +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/1x30Cube.prefab b/Assets/1x30Cube.prefab new file mode 100644 index 0000000..10bbe44 --- /dev/null +++ b/Assets/1x30Cube.prefab @@ -0,0 +1,315 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8288440288027676086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4658081160006525512} + - component: {fileID: 7872882754437720452} + - component: {fileID: 5074690860633056340} + - component: {fileID: 1225757330756864865} + - component: {fileID: 7581380566783588035} + m_Layer: 0 + m_Name: 1x30Cube + m_TagString: Wall + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4658081160006525512 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8288440288027676086} + 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} +--- !u!114 &7872882754437720452 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8288440288027676086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MeshFormatVersion: 1 + m_Faces: + - m_Indexes: 000000000100000002000000010000000300000002000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 040000000500000006000000050000000700000006000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 08000000090000000a000000090000000b0000000a000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 100000001100000012000000110000001300000012000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 140000001500000016000000150000001700000016000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + m_SharedVertices: + - m_Vertices: 000000000d00000016000000 + - m_Vertices: 010000000400000017000000 + - m_Vertices: 020000000f00000010000000 + - m_Vertices: 030000000600000011000000 + - m_Vertices: 050000000800000015000000 + - m_Vertices: 070000000a00000013000000 + - m_Vertices: 090000000c00000014000000 + - m_Vertices: 0b0000000e00000012000000 + m_SharedTextures: [] + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 50, y: 0, z: 0} + - {x: 0, y: 2, z: 0} + - {x: 50, y: 2, z: 0} + - {x: 50, y: 0, z: 0} + - {x: 50, y: 0, z: -1} + - {x: 50, y: 2, z: 0} + - {x: 50, y: 2, z: -1} + - {x: 50, y: 0, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 50, y: 2, z: -1} + - {x: 0, y: 2, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 2, z: -1} + - {x: 0, y: 2, z: 0} + - {x: 0, y: 2, z: 0} + - {x: 50, y: 2, z: 0} + - {x: 0, y: 2, z: -1} + - {x: 50, y: 2, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 50, y: 0, z: -1} + - {x: 0, y: 0, z: 0} + - {x: 50, y: 0, z: 0} + m_Textures0: + - {x: 0, y: 0} + - {x: -50, y: 0} + - {x: 0, y: 2} + - {x: -50, y: 2} + - {x: 0, y: 0} + - {x: -1, y: 0} + - {x: 0, y: 2} + - {x: -1, y: 2} + - {x: 50, y: 0} + - {x: 0, y: 0} + - {x: 50, y: 2} + - {x: 0, y: 2} + - {x: 1, y: 0} + - {x: 0, y: 0} + - {x: 1, y: 2} + - {x: 0, y: 2} + - {x: 0, y: 0} + - {x: 50, y: 0} + - {x: 0, y: -1} + - {x: 50, y: -1} + - {x: 0, y: -1} + - {x: -50, y: -1} + - {x: 0, y: 0} + - {x: -50, y: 0} + m_Textures2: [] + m_Textures3: [] + m_Tangents: + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + m_Colors: [] + m_UnwrapParameters: + m_HardAngle: 88 + m_PackMargin: 20 + m_AngleError: 8 + m_AreaError: 15 + m_PreserveMeshAssetOnDestroy: 0 + assetGuid: + m_Mesh: {fileID: 0} + m_IsSelectable: 1 + m_SelectedFaces: + m_SelectedEdges: [] + m_SelectedVertices: +--- !u!23 &5074690860633056340 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8288440288027676086} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e7fec641232aada4b9419c7ece6a7203, 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: 2 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1225757330756864865 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8288440288027676086} + m_Mesh: {fileID: 0} +--- !u!64 &7581380566783588035 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8288440288027676086} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} diff --git a/Assets/1x30Cube.prefab.meta b/Assets/1x30Cube.prefab.meta new file mode 100644 index 0000000..163881e --- /dev/null +++ b/Assets/1x30Cube.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: db65a59014728b245830bf6269cbbfa6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/1x5Cube.prefab b/Assets/1x5Cube.prefab new file mode 100644 index 0000000..5c18529 --- /dev/null +++ b/Assets/1x5Cube.prefab @@ -0,0 +1,315 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8292847989533250525 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8038673802331550199} + - component: {fileID: 5046978806096422044} + - component: {fileID: 8722606809633521714} + - component: {fileID: 5062173087561975370} + - component: {fileID: 6727079418557461791} + m_Layer: 0 + m_Name: 1x5Cube + m_TagString: Wall + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8038673802331550199 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8292847989533250525} + 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} +--- !u!114 &5046978806096422044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8292847989533250525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MeshFormatVersion: 1 + m_Faces: + - m_Indexes: 000000000100000002000000010000000300000002000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 040000000500000006000000050000000700000006000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 08000000090000000a000000090000000b0000000a000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 100000001100000012000000110000001300000012000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + - m_Indexes: 140000001500000016000000150000001700000016000000 + m_SmoothingGroup: 0 + m_Uv: + m_UseWorldSpace: 0 + m_FlipU: 0 + m_FlipV: 0 + m_SwapUV: 0 + m_Fill: 1 + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Rotation: 0 + m_Anchor: 9 + m_Material: {fileID: 0} + m_SubmeshIndex: 0 + m_ManualUV: 0 + elementGroup: -1 + m_TextureGroup: -1 + m_SharedVertices: + - m_Vertices: 000000000d00000016000000 + - m_Vertices: 010000000400000017000000 + - m_Vertices: 020000000f00000010000000 + - m_Vertices: 030000000600000011000000 + - m_Vertices: 050000000800000015000000 + - m_Vertices: 070000000a00000013000000 + - m_Vertices: 090000000c00000014000000 + - m_Vertices: 0b0000000e00000012000000 + m_SharedTextures: [] + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 5, y: 0, z: 0} + - {x: 0, y: 2, z: 0} + - {x: 5, y: 2, z: 0} + - {x: 5, y: 0, z: 0} + - {x: 5, y: 0, z: -1} + - {x: 5, y: 2, z: 0} + - {x: 5, y: 2, z: -1} + - {x: 5, y: 0, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 5, y: 2, z: -1} + - {x: 0, y: 2, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 2, z: -1} + - {x: 0, y: 2, z: 0} + - {x: 0, y: 2, z: 0} + - {x: 5, y: 2, z: 0} + - {x: 0, y: 2, z: -1} + - {x: 5, y: 2, z: -1} + - {x: 0, y: 0, z: -1} + - {x: 5, y: 0, z: -1} + - {x: 0, y: 0, z: 0} + - {x: 5, y: 0, z: 0} + m_Textures0: + - {x: 0, y: 0} + - {x: -5, y: 0} + - {x: 0, y: 2} + - {x: -5, y: 2} + - {x: 0, y: 0} + - {x: -1, y: 0} + - {x: 0, y: 2} + - {x: -1, y: 2} + - {x: 5, y: 0} + - {x: 0, y: 0} + - {x: 5, y: 2} + - {x: 0, y: 2} + - {x: 1, y: 0} + - {x: 0, y: 0} + - {x: 1, y: 2} + - {x: 0, y: 2} + - {x: 0, y: 0} + - {x: 5, y: 0} + - {x: 0, y: -1} + - {x: 5, y: -1} + - {x: 0, y: -1} + - {x: -5, y: -1} + - {x: 0, y: 0} + - {x: -5, y: 0} + m_Textures2: [] + m_Textures3: [] + m_Tangents: + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 0, y: 0, z: 1, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 0, y: 0, z: -1, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: 1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + - {x: -1, y: 0, z: 0, w: -1} + m_Colors: [] + m_UnwrapParameters: + m_HardAngle: 88 + m_PackMargin: 20 + m_AngleError: 8 + m_AreaError: 15 + m_PreserveMeshAssetOnDestroy: 0 + assetGuid: + m_Mesh: {fileID: 0} + m_IsSelectable: 1 + m_SelectedFaces: + m_SelectedEdges: [] + m_SelectedVertices: +--- !u!23 &8722606809633521714 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8292847989533250525} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e7fec641232aada4b9419c7ece6a7203, 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: 2 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &5062173087561975370 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8292847989533250525} + m_Mesh: {fileID: 0} +--- !u!64 &6727079418557461791 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8292847989533250525} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} diff --git a/Assets/1x5Cube.prefab.meta b/Assets/1x5Cube.prefab.meta new file mode 100644 index 0000000..31c91d9 --- /dev/null +++ b/Assets/1x5Cube.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7aa87ef090c46f54480d5e04fad6a346 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames.meta b/Assets/DelthorGames.meta new file mode 100644 index 0000000..cb3e0d2 --- /dev/null +++ b/Assets/DelthorGames.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea4a0c3b5643c1548b189763ff2d873a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM.meta b/Assets/DelthorGames/AKM.meta new file mode 100644 index 0000000..48f2c8f --- /dev/null +++ b/Assets/DelthorGames/AKM.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 323a367237bfa884a91403ea9d5b820e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/HowToUse.txt b/Assets/DelthorGames/AKM/HowToUse.txt new file mode 100644 index 0000000..d372649 --- /dev/null +++ b/Assets/DelthorGames/AKM/HowToUse.txt @@ -0,0 +1,4 @@ +Thank you for acquiring my asset. +A prefab is already made for you so that you can start using the asset right away, but you're also provided with all of the base files such as textures, models and materials to play around with them. +Take a look at the demo scene for some ideas. As you can see, you can move, delete and animate several parts of the gun as you like. +This weapon is made for use in FPS games, but it can also look good from other perspectives. \ No newline at end of file diff --git a/Assets/DelthorGames/AKM/HowToUse.txt.meta b/Assets/DelthorGames/AKM/HowToUse.txt.meta new file mode 100644 index 0000000..9131003 --- /dev/null +++ b/Assets/DelthorGames/AKM/HowToUse.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 80cfc9f5e8fbfa1458fdd439aeb9cfec +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Materials.meta b/Assets/DelthorGames/AKM/Materials.meta new file mode 100644 index 0000000..679e22d --- /dev/null +++ b/Assets/DelthorGames/AKM/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2fc0c700bcd28ef408769554bd2ee0fd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Materials/AKM_Mat.mat b/Assets/DelthorGames/AKM/Materials/AKM_Mat.mat new file mode 100644 index 0000000..26cd038 --- /dev/null +++ b/Assets/DelthorGames/AKM/Materials/AKM_Mat.mat @@ -0,0 +1,81 @@ +%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: AKM_Mat + m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP _NORMALMAP _PARALLAXMAP _SPECGLOSSMAP + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 80fda85ccf513bb448c4524e625a3b62, type: 3} + 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: 2800000, guid: c3dbe8c6e34132c4b9d8d50206d19a31, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 05694d3d0fd443d4fb8e7a3d9271a870, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 2800000, guid: 9492c443a3af7e54baa12dc95bdf7660, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: 13830bcfb3a8e004d93ff25bad454c8a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 2800000, guid: 8b69847459ee14e4090c46ab5d24043a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 2800000, guid: f93e7d11111564d47a022d4640605868, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1.1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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.26041293, g: 0.41509432, b: 0.3160982, a: 1} diff --git a/Assets/DelthorGames/AKM/Materials/AKM_Mat.mat.meta b/Assets/DelthorGames/AKM/Materials/AKM_Mat.mat.meta new file mode 100644 index 0000000..f8a7828 --- /dev/null +++ b/Assets/DelthorGames/AKM/Materials/AKM_Mat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08d76a9e6d6712d4aa9193bdb4f6b55f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Models.meta b/Assets/DelthorGames/AKM/Models.meta new file mode 100644 index 0000000..2e9f852 --- /dev/null +++ b/Assets/DelthorGames/AKM/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a2aca1c328f42747b3e0fc8ef1e2840 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Models/AKM.fbx b/Assets/DelthorGames/AKM/Models/AKM.fbx new file mode 100644 index 0000000..c325ce0 Binary files /dev/null and b/Assets/DelthorGames/AKM/Models/AKM.fbx differ diff --git a/Assets/DelthorGames/AKM/Models/AKM.fbx.meta b/Assets/DelthorGames/AKM/Models/AKM.fbx.meta new file mode 100644 index 0000000..51cda45 --- /dev/null +++ b/Assets/DelthorGames/AKM/Models/AKM.fbx.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 99fcce1f10b2ebd4a8cd31a345f6bed8 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: Material + second: {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, type: 2} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Prefabs.meta b/Assets/DelthorGames/AKM/Prefabs.meta new file mode 100644 index 0000000..8083876 --- /dev/null +++ b/Assets/DelthorGames/AKM/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: efa8f954d1aa0374faadfec452b7ab8f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Prefabs/AKM.prefab b/Assets/DelthorGames/AKM/Prefabs/AKM.prefab new file mode 100644 index 0000000..07b6f16 --- /dev/null +++ b/Assets/DelthorGames/AKM/Prefabs/AKM.prefab @@ -0,0 +1,2863 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &79850419368877288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8224422968836797133} + - component: {fileID: 457898379676303472} + - component: {fileID: 2129391292795838622} + m_Layer: 0 + m_Name: Circle_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8224422968836797133 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79850419368877288} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &457898379676303472 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79850419368877288} + m_Mesh: {fileID: 3440213568303713751, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &2129391292795838622 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79850419368877288} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &113975541733930079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6642604299524818536} + - component: {fileID: 3911581685421027944} + - component: {fileID: 7745293123110662163} + m_Layer: 0 + m_Name: Cylinder.000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6642604299524818536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113975541733930079} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3911581685421027944 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113975541733930079} + m_Mesh: {fileID: 7348556155622324996, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &7745293123110662163 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113975541733930079} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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!1 &143926870381455860 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6299779328606210272} + - component: {fileID: 5540542882326151810} + - component: {fileID: 6897490099712531786} + m_Layer: 0 + m_Name: Cube.013_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6299779328606210272 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143926870381455860} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5540542882326151810 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143926870381455860} + m_Mesh: {fileID: -3139941974747981782, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &6897490099712531786 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143926870381455860} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &164301141140617583 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8966801548327565977} + - component: {fileID: 3339990935256946772} + - component: {fileID: 6328728553069795705} + m_Layer: 0 + m_Name: Cube.006_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8966801548327565977 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164301141140617583} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: 0.15559006, y: 0.4127557, z: 1.3653904} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3339990935256946772 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164301141140617583} + m_Mesh: {fileID: 3382770850716141589, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &6328728553069795705 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164301141140617583} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &212744310539419914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2008978900310059458} + - component: {fileID: 2082164661430068512} + - component: {fileID: 657247084456149931} + m_Layer: 0 + m_Name: Cube.004_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2008978900310059458 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212744310539419914} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2082164661430068512 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212744310539419914} + m_Mesh: {fileID: -6813842297940566337, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &657247084456149931 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212744310539419914} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &824065960568186122 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4347767577096267681} + - component: {fileID: 6739061240550240264} + - component: {fileID: 3141798787991649715} + m_Layer: 0 + m_Name: Cube.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4347767577096267681 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 824065960568186122} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6739061240550240264 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 824065960568186122} + m_Mesh: {fileID: 1964926367440911766, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &3141798787991649715 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 824065960568186122} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &996357954830380452 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8468384041209860943} + - component: {fileID: 7252078918206030117} + - component: {fileID: 48441705105364796} + m_Layer: 0 + m_Name: Torus.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8468384041209860943 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996357954830380452} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: 0.36568335, y: 1.2728398, z: 3.6131558} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 35 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7252078918206030117 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996357954830380452} + m_Mesh: {fileID: 7206358537197127457, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &48441705105364796 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996357954830380452} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &1115510420516875044 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 210541914490680265} + - component: {fileID: 4755158224963961245} + - component: {fileID: 2018053934601858956} + m_Layer: 0 + m_Name: Cylinder.006_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &210541914490680265 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115510420516875044} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4755158224963961245 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115510420516875044} + m_Mesh: {fileID: -8980357973529549349, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &2018053934601858956 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115510420516875044} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &1503171321366361026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8453648901218519321} + - component: {fileID: 2713940262985014120} + - component: {fileID: 2695465546166783642} + m_Layer: 0 + m_Name: Cylinder.009_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8453648901218519321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503171321366361026} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2713940262985014120 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503171321366361026} + m_Mesh: {fileID: 287060331232230867, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &2695465546166783642 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503171321366361026} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &1547058226378453950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3007559860243483753} + - component: {fileID: 8528213865501554853} + - component: {fileID: 8671449237492660722} + m_Layer: 0 + m_Name: Cylinder.011_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3007559860243483753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1547058226378453950} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8528213865501554853 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1547058226378453950} + m_Mesh: {fileID: 7280481152629387332, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &8671449237492660722 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1547058226378453950} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &1702199144745806083 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7642513192565930724} + - component: {fileID: 7057969338353993505} + - component: {fileID: 8182526869200707834} + m_Layer: 0 + m_Name: Cube.018_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7642513192565930724 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1702199144745806083} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7057969338353993505 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1702199144745806083} + m_Mesh: {fileID: -3773398725173850471, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &8182526869200707834 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1702199144745806083} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &1849399280449358554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3774083540018477240} + - component: {fileID: 6640353871008239365} + - component: {fileID: 7020451539303760094} + m_Layer: 0 + m_Name: Cube.002_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3774083540018477240 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1849399280449358554} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6640353871008239365 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1849399280449358554} + m_Mesh: {fileID: 7848903858435477928, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &7020451539303760094 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1849399280449358554} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &2652395578182003164 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2653654740416492352} + - component: {fileID: 1049939187756412312} + - component: {fileID: 2892092142243727022} + m_Layer: 0 + m_Name: Cylinder_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2653654740416492352 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2652395578182003164} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: 0.049297333, y: 0.81470364, z: 2.4645214} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 33 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1049939187756412312 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2652395578182003164} + m_Mesh: {fileID: 1785010775391022613, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &2892092142243727022 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2652395578182003164} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &3023024702069955923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6423360572704802893} + - component: {fileID: 687319626086027306} + - component: {fileID: 6132772750445280806} + m_Layer: 0 + m_Name: Cube.003_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6423360572704802893 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3023024702069955923} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &687319626086027306 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3023024702069955923} + m_Mesh: {fileID: 5488722605592516591, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &6132772750445280806 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3023024702069955923} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &3991073920238667950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9213034114897854619} + - component: {fileID: 2542173387026340986} + - component: {fileID: 6313660002440138778} + m_Layer: 0 + m_Name: Cube.007_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9213034114897854619 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3991073920238667950} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2542173387026340986 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3991073920238667950} + m_Mesh: {fileID: 5687744605115444253, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &6313660002440138778 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3991073920238667950} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &4092516151411517680 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2433373590614447653} + - component: {fileID: 1304177443078836213} + - component: {fileID: 7741112797872393515} + m_Layer: 0 + m_Name: Cube.014_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2433373590614447653 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4092516151411517680} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1304177443078836213 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4092516151411517680} + m_Mesh: {fileID: -1094834897351882323, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &7741112797872393515 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4092516151411517680} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &4177823969075763376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3442564592934597948} + - component: {fileID: 8850373086885901873} + - component: {fileID: 6725781222391743786} + m_Layer: 0 + m_Name: Cube.010_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3442564592934597948 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4177823969075763376} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8850373086885901873 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4177823969075763376} + m_Mesh: {fileID: -160208019829609773, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &6725781222391743786 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4177823969075763376} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &4220649102806631884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7899839600265221192} + - component: {fileID: 5053290363884013511} + - component: {fileID: 2952469748460951840} + m_Layer: 0 + m_Name: Cube.015_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7899839600265221192 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4220649102806631884} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5053290363884013511 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4220649102806631884} + m_Mesh: {fileID: 8029401347676143002, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &2952469748460951840 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4220649102806631884} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &4524238938705987281 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8116892952193606583} + - component: {fileID: 7151361175692233885} + - component: {fileID: 2552165894475672581} + m_Layer: 0 + m_Name: Cube.016_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8116892952193606583 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4524238938705987281} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7151361175692233885 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4524238938705987281} + m_Mesh: {fileID: 7170122609824211509, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &2552165894475672581 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4524238938705987281} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &4890362083569023165 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2471955279596499269} + - component: {fileID: 4690915706807841469} + - component: {fileID: 8572883710204071564} + m_Layer: 0 + m_Name: Cube.008_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2471955279596499269 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4890362083569023165} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4690915706807841469 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4890362083569023165} + m_Mesh: {fileID: -1813769483251343583, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &8572883710204071564 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4890362083569023165} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &5049238578220961238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 302322558764211431} + - component: {fileID: 8999916506064065128} + - component: {fileID: 4413445799704405814} + m_Layer: 0 + m_Name: Cylinder.002_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &302322558764211431 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5049238578220961238} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8999916506064065128 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5049238578220961238} + m_Mesh: {fileID: 8684665421547244038, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &4413445799704405814 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5049238578220961238} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &5193829057098413167 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5947236105920015251} + - component: {fileID: 8402319454488250940} + - component: {fileID: 4817789729902833475} + m_Layer: 0 + m_Name: Cylinder.004_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5947236105920015251 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5193829057098413167} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8402319454488250940 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5193829057098413167} + m_Mesh: {fileID: 2619653575200246064, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &4817789729902833475 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5193829057098413167} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &5266473752082562266 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8000872715010646414} + - component: {fileID: 4278708461927917724} + - component: {fileID: 6488047171906969860} + m_Layer: 0 + m_Name: Cylinder.007_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8000872715010646414 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5266473752082562266} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4278708461927917724 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5266473752082562266} + m_Mesh: {fileID: -8872914256712105324, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &6488047171906969860 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5266473752082562266} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &5493592423169863488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5026014923794592220} + - component: {fileID: 4953340283288597213} + - component: {fileID: 1187022533779782909} + m_Layer: 0 + m_Name: Cylinder.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5026014923794592220 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5493592423169863488} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0.4829301, y: 1.386794, z: 3.058825} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4953340283288597213 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5493592423169863488} + m_Mesh: {fileID: 5796478305813232498, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &1187022533779782909 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5493592423169863488} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &5675382093180839472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7746749889290149607} + - component: {fileID: 5777007598879584050} + - component: {fileID: 5364275191098126652} + m_Layer: 0 + m_Name: Cylinder.003_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7746749889290149607 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5675382093180839472} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5777007598879584050 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5675382093180839472} + m_Mesh: {fileID: 1022286299411585782, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &5364275191098126652 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5675382093180839472} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &5758171482012678490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9114950995152499573} + - component: {fileID: 4215617234736373070} + - component: {fileID: 8890033653978377072} + m_Layer: 0 + m_Name: Cylinder.005_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9114950995152499573 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5758171482012678490} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4215617234736373070 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5758171482012678490} + m_Mesh: {fileID: -3715088358359381335, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &8890033653978377072 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5758171482012678490} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &5996691997195503095 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5859376232934871885} + - component: {fileID: 1202529934473602757} + - component: {fileID: 487779855466542040} + m_Layer: 0 + m_Name: Cube.020_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5859376232934871885 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5996691997195503095} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1202529934473602757 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5996691997195503095} + m_Mesh: {fileID: 6286744291313444990, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &487779855466542040 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5996691997195503095} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &6237750725105212004 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2913706498151224919} + - component: {fileID: 5126811988045532504} + - component: {fileID: 530858580157826525} + m_Layer: 0 + m_Name: Cube.019_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2913706498151224919 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6237750725105212004} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5126811988045532504 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6237750725105212004} + m_Mesh: {fileID: -5124059043551020927, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &530858580157826525 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6237750725105212004} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &6259183442245287854 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4983126124185809201} + m_Layer: 0 + m_Name: Empty.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4983126124185809201 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6259183442245287854} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 1.2633394, z: 0.42388362} + m_LocalScale: {x: 27.770853, y: 27.770853, z: 27.770853} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 34 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6975497155788886916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6239359517610320279} + m_Layer: 0 + m_Name: AKM + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6239359517610320279 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6975497155788886916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -11.74, y: 5.679755, z: -3.7217774} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8224422968836797133} + - {fileID: 4347767577096267681} + - {fileID: 3774083540018477240} + - {fileID: 6423360572704802893} + - {fileID: 2008978900310059458} + - {fileID: 2323681290285985726} + - {fileID: 8966801548327565977} + - {fileID: 9213034114897854619} + - {fileID: 2471955279596499269} + - {fileID: 4664335916671172192} + - {fileID: 3442564592934597948} + - {fileID: 5041077639692458185} + - {fileID: 6555631629283668477} + - {fileID: 6299779328606210272} + - {fileID: 2433373590614447653} + - {fileID: 7899839600265221192} + - {fileID: 8116892952193606583} + - {fileID: 4048685327547290959} + - {fileID: 7642513192565930724} + - {fileID: 2913706498151224919} + - {fileID: 5859376232934871885} + - {fileID: 2037339912105395970} + - {fileID: 6642604299524818536} + - {fileID: 5026014923794592220} + - {fileID: 302322558764211431} + - {fileID: 7746749889290149607} + - {fileID: 5947236105920015251} + - {fileID: 9114950995152499573} + - {fileID: 210541914490680265} + - {fileID: 8000872715010646414} + - {fileID: 8453648901218519321} + - {fileID: 3572485928094884022} + - {fileID: 3007559860243483753} + - {fileID: 2653654740416492352} + - {fileID: 4983126124185809201} + - {fileID: 8468384041209860943} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7024773960602722740 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3572485928094884022} + - component: {fileID: 8318487060256715812} + - component: {fileID: 8379319436055252330} + m_Layer: 0 + m_Name: Cylinder.010_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3572485928094884022 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7024773960602722740} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8318487060256715812 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7024773960602722740} + m_Mesh: {fileID: -7775485357160322779, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &8379319436055252330 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7024773960602722740} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &7423940751750724361 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5041077639692458185} + - component: {fileID: 4204225381596411471} + - component: {fileID: 7665774909833964709} + m_Layer: 0 + m_Name: Cube.011_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5041077639692458185 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7423940751750724361} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4204225381596411471 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7423940751750724361} + m_Mesh: {fileID: -8669127404902318575, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &7665774909833964709 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7423940751750724361} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &8023309497647640773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2037339912105395970} + - component: {fileID: 3909667578766482202} + - component: {fileID: 469190940846118058} + m_Layer: 0 + m_Name: Cube_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2037339912105395970 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8023309497647640773} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3909667578766482202 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8023309497647640773} + m_Mesh: {fileID: -8126535997912153522, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &469190940846118058 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8023309497647640773} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &8304025631331651037 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6555631629283668477} + - component: {fileID: 5371756146705670669} + - component: {fileID: 5222686241233132803} + m_Layer: 0 + m_Name: Cube.012_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6555631629283668477 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304025631331651037} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5371756146705670669 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304025631331651037} + m_Mesh: {fileID: -1479511118752177815, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &5222686241233132803 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304025631331651037} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &8327606860996804274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048685327547290959} + - component: {fileID: 1954359725985610840} + - component: {fileID: 9182295567905279338} + m_Layer: 0 + m_Name: Cube.017_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048685327547290959 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8327606860996804274} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1954359725985610840 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8327606860996804274} + m_Mesh: {fileID: -8211673063228289779, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &9182295567905279338 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8327606860996804274} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &8568081154848059450 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4664335916671172192} + - component: {fileID: 7696886707794297777} + - component: {fileID: 7487070628141929651} + m_Layer: 0 + m_Name: Cube.009_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4664335916671172192 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8568081154848059450} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7696886707794297777 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8568081154848059450} + m_Mesh: {fileID: 1558708428209142139, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &7487070628141929651 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8568081154848059450} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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!1 &8768279491680524108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2323681290285985726} + - component: {fileID: 7065020628692939371} + - component: {fileID: 3848160679801990381} + m_Layer: 0 + m_Name: Cube.005_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2323681290285985726 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8768279491680524108} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 6239359517610320279} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7065020628692939371 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8768279491680524108} + m_Mesh: {fileID: -7823134470834710897, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!23 &3848160679801990381 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8768279491680524108} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 diff --git a/Assets/DelthorGames/AKM/Prefabs/AKM.prefab.meta b/Assets/DelthorGames/AKM/Prefabs/AKM.prefab.meta new file mode 100644 index 0000000..504ee98 --- /dev/null +++ b/Assets/DelthorGames/AKM/Prefabs/AKM.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 67f716418f7ba2146a845739c7782755 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Scenes.meta b/Assets/DelthorGames/AKM/Scenes.meta new file mode 100644 index 0000000..e4f5464 --- /dev/null +++ b/Assets/DelthorGames/AKM/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3d8de89776a8b449ae9b47cc59e07d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Scenes/DemoScene.unity b/Assets/DelthorGames/AKM/Scenes/DemoScene.unity new file mode 100644 index 0000000..19d83a9 --- /dev/null +++ b/Assets/DelthorGames/AKM/Scenes/DemoScene.unity @@ -0,0 +1,481 @@ +%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.4627451, g: 0.4627451, b: 0.4627451, 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: 10304, guid: 0000000000000000f000000000000000, type: 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: 705507994} + 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: 1 + 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: 1 + 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!1001 &627692120 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5026014923794592220, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.8242444 + objectReference: {fileID: 0} + - target: {fileID: 5026014923794592220, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.00000004612564 + objectReference: {fileID: 0} + - target: {fileID: 5026014923794592220, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.z + value: -0.00000006714323 + objectReference: {fileID: 0} + - target: {fileID: 5026014923794592220, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.5662343 + objectReference: {fileID: 0} + - target: {fileID: 5026014923794592220, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -111.023994 + objectReference: {fileID: 0} + - target: {fileID: 5026014923794592220, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: -0.000015258789 + objectReference: {fileID: 0} + - target: {fileID: 5758171482012678490, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5996691997195503095, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6237750725105212004, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalPosition.x + value: -11.74 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalPosition.y + value: 11.43 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalPosition.z + value: -3.7217774 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6975497155788886916, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_Name + value: AKM (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 67f716418f7ba2146a845739c7782755, type: 3} +--- !u!1 &705507993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705507995} + - component: {fileID: 705507994} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &705507994 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &705507995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_LocalRotation: {x: 0.52402985, y: 0.4508698, z: 0.3915599, w: 0.6072808} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 16.462, y: 87.357, z: 81.355} +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + - component: {fileID: 963194227} + - component: {fileID: 963194226} + 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 &963194226 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 +--- !u!20 &963194227 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, 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: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: -0.08156626, y: 0.6904372, z: 0.07884812, w: 0.7144413} + m_LocalPosition: {x: -25.896313, y: 5.326275, z: -3.8787189} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} +--- !u!1001 &1435553867038096636 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalPosition.x + value: -11.74 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalPosition.y + value: 5.679755 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalPosition.z + value: -3.7217774 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6239359517610320279, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6975497155788886916, guid: 67f716418f7ba2146a845739c7782755, + type: 3} + propertyPath: m_Name + value: AKM + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 67f716418f7ba2146a845739c7782755, type: 3} diff --git a/Assets/DelthorGames/AKM/Scenes/DemoScene.unity.meta b/Assets/DelthorGames/AKM/Scenes/DemoScene.unity.meta new file mode 100644 index 0000000..6833a9f --- /dev/null +++ b/Assets/DelthorGames/AKM/Scenes/DemoScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cc905de7bc1b60047a62944d7200cfc0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures.meta b/Assets/DelthorGames/AKM/Textures.meta new file mode 100644 index 0000000..fb60d51 --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6fd57c5383d4a3346a5aa3f0fca3ba33 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat4K_NormalOpenGLFix.png b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat4K_NormalOpenGLFix.png new file mode 100644 index 0000000..cfa4fec Binary files /dev/null and b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat4K_NormalOpenGLFix.png differ diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat4K_NormalOpenGLFix.png.meta b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat4K_NormalOpenGLFix.png.meta new file mode 100644 index 0000000..e68495c --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat4K_NormalOpenGLFix.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 80fda85ccf513bb448c4524e625a3b62 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + 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: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 1 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AO.png b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AO.png new file mode 100644 index 0000000..cfbcacb Binary files /dev/null and b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AO.png differ diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AO.png.meta b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AO.png.meta new file mode 100644 index 0000000..b875b2a --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AO.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 13830bcfb3a8e004d93ff25bad454c8a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AlbedoTransparency.png b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AlbedoTransparency.png new file mode 100644 index 0000000..6788a1b Binary files /dev/null and b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AlbedoTransparency.png differ diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AlbedoTransparency.png.meta b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AlbedoTransparency.png.meta new file mode 100644 index 0000000..6d2909f --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_AlbedoTransparency.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 05694d3d0fd443d4fb8e7a3d9271a870 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Emission.png b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Emission.png new file mode 100644 index 0000000..85679ea Binary files /dev/null and b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Emission.png differ diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Emission.png.meta b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Emission.png.meta new file mode 100644 index 0000000..265c3b6 --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Emission.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: c3dbe8c6e34132c4b9d8d50206d19a31 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Height.png b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Height.png new file mode 100644 index 0000000..be634f5 Binary files /dev/null and b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Height.png differ diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Height.png.meta b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Height.png.meta new file mode 100644 index 0000000..938fbd9 --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Height.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 8b69847459ee14e4090c46ab5d24043a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_MetallicSmoothness.png b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_MetallicSmoothness.png new file mode 100644 index 0000000..0f23bb8 Binary files /dev/null and b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_MetallicSmoothness.png differ diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_MetallicSmoothness.png.meta b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_MetallicSmoothness.png.meta new file mode 100644 index 0000000..274209b --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_MetallicSmoothness.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 9492c443a3af7e54baa12dc95bdf7660 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Roughness.png b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Roughness.png new file mode 100644 index 0000000..947ee53 Binary files /dev/null and b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Roughness.png differ diff --git a/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Roughness.png.meta b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Roughness.png.meta new file mode 100644 index 0000000..1e35bcc --- /dev/null +++ b/Assets/DelthorGames/AKM/Textures/AKMDis_Mat_Roughness.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: f93e7d11111564d47a022d4640605868 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Demonstrations.meta b/Assets/Demonstrations.meta new file mode 100644 index 0000000..21e04bf --- /dev/null +++ b/Assets/Demonstrations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d65d9ca7ae1253341b6790f3a23e3a11 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Demonstrations/AKMAgent.demo b/Assets/Demonstrations/AKMAgent.demo new file mode 100644 index 0000000..34b29da Binary files /dev/null and b/Assets/Demonstrations/AKMAgent.demo differ diff --git a/Assets/Demonstrations/AKMAgent.demo.meta b/Assets/Demonstrations/AKMAgent.demo.meta new file mode 100644 index 0000000..083f794 --- /dev/null +++ b/Assets/Demonstrations/AKMAgent.demo.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 39a127fc79ed92d4e88aec711f545d5f +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: ' (Unity.MLAgents.Demonstrations.DemonstrationSummary)' + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 7bd65ce151aaa4a41a45312543c56be1, type: 3} diff --git a/Assets/Font.meta b/Assets/Font.meta new file mode 100644 index 0000000..1ab2d81 --- /dev/null +++ b/Assets/Font.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 191ffff14264cf949a748b676d2d2086 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode SDF.asset b/Assets/Font/CascadiaCode SDF.asset new file mode 100644 index 0000000..1b8425f --- /dev/null +++ b/Assets/Font/CascadiaCode SDF.asset @@ -0,0 +1,2721 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &-4662725986004701985 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CascadiaCode SDF Material + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 52128046682858857} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 6 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.8333333 + - _ScaleRatioB: 0.6770833 + - _ScaleRatioC: 0.6770833 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 512 + - _TextureWidth: 512 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: CascadiaCode SDF + m_EditorClassIdentifier: + hashCode: -1519282621 + material: {fileID: -4662725986004701985} + materialHashCode: 363668355 + m_Version: 1.1.0 + m_SourceFontFileGUID: 979318e2cdafc0e43bfd56bb63011857 + m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_SourceFontFile: {fileID: 0} + m_AtlasPopulationMode: 0 + m_FaceInfo: + m_FaceIndex: 0 + m_FamilyName: Cascadia Code + m_StyleName: Regular + m_PointSize: 70 + m_Scale: 1 + m_LineHeight: 81.34766 + m_AscentLine: 64.94141 + m_CapLine: 49 + m_MeanLine: 36 + m_Baseline: 0 + m_DescentLine: -16.40625 + m_SuperscriptOffset: 64.94141 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -16.40625 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -5.126953 + m_UnderlineThickness: 3.4179688 + m_StrikethroughOffset: 14.4 + m_StrikethroughThickness: 3.4179688 + m_TabWidth: 41 + m_GlyphTable: + - m_Index: 1 + m_Metrics: + m_Width: 37.953125 + m_Height: 48.53125 + m_HorizontalBearingX: 1.53125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 256 + m_Y: 341 + m_Width: 39 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 29 + m_Metrics: + m_Width: 33.296875 + m_Height: 48.53125 + m_HorizontalBearingX: 5.46875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 339 + m_Y: 188 + m_Width: 34 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 30 + m_Metrics: + m_Width: 36 + m_Height: 49.90625 + m_HorizontalBearingX: 2.9375 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 132 + m_Y: 321 + m_Width: 37 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 37 + m_Metrics: + m_Width: 33.984375 + m_Height: 48.53125 + m_HorizontalBearingX: 4.78125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 327 + m_Y: 66 + m_Width: 35 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 42 + m_Metrics: + m_Width: 32.125 + m_Height: 48.53125 + m_HorizontalBearingX: 5.46875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 373 + m_Y: 66 + m_Width: 33 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 64 + m_Metrics: + m_Width: 32.125 + m_Height: 48.53125 + m_HorizontalBearingX: 6.15625 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 416 + m_Y: 6 + m_Width: 33 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 66 + m_Metrics: + m_Width: 36.03125 + m_Height: 49.90625 + m_HorizontalBearingX: 2.25 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 163 + m_Y: 383 + m_Width: 37 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 73 + m_Metrics: + m_Width: 31.453125 + m_Height: 48.53125 + m_HorizontalBearingX: 4.78125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 416 + m_Y: 126 + m_Width: 33 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 78 + m_Metrics: + m_Width: 29.53125 + m_Height: 48.53125 + m_HorizontalBearingX: 5.75 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 414 + m_Y: 395 + m_Width: 31 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 93 + m_Metrics: + m_Width: 33.359375 + m_Height: 49.21875 + m_HorizontalBearingX: 2.9375 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 259 + m_Y: 68 + m_Width: 35 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 96 + m_Metrics: + m_Width: 34.59375 + m_Height: 48.53125 + m_HorizontalBearingX: 5.125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 370 + m_Y: 6 + m_Width: 35 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 101 + m_Metrics: + m_Width: 32.125 + m_Height: 48.53125 + m_HorizontalBearingX: 5.46875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 416 + m_Y: 186 + m_Width: 33 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 111 + m_Metrics: + m_Width: 32.265625 + m_Height: 48.53125 + m_HorizontalBearingX: 4.375 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 416 + m_Y: 246 + m_Width: 33 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 112 + m_Metrics: + m_Width: 30.890625 + m_Height: 48.53125 + m_HorizontalBearingX: 5.0625 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 416 + m_Y: 455 + m_Width: 31 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 120 + m_Metrics: + m_Width: 35.828125 + m_Height: 49.90625 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 176 + m_Y: 445 + m_Width: 37 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 149 + m_Metrics: + m_Width: 32.8125 + m_Height: 48.53125 + m_HorizontalBearingX: 5.46875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 353 + m_Y: 126 + m_Width: 34 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 151 + m_Metrics: + m_Width: 35.828125 + m_Height: 64.9375 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 26 + m_Y: 88 + m_Width: 37 + m_Height: 66 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 152 + m_Metrics: + m_Width: 34.25 + m_Height: 48.53125 + m_HorizontalBearingX: 4.78125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 292 + m_Y: 190 + m_Width: 36 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 157 + m_Metrics: + m_Width: 31.859375 + m_Height: 49.90625 + m_HorizontalBearingX: 4.40625 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 180 + m_Y: 286 + m_Width: 33 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 166 + m_Metrics: + m_Width: 35.546875 + m_Height: 48.53125 + m_HorizontalBearingX: 2.734375 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 324 + m_Y: 396 + m_Width: 37 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 173 + m_Metrics: + m_Width: 31.453125 + m_Height: 49.21875 + m_HorizontalBearingX: 4.78125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 263 + m_Y: 129 + m_Width: 33 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 193 + m_Metrics: + m_Width: 37.953125 + m_Height: 48.53125 + m_HorizontalBearingX: 1.53125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 269 + m_Y: 276 + m_Width: 39 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 197 + m_Metrics: + m_Width: 39.640625 + m_Height: 48.53125 + m_HorizontalBearingX: 0.6875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 318 + m_Y: 6 + m_Width: 41 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 202 + m_Metrics: + m_Width: 36.578125 + m_Height: 48.53125 + m_HorizontalBearingX: 2.21875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 368 + m_Y: 456 + m_Width: 37 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 203 + m_Metrics: + m_Width: 39.296875 + m_Height: 48.53125 + m_HorizontalBearingX: 0.859375 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 224 + m_Y: 409 + m_Width: 41 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 212 + m_Metrics: + m_Width: 31.453125 + m_Height: 48.53125 + m_HorizontalBearingX: 5.125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 417 + m_Y: 66 + m_Width: 32 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 225 + m_Metrics: + m_Width: 36.296875 + m_Height: 37.265625 + m_HorizontalBearingX: 3.28125 + m_HorizontalBearingY: 36.578125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 128 + m_Y: 460 + m_Width: 37 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 252 + m_Metrics: + m_Width: 31.984375 + m_Height: 51.953125 + m_HorizontalBearingX: 5.578125 + m_HorizontalBearingY: 51.265625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 88 + m_Y: 163 + m_Width: 33 + m_Height: 53 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 253 + m_Metrics: + m_Width: 32.84375 + m_Height: 37.609375 + m_HorizontalBearingX: 4.65625 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 354 + m_Y: 346 + m_Width: 34 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 259 + m_Metrics: + m_Width: 32 + m_Height: 51.953125 + m_HorizontalBearingX: 3.28125 + m_HorizontalBearingY: 51.265625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 87 + m_Y: 6 + m_Width: 33 + m_Height: 53 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 264 + m_Metrics: + m_Width: 31.71875 + m_Height: 37.609375 + m_HorizontalBearingX: 4.3125 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 372 + m_Y: 248 + m_Width: 33 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 287 + m_Metrics: + m_Width: 36.09375 + m_Height: 51.953125 + m_HorizontalBearingX: 2.328125 + m_HorizontalBearingY: 51.953125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 175 + m_Y: 6 + m_Width: 37 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 288 + m_Metrics: + m_Width: 32 + m_Height: 53.265625 + m_HorizontalBearingX: 3.28125 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 44 + m_Y: 165 + m_Width: 33 + m_Height: 54 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 298 + m_Metrics: + m_Width: 29.53125 + m_Height: 51.265625 + m_HorizontalBearingX: 5.75 + m_HorizontalBearingY: 51.265625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 132 + m_Y: 161 + m_Width: 31 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 303 + m_Metrics: + m_Width: 32.203125 + m_Height: 52.09375 + m_HorizontalBearingX: 5.46875 + m_HorizontalBearingY: 52.09375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 119 + m_Y: 70 + m_Width: 33 + m_Height: 53 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 318 + m_Metrics: + m_Width: 25.21875 + m_Height: 68.5 + m_HorizontalBearingX: 5.8125 + m_HorizontalBearingY: 52.09375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 6 + m_Y: 170 + m_Width: 27 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 323 + m_Metrics: + m_Width: 33.5 + m_Height: 51.265625 + m_HorizontalBearingX: 5.46875 + m_HorizontalBearingY: 51.265625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 90 + m_Y: 227 + m_Width: 34 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 328 + m_Metrics: + m_Width: 33.359375 + m_Height: 51.953125 + m_HorizontalBearingX: 3.34375 + m_HorizontalBearingY: 51.265625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 74 + m_Y: 81 + m_Width: 34 + m_Height: 53 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 340 + m_Metrics: + m_Width: 33.359375 + m_Height: 36.921875 + m_HorizontalBearingX: 3.828125 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 460 + m_Y: 102 + m_Width: 35 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 341 + m_Metrics: + m_Width: 29.53125 + m_Height: 36.921875 + m_HorizontalBearingX: 5.75 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 441 + m_Y: 335 + m_Width: 31 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 350 + m_Metrics: + m_Width: 31.71875 + m_Height: 37.609375 + m_HorizontalBearingX: 4.65625 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 372 + m_Y: 297 + m_Width: 33 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 379 + m_Metrics: + m_Width: 31.984375 + m_Height: 52.640625 + m_HorizontalBearingX: 5.75 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 131 + m_Y: 6 + m_Width: 33 + m_Height: 53 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 381 + m_Metrics: + m_Width: 32 + m_Height: 52.640625 + m_HorizontalBearingX: 3.28125 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 163 + m_Y: 70 + m_Width: 33 + m_Height: 53 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 382 + m_Metrics: + m_Width: 36.640625 + m_Height: 36.921875 + m_HorizontalBearingX: 2.734375 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 224 + m_Y: 469 + m_Width: 38 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 387 + m_Metrics: + m_Width: 30.359375 + m_Height: 37.609375 + m_HorizontalBearingX: 5.328125 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 399 + m_Y: 346 + m_Width: 31 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 396 + m_Metrics: + m_Width: 34.1875 + m_Height: 47.859375 + m_HorizontalBearingX: 2.390625 + m_HorizontalBearingY: 47.171875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 319 + m_Y: 250 + m_Width: 35 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 402 + m_Metrics: + m_Width: 34.25 + m_Height: 36.921875 + m_HorizontalBearingX: 4.984375 + m_HorizontalBearingY: 36.234375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 321 + m_Y: 461 + m_Width: 36 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 422 + m_Metrics: + m_Width: 35.546875 + m_Height: 36.234375 + m_HorizontalBearingX: 2.734375 + m_HorizontalBearingY: 36.234375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 273 + m_Y: 469 + m_Width: 37 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 425 + m_Metrics: + m_Width: 36.234375 + m_Height: 36.234375 + m_HorizontalBearingX: 2.390625 + m_HorizontalBearingY: 36.234375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 460 + m_Y: 6 + m_Width: 37 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 430 + m_Metrics: + m_Width: 33.765625 + m_Height: 36.234375 + m_HorizontalBearingX: 3.625 + m_HorizontalBearingY: 36.234375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 460 + m_Y: 150 + m_Width: 35 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 431 + m_Metrics: + m_Width: 36.234375 + m_Height: 52.640625 + m_HorizontalBearingX: 1.875 + m_HorizontalBearingY: 36.234375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 114 + m_Y: 395 + m_Width: 38 + m_Height: 54 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 440 + m_Metrics: + m_Width: 29.796875 + m_Height: 36.234375 + m_HorizontalBearingX: 5.609375 + m_HorizontalBearingY: 36.234375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 458 + m_Y: 429 + m_Width: 31 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1732 + m_Metrics: + m_Width: 33.078125 + m_Height: 49.90625 + m_HorizontalBearingX: 3.96875 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 158 + m_Y: 224 + m_Width: 35 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1733 + m_Metrics: + m_Width: 30.140625 + m_Height: 48.53125 + m_HorizontalBearingX: 5.8125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 372 + m_Y: 395 + m_Width: 31 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1734 + m_Metrics: + m_Width: 33.15625 + m_Height: 49.21875 + m_HorizontalBearingX: 3.625 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 273 + m_Y: 6 + m_Width: 34 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1735 + m_Metrics: + m_Width: 31.421875 + m_Height: 49.90625 + m_HorizontalBearingX: 4.265625 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 204 + m_Y: 218 + m_Width: 32 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1736 + m_Metrics: + m_Width: 35.75 + m_Height: 48.53125 + m_HorizontalBearingX: 2.53125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 276 + m_Y: 401 + m_Width: 37 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1737 + m_Metrics: + m_Width: 32.875 + m_Height: 49.21875 + m_HorizontalBearingX: 4.515625 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 211 + m_Y: 348 + m_Width: 34 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1738 + m_Metrics: + m_Width: 33.015625 + m_Height: 49.421875 + m_HorizontalBearingX: 4.375 + m_HorizontalBearingY: 48.734375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 224 + m_Y: 280 + m_Width: 34 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1739 + m_Metrics: + m_Width: 35.609375 + m_Height: 48.53125 + m_HorizontalBearingX: 3.828125 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 306 + m_Y: 336 + m_Width: 37 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1740 + m_Metrics: + m_Width: 33.078125 + m_Height: 49.90625 + m_HorizontalBearingX: 3.96875 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 174 + m_Y: 156 + m_Width: 35 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1741 + m_Metrics: + m_Width: 33.015625 + m_Height: 49.421875 + m_HorizontalBearingX: 3.96875 + m_HorizontalBearingY: 48.734375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 247 + m_Y: 215 + m_Width: 34 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1862 + m_Metrics: + m_Width: 10.109375 + m_Height: 10.125 + m_HorizontalBearingX: 15.453125 + m_HorizontalBearingY: 9.4375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 216 + m_Y: 131 + m_Width: 11 + m_Height: 11 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1863 + m_Metrics: + m_Width: 10.671875 + m_Height: 23.59375 + m_HorizontalBearingX: 14.078125 + m_HorizontalBearingY: 8.6875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 52 + m_Y: 474 + m_Width: 11 + m_Height: 24 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1864 + m_Metrics: + m_Width: 10.109375 + m_Height: 37.609375 + m_HorizontalBearingX: 15.453125 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 384 + m_Y: 186 + m_Width: 11 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1865 + m_Metrics: + m_Width: 11.484375 + m_Height: 51.828125 + m_HorizontalBearingX: 14.078125 + m_HorizontalBearingY: 36.921875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 135 + m_Y: 224 + m_Width: 12 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1866 + m_Metrics: + m_Width: 38.109375 + m_Height: 10.125 + m_HorizontalBearingX: 1.453125 + m_HorizontalBearingY: 9.4375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 166 + m_Y: 134 + m_Width: 39 + m_Height: 11 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1867 + m_Metrics: + m_Width: 10.109375 + m_Height: 49.5625 + m_HorizontalBearingX: 15.453125 + m_HorizontalBearingY: 48.875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 305 + m_Y: 67 + m_Width: 11 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1869 + m_Metrics: + m_Width: 30.421875 + m_Height: 49.90625 + m_HorizontalBearingX: 3.96875 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 220 + m_Y: 153 + m_Width: 32 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1873 + m_Metrics: + m_Width: 33.359375 + m_Height: 31.390625 + m_HorizontalBearingX: 3.828125 + m_HorizontalBearingY: 40.203125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 460 + m_Y: 245 + m_Width: 35 + m_Height: 33 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1875 + m_Metrics: + m_Width: 34.171875 + m_Height: 48.53125 + m_HorizontalBearingX: 3.421875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 307 + m_Y: 128 + m_Width: 35 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1878 + m_Metrics: + m_Width: 34.734375 + m_Height: 61.53125 + m_HorizontalBearingX: 3.890625 + m_HorizontalBearingY: 55.03125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 40 + m_Y: 326 + m_Width: 36 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1879 + m_Metrics: + m_Width: 34.734375 + m_Height: 61.53125 + m_HorizontalBearingX: 2.390625 + m_HorizontalBearingY: 55.03125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 43 + m_Y: 251 + m_Width: 36 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1881 + m_Metrics: + m_Width: 25.015625 + m_Height: 62.21875 + m_HorizontalBearingX: 9.09375 + m_HorizontalBearingY: 55.375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 40 + m_Y: 400 + m_Width: 26 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1882 + m_Metrics: + m_Width: 25.015625 + m_Height: 62.21875 + m_HorizontalBearingX: 6.90625 + m_HorizontalBearingY: 55.375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 77 + m_Y: 400 + m_Width: 26 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1883 + m_Metrics: + m_Width: 25.296875 + m_Height: 62.890625 + m_HorizontalBearingX: 8.40625 + m_HorizontalBearingY: 55.578125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 50 + m_Y: 6 + m_Width: 26 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1884 + m_Metrics: + m_Width: 25.296875 + m_Height: 62.890625 + m_HorizontalBearingX: 7.3125 + m_HorizontalBearingY: 55.578125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 6 + m_Y: 251 + m_Width: 26 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1885 + m_Metrics: + m_Width: 21.390625 + m_Height: 63.15625 + m_HorizontalBearingX: 12.71875 + m_HorizontalBearingY: 55.84375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 6 + m_Y: 326 + m_Width: 23 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1886 + m_Metrics: + m_Width: 21.390625 + m_Height: 63.15625 + m_HorizontalBearingX: 6.90625 + m_HorizontalBearingY: 55.84375 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 6 + m_Y: 401 + m_Width: 23 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1893 + m_Metrics: + m_Width: 34.171875 + m_Height: 6.34375 + m_HorizontalBearingX: 3.421875 + m_HorizontalBearingY: 27.40625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 44 + m_Y: 230 + m_Width: 35 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1900 + m_Metrics: + m_Width: 34.171875 + m_Height: 6.359375 + m_HorizontalBearingX: 3.421875 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 74 + m_Y: 145 + m_Width: 35 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1913 + m_Metrics: + m_Width: 21.921875 + m_Height: 21.875 + m_HorizontalBearingX: 9.546875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 74 + m_Y: 474 + m_Width: 23 + m_Height: 23 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1914 + m_Metrics: + m_Width: 7.921875 + m_Height: 21.875 + m_HorizontalBearingX: 16.546875 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 108 + m_Y: 474 + m_Width: 9 + m_Height: 23 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2013 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2014 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2025 + m_Metrics: + m_Width: 31.859375 + m_Height: 70.40625 + m_HorizontalBearingX: 4.40625 + m_HorizontalBearingY: 59.46875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 6 + m_Y: 6 + m_Width: 33 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2058 + m_Metrics: + m_Width: 34.171875 + m_Height: 35.46875 + m_HorizontalBearingX: 3.421875 + m_HorizontalBearingY: 41.96875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 460 + m_Y: 198 + m_Width: 35 + m_Height: 36 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2062 + m_Metrics: + m_Width: 34.171875 + m_Height: 23.4375 + m_HorizontalBearingX: 3.421875 + m_HorizontalBearingY: 35.953125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 6 + m_Y: 476 + m_Width: 35 + m_Height: 24 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2064 + m_Metrics: + m_Width: 32.75 + m_Height: 33.84375 + m_HorizontalBearingX: 4.984375 + m_HorizontalBearingY: 41.15625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 458 + m_Y: 383 + m_Width: 34 + m_Height: 35 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2065 + m_Metrics: + m_Width: 32.75 + m_Height: 33.84375 + m_HorizontalBearingX: 3.28125 + m_HorizontalBearingY: 41.15625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 460 + m_Y: 289 + m_Width: 34 + m_Height: 35 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2070 + m_Metrics: + m_Width: 34.171875 + m_Height: 15.171875 + m_HorizontalBearingX: 3.421875 + m_HorizontalBearingY: 31.78125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 120 + m_Y: 134 + m_Width: 35 + m_Height: 16 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2072 + m_Metrics: + m_Width: 27.015625 + m_Height: 20.5 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 48.53125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 90 + m_Y: 290 + m_Width: 28 + m_Height: 21 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2084 + m_Metrics: + m_Width: 38.015625 + m_Height: 49.90625 + m_HorizontalBearingX: 1.84375 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 223 + m_Y: 6 + m_Width: 39 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2180 + m_Metrics: + m_Width: 35.890625 + m_Height: 35.890625 + m_HorizontalBearingX: 2.5625 + m_HorizontalBearingY: 42.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 460 + m_Y: 54 + m_Width: 37 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2538 + m_Metrics: + m_Width: 32.953125 + m_Height: 57.5 + m_HorizontalBearingX: 3.6875 + m_HorizontalBearingY: 49.1875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 87 + m_Y: 325 + m_Width: 34 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2539 + m_Metrics: + m_Width: 39.921875 + m_Height: 49.90625 + m_HorizontalBearingX: 1.921875 + m_HorizontalBearingY: 49.21875 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 207 + m_Y: 69 + m_Width: 41 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2550 + m_Metrics: + m_Width: 7.109375 + m_Height: 69.71875 + m_HorizontalBearingX: 16.953125 + m_HorizontalBearingY: 59.125 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 6 + m_Y: 88 + m_Width: 9 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 3040 + m_Metrics: + m_Width: 16.78125 + m_Height: 19.140625 + m_HorizontalBearingX: 11.453125 + m_HorizontalBearingY: 55.640625 + m_HorizontalAdvance: 41.015625 + m_GlyphRect: + m_X: 129 + m_Y: 290 + m_Width: 18 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + m_CharacterTable: + - m_ElementType: 1 + m_Unicode: 32 + m_GlyphIndex: 2013 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 33 + m_GlyphIndex: 1867 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 34 + m_GlyphIndex: 1913 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 35 + m_GlyphIndex: 1875 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 36 + m_GlyphIndex: 2025 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 37 + m_GlyphIndex: 2084 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 38 + m_GlyphIndex: 2539 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 39 + m_GlyphIndex: 1914 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 40 + m_GlyphIndex: 1881 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 41 + m_GlyphIndex: 1882 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 42 + m_GlyphIndex: 1873 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 43 + m_GlyphIndex: 2058 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 1863 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 1893 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 46 + m_GlyphIndex: 1862 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 47 + m_GlyphIndex: 1878 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 48 + m_GlyphIndex: 1732 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 49 + m_GlyphIndex: 1733 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 50 + m_GlyphIndex: 1734 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 51 + m_GlyphIndex: 1735 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 52 + m_GlyphIndex: 1736 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 53 + m_GlyphIndex: 1737 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 1738 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 55 + m_GlyphIndex: 1739 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 1740 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 57 + m_GlyphIndex: 1741 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 58 + m_GlyphIndex: 1864 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 59 + m_GlyphIndex: 1865 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 60 + m_GlyphIndex: 2065 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 61 + m_GlyphIndex: 2062 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 62 + m_GlyphIndex: 2064 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 63 + m_GlyphIndex: 1869 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 64 + m_GlyphIndex: 2538 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 1 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 66 + m_GlyphIndex: 29 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 67 + m_GlyphIndex: 30 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 64 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 71 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 72 + m_GlyphIndex: 73 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 78 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 74 + m_GlyphIndex: 93 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 75 + m_GlyphIndex: 96 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 101 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 111 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 112 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 120 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 80 + m_GlyphIndex: 149 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 81 + m_GlyphIndex: 151 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 82 + m_GlyphIndex: 152 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 157 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 84 + m_GlyphIndex: 166 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 85 + m_GlyphIndex: 173 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 86 + m_GlyphIndex: 193 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 197 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 88 + m_GlyphIndex: 202 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 203 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 90 + m_GlyphIndex: 212 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 91 + m_GlyphIndex: 1885 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 92 + m_GlyphIndex: 1879 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 93 + m_GlyphIndex: 1886 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 94 + m_GlyphIndex: 2072 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 1900 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 96 + m_GlyphIndex: 3040 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 225 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 252 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 99 + m_GlyphIndex: 253 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 259 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 264 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 102 + m_GlyphIndex: 287 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 288 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 104 + m_GlyphIndex: 298 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 303 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 106 + m_GlyphIndex: 318 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 107 + m_GlyphIndex: 323 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 108 + m_GlyphIndex: 328 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 340 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 341 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 111 + m_GlyphIndex: 350 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 112 + m_GlyphIndex: 379 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 113 + m_GlyphIndex: 381 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 114 + m_GlyphIndex: 382 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 387 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 396 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 402 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 118 + m_GlyphIndex: 422 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 119 + m_GlyphIndex: 425 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 120 + m_GlyphIndex: 430 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 121 + m_GlyphIndex: 431 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 122 + m_GlyphIndex: 440 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 123 + m_GlyphIndex: 1883 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 124 + m_GlyphIndex: 2550 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 125 + m_GlyphIndex: 1884 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 126 + m_GlyphIndex: 2070 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 160 + m_GlyphIndex: 2014 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 1866 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 9633 + m_GlyphIndex: 2180 + m_Scale: 1 + m_AtlasTextures: + - {fileID: 52128046682858857} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_ClearDynamicDataOnBuild: 0 + m_UsedGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 44 + m_Height: 82 + - m_X: 0 + m_Y: 82 + m_Width: 20 + m_Height: 82 + - m_X: 0 + m_Y: 164 + m_Width: 38 + m_Height: 81 + - m_X: 20 + m_Y: 82 + m_Width: 48 + m_Height: 77 + - m_X: 44 + m_Y: 0 + m_Width: 37 + m_Height: 75 + - m_X: 0 + m_Y: 245 + m_Width: 37 + m_Height: 75 + - m_X: 0 + m_Y: 320 + m_Width: 34 + m_Height: 75 + - m_X: 0 + m_Y: 395 + m_Width: 34 + m_Height: 75 + - m_X: 0 + m_Y: 470 + m_Width: 46 + m_Height: 35 + - m_X: 34 + m_Y: 320 + m_Width: 47 + m_Height: 74 + - m_X: 37 + m_Y: 245 + m_Width: 47 + m_Height: 74 + - m_X: 34 + m_Y: 394 + m_Width: 37 + m_Height: 74 + - m_X: 46 + m_Y: 468 + m_Width: 22 + m_Height: 35 + - m_X: 68 + m_Y: 468 + m_Width: 34 + m_Height: 34 + - m_X: 71 + m_Y: 394 + m_Width: 37 + m_Height: 74 + - m_X: 81 + m_Y: 319 + m_Width: 45 + m_Height: 70 + - m_X: 102 + m_Y: 468 + m_Width: 20 + m_Height: 34 + - m_X: 108 + m_Y: 389 + m_Width: 49 + m_Height: 65 + - m_X: 122 + m_Y: 454 + m_Width: 48 + m_Height: 49 + - m_X: 38 + m_Y: 159 + m_Width: 44 + m_Height: 65 + - m_X: 38 + m_Y: 224 + m_Width: 46 + m_Height: 18 + - m_X: 68 + m_Y: 75 + m_Width: 45 + m_Height: 64 + - m_X: 68 + m_Y: 139 + m_Width: 46 + m_Height: 18 + - m_X: 82 + m_Y: 157 + m_Width: 44 + m_Height: 64 + - m_X: 81 + m_Y: 0 + m_Width: 44 + m_Height: 64 + - m_X: 113 + m_Y: 64 + m_Width: 44 + m_Height: 64 + - m_X: 125 + m_Y: 0 + m_Width: 44 + m_Height: 64 + - m_X: 114 + m_Y: 128 + m_Width: 46 + m_Height: 27 + - m_X: 157 + m_Y: 64 + m_Width: 44 + m_Height: 64 + - m_X: 169 + m_Y: 0 + m_Width: 48 + m_Height: 63 + - m_X: 84 + m_Y: 221 + m_Width: 45 + m_Height: 63 + - m_X: 126 + m_Y: 155 + m_Width: 42 + m_Height: 63 + - m_X: 84 + m_Y: 284 + m_Width: 39 + m_Height: 32 + - m_X: 123 + m_Y: 284 + m_Width: 29 + m_Height: 31 + - m_X: 129 + m_Y: 218 + m_Width: 23 + m_Height: 63 + - m_X: 160 + m_Y: 128 + m_Width: 50 + m_Height: 22 + - m_X: 201 + m_Y: 63 + m_Width: 52 + m_Height: 62 + - m_X: 217 + m_Y: 0 + m_Width: 50 + m_Height: 62 + - m_X: 126 + m_Y: 315 + m_Width: 48 + m_Height: 62 + - m_X: 157 + m_Y: 377 + m_Width: 48 + m_Height: 62 + - m_X: 170 + m_Y: 439 + m_Width: 48 + m_Height: 62 + - m_X: 152 + m_Y: 218 + m_Width: 46 + m_Height: 62 + - m_X: 168 + m_Y: 150 + m_Width: 46 + m_Height: 62 + - m_X: 210 + m_Y: 125 + m_Width: 22 + m_Height: 22 + - m_X: 174 + m_Y: 280 + m_Width: 44 + m_Height: 62 + - m_X: 198 + m_Y: 212 + m_Width: 43 + m_Height: 62 + - m_X: 214 + m_Y: 147 + m_Width: 43 + m_Height: 62 + - m_X: 253 + m_Y: 62 + m_Width: 46 + m_Height: 61 + - m_X: 267 + m_Y: 0 + m_Width: 45 + m_Height: 61 + - m_X: 205 + m_Y: 342 + m_Width: 45 + m_Height: 61 + - m_X: 218 + m_Y: 274 + m_Width: 45 + m_Height: 61 + - m_X: 241 + m_Y: 209 + m_Width: 45 + m_Height: 61 + - m_X: 257 + m_Y: 123 + m_Width: 44 + m_Height: 61 + - m_X: 299 + m_Y: 61 + m_Width: 22 + m_Height: 61 + - m_X: 312 + m_Y: 0 + m_Width: 52 + m_Height: 60 + - m_X: 218 + m_Y: 403 + m_Width: 52 + m_Height: 60 + - m_X: 218 + m_Y: 463 + m_Width: 49 + m_Height: 48 + - m_X: 267 + m_Y: 463 + m_Width: 48 + m_Height: 48 + - m_X: 250 + m_Y: 335 + m_Width: 50 + m_Height: 60 + - m_X: 263 + m_Y: 270 + m_Width: 50 + m_Height: 60 + - m_X: 270 + m_Y: 395 + m_Width: 48 + m_Height: 60 + - m_X: 300 + m_Y: 330 + m_Width: 48 + m_Height: 60 + - m_X: 315 + m_Y: 455 + m_Width: 47 + m_Height: 49 + - m_X: 318 + m_Y: 390 + m_Width: 48 + m_Height: 60 + - m_X: 362 + m_Y: 450 + m_Width: 48 + m_Height: 60 + - m_X: 286 + m_Y: 184 + m_Width: 47 + m_Height: 60 + - m_X: 301 + m_Y: 122 + m_Width: 46 + m_Height: 60 + - m_X: 321 + m_Y: 60 + m_Width: 46 + m_Height: 60 + - m_X: 364 + m_Y: 0 + m_Width: 46 + m_Height: 60 + - m_X: 313 + m_Y: 244 + m_Width: 46 + m_Height: 60 + - m_X: 333 + m_Y: 182 + m_Width: 45 + m_Height: 60 + - m_X: 347 + m_Y: 120 + m_Width: 45 + m_Height: 60 + - m_X: 367 + m_Y: 60 + m_Width: 44 + m_Height: 60 + - m_X: 410 + m_Y: 0 + m_Width: 44 + m_Height: 60 + - m_X: 454 + m_Y: 0 + m_Width: 48 + m_Height: 48 + - m_X: 454 + m_Y: 48 + m_Width: 48 + m_Height: 48 + - m_X: 411 + m_Y: 60 + m_Width: 43 + m_Height: 60 + - m_X: 454 + m_Y: 96 + m_Width: 46 + m_Height: 48 + - m_X: 410 + m_Y: 120 + m_Width: 44 + m_Height: 60 + - m_X: 454 + m_Y: 144 + m_Width: 46 + m_Height: 48 + - m_X: 410 + m_Y: 180 + m_Width: 44 + m_Height: 60 + - m_X: 378 + m_Y: 180 + m_Width: 22 + m_Height: 49 + - m_X: 454 + m_Y: 192 + m_Width: 46 + m_Height: 47 + - m_X: 454 + m_Y: 239 + m_Width: 46 + m_Height: 44 + - m_X: 410 + m_Y: 240 + m_Width: 44 + m_Height: 60 + - m_X: 366 + m_Y: 242 + m_Width: 44 + m_Height: 49 + - m_X: 366 + m_Y: 291 + m_Width: 44 + m_Height: 49 + - m_X: 348 + m_Y: 340 + m_Width: 45 + m_Height: 49 + - m_X: 366 + m_Y: 389 + m_Width: 42 + m_Height: 60 + - m_X: 393 + m_Y: 340 + m_Width: 42 + m_Height: 49 + - m_X: 408 + m_Y: 389 + m_Width: 42 + m_Height: 60 + - m_X: 410 + m_Y: 449 + m_Width: 42 + m_Height: 60 + - m_X: 454 + m_Y: 283 + m_Width: 45 + m_Height: 46 + - m_X: 435 + m_Y: 329 + m_Width: 42 + m_Height: 48 + - m_X: 452 + m_Y: 377 + m_Width: 45 + m_Height: 46 + - m_X: 452 + m_Y: 423 + m_Width: 42 + m_Height: 48 + m_FreeGlyphRects: + - m_X: 34 + m_Y: 468 + m_Width: 12 + m_Height: 2 + - m_X: 37 + m_Y: 319 + m_Width: 44 + m_Height: 1 + - m_X: 81 + m_Y: 389 + m_Width: 27 + m_Height: 5 + - m_X: 68 + m_Y: 502 + m_Width: 54 + m_Height: 9 + - m_X: 108 + m_Y: 454 + m_Width: 14 + m_Height: 14 + - m_X: 20 + m_Y: 159 + m_Width: 18 + m_Height: 5 + - m_X: 44 + m_Y: 75 + m_Width: 24 + m_Height: 7 + - m_X: 68 + m_Y: 157 + m_Width: 14 + m_Height: 2 + - m_X: 81 + m_Y: 64 + m_Width: 32 + m_Height: 11 + - m_X: 113 + m_Y: 128 + m_Width: 1 + m_Height: 11 + - m_X: 38 + m_Y: 242 + m_Width: 46 + m_Height: 3 + - m_X: 82 + m_Y: 221 + m_Width: 2 + m_Height: 3 + - m_X: 114 + m_Y: 155 + m_Width: 12 + m_Height: 2 + - m_X: 126 + m_Y: 218 + m_Width: 3 + m_Height: 3 + - m_X: 169 + m_Y: 63 + m_Width: 32 + m_Height: 1 + - m_X: 84 + m_Y: 316 + m_Width: 42 + m_Height: 3 + - m_X: 123 + m_Y: 315 + m_Width: 3 + m_Height: 4 + - m_X: 126 + m_Y: 377 + m_Width: 31 + m_Height: 12 + - m_X: 157 + m_Y: 439 + m_Width: 13 + m_Height: 15 + - m_X: 160 + m_Y: 150 + m_Width: 8 + m_Height: 5 + - m_X: 201 + m_Y: 125 + m_Width: 9 + m_Height: 3 + - m_X: 129 + m_Y: 281 + m_Width: 45 + m_Height: 3 + - m_X: 152 + m_Y: 280 + m_Width: 22 + m_Height: 35 + - m_X: 168 + m_Y: 212 + m_Width: 30 + m_Height: 6 + - m_X: 210 + m_Y: 147 + m_Width: 4 + m_Height: 3 + - m_X: 217 + m_Y: 62 + m_Width: 36 + m_Height: 1 + - m_X: 174 + m_Y: 342 + m_Width: 31 + m_Height: 35 + - m_X: 198 + m_Y: 274 + m_Width: 20 + m_Height: 6 + - m_X: 214 + m_Y: 209 + m_Width: 27 + m_Height: 3 + - m_X: 232 + m_Y: 125 + m_Width: 25 + m_Height: 22 + - m_X: 253 + m_Y: 123 + m_Width: 4 + m_Height: 24 + - m_X: 267 + m_Y: 61 + m_Width: 32 + m_Height: 1 + - m_X: 205 + m_Y: 403 + m_Width: 13 + m_Height: 36 + - m_X: 0 + m_Y: 505 + m_Width: 218 + m_Height: 6 + - m_X: 46 + m_Y: 503 + m_Width: 172 + m_Height: 8 + - m_X: 170 + m_Y: 501 + m_Width: 48 + m_Height: 10 + - m_X: 218 + m_Y: 335 + m_Width: 32 + m_Height: 7 + - m_X: 241 + m_Y: 270 + m_Width: 22 + m_Height: 4 + - m_X: 250 + m_Y: 395 + m_Width: 20 + m_Height: 8 + - m_X: 263 + m_Y: 330 + m_Width: 37 + m_Height: 5 + - m_X: 270 + m_Y: 455 + m_Width: 45 + m_Height: 8 + - m_X: 300 + m_Y: 390 + m_Width: 18 + m_Height: 5 + - m_X: 315 + m_Y: 510 + m_Width: 196 + m_Height: 1 + - m_X: 315 + m_Y: 504 + m_Width: 47 + m_Height: 7 + - m_X: 318 + m_Y: 450 + m_Width: 44 + m_Height: 5 + - m_X: 257 + m_Y: 184 + m_Width: 29 + m_Height: 25 + - m_X: 299 + m_Y: 122 + m_Width: 2 + m_Height: 1 + - m_X: 312 + m_Y: 60 + m_Width: 9 + m_Height: 1 + - m_X: 286 + m_Y: 244 + m_Width: 27 + m_Height: 26 + - m_X: 301 + m_Y: 182 + m_Width: 32 + m_Height: 2 + - m_X: 321 + m_Y: 120 + m_Width: 26 + m_Height: 2 + - m_X: 502 + m_Y: 0 + m_Width: 9 + m_Height: 511 + - m_X: 500 + m_Y: 96 + m_Width: 11 + m_Height: 415 + - m_X: 392 + m_Y: 120 + m_Width: 18 + m_Height: 60 + - m_X: 347 + m_Y: 180 + m_Width: 31 + m_Height: 2 + - m_X: 400 + m_Y: 120 + m_Width: 10 + m_Height: 122 + - m_X: 378 + m_Y: 229 + m_Width: 32 + m_Height: 13 + - m_X: 333 + m_Y: 242 + m_Width: 33 + m_Height: 2 + - m_X: 313 + m_Y: 304 + m_Width: 53 + m_Height: 26 + - m_X: 359 + m_Y: 242 + m_Width: 7 + m_Height: 98 + - m_X: 348 + m_Y: 304 + m_Width: 18 + m_Height: 36 + - m_X: 348 + m_Y: 389 + m_Width: 18 + m_Height: 1 + - m_X: 366 + m_Y: 449 + m_Width: 44 + m_Height: 1 + - m_X: 410 + m_Y: 509 + m_Width: 101 + m_Height: 2 + - m_X: 499 + m_Y: 283 + m_Width: 12 + m_Height: 228 + - m_X: 410 + m_Y: 300 + m_Width: 44 + m_Height: 29 + - m_X: 410 + m_Y: 300 + m_Width: 25 + m_Height: 40 + - m_X: 435 + m_Y: 377 + m_Width: 17 + m_Height: 12 + - m_X: 450 + m_Y: 377 + m_Width: 2 + m_Height: 72 + - m_X: 477 + m_Y: 329 + m_Width: 34 + m_Height: 48 + - m_X: 497 + m_Y: 329 + m_Width: 14 + m_Height: 182 + - m_X: 452 + m_Y: 471 + m_Width: 59 + m_Height: 40 + - m_X: 494 + m_Y: 423 + m_Width: 17 + m_Height: 88 + m_fontInfo: + Name: + PointSize: 0 + Scale: 0 + CharacterCount: 0 + LineHeight: 0 + Baseline: 0 + Ascender: 0 + CapHeight: 0 + Descender: 0 + CenterLine: 0 + SuperscriptOffset: 0 + SubscriptOffset: 0 + SubSize: 0 + Underline: 0 + UnderlineThickness: 0 + strikethrough: 0 + strikethroughThickness: 0 + TabWidth: 0 + Padding: 0 + AtlasWidth: 0 + AtlasHeight: 0 + atlas: {fileID: 0} + m_AtlasWidth: 512 + m_AtlasHeight: 512 + m_AtlasPadding: 5 + m_AtlasRenderMode: 4165 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] + m_FallbackFontAssetTable: [] + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: 979318e2cdafc0e43bfd56bb63011857 + pointSizeSamplingMode: 0 + pointSize: 70 + padding: 5 + packingMode: 0 + atlasWidth: 512 + atlasHeight: 512 + characterSetSelectionMode: 0 + characterSequence: 32 - 126, 160, 8203, 8230, 9633 + referencedFontAssetGUID: 8f586378b4e144a9851e7b34d9b748ee + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4165 + includeFontFeatures: 0 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: [] + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!28 &52128046682858857 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CascadiaCode SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 2 + m_Width: 512 + m_Height: 512 + m_CompleteImageSize: 262144 + m_MipsStripped: 0 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMasterTextureLimit: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + m_PlatformBlob: + image data: 262144 + _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b11131f1f1f1f110f0900000000000000000000000000000000000000000000000000000000000000000000000000050b0d101111100f0c0a0400000000000000000000000000000000000000070b0e131618191817130f0d070000040a0c11100f0e0d0c09030000000000000000070c0e1a1a1a1a1a1a1a181107000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e10202020202020201e1910040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d1316181917150f0b080100000000000000000000000000000913191c2020202020202020202020202020202020202020202020202020202020201b19130900000000000000000000000c151c1e2020202020202020201b191309000912191b2020202020202020201e1c160c00000000000000000000000b151b1d202020202020100e080000000000000000000000000000070b1c2020202020202014120c0300000000000a141a1d202020202020100e080000000000000000000000000000000000000000000000000000000000000000000000050e141720202020202020201b1913090000030c1215202020202020202017150e0500000000000000000000000000000000000000000000000000000000000000000005131e25283434343426241d12040000000000000000000000000000000000000000000000000000000000000001080b121920222526262624211f170c0c03000000000000000000000000000408131c2024282c2d2e2e2c2924211a0f0c181f222625242322211e160b0000000000010f1a21242f2f2f2f2f2f2f2c24190b00000000000000000000000000000000000000000000000000000000000000000000000000000003111c232635353535353535332d2214040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e192022282c2d2e2c2a25201d14090200000000000000000000000d1b262e31353535353535353535353535353535353535353535353535353535353535312e261a0c000000000000000000101e293033353535353535353535302e261a0c1a262d303535353535353535353331291e100000000000000000000f1d28303335353535353525221b10030000000000000000000008131c20313535353535353529272014070000000e1c272f3235353535353526231c11030000000000000000000000000000000000000000000000000000000000000000081622292c3535353535353535312e261b0d071520272a35353535353535352c2922160800000000000000000000000000000000000000000000000000000000000000011323313a3d494949493b382f221200000000000000000000000000000000000000000000000000000000000009141d20272b35383a3b3b3b3937332a2720150700000000000000000000000c171f253035393e41434343413e39362d251c2a33373c3b3938373632281b11040000000f1f2d3639444444444444444137291907000000000000000000000000000000000000000000000000000000000000000000000000000011212f383b4a4a4a4a4a4a4a483f32221000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111c232b35383e414343423f3a3531261d150a000000000000000000091b2b3842464a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4642382b1a0900000000000000001e2e3b45484a4a4a4a4a4a4a4a4a4642382a1a2a3842454a4a4a4a4a4a4a4a4a49453c2e1e00000000000000000b1d2d3a44484a4a4a4a4a4a3a372e21100000000000000000000818253035464a4a4a4a4a4a4a3f3b32251403000a1c2c3a43474a4a4a4a4a4a3b382f211100000000000000000000000000000000000000000000000000000000000000051626343e414a4a4a4a4a4a4a4a4642382b1b1525323c3f4a4a4a4a4a4a4a4a413e342616050000000000000000000000000000000000000000000000000000000000000b1e31414e525e5e5e5e514c402f1d090000000000000000000000000000000000000000000000000000000112192631353c3c484d4f5151504f4c473a3c32251503000000000000000001131c2a3336434a4e535658595857534e4a3e39303a474c51504f4e4c4b46392f22110000071a2d3d4a4e5a5a5a5a5a5a59544737241100000000000000000000000000000000000000000000000000000000000000000000000000081c2f3f4c506060606060605f5c503f2d19050000000000000000000000000000000000000000000000000000000000000000000000000000000009151d2f373c484d5356585857544f4b443732281a0e000000000000000013263849565b6060606060606060606060606060606060606060606060606060606060605b55493826130000000000000009193b4c585e6060606060606060605b554838263848555b6060606060606060605e594c3c1a0a0000000000000015283a4b585d6060606060604f4b3f2e1b080000000000000000132536434a5b60606060606060544f4332200c0014273a4a575c606060606060504c3f2f1c080000000000000000000000000000000000000000000000000000000000000e223444515660606060606060605b564938262032434f54606060606060606057514534220e00000000000000000000000000000000000000000000000000000000000011253a4e606874747474665e4c38240f000000000000000000000000000000000000000000000000000009141d2f37444b51595a6265666665646158544f4332200c0000000000000009141d313a474c546063686b6d6e6d6c68645c524d41475861666564636261574c402f1c09000c21364a5b636f6f6f6f6f6f6f6554412c18030000000000000000000000000000000000000000000000000000000000000000000000000e23384c5d65757575757575756e5c48331e09000000000000000000000000000000000000000000000000000000000000000000000000000000091927313f4b505a62686b6d6e6c6a6460554b45382b1e0e00000000000005192e42566771757575757575757575757575757575757575757575757575757575757575706755422e1900000000000002152737586a73757575757575757575706755422e42556670757575757575757575736a59382815020000000000001b3044586972757575757575655d4b37220e00000000000000071c30435460717575757575757569614f3b2712001a2f43576872757575757575655d4c38230e00000000000000000000000000000000000000000000000000000000000014293e51626c7575757575757575706756422e273c4f616a75757575757575756c63513e291500000000000000000000000000000000000000000000000000000000000013283d52687d898989897c66513b26110000000000000000000000000000000000000000000000000009192631404c5560676e74777a7b7b7b79767269614f3c271200000000000009192631424e58616a73797d81828383817e7971675f4b4c61767c7a79787776665e4c38230f000e24394e6379848484848484836f59442f1a0400000000000000000000000000000000000000000000000000000000000000000000000010263b50657b8a8a8a8a8a8a8c755f4a35200a000000000000000000000000000000000000000000000000000000000000000000000000000009192737444b5d6570787d818283817f7a74696056483c2c1e0e0000000000061c31465b71858a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a85705b46311b000000000000081d31445573888a8a8a8a8a8a8a8a8a85705b3828375b70848a8a8a8a8a8a8a8a8a88735645321d090000000000001d33485d72878a8a8a8a8a8a7b654f3a2510000000000000011426364a6072858a8a8a8a8a8a8a7f69543f2914001d32475c72868a8a8a8a8a8a7b65503b2610000000000000000000000000000000000000000000000000000000000001172c41566c818a8a8a8a8a8a8a8a85705b3b2a2a3f546a7f8a8a8a8a8a8a8a8a816c57412c1700000000000000000000000000000000000000000000000000000000000013293e53687e939e9e917c66513c271100000000000000000000000000000000000000000000000001142637444b5e66737c83898d8f9090908e8c877f69543f2a14000000000001142637444b60687680878e939698989896938e867d6f6057667c91908e8d8c8b7b66503b26110010253a50657a8f99999999998b755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b909f9f9f9f9f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000000011426374455606c7b858d9396989897948f887e74625a493c2c1a0a00000000061c31465b71869b9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9b86705b46311b0000000000000b20364b60758a9f9f9f9f9f9f9f9f9d8873564532445573889d9f9f9f9f9f9f9fa68b75604b36200b0000000000001d33485d72889d9f9f9f9f8f7a654f3a2510000000000000081c304354677c91a39f9f9f9f9d8774604b36210b001d32475c72879c9f9f9f9f907b65503b2610000000000000000000000000000000000000000000000000000000000004192e43596e83989f9f9f9f9f9f9e89745947342d42576d82979f9f9f9f9f9f99846f5a37261401000000000000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66513c27110000000000000000000000000000000000000000000000000b1d314455606c7c8791989ea7a4a6a6a5a4a596806b56412b1600000000000d1d314455606d7e89959da5a8abadaeadaca8a49c92837560687e93a5a4a3a1907b66503b26110010253a50657a8fa5afafaf9f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5b5b5b49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000000081d314455607381909aa2a8abadadaca9a69d938678635a4938281603000000061c31465b71869bb0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b09b86705b46311b0000000000000d23384d62788dabbcb5b5b5b5b5b59f8a75604b364b60758a9fb4b5b5b5b5b5c5a28d78634d38230e0000000000001d33485d72889db2b5b5a48f7a654f3a25100000000000021527374b6073869cb1c1b5b6a4927d685645321e09001d32475c72879cb1b5b5a5907b65503b26100000000000000000000000000000000000000000000000000000000000021527375b70869bb0b5b5b5b5b9a78c77614c3729395b70859ab0b5b5b5b5b29c87725544311d08000000000000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66513c271100000000000000000000000000000000000000000000000b1b31424b607381919da5aeb3b9c5bbbbbac3a8937d68533e2813000000000d1d31424b607381929ea8b2b7c3c0c2c2c0bfc2b6b1a19983726b8095aab9b8a5907b66503b26110010253a50657a8fa5bac4b49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d4b607383979fb0b4c0b9b4b3b8c4b8b3a49c8878635645321e0a000000061c31465b71869bb0c6cacacacacaccc3bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb09b86705b46311b00000000000010253a4f657a8fa4c9c7bab4adb2bcab8d78634d384d62788dabbcb2adb4bac7baa58f7a65503a25100000000000001d33485d72889db2c7baa48f7a654f3a25100000000000081d314455677d92a4b6cac1b19c8673604b38281602001d32475c72879cb1c7baa5907b65503b26100000000000000000000000000000000000000000000000000000000000081d31445573889db3c7bab4aeb2a48f7a654f3a33465773889db3b1b0b5c1b49f8a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66513c2711000000000000000000000000000000000000000000000417293a4e606d81969fb2b6c3c9c6c8bbb4bbc7a5907b65503b261000000005182a3b4e606d81979fb3b9c6cac4b7b3adabaaacaeb4b3a1937e6d8297adc2bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a0000000000000000000000000000000000000000000000000000000000000000000000000c2136495b6b8095a1b1bdb4b0a89e9ea7acb0bdb5a69b8575604b392816030000061c31465b71869bb0c6dbdfdfe3ccbcafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9b86705b46311b00000000000012273d52677c92a7bcbaa99f98a0b2a5907a65503b50657a8fa5b2a0989fa9babca7927d67523d28120000000000001d33485d72889db2c7baa48f7a654f3a251000000000021628384b6074879db2c2c9b5a3917c675544311a0a00001d32475c72879cb1c7baa5907b65503b261000000000000000000000000000000000000000000000000000000000000b20364b60758a9fb4baa99f98a0a8927d68533d364c61768ba6a49c9ba3b5bbaa8d78624d38230d00000000000000000000000000000000000000000000000000040a0c0f13293e53687e93a8a6917c66513c2711000000000000000000000000000000000000000000000a1f334658687e939fb1bdcac2b5b1a6aa9faaa1a98d78624d38230d0000000b1f344859687e939fb1bdccc2b6b1a69d98969596999fa9b19c8772849aafc4bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a0000000000000000000000000000000000000000000000000000000000000000000000021527384e63798d9fb5bfb4a39b8f89898c969fafbcb5a3947f6a5745321e090000061c31465b71869bb0c6d8e5e7d5c5af9e959595959595959595959595959595959595959585705b46311b000000000000152a3f546a7f94a9bfb49f8b8298ada8927d68533d52687d92a7ad98838a9fb4bfaa947f6a553f2a150000000000001d33485d72889db2c7baa48f7a654f3a251000000000091e324556687e93a5b6cac0b09b85705f4d3726140000001d32475c72879cb1c7baa5907b65503b261000000000000000000000000000000000000000000000000000000000000d23384d62788dabbcb49f8b8398ab95806b5640394f64798ea49c86859bb0c8a5907b66503b2611000000000000000000000000000000000000000000060b0d13171f2124272a3e53687e93a8a6917c66513c27110d0700000000000000000000000000000000000000000c21364c6176899eb3becebfb2a49c918c8a8a8b8e8b73604b35200b00000417293a4c62778a9eb4bdcebfb3a49c908883807f81848a939ea48d78869cb1c6bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a0000000000000000000000000000000000000000000000000000090f110b0700000000091d3145566d8298abbcb5a39b857a74737781959eafc2b39e8875604b36210b0000061c31465b71869bb0bac7d0dfccb8a79580808080808080808080808080808080808080807e68533d2813000000000002172c41576c8196acc1b29d877a8fa4aa95806a5540556a7f95aaa48f7a879cb2c1ac97816c57422c170200000000001d33485d72889db2c7baa48f7a654f3a2510000000031729394b6075889db2c3c9b3a2907b6550403019090000001d32475c72879cb1c7baa5907b65503b2610000000000000000000000000000000000000000000000000000000000010253a4f657a8fa4c9b29d877b90a599836e59363d52677c92a797818095abbea8937e69533e2914000000000000000000000000000000000000040a0e192023282a33373a3c3f4153687e93a8a6917c66513c2924221b100800000000000000000000000000000000000014293e53697e93a7b8ccc4b2a199867c76757576787a655443301c0800000a1f3346586c8197a8b9cdc1b3a199867b746d6b6a6c6f757e899d978297a4b6cabba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a00000000000000000000000000000000000000000000000004121d2426201c130800000b20364b6075899fb4c3b09b8574645c59626c8095a5b7b8a6907b66513b26110000061b30455b7084969fa9b3bfcbc8b39e88776a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68604e3a2611000000000004192f44596e8499aec3b09b85768ba7ad97826d5842576d8297aca78c76859ab0c4ae99846f59442f1a0000000000001d33485d72889db2c7baa48f7a654f3a25100000000a1e334657697f94a6b7cbbcab9a846f5d4b382212000000001d32475c72879cb1c7baa5907b65503b2610000000000000000000000000000000000000000000000000000000000012273d52677c92a7bcb09b86788daa9c8671544340556a7f95a9947f7e93a8beab96816c56412c1700000000000000000000000000000000000c171f212b35383e3a474c4f52545657687e93a8a6917c6651473a39362d231c1102000000000000000000000000000000051a2f445a6f8499afc5cbb7a6998274676158606163655d4b3626140100000c21364c61768a9fb4c6c9b4a399837466605456555757606978879d979fb1c2d3bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a00000000000000000000000000000000000000000000000513222f383c353025180d0010253a50657a8fa8bab6a58f7a64564b484d6074879db2c5ab96816b56412c160000000c21364c6175808b99a1b3b7c4b8a79e897d6e6158555555555555555555555555555555534e42311e0b0000000000021628385b71869bb0c3ae998373889eaf9a85705a365a6f859aaf9e89748398aec3b19b86715c3928160300000000001d33485d72889db2c7baa48f7a654f3a2510000004172a3a4b6176889eb3c4c8b59f8d7a644f3f2f1c04000000001d32475c72879cb1c7baa5907b65503b26100000000000000000000000000000000000000000000000000000000000152a3f546a7f94a9bfae9984738a9f9f8974604a43586d8398a6917c7c91a6bcae99846f59362614010000000000000000000000000000000c1c2a33373c494d5358586164676a6b6c6d7e93a8a6917c666158564f4a3e372f1e160a0000000000000000000000000000091e33485e73889db3c8c8b39d887561564c474b4c4e4f4b3f2e180800000114263753687d93a8bacdbcab9b857460564b43364039454b5a63798b9fb4bdced0bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a35200a00000203040301000000000000000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a0000000000000000000000000000000000000000000000132330404c514a43362a1d1213293e53687e93a8c6b29d87725c4a383444556b8196abc0af99846f5a442f1a0000000a1e334657616b7884919da6b2beb8a79e928376645c4e424040404040404040404040403d3a312413020000000000091e32455673889eb3c1ac978170859bb09d877254435472879cb09b86718196acc1b39e89735745321e0900000000001d33485d72889db2c7baa48f7a654f3a251000000a1f3347586a7f95a7b8ccbbaa98836e5c4a36211100000000001d32475c72879cb1c7baa5907b65503b26100000000000000000000000000000000000000000000000000000000002172c41576c8196acc1ac978272879da98d78624d3a5b70869ba38e797a8fa4b9b19c87725443301c08000000000000000000000000000004172a3a474c535a62686d7276797c7f818182939cadaf99837b76716b645c504b3f32281a0b000000000000000000000000000a20354a5f758a9fb4cac1ab96816c574638333536393a372e2110000000081d3144556f8499aec6cab49f8c796456453830262a28323c495b6a8095a9bacdd0bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a35200d0f131718191816130f0b080100000000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a000000000000000000000000000000000000000000000d1d30414d5e666054473b2f1d152a3f556a7f94aabfae99846e593e2e273753687d92a8bdb09b86715b46311c00000003172939464c5a636f7c8898a0b3b8b9b3a098877a68604b4437282b2b2b2b2b2b2b2b2b28261e13060000000000000b21364b60768ba6b8bfaa947f6d8297ad9f8a75604b60758a9fad98836d7f94a9bfb8a78b76604b36210b00000000001d33485d72889db2c7baa48f7a654f3a25100005182a3b4c6176899eb3c5c7b49f8c79634e3e2d1b0300000000001d32475c72879cb1c7baa5907b65503b26100000000000000000000000000000000000000000000000000000000004192f44596e8499aec0aa95806f849aa5907b6550475974899ea68b76788da2c5b49f8a75604b35200b00000000000000000000000000000a1f334758616870787d82878c8f9194969798a0adbab3a199908b87817970655d4b4538291b0b0000000000000000000000000a20354a5f758a9fb4cabda8937e685339291f20212325221b10030000000b20354b6074899eb4c9c8ae98836e5c4a38281c1415161e2c3d4c61768a9fb4c9d0bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a351a2124292c2e2e2e2c2924201c1408040000000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a00000000000000000000000000000000000000000005182a3b4d5f677b7262594c4032282b40566b8095abc0ad98836e583727273d52677c92a7bcb19c87715c47321c000000000b1b29333c494d5f677682919ea7b4bfb2a59d8b7e6c60554639291b1515151515151513110b02000000000000000e23384d63788da2c5bda8927d6a7f94aaaa8c77624d62778ca9aa95806a7d92a7bdc5a38d78634e38230e00000000001d33485d72889db2c7baa48f7a654f3a25120c0b1f3448596b8095a7b9ccbaa997826d5b493520100000000000001d32475c72879cb1c7baa5907b65503b261000000000000000000000000000000000000000000000000000000000021628385c71869bb1bea9937e6c8197a8937e68534c61778ca79e8873758ba7b8baa98d78624d38230d00000000000000000000000000000c21374c61767e858d93989da5a4a7a9abacadb2becabfb3afab9f9c968e857b6d605646392916030000000000000000000000081e33485d73889db2c8bea9937e69543e29140b0c0e100e0800000000000e24394e63798ea8b9cdbbaa917c66513e2d1a0a0100030f1f3346586e8399aec3d0bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a352d36393e41434343413e393530261f180c00000000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a0000000000000000000000000000000000000000000b1f344859677d918477665e4b45382c3f54697f94a9beaf9a846f5544312a3b53697e93a8beb09a85705b45301b00000000000b171e2c35414d58616d7c899aa2b0bcb7a99f9381736157463a291c0c0000000000000000000000000000000010253b50657a90a5babba6907b677c91a7a48f7a654f647a8fa4a7927d677b90a5bbbaa5907b65503b261000000000001d33485d72889db2c7baa48f7a654f3a2a27211f2b3c4c62778a9fb4c5c5b49f8a77624d3d2c1a020000000000001d32475c72879cb1c7baa5907b65503b261000000000000000000000000000000000000000000000000000000000091e32455673889eb3bca7917c697e94a996816c564f657a8fa49b857073899eb3c7a5907b65503b26100000000000000000000000000000162b40566b80939ba3a8adb2b7c3bcbfc0c1c2c5cfdcd0c7c9bcb5b1aba39b908274615746321e130000000000000000000000051b30455a70859aafc5c1ab96816c563a2917040000000000000000000012273c52677c91a7c6c9b49f8a75604b36210f000000000417293a53697e93a8bed0bba5907b66503b26110010253a50657a8fa5bacab49f8a755f4a393d4a4e535758595856534e4b4336332a1c14020000000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a00000000000000000000000000000000000000000b1e31414c6277899e99887c6c6056493d3d52687d92a7c4b39e8975604b3d3848596d8298adc2ae99836e59442e19000000000000030e1920303a464c5e667784959eb4babab49f9783756158463a291b0b00000000000000000000000000000012283d52677d92a7bcc9a48e7964798ea3a7927c6752677c91a7a48f7a64798ea3c8bda7927d68523d281300000000001d33485d72889db2c7baa48f7a654f473a3d373335485a6c8196a8baccb9a796806b5948341f0f000000000000001d32475c72879cb1c7baa5907b65503b26100b0b0b0b0b0b0b0b0b0b0b0b0b0000000000000000000000000000000b21364b60768ba7b8baa58f7a667b91a699846f5a52687d92a798826d71869cb1bda8937e68533e2913000000000000000000000000000013283e53687d93a8b4c1c2c7c4bec4b8b3b0afb3bfcacac0bcbcc4c6c1b4b09f978475614b42311a0a0000000000000000000001162b41566b8096abc7c5b09b85705846331f0a00000000000000000000152a3f556a7f94aabfc6b19c87715645321e09000000000010253a50657a8fa5bacfbba5907b66503b26110010253a50657a8fa5bacab49f8a755f414d525c64686c6d6e6d6b686460544c473a311d150900000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a000000000000000000000000000000000000000010253a4e5f6e8399a7a69e8d8174635b4e424e63788ea6b7b8a7927d675b504f5662778a9fb4c1a9947f6a543f2a15000000000000000006121c2933404c59627280919fa9b8bdb1a1998476615846392819090000000000000000000000000000152a3f556a7f94aabfbcab8c7762768ba6aa947f6a556a7f94a9a78c7762778caabbbfaa957f6a55402a1500000000001d33485d72889db2c7baa48f7a65615858524c473d4d62788b9fb4c6c4b39e8976614c3b2b1801000000000000001d32475c72879cb1c7baa5907b65503b2620202020202020202020202020200d0b060000000000000000000000000e23384d63788da2c5c8a38e7863798eab9c877255566b8095aa957f6a6f849aafc0ab96816b56412c16000000000000000000000000000010263b50657b90a5c9c8bbb4afa9a5a69d9b9aa1adbab9aca7a6afb3c0c8bdb1a299836f604e382815020000000000000000000011263c51667b91a9bac9b49f8a76614c36210c00000000000000000000172c41576c8196acc1c3ad98836e583828160300000000000d22374c62778ca1b7ccbba5907b66503b26110010253a50657a8fa5bacab49f8a755f4b5f6771797e81838383817e79746b61584e4231271909000000000000000000000000000000000010263b50657b90a5bacab49f8a755f4a35200a000000000000000000000000000000000000000013283d52687d92a1b3b8ab9f96857968604c495b73889db2c5b39e89796a65646874849aa8bab5a38f7a644f3a240f000000000000000000000c171f303b4854606b7d8b9ea7b7bfb3a39b85766157463726140100000000000000000000000002172c42576c8197acc1b59f8a756073889dac97826c576c8197ac9e897360758a9fb4c1ac97826c57422d1702000000001d33485d72889db2c7c2ac97817a77736d6761584e5b6d8297a9bacbb7a6947f6a5847331d0d00000000000000001d32475c72879cb1c7baa5907b65503b3535353535353535353535353535352320190e000000000000000000000010253b50657a90a5babbaa8c7661768b9f9f8a7560596e8398a7927c676d8297adc2ae99846e5936251300000000000000000000000000000e23384d63788dabb4adaa9f9a94908c888684939cadac9b92919aa2b4bac7c0b3a1937e685645321d09000000000000000000000b21364b60768a9fb4c9baa9927d67523a2a1804000000000000000000192e43586e8398adc3c1ab96816c56412c170000000000000c21364b61768ba0c7d7bba5907b66503b26110010253a50657a8fa5bacab49f8a7556606e7d868e939698989896938e88807768604b44372715020000000000000000040a0c0d0d0d0d0d10263b50657b90a5bacab49f8a755f4a35200d0d0d0d0d0d0d0d0d0d0b0500000000000000000011263b51667c899aa2b4bab5a39b8a7e6e6158556a7f95a7b8b8a79e8a807a797d869aa2b4bdb19b86715c4a36220d000000000000000000000004121d2b36434b5f677b899da6b7c1b4a39b8475615544311d12000000000000000000000000041a2f44596f8499aec4b39e88735570859aaf99846f5a6f8499ae9b86705473889db3c4af99846f5a442f1a00000000001d33485d72889db2c7c5b19f978f8c88827c766d6463798c9fb4c7c3b39d8875614b3a2a170000000000000000001d32475c72879cb1c7baa5907b65504a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a352b1e0e0000000000000000000013283d52687d92a7bdb49f8a756073889daa8d78635471869ca48f7a646b8095abc0b19c87715443301c07000000000000000000000000000b20364b60758a9f9f98918a857f7b7773706f7e93a8a7927d7c84919fa9bacdbfb29d8875604b36200b00000000000000000000091e3245576e8399aec7c7ae99846f5847331f0a000000000000000000192f44596e8499aec3c0aa95806b55402b16000000000000091e324657758aa9bacdbba5907b66503b26110010253a50657a8fa5bacab49f8a75607483929ca4a8acadaeadaba8a69d958a7e6d605544311d14000000000000000c181f22232323232323263b50657b90a5bacab49f8a755f4a35232323232323232323232220180d00000000000000000f24384c5e667784949fa9b6b5a89f938376655d6176899eabbcb8a89e958f8f929ca4b4bfb19f917c66513e2e1b07000000000000000000000000000d182630414d5d6479889da6b7c1b4a3998373604b41301e0e0000000000000000000000031628395c71869cb1c6b19c86715c6d8297ac9c87725c71879cad98836d5c71869bb1c6b19c87715c39291703000000001d33485d72889db2c7cebdb1aca5a69d98928a8279738298aabbcab6a5937e695746321c0c0000000000000000001d32475c72879cb1c7baa5907b6560606060606060606060606060606060605e483c2b1906000000000000000000152a3f556a7f94aabfb29d88735470859aa6917b666074899fa78c7761697e93a8beb49f8974604a35200b00000000000000000000000000081d3144557287938a837c766f696561595b687e93a8a6917c676f7d8b9fb4c0cbb7a6917c67513c2712000000000000000000000316283952677d92a9bac9b49f8a77614c37220c0000000000000000001a2f445a6f8499afc4bfa9947f6a543f2a15000000000000031628395f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacab49f8a75728399a1b1b5c2bfc0c2c2c0c4b7b2a89e938273604b42321d0d00000000000c1c2a3437383838383838383b50657b90a5bacab49f8a755f4a383838383838383838383837342b1d0d00000000000000091d2f404c5962727f8b9ca4b1bab4a199877b6b60667c8d9fabb8b9b4aaa5a4a8b1b6bbb4a197816d5e4c39201000000000000000000000000000000008141c303f4b5b6379889da7b9c1b3a196816c5f4d3c2b190500000000000000000000091e32465773899eb3c4af9a846f5a697f94a99f89745974899eaa95806a5a6f8499afc4b39e89745746331e0a000000001d33485d72889db2c7ddcec5c2c4b7b3ada99f988e8898a0b2c8c2b29d8774604b392816000000000000000000001d32475c72879cb1c7baa5907b757575757575757575757575757575757575705a4835200b000000000000000002172d42576c8297acc1b19b86715c6d8297a9947e6962778da99e897458677c91a6bcbaa98d77624d38220d0000000000000000000000000002152737576c817e766e67615754504c4753687e93a8a6917c665f677d91a2b4c8c4ad98826d5837271501000000000000000000000c21364c61768a9fb4c9bbaa937e68533928160300000000000000001a2f44596f8499aec4bfaa947f6a553f2a15000000000000001f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacab49f8a757d92a1b3b4aeacaaabadb3b7c4cac6b9b4a098826d604f3b2b180500000004182a3a474c4d4d4d4d4d4d4d4d50657b90a5bacab49f8a755f4d4d4d4d4d4d4d4d4d4d4d4d4d483b2b18050000000000000012222f3b485460697a86979fb3b8b2a69d8c807362697e8d9da6b1b5c2bab9c4b8b3aa9f968374604b40301d02000000000000000000000000000000000113202e3d495b6379899eaabbbfb09e917d675a48352012000000000000000000000c21364b61768ba7b8c2ad97826d58667c91a6a98c7761768ca8a7927c67586d8297adc2b9a88b76614c36210c000000001d33485d72889db2c7ddcec5c1c0c3c8c7bab4ada69da6b2bec9b5a3927d675544311b0b0000000000000000000020354a60758aa4b6cabeab99908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a78624d38230d0000000000000000051a2f445a6f8499afc4af99846f5a6a7f94aa97826c657a90a59b86715b647a8fa4c9c7a5907a65503b25100000000000000000000000000000092a3e52636c696158514c46393b373e53687e93a8a6917c66515f70859ab0c5c7b29c87725544311d08000000000000000000000a1f3346586f8499aec4c8b09a85705746321e090000000000000000192e44596e8399aec3c0ab95806b56402b16010000000000091e324556758aa9bacdbba5907b66503b26110010253a50657a8fa5bacab49f8a75869cb1a99f99969596989da6b1b6c2cdbeb2a0937e69594834200c0000000a1f34475961626262626262626262657b90a5bacab49f8a756262626262626262626262626262594834200b0000000000000004121d2b36434a5c647581919ea7b3b7ab9f95857867697c88949ca4a5a6a7a5a69e978b807360564532221200000000000000000000000000000000000002101f2c3d4a5b657b8c9fb4bebdb39e8978624d41301a0a0000000000000000000e23384e63788da3c5c0ab95806b5663798eaba48e7964798ea3a48f7964556b8095aac0c6a38e78634e39230e000000001d33485d72889db2c7cebdb1acaaaeb3b8c5c9c4b7b2b7c4cfc6b19b8672604a372715000000000000000000000020354a60758a9fc2d3c8b8aba59f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8d78624d38230d0000000000000000031729395c71869cb1c2ad98826d58677c91a79a856f687e93a898836e5962778dabbcbda8937d68533e281300000000000000000000000000000f2234455257534c473a36332926293e53687e93a8a6917c665153697e93a8becab49f8a75604b35200b000000000000000000000417293a54697e94a9becab49f8a76614b36210c0000000000000000182d43586d8298adc2c1ac96816c57412c170000000000000b21364b60768ba0b5d7bba5907b66503b26110010253a50657a8fa5bacab49f8b788da49e948a84817f808388909ca4b3bfcfbeb49f8a77624d3a2a170400000c22374c6177787878787878787878787e92a8bdcebbaa8d787878787878787878787878787877624d37220d0000000000000000000d1825303e4a56606c7c899aa2b4bab4a39b897d6d66757f868c8f9192908e8882786b6055453828150400000000000000000000000000000000000000010f1f2d3d4b5d697e93a0b2c4b9a799846f5f4d38271502000000000000000010263b50657b90a5babea9937e695460768a9fa6917c677c91a6a78c766153697e93a8bebba5907b66503b2611000000001d33485d72889db2c7c5b19f9795999ea7adb4bbc8c8cbd4d0bba6907b665443301909000000000000000000000020354a60758a9fb5cad6c8bebab5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a28d78624d38230d00000000000000000a1e33465774899eb3c0ab96806b5664798ea49d88736b8196ab95806b5660758a9fb5c0ab96806b56412b160000000000000000000000000000051727343e423e37332a211e1713293e53687e93a8a6917c665150657b90a5bacebbaa8c77614c37220c00000000000000000000000f253a4f647a8fa4b9cebbaa907a65503b25100000000000000000162c41566b8196abc0c4ae99846f593a29170400000000000c22374c61778ca1b6ccbba5907b66503b26110010253a50657a8fa5bacebbaa9781979d8a7e766f6c6a6b6d747b8699a1b3c1cdbaa897826c5847331f0a0000192e43596e838d8d8d8d8d8d8d8d8d8d929cadc1d9c8a7968d8d8d8d8d8d8d8d8d8d8d8d8d8d86715c47321c0700000000000000000008131c2d38454b5e667784949fa9b6b4a89e928275646971777a7c7d7b79746d635b4b4437281a0a000000000000000000000000000000000000000000010f1f2e3f4f606e8398a6b8c5b3a1917c675645311d09000000000000000013283d52687d92a7bdbca7917c67525672889da9947e697e93a99e88735851677c91a6bcbda8927d68533d2813000000001d33485d72889db2c7c1ac978180838890989faab2bfcfd9cab59f8a755e4d3e2e1d0d000000000000000000000020354a60758a9fb5caded1c8c5bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb7a28d78624d38230d00000000000000000c21364b61768ba7b9bea9947f695461768ba7a68b766f8499a8927d68535673899eb3c3ae99836e593625130000000000000000000000000000000917222a2c29211f170c0a0313293e53687e93a8a6917c66514f64798fa4b9d8c7a28c77624d37220d000000000000000200050b0d22374c62778ca1b7d8c8a7927d67523d2812000000000000000014293f54697e94a9bec7b29d87725846331f0a00000000000f24394f64798ea4b9cebba5907b66503b26110010253a50657a8fa5bad9c8b19f979d8878696157575556546065748399a3b4c9c6b49f8a76614c37210c0000192e43596e8398a2a2a2a2a2a2a2a2a2a8adbacae6c5b4a7a2a2a2a2a2a2a2a2a2a2a2a2a29c87715c47321c0700000000000000000000000f1a2832404c5962727f8b9ca4b1b9b3a098877a6a6062656767666360544d493c3126190a000000000000000000000000000000000000000000000001112132424c6177889eb3c1bfb29c8774604b3620100000000000000000152a40556a7f95aabfbaa58f7a65505a6f849aab96816c8196ab9b85705b4f657a8fa4babfaa95806a55402b15000000001d33485d72889db2c7baa48f7a6b6e747a828b98a0b4bcc9d3bba6917c665c4a3b2b18080000000000000000000020354a60758a9fb5cad1c0b4b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa28d78624d38230d00000000000000000e23394e63788ea3c5bca7927d67525873889ea38e7972879ca58f7a65505c71869cb1c6b19c86715443301c07000000000000000000000000000000050f1517140c0a0400000013293e53687e93a8a6917c665150667b90a5bbcebaa98b76614b36210c000000010a101218191920222b364b60758ba0b5cabea8937e69533e2914000000000000000011263c51667c91a6c5cab49f8b76614c36210f000000000215273753687d92a8bdd0bba5907b66503b26110010253a50657a8fa5bacfcebdb49f8b79635a4b46394036434b566074859babbccdbaa9937e68533727150100192e43596e8398aeb7b7b7b7b7b7b7b7bdc1cad8e2d2c5bbb7b7b7b7b7b7b7b7b7b7b7b7b19c87715c47321c070000000000000000000000080f1a21303b485460697a86979fb3b8b2a59c8c7f7262595152504e4a4336352c1d14090000000000000000000000000000000000000000000000000003141f334758687d92a3b5c9b6a5927d68533f2e1b0800000000000002182d42576d8297acc2c6a38d78634e576c8197ac99846e8399ad98826d584d63788da2c6c2ad97826d58422d18030000001d33485d72889db2c7baa48f7a655560656d7883919fabb6c2c9b49f8b7a6459483625130000000000000000000020354a60758a9fc2d3c8b4a29a95959595959595959595959595959595958d78624d38230d000000000000000011263b50667b90a5bbbaa5907b65505b70869ba7917c748a9fa98c77624d5a6f849aafc4b49f8974604a35200b000000000000000000000000000000000000020000000000000013293e53687e93a8a6917c6651576b8095aac0c9b49f8a745746321e0a000005131d25272d2e2b35383b484d62778ca2b7d0c0a7927c67523d271200000000000000000e23384d63788da7b8ccbcab927d67523d2d19090000000a1d3144556d8297acc2d0bba5907b66503b26110010253a50657a8fa5bacfcebaa995806b5b493c32282a263038455664798c9fb4cac7af9a846f5544311d0800192e43596e8398aebababababababababfc3ccdae5d5c7bdbabababababababababababab19c87715c47321c0700000000000000000002101b222d36393f36434a5c647581919ea7b3b6aa9f948477665e4b453835302521190e0100000000000000000000000000000000000000000000000000000004182a3a4a6072869bb1c3c3b19c86715d4b37220e000000000000051a2f445a6f8499afc4baa88b76614c54697e94a99b8671869baa957f6a554b60768ba8b9c4af9a846f5a452f1a000000001d33485d72889db2c7baa48f7a654f4b505a626e7c8d9ca4b5c2baa99d8877625443301c0d00000000000000000020354a60758aa4b6cac5b09a8480808080808080808080808080808080808076614c36210c000000000000000013283d53687d92a8bdc9a38e79644e586d8398aa947f788daa9f8974604a586d8297adc2baa88c77624d37220d000000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66516075889db2c8c6b09b86715b392916030001132330393c42443c484d5259626e8197acc1c4b3a28d78634e38230e00000000000000000c2035495a73889eb3c8c9ae99836e5c4a3726191110121b293a4b6074899eb3c8d0bba5907b66503b26110010253a50657a8fa5bacfc9b49f8a76614c3d2c1e1615141c28384a5c6e8398aec7c9b49f8974604b35200b00192e43596e8398a4a4a4a4a4a4a4a4a4aaafbccce6c7b7aaa4a4a4a4a4a4a4a4a4a4a4a4a49c87715c47321c0700000000000000000614202e373d4a4e54595b5c5b56606c7c899aa2b4bab4a29a897c6c60564a3d321f180c0000000000000000000000000000000000000000000000000000000000000c1c304354677c91a5b6cab6a48f7a654f3a2510000000000000031729395c71879cb1c6b49f8974574651667b90a69e8974889ea7927c6752455774899eb4c7b19c87725c3a2917040000001d33485d72889db2c7baa48f7a654f3a3c494d5e6678869ca4b5c3b8a69a8472604a3b2b180500000000000000001d32475c72879cb1c7baa5907b6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a615846331f0a0000000000000000152b40556a8095aabfbcab8c77624c556a8095aa98827c90a69c87715443566b8095abc0c6a58f7a65503a2510000000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66606c8197a6b7cbc0ab96816b56412c1600000a1d30414d5257595b5a62686e7783979fb1c0b4a69a846f5b4935210c000000000000000006192c3c596e8398aec6cab49f8c79645544342b2725272e394658687d92a7b8ccd0bba5907b66503b26110010253a50657a8fa5bacfc3ae99846e5847331f0f0300010a1a2d3e51667c91a9bacdbaa88e79644e39240f00192e43596e838f8f8f8f8f8f8f8f8f8f959eafc3d9c8aa998f8f8f8f8f8f8f8f8f8f8f8f8f8f86715c47321c0700000000000000071524323e4b4f5c646a6e7072706f6a64667784949fa9b6b4a79e918175635b4f42342a1c110200000000000000000000000000000000000000000000000000000000001325364b6073879db2c7c2ac97816c573c2c190600000000000a1e33465774899eb3c7b29d87725d394e63788daaa78c778ca7a48e79644f395d72879cb2c7b49e89745847331f0a0000001d33485d72889db2c7baa48f7a654f3a2b35404c5a6376869ca5b7c4b3a2937e69594834201000000000000000001d32475c72879cb1c7baa5907b6555555555555555555555555555555555554c463a2917040000000000000003182d42586d8297adc2b59f8a75604b52677d92a79b857e93a999846e593653697e93a8bebda8927d68533d2813000000000000000000000000000000000000000000000000000013293e53687e93a8a6917c677481979fb1c4c7b4a28f7a644f3a240f00001025394d5f676d6e7074787d838b99a1b1b4aea29a8878624d3d2c1a0600000000000000000012283d52677d92a8b9ccbcab9a8473604d483c3c3b3c3e4a576176889db3c0d1d0bba5907b66503b26110010253a50657a8fa5bacfbea9937e69543a291701000000000f21364b60758a9fb4c9c6a7927c67523d2712000e23384e63797a7a7a7a7a7a7a7a7a7a8095aabfcebbaa8f7b7a7a7a7a7a7a7a7a7a7a7a7a7a7a644e39240f0000000000000003152533434f5c6470797f83858786847f7a7165727e8b9ca4b1b8b39f97867969604c473a2f1d150900000000000000000000000000000000000000000000000000000000081c3043546b8095aac5c7b29d88725a4935200c00000000000c21364c61768ba8b9c5b09b85705b464b60758a9fa7917c91a7a78b76614c455b70859ab0c5b9a88c76614c37210c0000001d33485d72889db2c7baa48f7a654f3a2520303c49586277879daabbc0b49e8a77624d3e2d1b07000000000000001d32475c72879cb1c7baa5907b6550404040404040404040404040404040403633291c0c0000000000000000051a2f455a6f849aafc4b39e887355444f657a8fa49f8c859aab96816b564151667c91a6bbc0ab95806b56402b1601000000000000000000000000000000000000000000000007101b293e53687e93a8a6917d7c86979fb1bdcdbaa99a84705c4a36220d000012273c52677d828386898d92999faaa7a99f99918578625948341f0f000000000000000000000c21364b6176899eb4c6c9b4a297816f625a54515052555c6475849a9ba2b4c7d7bba5907b66503b26110010253a50657a8fa5bacfbaa5907a65503b25100000000000091e32455671869cb1c6bfaa957f6a55402a15000c2135495b63656565656565656565657b90a5bacab49f8a7565656565656565656565656565645c4a36220d00000000000000112233435061697a848e94999b9c9b99958f857b6b697a86979fb3b8b1a49c8b7e6f61594c3f3127190e000000000000000000000000000000000000000000000000000000011426364e64798ea7b8cbb7a58d78634d38230e00000000000e23394e63788ea3c6c3ae98836e5943445572879cb29b919bb39e8873584643586e8398adc3c6a38e79634e39240e0000001d33485d72889db2c7baa48f7a654f3a25121e2c3a4859647a8c9fb4c3b9a898826d5c4a36220e000000000000001d32475c72879cb1c7baa5907b65503b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b211f170c00000000000000000004172a3a5c72879cb1c6b19c87715c374c62778ca8aa9f9aa2a8937e68533e4f647a8fa4c9c3ae98836e59432e1900000000000000000000000000000000000000000000030f1a212d363c53687e93a8ac9b91919ca4b1bdcebbb49f8b79644e3e2e1b070000172d42576c8197999b9ea7a79f9794928f8a847c706259483b2b1901000000000000000000000a1e3246576c8196a8b9cdc0b19f9783786f696665676a707a859a9b859ba9bacdbba5907b66503b26110010253a50657a8fa5baccb7a28c77624d37220d000000000002162838586e8398adc3c1ac97816c57422c1700061a2c3d494e4f4f4f4f4f4f4f4f50657b90a5bacab49f8a755f4f4f4f4f4f4f4f4f4f4f4f4f4e4a3e2d1b0700000000000008182f4050616a7f8c9aa2a9aeb0b1b0aeaaa39b908072647581919ea7b3b6a99f938377655d4b44372c1f0e0000000000000000000000000000000000000000000000000000000b20354a6074899eb3c8c3a7927c67523d2712000000000011263b50667b90a5bbc1ac96816c5741375a6f8499afaca7acb09b85705b3a41566c8196abc1bba6907b66513b26110000001d33485d72889db2c7baa48f7a654f3a25100e1c2b3b4b5c6a7f95a4b6c6b59f8d7a644f3c2c19060000000000001d32475c72879cb1c7baa5907b65503b2615151515151515151515151515150c0a04000000000000000000000a1f33475874899fb4c4af9a856f5a45475974899eb4b4b0b4a5907b66503b4d62778dabbcc6b19b86715c3b2a180500000000000000000000000000000000000000000a161e2d363e4a4f5b687e93a8b9aca6a7b1b6c2c7bab49d937e695c4a362010000000172d42576c8297acb0b3b9ac97817f7d79766f665e4d483b2b1d0d0000000000000000000000031629394c62778a9eb4becebdb1a1998b847e7c7a7c7f858d9ba38e788a9fb4c9bba5907b66503b26110010253a50657a8fa5bacbb6a18b76614c36210c000000000000162c41566b8196abc0c3ad98836e58432e1900000f1f2c35383a3a3a3a3a3a3a3b50657b90a5bacab49f8a755f4a3a3a3a3a3a3a3a3a3a3a3a39362d2010000000000000011426364c5e6a7f949faab4c0b6b1afb1b5bcb5b09e95816c606c7c899aa1b4bab4a199887b6b6055493d2c19090000000000000000000000000003000000000000000000000000071c3043546f849aafc4bfaa95806a55402b15000000000013283e53687d93a8bdbfaa947f6a553f41566c8196abc1bcc2ad98826d58433f546a7f94a9bfbda8937e68533e29130000001d33485d72889db2c7baa48f7a654f3a2510000d1d2e3e4b6074879cb2c1bcab98836e5a493520090000000000001d32475c72879cb1c7baa5907b65503b261000000000000000000000000000000000000000000000000000000c21374c61778ca8bac3ad98836e58433b5c71869bb1c6c5bbaa8d78634d384b60758a9fb5c9b49e89745948341f0b000000000000000000000000000000000000010f1b28323d4a4e5c646e798d9cadc1bfbbbcc7cac3b7a99f937f6a604e3d2d1a02000000172d42576c8297acbbc8bca7927d7977736f6861574e42342717060000000000000000000000000b1f344859697e93a0b2bfcfbfb3aa9f9993919091949b9fab9d87728a9fb4c9bba5907b66503b26110010253a50657a8fa5bacebbaa8a75604b35200b000000000000152b40556a8095aabfc3ae99846e59442f190000010f1a2123252525252525263b50657b90a5bacab49f8a755f4a282525252525252525252524221b1002000000000000081c304354667b8c9fb4bbb6b2a49c9a9c9fabb5bcb09f927d675e667784949fa9b6b3a69d8d8074635b4937271502000000000000000000070d0f190b080200000000000000000000132536576c8197acc1c2ad97826d58422d180300000000152b40556a8095aabfbda8927d68533d3e53697e93a8bed1bfaa947f6a553f3d52687d92a7bdc0aa95806b55402b160000001d33485d72889db2c7baa48f7a654f3a25100000101d314556667c91a3b5c9b49f8c78634d3727150100000000001d32475c72879cb1c7baa5907b65503b261000000000000000000000000000000000000000000000000000000f24394e64798ea3c6c1ab96816c564144596e8399aec3cab49f8a75604b35455673899eb3c8b9a88c77624c37220d000000000000000000000000000000000003111f2c39454b5b636e7a838c9fb4bacad3d1cfc8bbb4a59d8b7e6a615042311f0f00000000172d42576c82979faaa8adb49b928e8c89847d766860524534241300000000000000000000000005182a3b4a60728298a1b4bcc9c8bbb4afa9a6a5a7aab0b5a3947f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacab49f8a755443301c08000000000000142a3f54697f94a9bec4af9a846f5a452f1a00000000060c0e101010101010253b50657a90a5bacab49f8a755645321e1010101010101010100f0d0700000000000000000b20354b6073869cabbcb6a59c8f8784868c9ba3b5bdb39d8875605962727e8b9ca4b1b7ab9f968579635544311d0800000000000000010f1a21242e201d1509000000000000000000152b40556a8095aabfc3ae99846e59442f190400000003182d42586d8297adc2bba6907b66513b3b50657b90a5babfbca7917c67523c3b50667b90a5bbc2ad98826d58432d180300001d33485d72889db2c7baa48f7a654f3a25100000021527384c5e71869bb1c5bcab96816c5544311d0800000000001d32475c72879cb1c7baa5907b65503b2610000000000000000000000000000000000000000000000000000011263c51667b91a6babaa9947f6a543f41566b8096abbfbfb29c8772554431385c71869cb1bac6a48f7a654f3a2510000000000000000000000000000000000311212f3d4957606b79838e999fabbccfd8cfc6bfb2aa9f96877a686050433324140100000000152b40556a80888a8e92989ea8a7a4a79e9a93887e6c6352423119090000000000000000000000000d1c304354607483969fabb4bbc8c5c4bebbbac7bab4a39b8574748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacab49f8a755f39281603000000000000152a3f546a7f94a9bfc4af99846f5a442f1a0000000000000000000000000f253a4f647a8fa4b9cfbcab8b76604b36210b0000000000000000000000000000000000000012273c51677c91a4b6b9a89c877a726f7179859ba6b7b8a6937e69535460697a86979fb3b8b5a39b8875604b36200b0000000000000210202d36394336312719090000000000000000152a3f546a7f94a9bfc4af99846f5a442f1a05000000051a2f455a6f849aafc4c9a48e79644f39384d62788da2a9a9a9a48e79644f39394e64798ea3c8c4af9a856f5a45301a0000001d33485d72889db2c7baa48f7a654f3a25100000000a1a2f4052677c91a7b8c9b39d8874604b35200b00000000001d32475c72879cb1c7baa5907b65503b2610000000000000000000000000000000000000000000000000000013293e53687e93a4a4a4a4927d68533d3e53687d93a8a9a9a99a846f5a3727455a6f849aa4a4a4a4927d68523d28130000000000000000000000000000000010212f3f4b5b6375808c99a1aeb4bcc9d9ccbfb3aea1998c8075645c4e4233251506000000000013283c50616a7375797d8389929ca4b0b3afa79e93816c604e3726140100000000000000000000000013253645566073808c999faaadb0b2b3b2b0ada99f95857761748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacebbaa8a755746321e09000000000000162b40556b8095aac0c3ae99846e59442f190000000000000000000000000f24394e64798ea3c8d9b6a18c77614c37220c00000000000000000000000000000000000002152838586d8298adc2b49e8a78645c5a5b6376889db3c4af9a846f56454a5c647581909ea6b1a0917c675544311d0800000000000210202d3e4a4e584b443727190c00000000000000162b40556b8095aac0c3ae98836e59432e190400000004172a3a5c72879cb1c7bcab8c77624d37354b60748a94949494948b76614c36374c62778caabbc7b29c87725d3a2a180400001d33485d72889db2c7baa48f7a654f3a2510000000001220364b6075889eb3c8b8a6907b66503b261100000000001d32475c72879cb1c7baa5907b65503b26100000000000000000000000000000000000000000000000000000162b40566b808f8f8f8f8f8f7c66513b3b50657b90949494949485705b453042586d828f8f8f8f8f8f806b55402b160000000000000000000000000000000d1d2e3f4b5d657986969faab3bfcacfd9ccbbaea1998e83796b61574b3e312415070000000000000d2133435055556063686e757d86969eb0bcb8b39f927e685544311d08000000000000000000000000081828384555606b79838b92979b9d9d9d9b98938a80756159748a9fb4c9bba5907b66503b26110010253a50657a8fa5bad9b6a08b76614b36210c000000000002172c41576c8196acc1c2ad98826d58432d180000000000000000000000000d22374d62778caabbceb8a38e79634e39240e000000000000000000000000000000000000091d32455673889db2c0aa95806b5a4b3e4958697e93a9c8b49f8975604b3d4a56606c7c8899a197826d5f4d37271502000000000210202d3e4a5c646e605544372a1c11070000000005182b3b576c8297acc1c1ac97826c57422d17020000000a1f33475874899eb4c9b49f8a75604b35304354687e7f7f7f7f7f7e69574633354b60758a9fb4c9b49f89745947341f0a00001d33485d72889db2c7baa48f7a654f3a251000000000091d3145566c8196abc5c4ac97826d573d2c1a06000000001d32475c72879cb1c7baa5907b65503b26100a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a000000000000000e23384d63787a7a7a7a7a7a75614c36364c61767f7f7f7f7f7f7a644f3a25384d62787a7a7a7a7a7a78634d38230e000000000000000000000000000005182a3b4b5d657b8a9ca4b4bbc8ccc9c8cbc2ae9d94837a6e635b4b46392e20140600000000000000041525333c37444b4e535660687480959eb0c3bdb39d8874604b35200b000000000000000000000000000a1a2837444b5c646e777d828587888786827d766b60575f748a9fb4c9bba5907b66503b26110010253a50657a8fa5baccb7a18c77624c37220d000000000003172939596e8499aec3c1ab96816c56412c170000000000000000000000000b20354b60758a9fb4cabca7927c67523625130000000000000000000000000000000000000b20364b60758ba6b7b9a48f79644f3c2e3a4d62788daabbbaa98d77624d3838454b5e667784938775614b41301909000000000010202d3e4a5c647a83736055473a2f221b100d0c0e142034485971869bb0c6c0ab95806b56402b16010000000c21374c61768ca8b9c8b39e887355443126364e60686a6a6a6a6a69614f392930435473889db3c8baa98c77614c37220c00001d33485d72889db2c7baa48f7a654f3a2510000000000215273850657a90a7b9c8b29d88735b4935210c000000001d32475c72879cb1c7baa5907b65503b261f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f100e08000000000c2035495a6365656565656561574633334658616a6a6a6a6a6a645c4b372235495a62656565656565635a4935200c00000000000000000000000000000b1f344759657b8a9ea8b6c2cec5b9b3b3b8c4a9947f6e645c4e4a3d32281b1002000000000000000000071521282731363938454b55606b8095abc0cbb8a68f7a654f3a251000000000000000000000000000000a1927313e4a4e5962686d70727372716d6861584b455f748a9fb4c9bba5907b66503b26110010253a50657a8fa5baceb9a48f7a644f3a240f00000000000a1e33465772879cb2c7bea9947f69543f2a14000000000000000000000000081d31445572879cb1c7c0ab96816b5443301c0800000000000000000000000000000000000d22374d62778ca2c4b6a18c76614c372135485a748a9fb4c7a48e79644f392832404c5962727e7a64574633231200000000000e1e2d3e4a5c647a8998827361584c40362d2522222326303f4d62778b9fb4cac4a7927d68523d2813000000000f24394e64798ea3c6c6b19b86715c37271831424e535454545454544f42321b26365b71869bb0c6c7a48e79644f39240f00001d33485d72889db2c7baa48f7a654f3a251000000000000b20354b6075899eb3c9b7a68e78634e39230e000000001d32475c72879cb1c7baa5907b65503b34343434343434343434343434343434343434343426231c1103000006192c3c494d4f4f4f4f4f4f4c463929293a464c5454545454544f4b3e2e1b2b3c494d4f4f4f4f4f4f4d493c2c190600000000000000000000000000071a2d3d4c6277899ea8b9c6c9bcb4a79e9ea6b8a6917c66514a3e362d1e160b000000000000000000000000040d09151d2023283237444c61778ca1b6d5c4a7927d68523d281300000000000000000000000000000009151d2d363b484d53585b5d5e5d5b58534c463a4a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacfbda8937d685338281502000000000c21364c61768b9fb4cac5a6917c66513c271100000000000000000000000001142637596e8398aec3c7b29d8773604a36261408020002020304060805030000000000000d23384d62788da2c6b6a08b76614b362133465874899fb4c9a48f7a644f3a251e2f3b48546069645c4b392917040000000006192c3c4a5c647a899ea0988376655e4f4a3e3a38373836434b5d6b8096aabbcbb7a68d78634d38230e0000000011263b51667b90a6bbc4af99846f5a442f1a24313a3e3f3f3f3f3f3e3b32241a2f44596f8499aec4bba6917b66513c261100001d33485d72889db2c7baa48f7a654f3a25100000000000081d3144556f8499aec4c4a8937d68533e2813000000001d32475c72879cb1c7baa5907b6550494949494949494949494949494949494949494949493b382f21110000000e1e2c35383a3a3a3a3a3a3633291b1c2933363f3f3f3f3f3f3a372e20101e2b35383a3a3a3a3a3a38352c1e0e00000000000000000000000000000c21364a5b6e8399a7b8c6c6b9ab9f9689889eb3a6917c66513c2d211a0f030000000000000000000000000000000002080b0e161e27364b60768ba0b5cbbea8937e69533e291400000000000000000000000000000000010f1a212b34373d424648484846433e3633294a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacfc2ad97826d5645321d0c00000009192d3d52677c92aabbccb9a78d78634e38230e0000000000000000000000000014293e53697e93a8c1cab6a58f7a65544330261e16171718181a1b1e1a181108000000000c21364c61768ba8b9b8a28d78634d3726364c61768ba9babcab8d78634d3823121d2a36434a544f4b3e2e1b0b00000000000c2035495a647a899ea7b2a19a877b6e645c54504d4c4d505460687b8c9fb4c8c7b39d88735a4935200c0000000013293e53687e93a8bdc2ad97826d58422d18141f26282a2a2a2a2a29271f14182d42576d8297acc2bea8937e69533e291400001d33485d72889db2c7baa48f7a654f3a2510000000000001152737556a7f94aabfc1ac97826c57422d17000000001d32475c72879cb1c7baa5907b655f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f504c3f2f1c080000000e192023252525252525211e170b0c171f212a2a2a2a2a2a25221b10020e1920232525252525252320190e0000000000000000000000000000000e24394e63798ea1b2c5c8b9a89e8d81767e93a8a6917c66513c27110700000000000000000000000000000000000000000000020d22374d62778ca2b7d7c6a7927c67523d2712000000000000000000000000000000000000070d182022282d30323332312d28211f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacfc9b39e8975604b3a291b1210111926374a5c6e8399aec8c9b39e8974604a35200b000000000000000000000000000e23384d63788da3b5c9c3b09b8573604b433632282c2c2d2e2f31332f2c25190b0000000a1e33465774899eb4bda8927d685544364351667b90a6c7b59f8b76614c36210c0d182530353e3a372e20100000000000000e23384d6378899ea7b8bfb3a59d90837a716a65626163656a737d8b9faabbcdbaa996806b563c2c190600000000162b40556b8095aac0c0ab95806b56402b16020b1113151515151514120c02162b40556b8095aac0c0ab95806b56402b1601001d33485d72889db2c7baa48f7a654f3a251000000000000011263b50667b90a5c7c5b09b86705b3a2917040000001d32475c72879cb1c7baa5907b747474747474747474747474747474747474747474747474655d4c38230e00000000060c0e1010101010100c0a030000040a0c1515151515150f0d08000000060b0d1010101010100e0c0600000000000000000000000000000005182a3b576c8197acbfcebbaa9e8a7b6c687e93a8a6917c66513c271100000000000000000000000000000000000000000000000010253a4f657a8fa4bacdbaa88f7a644f3a250f0000000000000000000000000000000000000000050b0d13181b1d1e1d1c18130c1f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacfccb9a7927d685846392e2725272b34445564798c9fb4cac6ae99836e5443301c07000000000000000000000000000c2135495b71869bb0c3c9b5a3957f6a60544b4538414142434446484441372919080000031729395a6f849aafc6b19b867360545153616f849aafc9b19c86715746331e0a0008131c202925221b10020000000000000b20354b6074849aa3b4c0c3b7b2a1998e867f7a7777787b7f86929fa9bac8c0b49f8a77624c37220e0000000003182d43586d8298adc2bea9937e69543e29140000000000000000000000000014293e53697e93a8bec2ad98836d58432e1800001d33485d72889db2c7baa48f7a654f3a25100000000000000d22384d62788da9bac9b49e89745846331f0a00000020354a60758aa4b6cabeab999089898989898989898989898989898989898989898989898a7b65503b26100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1f34475972879db2c7cab49f8c7b655d687e93a8a6917c66513c2711000001000000000000000000000000000000000000000004172a3a54697f94a9bec9b49f8975604b36200b00000000000000000000000000000000000000000000000003060809080603000a1f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bacfd2c3b39e887661574b3e3c3b3c3b484d6073849aabbccdb9a8927d6853362513000000000000000000000000000006192c3c53687d92a5b7cac1af9d9580736660565856575758595b5d5a544737251100000014293f54697f94a8b9b5a3968173696668707f95a2b4bcab96816c5639291703000000070b140f0d080000000000000000081d3144556176859aa2b4bbc8bfb3aea39b948f8d8c8d90959ca4b4bac7c2b4a296816c594834200b00000000051b30455a70859aafc5bca7917c67523c27120000000000000000000000000012273c51677c91a6bcc5b09a85705b36251300001d33485d72889db2c7baa48f7a654f3a25100000000000000b20354a6074899fb4c9b9a88b76614c36210c00000020354a60758a9fc2d3c8b8aba89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e907b66503b261100000000090f111919191919191919191919191919191919191919191919191919191919191919191919110f090000000000000000000000000000000d22374c62778ca5b6cac1ac97816c5d53687e93a8a6917c66513c27110b0d160b090200000000000000000000000000000000000a1f3347586f849aafc4c6ae99836e5544311d0800000000000000000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bad2c2b5a59d9a8475645c555250515359626f8197a2b4c9c7b49e8a76614c36210c0000000000000000000000000000000e20364b6074879db2bdccbbaf9e95867c756f6d6c6c6d6d6f70736f6554412c080000000c21374c6176899eb4c0b19f96857e7b7d84959dafc0b49f8c78634e38230e000000000000000000000000000000000000011527374758617684959faab3c0c9c1b5b0a9a5a2a1a2a5aab1b6c2cabeb2a49b8474604b3b2b18050000000004182a3b5d72879cb2c7baa58f7a65503a25100000000000000000000000000010253a4f657a8fa4bac7b29d87725443301c07001d33485d72889db2c7baa48f7a654f3a2510000000000000071c30435472879db2c7c6a38e79634e39240e00000020354a60758a9fb5cad6c8c6b9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a5907b66503b2611000004121d24262e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e26241d1204000000000000000000000000000f24394f64798ea4c3d3baa48f7a654f53687e93a8a6917c66513c27181f222b201d150a000000000000000000000000000000000c21374c61768b9fb4cab9a8917c67513727150200000000000000000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bac9b5a39b879d9a857a706a676566696f7883979fb1c0cdbaa997816c5746331e0a000000000000000000000000000000081d314455667c909fb1bfccbcafa39b918a858381818283848688836f5a3625130000000a1f3347586a7f95a2b4bdb1a39b9391939aa2afbcb6a498826d5b4935210c0000000000000000000000000000000000000009192a3a47586173808c9aa2adb4bac7c6bfbab7b6b8babfc7c9bcb5afa0988677625645311d0d00000000000b1f344759748a9fb4c0c6a28d78634d38230e000000000000000000000000000d23384d62788da2c6c0b49f8a75604a35200b001d33485d72889db2c0baa48f7a654f3a2510000000000000001325365b70859bb0c0baa5907b65503b261000000020354a60758a9fb5cacacfc6c3c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0bba5907b66503b2611000012222f383b43434343434343434343434343434343434343434343434343434343434343434343433c382f22120000000000000000000000000010263b50657b90a5bacbb6a18c76614c53687e93a8a6917c66513c272a3437403631271a0a00000000000000000000000000000317293953687d92aabbc9b49e8975604b36210b0000000000000000000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bac6b19b857f94a39b8d857f7c7a7c7e848b99a1b1bdcebfb49f8a77624d39291703000000000000000000000000000000021527374c5e6c8197a1b1bdcac2b5b1a99f9a9896969798999b9c87725443301c0700000417293a4b6073849aa2b4bab5b0a8a6a8afb4bcb5a49c8675614b3d2c1a0600000000000000000000000000000000000000000c1c2a3a4655606b7a848f989fa9adb1b4bbc8b9b8c3b7b2aeab9f999082756259483827150000000000000c22374c61778ca9abababa88b76614b36210c000000000000000000000000000b21364b60768ba8abababaa8c77624c37220d001d33485d72889dabababa48f7a654f3a2510000000000000001a2f44596f8499abababa6917c66513c271100000020354a60758a9fc4b5b5bfb2aeababababababababababababababababababababababa5907b66503b261100091d2f404c515959595959595959595959595959595959595959595959595959595959595959595959514c402f1d0900000000000000000000000010253a50657a8fa5bacbb5a08b76604b53687e93a8a6917c66513c2f3b474c564b4538271909000000000000000000000000000a1e3346576f8499afc8c6ad98826d5645321e090000000000000000000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bac4af9a847a8ea2ab9f9b9491909193999faab3bfcfc0b3a1947f695948341b0b000000000000000000000000000000000009192f404b607383979fb2b7c3c9c7bab4afadabacacadaeb09f8975604a35200b0000000c1d314455617684969fa9b1b5c2b9c3b6b2ab9f988678625746331f0e000000000000000000000000000000000000000000000c1c2937444b5c646f7a838a91979c9faaa3a4a3a1a59d98948c847b6d6157483b2a1a0a0000000000000f24394f64798e95959595958a745746331e0a00000000000000000000000000091e324556748995959595958f79644f3a240f001d33485d728795959595958f7a654f3a251000000000000004192e44596e839595959595927c67523d271200000020354a60758aa69f9f9f9fa0989595959595959595959595959595959595959595959595907c66503b2611000f24384c5e666e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e665e4c38240f0000000000000000000000000e24394e63798ea3c4d4b7a28d77624d53687e93a8a6917c66513c404c59626b605645372719090000000000000000000000000c21364b61768a9fb4c9b9a8907b6651382816020000000000000000000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b26110010253a50657a8fa5bac2ad98826f849aa8b5b0aaa7a5a6a8aeb4bbc8c9bcb5a2998372604b3b2b1800000000000000000000000000000000000000121d314455607381919da5b0b5c1c1c4c4c2c1c1c2c2c4baa98c77624c37220d0000000114263747586174818b969ca4a2a4a2a59c978c8276625a493929170000000000000000000000000000000000000000000000000c1927313e4a4e5d656e767c82868a8d8e8e8d8c8b88837e786f665e4b46392a1d0d000000000000000e23384e63798080808080807f6a5439291703000000000000000000000000000316283854697f80808080808079634e38230e00152a3f546a7f80808080808078624d38220d0000000000000012273c52677d8080808080807a644f39240f0000001e33485d73888a8a8a8a8a8a8380808080808080808080808080808080808080808080808079634e38230e0011263b51667b83838383838383838383838383838383838383838383838383838383838383838383837c66513c26110000000000000000000000000d22374c62778ca6b7cbbca6917c675153687e93a8a6917c6651474c5e6577807460554437271909000000000000000000000012273c51677c91a9bac9b49e8975604b36200b000000000000000000000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4babaa5907b66503b26110010253a50657a8fa5babaab96816b788a9ea7b4bbc8babbbec4c5c9bcb4ab9f968475615443301d0d00000000000000000000000000000000000000021527374455606c7c87929ba3a7acafb1b3b3b3b2b1b0aea48f79644f3a240f0000000009192a3a4756606b7880868b8d8e8d8b8781796d6158493c2c1b0b0000000000000000000000000000000000000000000000000009151d2d363f4b4f5861676d7175777879787775726e69635b504c4032281b0d00000000000000000c2135495b636b6b6b6b6b6b6a614f3c1b0b0000000000000000000000000000000a273c4f61696b6b6b6b6b6b635b4935210c0012273c4f616a6b6b6b6b6b6b625a4835200b000000000000001025394d5f676b6b6b6b6b6b645c4a36220d0000001b3044586a737575757575756e6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b635b4935210c0014293e54697e93989898989898989898989898989898989898989898989898989898989898989898947f69543f2a140000000000000000000000000b1f34475973889db2c8c3ae99836e5e53687e93a8a6917c665158616c7b889583736055443727190900000000000000000002172c41576c8196acc7c4af9a856f5645321d09000000000000000000000000000000000000000000000000000000000000000000000a1f354a5f748a9fa5a5a5a5907b66503b26110010253a50657a8fa4a4a4a4947f69647a89989faaadb1b2b3b2b0adab9f998d817461574636261400000000000000000000000000000000000000000009192737444b5e66757d868d92969a9c9d9e9e9d9c9b9895917c67513c271200000000000c1c2a38454b5a626b717678797876726c635b4c463a2c1e0e00000000000000000000000000000000000000000000000000000001101b222e373a474c525855606263646361605559544e493d382f1e160b000000000000000000061a2c3d494e565656565656544f433220000000000000000000000000000000000c2032434f545656565656564e493d2c1a06000c2032434f545656565656564d483c2b1905000000000000000a1e30414d525656565656564f4a3e2d1b0700000015293b4c585d606060606060595656565656565656565656565656565656565656565656564e493d2c1a060014293e54697e93a9aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea9947f69543f2a1400000000000000000000000005182a3b586d8297adc2c7b3a1917c6860687e93a8a6917c66616a7781909da1998373605544372614010000000000000000061b30465b70859bb0c5c0ab96806b563828150201080b080100000000000000000000000000000000000000000000000000000000000a1f354a5f748b9090909090907b66503b26110010253a50657b8f8f8f8f8f8f7d685c6477828b93989b9d9d9d9b97938b847a6b605646392818080000000000000000000000000000000000000000000009192731404d56606871787d81848788898988878683807d78624d38220d0000000000000c1a27313c484d5657616264636158574e4a3d33291b0e00000000000000000000000000000000000000000000000000000000000007111c232a33373c37444b4d4e4f4e4c4b44373f38352c231c110300000000000000000000000e1f2c35384040404040403f3c32251503000000000000000000000000000000031525323c3f40404040404038352c1f0f0000031525323c3f40404040404038352b1e0e000000000000000001132330393c40404040404039362d2010000000000c1d2e3b44484a4a4a4a4a4a4340404040404040404040404040404040404040404040404038352c1f0e000014293e54697e93a9c2b5b1a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b1b5c2a9947f69543f2a140000000000000000000000000011273c51667c91a4b5c9bfb49f8b7d71697e93a8a6917c6e777f89979fb3b3a1988273605544311d080000000000000000091e33485e73889db3c8bea9947e69543f29171b141c201c1408000000000000000000000000000000000000000000000000000000000010253b50657b7b7b7b7b7b7b76614c37210c000c21364c61767a7a7a7a7a7a76614c59626d777e838687888785827d776f645c4b4538281b0b00000000000000000000000000000000000000000000000009151d3038454b535a62686c6f717374737271706e6b68625a4835200b000000000000000a151d2b353839464b4d4f4d4c463a39362d1f170b000000000000000000000000000000000000000000000000000000000000000000080c171f212727313538393938373631272923211a0f0900000000000000000000000000000e1a21232b2b2b2b2b2b2a272015070000000000000000000000000000000000071520272a2b2b2b2b2b2b23211a0f01000000071520272a2b2b2b2b2b2b2220190e0000000000000000000005131e25272b2b2b2b2b2b24221b10020000000000101d2930333535353535352e2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b23211a0e00000014293e54697e93a9b5a49c949494949494949494949494949494949494949494949494949ca4b5a9947f69543f2a14000000000000000000000000000b20354b6073869cb1bccdbaa99f92867e8298adaf9a84848a959ea7b1bdbfb2a0988373604b35200b00000000000000000b20354a60758a9fb5cabfaa95806a554133293026303530261808000000000000000000000000000000000000000000000000000000000e23374b5d65656565656565615847331f0a000a1f33465861656565656565615847484c5962696d71727372706d6862594f4a3e31271a0b000000000000000000000000000000000000000000000000000001121a2832363c484d52575a5c5e5e5e5d5c5b5956534d483c2b19050000000000000000020e19202228323638393836332924211a0f04000000000000000000000000000000000000000000000000000000000000000000000000040a0c12151d202223242322201d15140e0c060000000000000000000000000000000000060c0e16161616161615130c0300000000000000000000000000000000000000030c12141616161616160e0c06000000000000030c12151616161616160d0b05000000000000000000000000010a10121616161616160f0d0700000000000000000c151b1e202020202020191616161616161616161616161616161616161616161616160e0c060000000014293e54697e93a9b19c867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f869cb1a9947f69543f2a1400000000000000000000000000081c304354667c919eb0bec7bab4a49c9498a0b2b4a29a999fa9b3b9c5c5b8b39f978476614b36210c00000000000000000a1f354a5f748a9fb4c9c5b09a85705f4c473a4536434b4336261401000000000000000000000000000000000000000000000000000000081c2e3f4b505050505050504c473a2a1704000417293a464c4f4f4f4f4f4f4c473a343b484d54585c5d5e5d5b58534d483b362d1d150a00000000000000000000000000000000000000000000000000000000000a161e212b35383d41454748494948474643403d38352b1e0e0000000000000000000000050b0d161e21232423211f170e0c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0d0e0f0e0c0b08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014293e54697e93a9ae99836e69696969696969696969696969696969696969696969696e8398aea9947f69543f2a1400000000000000000000000000011426364c5e6b8096a0b4bac7c2b5b1a9adb2bec0b4afaeb4bac7c8bbb4a79e918173615746321e0a0000000000000000081d32485d72879db2c7c8b4a2927d6b61585a5b5c54605443301c0d0000000000000000000000000000000000000000000000000000000011212e373b3b3b3b3b3b3b37332a1c0c0000000b1b2933363a3a3a3a3a3a37332a202b34373e434648484846423e37342b221b10020000000000000000000000000000000000000000000000000000000000000002090e192022282c2f323334343332312e2b282220190e00000000000000000000000000000003090c0d0f0e0c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080d0f2020202020202020202020201f1f1d1b1915110c0a040000000000000000000000000000000000000006121b20202020202020202020202020202020202020202020202020202020202020202017150f0500000000000b151b1d20202020202020202020202020202020202020202020202020202020202017150f0500000014293e54697e93a9ae99846e59545454545454545454545454545454545454545454596e8398aea9947f69543f2a14000000000000000000000000000008182f404a607282939fa9b4bac7c6bec2c6cfd0c8c4c3c4c5b8b3aa9f97897c6c60554639291603000000000000000003182e43586d8298adc0d0c0b49f8d8076716f70717373604b3b2a180500000000000000000000000000000000000000000000000000000003111c2325262626262626211f170c00000000000b171f21252525252525211f170d182022292e31323332302d282220180d07000000000000000000000000000000000000000000000000000000000000000000000000050b0d13171a1c1e1f1e1d1c1b1916130d0b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e10171917100e09000000000000000002101b2225353535353535353535353535353433302e2a26211f170c0a040000000000000000000000000000000616242f3535353535353535353535353535353535353535353535353535353535353535352d2a2217090000000f1d2830333535353535353535353535353535353535353535353535353535353535352c2a221709000014293e54697e93a9ae99846e59443f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f43596e8398aea9947f69543f2a14000000000000000000000000000000121c304354606d7e8b979fa9adb2b7c3c3cccac5b8b3afaba79e968b8177665e4b4437291b0b0000000000000000000010253b50657b90a2b4c4cfbcab9f958b868585868889745947341f0b0000000000000000000000000000000000000000000000000000000000080e101010101010100c0a0400000000000000040a0c1010101010100c0a0400050b0d14181c1d1e1d1b18130d0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e1215171819191815130e0b08010000000000000000000000000000000000000002111c23252c2e2c26231c110300000000000010202e373a4a4a4a4a4a4a4a4a4a4a4a4a4a49484643403b373329211f170b0400000000000000000000000000122434424a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a423e35271705000b1d2d3a44484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a413e342717050014293e54697e93a9ae99846e59442f2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2e43596e8398aea9947f69543f2a1400000000000000000000000000000000132536434a606979828a93989da5aaafbcb9aca69e9a95908981786c61584d403127190b00000000000000000000000e23384b5d6f849aa6b7c4c9bcb4aa9f9b9a9a9b9e8c77624c37220d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e1316171919181613100c0a030000000000000000020b0b0b0b0b0b0b0b00000000000000000000000000000000000000060c0e192023272a2d2e2e2e2d2b2824201c140807000000000000000000000000000000000a161e2e373b4143413b382f1e160a00000000081b2e3e4b4f6060606060606060606060605f5e5d5b5855514c473a3633291f170c0000000000000000000000001b2f42525e606060606060606060606060606060606060606060606060606060606060606057524535220f0015283a4b585d60606060606060606060606060606060606060606060606060606060606057524534220f0014293e54697e93a9ae99846e59442f19141414141414141414141414141414192e43596e8398aea9947f69543f2a140000000000000000000000000000000008182530424f5b636d777e83878b959eafac9b928885807b746c625a4c473a301d1509000000000000000000000000081c2f3f4d6278889da6b2bfc9c8bbb4b1afb0b1a48f7a644f3a250f0000000000000000000000000000000000000000000000000000000000000000000000040e14162020202020202020202020202020202020202020202020202020202020202019171107000000000000000000000000000000000000000000000000000000000000071117191a1a1a1a1a1a0f0d070000000000000000000000000000050b0f1a2123282b2d2e2e2d2b2925211e170d0b050000050f1517202020202020202013110b0200000000000000000000000000050e1921232c35383c3f4243444342403d39353026221b1007000000000000000000000000000a1a28323f4b50575957504c3f32281b0a0000000d22374b5c64757575757575757575757575747472706e6a666158534c463a332a1c13020000000000000000000020354a5e7075757575757575757575757575757575757575757575757575757575757575756c63523e2a15001b30445869727575757575757575757575757575757575757575757575757575757575756c63523e2a150014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a14000000000000000000000000000000000008131c323d494e5962696d72757f95aaa7927d736f6b6560554d493c332a1c12010000000000000000000000000000112035485a647a8898a0adb4b9c6bfc0c1c0bca7927d67523d281200000000000000000000000000000000000000000000000000000000000000000000081621292b353535353535353535353535353535353535353535353535353535353535352e2b24180a000000000000000000000000000000000000000000000000000000000b19242c2f2f2f2f2f2f2f24221b100200000000000000000000020d1920222c35393e4042434342413e3b363329221f180d0617222a2c353535353535353528261f140600000000000000000000000d19202c35383c494d5255575859585755524e4b4336362d211a0f010000000000000000000002162838454b5d656c6e6c655d4b453928160300000f253a4f647a8a8a8a8a8a8a8a8a8a8a8a8a8a898885837f7b76706961584c473a311d150a00000000000000000020354a60758a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a816c57422d17001d33485d72878a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a816c57412c170014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a1400000000000000000000000000000000000000141f2c363b474c535856687e93a8a6917c665a56504b4437352b1f180c0000000000000000000000000000000005192b3c4a5c6477838f989ea8a8aaabababa9a695806a55402b15000000000000000000000000000000000000000000000000000000000000000000041626333d404a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a434036281807000000000000000000000000000000000000000000000000000007192936404444444444444439362d20100000000000000000000a151d2b34383d494e5356575958575653504b463937342a201927343e414a4a4a4a4a4a4a4a3e3a31241402000000000000000004121d2b343c494d565a63676a6c6d6e6e6d6a686360544f4a3e362d1f1400000000000000000000091e324556606e7b8183817b6e605745321e0f00000f253a4f647a8f9f9f9f9f9f9f9f9f9f9fa99f9e9d9b9895908b857e766c61584e4232281a0b000000000000000020354a60758a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f97816c57422d17001d33485d72889d9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f96816c57412c170014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a1400000000000000000000000000000000000000010f1a212a34373e3853687e93a8a6917c6651403b35312720190e040000000000000000000000000000000000000e1e2d3d4a59626e7a82898f929596969594918d826d58422d180000000000000000000000000000000000000000000000000000000000000000000e21334451566060606060606060606060606060606060606060606060606060606060606059534636241100000000000000000000000000000000000000000000000000001124364754595a5a5a5a5a5a4f4a3e2d1b07000000000000000e1a28323c484d565b63686b6c6e6e6d6b68656157544c483b352b344552576060606060606060534e42311f0b00000000000000061422303b484d5b636b72787c7f8283838382807d79746d645c4e4a3d321c130800000000000000071a2d3d4b60748290969896908375604b3e2d1a07000f253a4f647a8fa4b5b5b5b5b5b5b5b5b5bab4b3b2b0adaaaa9f9a938a817668604b4538291b0b0000000000000020354a60758a9fb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac97826c57422d17001d33485d72889db2b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac96816c57412c170014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a14000000000000000000000000000000000000000000060d181f22293e53687e93a8a6917c66513c27201d1509060000000000000000000000000000000000000000000f1f2d3b484c5c646d757a7d808181807f7c786d63523f2a1600000000000000000000000000000000000000000000000000000000000000000014293d51626b757575757575757575757575757575757575757575757575757575757575756e6453402b170000000000000000000000000000000000000000000000000002172c4054656e6f6f6f6f6f6f645c4a36220d0000000000000e1e2c38454b5a626b73787d8082838382807e7b76706962594d493c4352636c757575757575757568604e3a261100000000000005142432404d59626d7880878d9194979899989795928e88827a6f635b4f43302518080000000000000c21364a5b6d8297a0acaeaca198826d5c4a36210d000f253a4f647a8fa4b9cacaccc3bfbfbfbfbfc0c1c4c5c3c8bbb4b0a89e96897d6d6056463929180800000000000020354a60758a9fb5cacacaccc3bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfac97826c57422d17001d33485d72889db2c7cacacec4c1bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfac96816c57412c170014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a140000000000000000000000000000000000000000000000050b13293e53687e93a8a6917c66513c271108010000000000000000000000000000000000000000000000010f1d2a343e4b4f556064686a6b6c6b6967625a524535230f000000000000000000000000000000000000000000000000000000000000000000162b40566b808a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a826e59432e190000000000000000000000000000000000000000000000000004192f44596e838484848484847a644f39240f00000000000d1d2c3c4956606c7880888e9395979898979693908a857f776d625a4b50616c818a8a8a8a8a8a8a8a7e68533e2813000000000001132332424f5f6778828c969da5a7aaacadaeadacaaa7a69e978f847969614a433625130000000000000e24394e63798ea0b1bec3bfb2a08e79644e39240f000f253a4f647a8fa4b9cfccbcafaaaaaaaaaaabacaeb2b6c3c4cac6b9b4a79e92827461574636261401000000000020354a60758a9fc1d2dbccbcafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa97826c57422d17001d33485d72879db2c7ddcebdb1acaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa96816c57412c170014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a140000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66513c27110000000000000000000000000000000000000000000000000000000d181f2e3737444b4f535556565654514d493c35271706000000000000000000000000000000000000000000000000000000000000000000162b40566b80959f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f98836e59432e19000000000000000000000000000000000000000000000000000a1f354a5f748a9999999999907b66503b2611000000000a1a2b3b495a6374818b969ea6a8abacaeadacaba8aa9f9b948b82786a60606a7f959f9f9f9f9fa095806b604e3a261100000000000f1f30414f60697c89989fabb2b6c3bfc1c1bfc0c2bfc4b8b3aca29a8b7f6c605443301c120000000000142a3f54697f94a9beced8cfbea9947f6a543f2a15000f253a4f647a8fa4b9d4c4af9e95959595959597999ca5a7afb4c0c9c5b9b3a0988475615443301c10000000000020354a60758aa3b5c9cebdaf9e959595959595959595959595959595959595959595959595816c57422d17001e33485e73889db3c9dac4b19f9795959595959595959595959595959595959595959595816c57412c170014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a140000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66513c27110000000000000000000000000000000000000000000000000000000005101b222731363a3d404141403f3c38352c1e170900000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ae98836e59432e19000000000000000000000000000000000000000000000000000a1f354a5f748a9fafafafa5907b66503b2611000000021628384859637886969faab3b8c5c0c1c3c2c2c0c8bbb4b0aa9f978b7f73687e939dafbdc2b4a2988272604a42311f0b00000000061a2c3d4d5f697e8d9ea7b5bcc9c5b8b3aeacaaabacb1b5bcc9c0b3a99f948172604a41301b0b00000000162b40566b8095abc7d7e8d8c7ab96806b56412b16000f253a4f647a8fa4b9cbb7a6958080808080808184878c929aa2b0b5c1ccbeb2a2998372604b3e2d1b07000000001c31465b71869bb0c6c4b19f958080808080808080808080808080808080808080808080807c66513b26110020354a60758a9fabbccfc1ac9781808080808080808080808080808080808080808080807c66513b26110014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a140000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66513c27110000000000000000000000000000000000000000000000000000000000000809151d2025282b2c2c2b2a272320190e000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abbcbcbcbcbcbcbcbcbcbcbcc0cacacacad4cbc8bcbcbcbcbcbcbcbcae98836e59432e19000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c4bba5907b66503b2611000000091e3245566277879ca4b4bbc8c8bbb4b1aeadadafb2b7c4c8bbb4a99f94857e8d9fb4bcc4b5a49a847460544330241402000000000c2135495b677d929fabb9c5c1b5b0a79e99969595979b9fabb4bac7bab49f96806b5f4d3929170300000013293e53687e93a9baccd6cdbaa9937e69533e2914000f253a4f647a8fa4b9c8b29d88736a6a6a6a6b6c6f72777d848f9ba3b0bcccc0b3a195806b5c4a36221100000000162b40566b8095abc0c1ac96816c6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a665e4c38240f0010253a50657b8d9fb5c4c3ad98836e6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a665e4c38240f0014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a140000000000000000000000000000000000000000000000000013293e53687e93a8a6917c66513c2711000000000000000000000000000000000000000000000000000000000000000002080b0f131516171614120d0c0600000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095a7a7a7a7a7a7a7a7a7a7a7a7acb9caddd4c4b7b2a7a7a7a7a7a7a7a7a798836e59432e19000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b2611000004172a3a4b6074869ca5b5c2c5b8b3aa9f9b9997989a9da6a9b2b7c4bab4a29a939fabbcc6b7a69c86766156453625130600000000091d2f404e63798b9fb4bcc9bcafa39b908983817f8082868c969fa9b8c5bdb09e917c675746331e0a0000000d22374d62778a9fb4b9c6b9b49f8b78624d38220d000f253a4f647a8fa4b9c8b29d88735d5555555657595861686f7a85969eafbbccbfb49f8c7a644f402f1c09000000162b40566b8095abc0c1ac96816c5755555555555555555555555555555555555555555555514c402f1d09000e23374b5d6c8197a6b7c6b2a0917c665755555555555555555555555555555555555555514c402f1c090014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a140000000000000000000000000000000000000000000000000013293e53687e939494917c66513c27110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b80929292929292929292929292929bacbfd0cbb7a69d92929292929292929292826e59432e19000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b261100000a1f3347586a7f94a4b5c3c1b5a79e948b8683828385888d949da6b4bbc0b4b0a8b4bcc8b9a89d88786258463827180800000000000f24384c5e70859aa9bacdbbae9e95857b746e6c6a6b6d7177818b9ea6b8c7bcb39e8876614c3828150200000b20344859697f939ea8a8a89e947f6a5a4834200b000f253a4f647a8fa4b9c8b29d88735d48404040423a474c525c647380949dafbecebbaa9b85705e4c38230d000000162b40566b8095abc0c1ac96816c57414040404040404040404040404040404040404040403b382f22120000081c2e3f4c6176889db3bfbeb29d8776614c3f40404040404040404040404040404040403b382f2212000014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a14000000000000000000000000000000000000000000000000000f24394e647a7f7f7f7f79634d38230e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d121617191918181614110e0b0801000000000000000f24394e647a7d7d7d7d7d7d7d7d7d7d7d7d7d92a1b3c7c8b29d887d7d7d7d7d7d7d7d7d7d7a654f3a2510000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b261100000c21374c6176899eb3c2c3b5a39b897e76716e6d6d6f73787f87949faabbc8c5bdcacebbaa9e8a7a645a483a291a0a000000000005182a3b51667b90a2b4c7c0ae9d947f706660555755565759626c7a889ea9baccb8a795806a5645321d09000005182b3b4f61697e899193918a7f6a614f3c2b1905000f253a4f647a8fa4b9c8b29d88735d48332b2b2c2a33373e4a55606b7f94a0b2c4c8b4a3907b65503b2b18050000162b40566b8095abc0c1ac96816c57412c2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b26241d1204000000111f334658677c91a1b3c5b7a697816c5d4b38282b2b2b2b2b2b2b2b2b2b2b2b2b2b2b26241c1204000014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a14000000000000000000000000000000000000000000000000000d21364a5c646a6a6a6a635b4935210c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0d181f22272b2c2e2e2e2d2b292723201d14100e08000000000d21364a5c646767676767676767676767676f8499afc4c0ab95806b676767676767676767655d4b37230e000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b2611000013283d52687d92a8b9cbb7a59b85776961585958585a5a636a757f8c9fb4c9dad3dfcab49f8c7c665c4a3c2b1c0c0000000000000b1f3448596f849aafc0c7b3a2947f6a61504b443740403b484d5c64798a9fb4c4c5b39e8875604b36200b0000000d1d32434f6069767c7e7c7669614f43321d0d00000f253a4f647a8fa4b9c8b29d88735d48331e1617181f222e37444b616d8298a6b7cbc1af99846f594834200b0000162b40566b8095abc0c1ac96816c57412c1715151515151515151515151515151515151515110f0900000000000417293a4d5f6e8399a7b9c4b59f8d7b655645321d1515151515151515151515151515110f090000000014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a1400000000000000000000000000000000000000000000000000071a2d3e4a4e545454544d493c2c19060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004121d242a34373d404243434342403e3c3835312625221b10020000071a2d3e4a4e52525252525252525252525a6f8499afc4c0ab95806b5652525252525252524f4b3f2e1c08000000000000000000000000000000000000000000000000000a1f354a5f748a9fb4c9bba5907b66503b26110004192e43596e8398aec6c7b29d877662594c473a42433c494d56606a7b90a5bbd0e5d2bda8927d685e4c3e2d1e0e000000000000000d22374c62778c9fb5cac1af9a8472604a433531262a2b2b343e4a5b697e93a6b7cbb8a6917c66513c261100000000142532424e586166686661584f433225150000000f253a4f647a8fa4b9c8b29d88735d48331e0800040a10192631434c6176889db3c5cab49f8b77624d37220d0000162b40566b8095abc0c1ac96816c57412c17020000000000000000000000000000000000000000000000000000000b1b30404d6277899eb3c0bcab9c8674604b3d2d19090000000000000000000000000000000000000014293e54697e93a9ae99846e59442f19040000000000000000000000000004192e43596e8398aea9947f69543f2a1400000000000000000000000000000000000000000000000000000f202d36393f3f3f3f38352c1e0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c171f30393b484c525557585958575654514e4b44373a372e21100000000f202d36393d3d3d3d3d3d3d3d3d3d445a6f8499afc4c0ab95806b56403d3d3d3d3d3d3d3a372e211100000000000000000000000000000000000000010304030200000a1f354a5f748a9fb4c9bba5907b66503b261100031729395d72889db2c7baa9927d6758473b33292d2e2c3544556074849aafc5dadfcab59f8a75604e402f200f000000000000000013283d52687d92abbcc8b4a38e7a64544330201d14151618202d3d4b6074889db3c8c5ac97826d5738281502000000071424313a464c5153514c473a322415070000000f253a4f647a8fa4b9c8b29d88735d48331e080000000009141e334657687e93a6b8cbbcab937e69543626140100162b40566b8095abc0c1ac96816c57412c1702000000000000000000000000000000000000000000000000000000001220344859687e93a2b4c7b6a495806b5b4a3726140100000000000000000000000000000000000014293e54697e93a9ae99846e59442f19090909090909090909090909090909192e43596e8398aea9947f69543f2a140000000000000000000000000000000000000000000000000000010f1a21242a2a2a2a2321190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1c2a33404d515962676b6c6e6e6d6d6b6966636055564f4b3f2e1b080000010f1a21242828282828282828282f445a6f8499afc4c0ab95806b56402b28282828282825231c1103000000000000000000000000000000060c0e13161819181714100b1f354a5f748a9fb4c9bba5907b66503b2611000a1e33465774899fb4c9b49f8a76614b3a2a1f17182433444b60738399a2b4c8dce5d0bba5907b66503c2c19060000000000000002172d42576c8297acc9c5b09b85705c4a3625130801000005101d3144556b8095aac9c6b19c86715645321d090000000010202d36393e3e3e3e3e38352c1f0f000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000031729394b6075889eb3c8c9ae99846f5443301c0800162b40566b8095abc0c1ac96816c57412c17020000000000000000000000000000000000000000000000000000000005182b3b4a6072849aa9bac2b49f8b79635544311d0e00000000000000000000000000000000000014293e54697e93a9ae99846e59442f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e2e43596e8398aea9947f69543f2a1400000000000000000000000000000000000000000000000000000000070d0f151515150e0c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1d2a3a474c5e6671777c808183838382807e7c7875706b655d4b37220e00000000070d0f12121212121212121a2f445a6f8499afc4c0ab95806b56402b161212121212100e08000000000000000000000000000002090f1a2123282b2d2e2e2c2925201d354a5f748a9fb4c9bba5907b66503b2611000c21364b61768ba9bac7b29d87725746321c0d1323324250626c8197a1b2c0d1cfdad9c4af99846f5a4935200c00000000000000001325365b70869bb0c5bfaa95806a553e2d180800000000000215273750657a90abbccab49f8a75604b36200b000000071b2d3e4a4f53535353534e493d2c1a060000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000b1d3245566c8197acc8c9b49e8974604b35200b00162b40566b8095abc0c1ac96816c57412c170909090909090909090909090900000000000000000000000000000000000d1c30435463798b9fb4c2bbaa9b8573604b3c2c1906000000000000000000000000000000000014293e54697e93a9ae99846e59443434343434343434343434343434343434343443596e8398aea9947f69543f2a14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005182a3b475861707c868c929597989898979593918d8a85807b654f3a25100000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000000000000000000a161e212c35383d41434443423f3b3631274a5f748a9fb4c9bba5907b66503b2611000b20364b60758ba8b9c7b29c87725443301c112130414f606b80959fb1bfcec9bac4c8cab59f8c78634d38230e00000000000000071c30435473889db3babaa5907b66503b2611000000000000000c21364b61768a9fb4cabbaa8d78624d38230d0000000d22364a5c646868686868635b4935210c0000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000215283850657b90aabbccb9a88d78634d38230e00162b40566b8095abc0c1ac96816c57412c1f1f1f1f1f1f1f1f1f1f1f1f1f1f14120c020000000000000000000000000000132536495b6a7f95a4b5c8b5a3947f695a49352013000000000000000000000000000000000014293e54697e93a9ae99846e59494949494949494949494949494949494949494949596e8398aea9947f69543f2a14000000000000000000000000000002090b171717171717170b090300000000000000000000000000000000000000000000000000000000000000040a0c11151718191a1a14120c0300000000000000000000000000000000000000000b1f344759627684919ba3a7aaacadaeadacaba9a6a99f9b96826d57422d180000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000000000000003111a2832363d494e53565859585754504b44374a5f748a9fb4c9bba5907b66503b261100081d31445574899eb3c9b49e8974604a3520202f3f4d5f697e939eafbdc8bbb4a5afb4c0bcab947f6a553a2a18040000000000000b20354a60758a9fa5a5a5a38d78634e38230e000000000000000a1e32465773899eb3c8c8a48f7a644f3a250f0000000f24394f647a7e7e7e7e7e79634e38230e0000000f253a4f647a8fa4b9c8b29d88735d48331e08000000000000000c21364b61768a9fb4cac6a6917c66513c271100162b40566b8095abc0c1ac96816c574134343434343434343434343434343429261f14060000000000000000000000000008182c3d4b6074869cabbcc1b49f8a78624d41311d0d0000000000000000000000000000000014293e54697e93a9ae99846e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e6e8398aea9947f69543f2a14000000000000000000000000000a151d202d2d2d2d2d2d2d211e160a00000000000000000000000000000000000000000000000000000002090c171f21262a2c2d2f2f2f2a27201407000000000000000000000000000000000000091d2f404c6277869aa2b0b5c1c0c1c3c3c2c2c0bec7bab4aa947f6a553f2a150000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000000000000714212f38454b545b63686b6d6e6d6c696560554c475f748a9fb4c9bba5907b66503b261100021527375c71869cb1c6b9a88f7a644f3f2f2d3e4c5d677d8d9fb5bccebbaa9f909aa2b4c9b19b86715947341f0a0000000000000b21364b60758b90909090908c77624c37220d00000000000000031629395d72879db2c7baa5907b65503b2610000000162b40556b8093939393927d68533d28130000000f253a4f647a8fa4b9c8b29d88735d48331e0800000000000000091e32465772879cb1c7bea9947f69543f2a1400162b40566b8095abc0c1ac96816c57494949494949494949494949494949493e3b32241402000000000000000000000000000f1d314556647a8c9fb4c4baa89a846f5f4e3b2a180500000000000000000000000000000014293e54697e93a9ae9983737373737373737373737373737373737373737373737373738398aea9947f69543f2a140000000000000000000000000a1a283236424242424242423632281a0a000000000000000000000000000000000000000000000000000a161e212933363b4041434444443f3b3225140300000000000000000000000000000000000f24384c5e6f849aa4b4c0c9cbc8c6b9b4b2b1b2b3b9c5bca7927c67523d27120000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000000000061425323f4c56606971787d80828383817e7a756b61595f748a9fb4c9bba5907b66503b26110000172c41576c8196acc3c6ad98826d5d4b3e3d4a5c657c8b9fabbccfbbb49f8c7a849aafc4b5a38c77614c37220c0000000000000b20354b60747b7b7b7b7b7b7b73604b35200b00000000000000001c31465c71869bb1c6bba6907b66513b2611000001162b40566b8095a8a8a8937e68533e29130000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000003162839596e8399aec3c0ab96816b56412c1600162b40566b8095abc0c1ac96816c5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e534f42321f0c00000000000000000000000000021527384b5c6c8196a6b7c6b4a2927d685947341f1200000000000000000000000000000014293e54697e93a9b49f8b888989898989898989898989898989898989898989898989888b9fb4a9947f69543f2a14000000000000000000000002152838454b575757575757574b45382816030000000000000000000000000000000000000000000002131a2832363a464c51555658595a5a544f4332200c0000000000000000000000000000000005182a3b51667c91a1b3c2d1c4b7b2a8a89e9c9c9c9ea7a5aaa48f7a644f3a250f0000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000000003142432434f5d65757e868d9296989998979490898077655d748a9fb4c9bba5907b66503b2611000011263b51667b90a4b6cab59f8d7b655c4d495b647a8a9ea9bac9bdaf9d927d697e93a9c6c2a6917c66513c2711000000000000081d3144556065656565656565605544311d0800000000000000071c31465c71869bb1c6bba6907b66513b2611000001162c41566b8196abbda9937e69543e29140000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000000172c41576c8196acc1c2ad98836d58432e1800162b40566b8095abc0c1ac968174747474747474747474747474747474747469604f3b261200000000000000000000000000000a1a2e3e4b6175879db2bec0b39e8977624c40301b0b000000000000000000000000000014293e54697e93a9baa99f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa9baa9947f69543f2a140000000000000000000000091d324556606c6c6c6c6c6c6c605645321e090000000000000000000000000000000000000000000a161e3138454b535861666a6c6d6e6f6f69614f3b2712000000000000000000000000000000000b1f3447596f849aafbfd0c1b5a69d938d89878687898c90949a8c77624c37220d0000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b1601000000000000000000000000000000112132434f61697b87939ca4a8abadaeadaca9a79e96887b65748a9fb4c9bba5907b66503b261100000b20354b6074879cb2bfbcab9e897a675f596379899ea8b9c7bfb19f947f6a63788ea8b9c0ab96806b56412b1600000000000001142637444b505050505050504b443726140100000000000000071c31465c71869bb1c6bba6907b66513b2611000001172c41566c8196abbea9947f69543f2a140000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000000152a40556a7f95aabfc4ae99846f59442f1a0020354a60758a9eb0c3c4b19f968989898989898989898989898989898989897e69533e2914000000000000000000000000000000101e334657667c91a0b2c5b8a798836e5e4c3a2917040000000000000000000000000014293e54697e93a9c7bab4b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b4bac7a9947f69543f2a1400000000000000000000000b20364b60748182828282828175604b36210b00000000000000000000000000000000000000000a1a2832424e56606871767b7f81828484847f69543f2a14000000000000000000000000000000000d22374c62778b9fb5cac9b5a39b877e787472717274777b7f848973604a35200b0000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000000a1a2f3f4f61697f8d9da5b1b6c2c0c2c3c1bfc5b9b3a69e8a79748a9fb4c9bba5907b66503b26110000081d314455677d92a1b3c2b9a79e8a7d706677879da7b8c6c1b3a197816d616074899eb3c4ae99846f593726140100000000000009192631353b3b3b3b3b3b3b35312619090000000000000000071c31465c71869bb1c6bba6907b66513b2611000002172c42576c8197acbfa9947f6a543f2a150000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000000142a3f54697f94a9bec4af9a846f5a452f1a0020354a60758a9fbccdcebdb1a79e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e947f69543f2a14000000000000000000000000000000031729394c5e6e8398a7b8c5b2a0917c665846331f110000000000000000000000000014293e54697e93a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4947f69543f2a1400000000000000000000000c21364b61768b97979797978b76614c36210c0000000000000000000000000000000000000002162838454b6068757e868b90959698999999846f5a452f1a0000000000000000000000000000000012273d52677c92abbccfbcab9b857669625a5d5c5d5861656a6f74605443301c070000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000031628384b5d697f949fabb7c3cac7bab4afacaaaaabaeb2a89a84748a9fb4c9bba5907b66503b26110000011426374a60728399a4b4c0b9a89e92847b869ca5b7c5c3b5a3998373604b5470859aafc5b29d87725544311d080000000000000009141d2026262626262626201d1409000000000000000000071c31465c71869bb1c6bba6907b66513b2611000002172d42576c8297acbfaa957f6a55402a150000000f253a4f647a8fa4b9c8b29d88735d48331e08000000000000000014293e54697e93a9bec5af9a85705a45301b0020354a60758a9fb5cadbcec5b9b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a9947f69543f2a14000000000000000000000000000000000b1b2f404c6277899eb3c0beb29d8876614c3f2e1a0a00000000000000000000000014293e54697f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f7f69543f2a1400000000000000000000000c21364b61768ba0acacaca18b76614c36210c000000000000000000000000000000000000000e1e324556606d7e88939b9fabaaabadaeaf9c87725c3a291704000000000000000000000000000001172c41566c8196abc9cab59f8c7963584d483c473a474c505555605544362513000000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000000091e324556657b8d9fb5bcc9c5b9b3a99f9a97959596999da5a28c778a9fb4c9bba5907b66503b2611000000091c3043546175869aa2b4bbb9b4a29a909ca4b5c3c5b7a59b8575615544576d8297acc2b49f8a75604b35200b000000000000000001080b101010101010100b080100000000000000000000071c31465c71869bb1c6bba6907b66513b2611000002182d42576d8297acc0aa95806b55402b160000000f253a4f647a8fa4b9c8b29d88735d48331e08000000000000000014293f54697e94a9bec4af9a856f5a45301a0020354a60758a9fb5cadfdacdc4c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0bea9947f69543f2a140000000000000000000000000000000000121f344759687d92a2b4c7b7a697816c5d4b3828160200000000000000000000000d22374c62777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a77624c37220d00000000000000000000000c21364b61768ba0b6c1b6a18b76614c36210c0000000000000000000000000000000000000e1e32434b607482929ea6b1b5bcc9c1c0beb49e89745846331f0a0000000000000000000000000000051a2f445a6f8499afc4c5b09b85705b4a3a352b312a33373b37444b4437271808000000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b1601000000000000000000000000021527384b6075879dabbccfc2b5a79e938a8481807f8183878e99968196a9bacdbba5907b66503b2611000000001325364657617684969faab4bab4afa6b1b5c2c7b9a79d877762574637556a7f94aabfbcab8c77624c37220d00000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000003182d43586d8298adc0ab96806b56412b160100000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000000152a3f556a7f94aabfc4ae99846f59442f1a0020354a60758a9fc2d2dbcdbcb0ababababababababababababababababa9947f69543f2a14000000000000000000000000000000000005182a3b4e606f849aa9bac4b59f8d7b655645321e0f00000000000000000000000b1f34485962646464646464646464646464646464646464646464646464646464646464646464646462594834200b00000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000006192b3c4f616e83979fb3b8c4c4b8b3adaaa9a8a88b76614c36210c0000000000000000000000000000071c32475c71879cb1c6c0ab96806b563d2d20191c181f22262731363127190900000000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b1601000000000000000000000000091d3145566a7f94a5b7c9c3b5a49c897e766f6c6a6a6b6e72798394969eb0c7d7bba5907b66503b2611000000000818293947586174808b989fa9bac5bbc6c9c9baa99e8979635948393e53687d93a8bdc9a38e79644e39240f00000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000003182e43586d8398adc0ab96816b56412c160100000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000001162b41566b8096abc0c3ae98836e59432e190020354a60758aa4b5c9cebdb09e9696969696969696969696969696969696947f69543f2a140000000000000000000000000000000000000d1d31424d63788b9fb4c2bcab9c8674604b3e2d19090000000000000000000005182a3b484c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4c483b2b180500000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000000b2035485a697f94a1b1bec3b7b2a69d98959493938e79634e39240e0000000000000000000000000000091e33495e73889eb3c8bda8937d68533e28130500040a0c10151d201d15090000000000000000000000000000000000051a2f445a6f8499afc4c0ab95806b56402b16010000000000000000000000000b20364b6075889db3c3cab6a59c867769615757555556595c646e7f94a2b3c7d0bba5907b66503b261100000000000b1b2a3a4756606b78838b9fb4c9d0dbcfbcab9f8b7b655b493b2b3c51667c91a6b9b9a58f7a65503a251000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000004192e43596e8398aec1ac96816c57412c170200000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000003182d42586d8297adc2c1ac97816c57422c17001c31475c71869cb1c6c4b19f968081818181818181818181818181818181807b65503a251000000000000000000000000000000000000000132035495a6a7f94a3b5c8b6a495806b5c4a37261401000000000000000000000d1d2a34373a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a37342b1d0d0000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000031729394d62788b9fb4bfc2b5a59d918883807e7e7e7e77624d37220d00000000000000000000000000000a1f344a5f74899fb4c9bba6917b66513c261100000000000002080b080200000000000000000000040a0c0d0d0d0d0d0d1a2f445a6f8499afc4c0ab95806b56402b160100000000000000000000000012273c51677c91a6b8cbc0b29d877762594c46394040413e4a4f616f849aafc4d0bba5907b66503b26110000000000000c1c2a38454b5b636e788da2b7cdcfbeb59f8d7d675d4b3d2c263b50667b90a3a3a3a3907b66503b261100000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000004192e44596e8399aec1ac97826c57422d170200000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000005182b3b5a70859aafc5bfaa95806a55402b1500162b40566b8095abc0c1ac96816c6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b655d4b37230e0000000000000000000000000000000000000006192c3c4b6073869baabbc3b49f8c7a645544311d0e00000000000000000000000d181f2225252525252525252525252525252525252525252525252525252525252525252525252220180d000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000a1e3346576c8196aabbc7b5a49c877c746e6b6969696962594834200b00000000000000000000000000000a1f354a5f748a9fb4c9baa5907b65503b261000000000000000000000000000000000000000000b171f21232323232323232f445a6f8499afc4c0ab95806b56402b16010000000000000000000000061a2c3d586d8398adc4c8b4a2907b6659483b33292b2a2c2d364351667b91a6bbd0bba5907b66503b2611000000000000000c1a27313c4b5d6d8297acc2d2c2b2a0947f6a5f4d3f2e1f253b50657b8e8e8e8e8e8e7c66513c261100000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000004192f44596e8499aec2ad97826d58422d180300000f253a4f647a8fa4b9c8b29d88735d48331e08000000000000000b2034485973889db3c8bda8937d68533e281300162b40566b8095abc0c1ac96816c5756565656565656565656565656565656504b3f2e1c0800000000000000000000000000000000000000000e1d314455647a8c9fb4c3bbaa9b8573604b3c2c19060000000000000000000000050b0d0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0d0b0500000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000c21364c6176899eb4c8baa99c867767605455545353534d483b2b180500000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000b1b2933363838383838383838445a6f8499afc4c0ab95806b56402b160100000000000000000000000c2135495b73889eb3c8c9af9a846f5e4c3a2a1e171515161b21374c61768ca1b6cbbba5907b66503b261100000000000000000a1c304354657b8f9fb1c5c7b5a498826e614f4130211121364b617579797979797976614c36210c00000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000051a2f445a6f8499afc2ad98826d58432d180300000f253a4f647a8fa4b9c8b29d88735d48331e08000000000000000d22374c62778ca6b7cbc3a48f7a654f3a251000162b40566b8095abc0c1ac96816c57414141414141414141414141414141413a372e2111000000000000000000000000000000000000000000011527374a5c6b8196a5b7c8b5a3947f695a493520130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000011263b51667b90a8b9c9b49f8a7963594b43363f3e3e3e37342b1d0d0000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000417293a464c4d4d4d4d4d4d4d4d4d5a6f8499afc4c0ab95806b56402b160100000000000000000000000e23384e63788da6b8cbbcab927d6852402f1c0d030000000a1f334758758a9fb5cabba5907b66503b261100000000000000000b20354b6073859bb1bdcdbaa99c8675604b43322313091e32465761646464646464615846331f0a00000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000051a2f455a6f849aafc3ad98836e58432e190300000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000316283951677c91a6c4cab6a58c76614c37210c00162b40566b8095abc0c1ac96816c57412c2c2c2c2c2c2c2c2c2c2c2c2c2c2c25231c11030000000000000000000000000000000000000000000009192d3e4b6175879db2bec1b49f8a78634d42311d0d00000000000000000000070c0e20202020202020200a04050e1417202020202017150f05040a20202020202020200f0d07000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000001162b40566b8095abc6c7ac97816c5b493b3026292929292220180d000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000a1f33465861626262626262626262626f8499afc4c0ab95806b56402b1601000000000000000000000011273c51667c91a6c5cab49f8b76614c362112000000000004172a3a60758a9fb5cabba5907b66503b261100000000000000061a2c3d51677c91a3b5c9c2b49f8b796357453225150503162839464b4e4e4e4e4e4e4c463a29170400000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000051b30455a70859aafc3ae99836e59442e190400000f253a4f647a8fa4b9c8b29d88735d48331e08000000000000091e3245576d8298adc2c7b29d87725847331f0a00162b40566b8095abc0c1ac96816c57412c1716161616161616161616161616100e0800000000000000000000000000000000000000000000000000101e324657667b90a0b2c5baa99a846f604e3b2a180500000000000000010f1a212435353535353535351f181622292c35353535352c2a2217171f353535353535353524211a0f0100000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000050b1b30455a70859aafc5baa98f7a644f3d2c1c14141414140d0b0500000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000c21364c61767878787878787878787878869cb1c7c1ac97826c57422d17020000000000000000000000152a3f546a7f94a9bfc7b29c87725846331f0a00000000000020354a60758a9fb5cabba5907b66503b2611000000000000000c2135495b70859bb0c1c9b5a4947f6a5b493928160700000b1b2832363939393939393633291b0b0000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000061b30455b70859ab0c4ae99846f59442f1a0400000f253a4f647a8fa4b9c8b29d88735d48331e080000000000031628384b6075899eb3c9c7ad97826d583a2a170400162b40566b8095abc0c1ac96816c57412c170201010101010101010101010100000000000000000000000000000000000000000000000000000000031628394c5e6d8298a7b8c7b4a2927d685948341f12000000000000000f1f2d36394a4a4a4a4a4a4a4a332a26343e414a4a4a4a4a413e342729334a4a4a4a4a4a4a4a39362d200f00000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000030d181f222b485d72879db2c7b49f8a75604b362220180d03000000000000000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000152a3f556a7f8d8d8d8d8d8d8d8d8d8d8d9ca4b6cac5b19f8a75604a35200b0000000000000000000000172c41566c8196abc1c3ae99836e593a29170400000000000b20354a60758a9fb5d7bba5907b66503b2611000000000000000e23384e63788da2b4c8c5b19c8674604b3d2c1b0a000000000b161e21242424242424211f170b000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000061b31465b70869bb0c4af9a846f5a452f1a0500000f253a4f647a8fa4b9c8b29d88735d48331e080000000001111e324556687e93a7b9ccbaa9927d67523d27120000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000b1b2f404c6177889eb3bfc0b39e8977624c40301c0c0000000000071a2d3d4a4e606060606060605e473a344451566060606060575245343a465e606060606060604e4a3e2d1a07000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000b161e2a34373b485473899eb3c6b19c867155483b37342b1e160b0000000000000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000152a3f556a7f94a2a2a2a2a2a2a2a2a2a2b1b6c2d3cebd9f8a75604a35200b0000000000000000000000182e43586d8398adc2c1ab96816c56412c170000000000000b20354a60758aa9bacdbba5907b66503b261100000000000000152a3f546a7f94a9c0ccb8a7917c675544311f0e00000000000003090c0f0f0f0f0f0f0c0a0400000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000061c31465b71869bb0c4af9a856f5a45301a0500000f253a4f647a8fa4b9c8b29d88735d48331e0800000108141c2f404b6075879db2c5c9b49f8a76614b36210c0000162b40566b8095abc0c1ac96816c57412c1702000000000000000000000000000000000000000000000000000000000000000000000000000000000000111f334758677d92a1b3c6b9a798836e5e4d3a291704000000000c21364a5b70757575757575757058473e51626c75757575756c63523e46587075757575757575705c4a36210d000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000010f1b28323b474c545962748b9fb4c5b09a85706259554c483b32281b1002000000000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000152a3f556a7f94aab7b7b7b7b7b7b7b7b7c7cad3cfcebe9f8a75604a35200b0000000000000000000000192e44596e8399aec3c0aa95806b55402b160000000000000a1f354a5f748a9fb4c9bba5907b66503b2611000000000000021527375a6f849aafc4c8b39e8874604b3727150000000000000303030303030100000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000071c31465c71869bb1c5b09a85705b45301b0600000f253a4f647a8fa4b9c8b29d88735d48331e0a0c0e141c26303f4c5e6b8095a5b7cbc0ae98836e5746331e0a0000162b40566b8095abc0c1ac96816c57412c170a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a010000000000000000000005070a0a0a0a0a0a0a0a0a0a0a04182a3a4d5f6f849aa8bac5b2a0917c665846331f11000000000e24394e63798a8a8a8a8a8a8a77614c41566c818a8a8a8a8a816c57414c61768a8a8a8a8a8a8a7a644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000003111f2d39464b59626a71777d92abbcc8b4a2917d77726a62594b46392d2011030000000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000152a3f556a7f94aababababababababababababababab2a08a75604a35200b00000000000000000000001a2f44596f8499aec4bfa9947f6a543f2a150000000000000a1f354a5f748a9fb4c9bba5907b66503b2611000000000000081d31445573889eb3c8c3ae98836e55443119090000000a101219191919191916140e0400000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000071c32475c71879cb1c5b09b86705b46311b0600000f253a4f647a8fa4b9c8b29d88735d4833171e2124263036434b5d667c8d9fb4c3c9b4a28f7a644f392917030000162b40566b8095abc0c1ac96816c57412c1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f17140e0500000000000a141a1c1f1f1f1f1f1f1f1f1f1f1f1f1f1c30414d62788a9fb4c1bfb39d8876614c3f2e1a0a0000000e24394e63798e9f9f9f9f9f8c77614c41566c81969f9f9f96816c57414c61768b9f9f9f9f9f8e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000111212e3d4a57616b777f868c929badc9d1c0ac9b918c877f776b61574a3e2e21110100000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000152a3f556a7f94a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a498826d58432d180300000000000000000000001a2f44596f8499aec4bfaa957f6a55402a150000000000000a1f354a5f748a9fb4c9bba5907b66503b26110000000000000b20364b60758ba6b8cbbfaa957f6a55372715000004121d24272e2e2e2e2e2e2b29211608000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000071d32475c72879cb1c6b19b86715c46311c0700000f253a4f647a8fa4b9c8b29d88735d48342933363936434b5460697b8a9fabbccfbcab9a85705d4b371b0b000000162b40566b8095abc0c1ac96816c57413434343434343434343434343434343434343434342c292216080000000e1c272f3234343434343434343434343434343435495a697f94a3b5c8b7a697826d5d4b3828160300000e24394e63798ea3b5b5b5a18c77614c41566c8196abb5ac96816c57414c61768ba1b5b5b5a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000f1f2e3f4b5c6475808a949ca4a7adbacad7c9b9aca6a49c948a8075645c4b3f2e200f00000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000152a3f556a7f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f806b56402b16010000000000000000000000192e43596e8398aec3c0ab96806b56412b160100000000000a1f354a5f748a9fb4c9bba5907b66503b26110000000000000c21374c61768ca1c5d5bea9937e69543e29140000122230393c434343434343403d3326160400000000000000000000000000000000000000000000000000000000000a0a0a0a0a0a0a1c31465c71869bb1c6bba6907b66513b26110000081d32485d72879db2c6b19c86715c47311c0700000f253a4f647a8fa4b9c8b29d88735d494939464b4e52546066737e8c9fa8bac9c1b49f8c7a644f3f2e1b00000000162b40566b8095abc0c1ac96816c5749494949494949494949494949494949494949494949413e34261605000a1c2c394347494949494949494949494949494949493c4b6073859baabbc4b19f907b655645321e0900000e24394e63798ea3b8cab6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cab9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000b1b2d3d4b5d657a86959fa8b1b6c2cac6c3c2c3c6cac2b6b1a99f96867a655d4b3e2d1c0c000000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000d22384d62787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a78624d38220d000000000000000000000000182d42586d8297adc2c1ac97826c57422d170000000000000a1f354a5f748a9fb4c9bba5907b66503b26110000000000000b20364b60758ba8b9cdbfaa947f6a553f2a15000a1d30404d5158585858585856514433210e0000000000000000000000000000000000000000000000000000080e101f1f1f1f1f1f1f1f31465c71869bb1c6bba6907b66513b26110000081d33485d72889db2c7b19c87725c47321d0700000f253a4f647a8fa4b9c8b29d88735f5f5f5f576163676c747b85949faabac6c3b5a396816c5c4a36201000000000162b40566b8095abc0c1ac96816c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f56514434220e001427394a575c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f55647a8c9fb4cabdb29c8775604b36210b00000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000031729394a5b657b8a9ca4b4bac6c8bbb4b1aeadaeb1b4bbc8c7bab4a49c8a7b655c4a3a2917040000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000b2034485a62656565656565656565656565656565656565625a4835200b000000000000000000000000162b41566b8096abc0c4af9a856f5a3c2c19060000000000081d314455758a9fb4cabba5907b66503b2611000000000000091d32455674899eb4c9c1ac97816c573e2d190d0d24394d5f676e6e6e6e6e6e6b62513d291400000000000000000000000000000000000000000000000003111c2325343434343434343434465c71869bb1c6bba6907b66513b26110000081e33485d73889db2c7b29d87725d48321d0800000f253a4f647a8fa4b9c8b29d8874747474747576797c8188909ba3b4bbc8c3b6a59b8574604b3e2d1b0200000000162b40566b8095abc0c1ac96817474747474747474747474747474747474747474747474746c62513e2914001a2f435768717474747474747474747474747474747474747474748096abc0cab6a596806b56412b1601000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000a1e33465763798a9ea8b6c2c5b8b3aa9f9b9897989b9faab3b8c4c2b6a89e8a7a645846331f100000000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b261000000000000000000000000000000000000005192b3c484d4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d483c2b190500000000000000000000000014293e53697e93a8bec8b39e88735a4935200800000000000b20354b60758aaabbcebba5907b66503b2611000000000000021528385d72879db2c7c6b19c86715c4a37282222293951677d838383838383806b56402b1601000000000000000000000000000000000000000000000011212e373a494949494949494949495c71869bb1c6bba6907b66513b26110000091e33495e73889eb3c8b29d88735d48331e0800000f253a4f647a8fa4b9cbb7a68f8a898989898a8b8e91979da6b0b5c1cbbfb3a59c8778625645322010000000000020354a60758a9eb0c3c4b19f96898989898989898989898989898989898989898989898989816c56412c17001c32475c71868989898989898989898989898989898989898989898c9fb4cad3c3b09e8a75604a35200b000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000071a2d3e4c6176879da8b9c6c0b4a79e948b86838283868b939ea6b4c0c6b9a89d8776614c3e2d1b0700000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000d1d2b34383a3a3a3a3a3a3a3a3a3a3a3a36434b43363a38352b1e0e0000000000000000000000000010263b50657b90a5c3ccb8a78d78634d36261401000000000c21374c61768ca1b6d8bba5907b66503b261100000000000000192e43596e8398aec8c9b5a48e796455453837373846576d82979898989898856f5a45301a0500000000000000000000000000000000000000000000081c2e3f4b4f5f5f5f5f5f5f5f5f5f5f5f71869bb1c6bba6907b66513b26110000091e34495e73899eb3c8b39d88735e48331e0900000f253a4f647a8fa4b9d4c4b7a89e9e9e9e9f9faba3a7acb2b7c4c9c4b7b2a1998778625a4838281502000000000020354a60758a9fbccdcebdb1a89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e97816c57422d17001d33485d72889d9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fabbccfddc8b29d88735d48331e08000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000d21364a5c6c8197a5b7c6c0b4a29a887e77716e6d6e71767e889aa2b4c0c6b7a597826d5c4a36220e00000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b261000000000000000000000000000000000000000000d19202225252525252525252a39464b56546054594e4a3d2f2211000000000000000000000000000c22374c61778ca5b6cac5aa947f6a5443301c0d0000000110253a4f657a8fa4bacfbba5907b66503b26110000000000000013293e53687e93aabbcec2b09a847360564f4d4c4f566175889dadadadad98836d58432e1803000000000000000000000000000000000000000000000e23374b5d65747474747474747474747474869bb1c6bba6907b66513b261100000a1f34495f74899eb4c8b39e89735e49341e0900000f253a4f647a8fa4b9cfd4c6b9b4b4b4b4b4b4bcc9bcc1c8c5c3b6b2a69d928376625a483c2b1a0a00000000000020354a60758a9fb5cadbcec6b9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4ac97826c57422d17001d33485d72889db2b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4bcc9d9d5c8b29d88735d48331e08000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000005192b3c4e64798d9fb5c3c5b4a29a847769615859585958616977849aa2b4c4c3b19f8e7a644f3c2b1906000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000000050b0d101010101010182a3a4757616b7275746e635b4c402f1c0c0000000000000000000000000a1f34475972879cb2c7c6b19c8673604b3c2b1c131011141c304054697e94a9bed0bba5907b66503b2611000000000000000d23384d62788b9fb4c8c8b4a29882756a6462626469748298a6b8c3bfa8937e69533e2914000000000000000000000000000000000000000000000010253a4f657b8a898989898989898989898a8fa3b5c9bba6907b66513b261100000a1f344a5f74899fb4c9b49e89745f49341f0000000f253a4f647a8fa4b9c0c0c3c3c0c0c0c0c0bfbebdc7bab4b0aaa59c93887d6e6158483c2b1d0d0000000000000020354a60758a9fb5cacad3cac6c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0ac97826c57422d17001d33485d72889db2c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b29d88735d48331e08000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000b2035485a6e8399abbcccb8a79a847461594c473a423a474c586174849aa6b8cbbdae99836e5a4835200b000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b261000000000000000000000000000000000000000000000000000000000000a1f334758617580888a898379665e4c3a2a1804000000000000000000000004182a3a576c8196acc2cab6a4927d685a483a3028262626303d4c5e71869bb1c6d0bba5907b66503b2611000000000000000b2035485a6d8298aabbcec0b2a098887f797777797e8698a0b2c4c7b2a18d78624d38230d000000000000000000000000000000000000000000000010253a50657a8f9e9e9e9e9e9e9e9e9e9e9ea8b5c2d2bba6907b66513b261100000a1f354a5f748a9fb4c9b49f8a745f4a26140100000f253a4f647a8fa4abababadb0abababababaaa9a8a5a99f9b958f877e75675f4c463a2b1e0e000000000000000020354a60758a9fbdb5b5c2b6b1ababababababababababababababababababababababab97826c57422d17001d33485d72889dababababababababababababababababababababababababababab9d88735d48331e08000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000d22384d62788c9fb4c9c3b39e89776156473a332a2d2a333a47566176889eb3c3cab59f8c78624d38230d000000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000000000000000000000006192c3c4c617686959d9f9e998a7c665947341f0a00000000000000000000000010253a50657a8fa4b6cac2b39e887862594d403d3b3b36434b5b667c91a3b5c9d0bba5907b66503b26110000000000000006192b3c4e63798b9fb4bdcdbeb2a69d948f8c8c8e939ca4b2bec8baa999836e5a4835200b000000000000000000000000000000000000000000000010253a50657a8fa5b4b4b4b4b4b4b4b4b4b4b9c6d2d0bba6907b66513b26110000081c304354758a9fb5c7b49f8a755544311d0800000f253a4f647a8f95959595989e9595959595959493908e8a85807a736961574d4133291c0e00000000000000000020354a60758a9f9f9f9f9fa49c959595959595959595959595959595959595959595959595816c57422d17001d33485d7287959595959595959595959595959595959595959595959595959595959588735d48331e08000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000005182b3b556a7f95abbccbb7a5937e685947382a1f1718171f2a384758687d92a5b7cabcab95806a553c2b19050000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000000000000000000000c2035495a6e8399a4b2b5b4a99e8977614c37220c0000000000000000000000000b20354a6073879cb1c2cbb8a69c8677665e565250505254606779899ba3b4c1d2bba5907b66503b261100000000000000000e2135495b687e939fb4bac7c4b7b2a9a4a2a1a4a9b2b6c3c4b8aa9f8a78624d3c2b1906000000000000000000000000000000000000000000000010253a50657a8fa5bac0c0c0c0c0c0c0c0c0c9cdcbc8bba6907b66513b261100000b20354b60758aabb2b2b2ab8a75604b35200b00000d22384d62788080808080838a80808080807f7f7d7b7875706b6460544b4639301f170c00000000000000000000172c41566c818a8a8a8a8a8a878080808080808080808080808080808080808080808080807c66513c271100152a3f546a7f80808080808080808080808080808080808080808080808080808080807f6a543f2a1500000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000b2034485971869cb1c9c7b29d8774604b3a2a1a0c0400040c1a2a3a4b6074879db2c7c9b19c86715a4834200b0000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000000000000000000000e23384d63788da1b3c2cac7b9a7947f6a543f2a15000000000000000000000000071c304354687d93a4b6c8c4b6a49c887c726b686566676c747d899b859ba3b5c9bba5907b66503b26110000000000000000061a2c3d4e606c81939fa9b4bbc8c8bfb9b7b7b9bec7c7bab4a69e8c7c665a49351e0e00000000000000000000000000000000000000000000000010253a50657a8fa5ababababababababababb4bab7b2aba6907b66513b261100000b20364b60758b9d9d9d9d9d8b76604b36210b00000b2034485a626b6b6b6b6b6e756b6b6b6b6b6a696866636055554f4a433632281b1304000000000000000000000014293e51626c757575757575716b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b665e4c39240f0012273c4f616a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a614f3c271300000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000d22374d62778ca4b5c9c3aa95806a5544311c0c00000000000c1d3144556a7f95aac3c9b5a48d77624d38220d0000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000000000000000000000012273c52677c91a7bfd0dfd6c5ae98836e59432e19040000000000000000000000001325364b6073869caabbcec2b6a69d9187807d7b7b7d8187929e8e79859bb0c6bba5907b66503b26110000000000000000000f1f314251636c7e8b989faaaeb3b9c5b9b8c3b7b2aea99f97887c665e4c3c2b190000000000000000000000000000000000000000000000000010253a50657a8f95959595959595959595959fa9a69d9595907b66513b261100000b21364b60758788888888888775614b36210c000005192b3c484d565656565658605656565656555453504e4b44373a3530251e160b000000000000000000000000000e22344451566060606060605c565656565656565656565656565656565656565656565656514c40301d09000c2032434f545656565656565656565656565656565656565656565656565656565656544f4332200d00000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000012283d52677d92a7c2cbb7a58e79634e372715000000000000011527374e63798ea5b7cac2a7927d67523d28120000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000000000000000000000012273d52677c92a7c0d1e0d7c7ae98836e59432e1904000000000000000000000000081d314455647a8c9fb4bbccc4b7b3a59c9592909092969ca49e89748499aec4bba5907b66503b2611000000000000000000011424344451606879838b94999ea7a2a3a3a2a59d99938a8277665e4c402f1e0e000000000000000000000000000000000000000000000000000d23384d62788080808080808080808080808a8a8a8880808079634e38230e0000091e3245566072727272727272615746321e090000000d1d2b34384040404040434a4040404040403f3e3b3935312724201c1308030000000000000000000000000000051626343e414a4a4a4a4a4a474040404040404040404040404040404040404040404040403c393022120000031525323c3f40404040404040404040404040404040404040404040404040404040403f3c3225150300000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0001172c41566c8196abc1c7b29d88725b4a36190900000000000000092135495b72879db2c7c1ac96816c57412c170000000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000000000000000000000e23394e63798ea2b4c3ccc8baa9957f6a55402a1500000000000000000000000000011527374a5c687e939db3b9c5cbc3b6b2aba7a5a5a7abb2a696816d8297adc2bba5907b66503b26110000000000000000000006162634424e5b636e787f84898b8d8e8e8d8b88837e766d61584c402f221200000000000000000000000000000000000000000000000000000c2035495a626b6b6b6b6b6b6b6b6b6b6b6b747575736b6b6b635b4935210c000003162838454b5d5d5d5d5d5d5d4b4639281603000000000d1920222b2b2b2b2b2e352b2b2b2b2b2a2a282623201d150f0b07000000000000000000000000000000000000081622292c353535353535322b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27241d1204000000071520272a2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a272015070000000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00031628395b70859ab0c5c3ad98836e583d2d1a0000000000000000061a2c3d586d8398adc2c5b09b85705b3929170300000000000000000000000a20354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000000000000000000000c2136495b6f849aa5b3b9b4aa9f8a78624d37220d000000000000000000000000000009192e3e4e606a7f919ea7b4b9c6c5c7c0bdbabbc0b4a89e88776b8095abbabaa5907b66503b26110000000000000000000000081624313d4a4e5a636a6f74767779797776726e6961584c473a2f221204000000000000000000000000000000000000000000000000000006192c3c494d5656565656565656565656565f60605d5656564e493d2c1a060000000a1a283236484848484848483632281b0b000000000000050b0d161616161619201616161616151413110e0b080100000000000000000000000000000000000000000000050e14172020202020201c161616161616161616161616161616161616161616161616110f09000000000000030c1215161616161616161616161616161616161616161616161616161616161615130d03000000000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00091e32465773889eb3c8bfa9947f6a543f2a15000000000000000000142a3f54697f94a9bec8b39e88735746331e0a00000000000000000000000a20354a5f758a9fb4cabaa5907b65503b261000000000000000000000000000000000000000000000000000000000061a2c3d4d627887979ea79f9a8c7d67594834200b000000000000000000000000000000102031424f616a7d89969ea8acafb2b3b2b1aeaaa29a8a7b65697e93a4a4a4a4907b66503b261100000000000000000000000006141f2d363c494d5459576162646362615759534c473a332a1c1204000000000000000000000000000000000000000000000000000000000e1e2c35384040404040404040404040404a4a4a4840404038352c1f0f00000000000a161e2133333333333333211e160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000c21364b61768ba6b8cbbba6917b66513c261100000000000000000011263b51667b90a6bbcbb8a68b76614b36210c00000000040a0c0d0d0d0d0d20354a5f758a9fb4cabaa5907b65503b261000000000000000000000000000000000000000000000000000000000000f20344859627681898c8a847a675f4d3b2b190500000000000000000000000000000002142432434f5f6777818991979a9c9d9d9c99958e8479655d677d8f8f8f8f8f8f7b66503b261100000000000000000000000000010f1a212c35383f39464b4d4e4e4d4b46393e37332a1f180c000000000000000000000000000000000000000000000000000000000000000e1920232b2b2b2b2b2b2b2b2b2b2b2b343535332b2b2b23211a0f0100000000000003090b1d1d1d1d1d1d1d0c0903000000000000000000000000000000000000000000000000000000000000000000040e141620202020202017150f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080d0f2020202020201e1b150c00000000000000000000000b151b1d202020202020100e08000000000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000e23384e63788da3c4d5b9a38e79644e39240f0000000000000000000e24394e63798ea3c9d5c5a38e78634e39230e0000000b171f21222222222222354a5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000000000000000000000005192b3b4858616c7476756f645d4d41301d0d000000000000000000000000000000000006152532414d59616c767c818587888886837f796f635b4c61767a7a7a7a7a7a76614c36210c000000000000000000000000000000070e1920232a2933363839393836332929211f170c04000000000000000000000000000000000000000000000000000000000000000000060c0d1616161616161616161616161f20201e1616160e0c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081621292b3535353535352c2a221709000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002101b22253535353535353330291d0f0000000000000000000f1d28303335353535353525221b100300000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0010253a4f657a8fa4bad7c6a18c77614c37220c0000000000000000000c21374c61768cabbccfbaa48f7a654f3a251000000b1b293336373737373737374a5f758a9fb4cabaa5907b65503b26100000000000000000000000000000000000000000000000000000000000000d1d2b3a474c54606160554f4b3f30231300000000000000000000000000000000000000071523303b474c5761676c70727372716e6a635b4e49475861656565656565615846331f0a0000000000000000000000000000000000060c0e15171e2122242422211e17140c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e171d1f2020202020200a03000000030a2020202020201f1d180e020000000000000000000000041626333d404a4a4a4a4a4a413e342717050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010202e373a4a4a4a4a4a4a48443b2d1d0c000000000000000b1d2d3a44484a4a4a4a4a4a3a372e211000000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0011263c51667b91a6bbcdbaa88a75604b35200b0000000000000000000b20354b60758a9fb5cabba6917c66513c2711000417293a464c4c4c4c4c4c4c4c4c5f758a9fb4cabaa5907b65503b2610000000000000000000000000000000000000000000000000000000000000000d1c2a3336434a4c4b4437372e201305000000000000000000000000000000000000000005121d2a3439464b51575a5d5e5d5c59554e4a3d353a474c4f4f4f4f4f4f4c463a291704000000000000000000000000000000000000000000030a0c0d0f0e0d0c0a0300000000000000000000000000000000000000000000000000000000000000000000000000000001080b0f1316181919191715120e0c0600000000000000000000000000000000000000000212202b32343535353535351e170b000b171e35353535353534322b201202000000000000000000000e213344515660606060606057524534220f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081b2e3e4b4f6060606060605d584c3b29150100000000000115283a4b585d6060606060604f4b3f2e1b08000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0012273d52677c92a7bcc9b49f89745544311d08000000000000000000081c30435474899eb4c9bca7927d67523d2812000a1f33465861626262626262626262758a9fb4cabaa5907b65503b261000000000000000000000000000000000000000000000000000000000000000000c181f25303537363127221b100200000000000000000000000000000000000000000000000c181f2933363c424547484847444039362d212933373a3a3a3a3a3a3633291c0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000809151d2024282b2d2e2e2e2d2a2723211a0e0c0600000000000000000000000000000000000e20303e464a4a4a4a4a4a4a33291b0b1b29334a4a4a4a4a4a4a473e3020000000000000000000000014293d51626b7575757575756c63523e2a150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22374b5c64757575757575736a5844301b070000000000061b3044586972757575757575655d4b37220e000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0013283d52687d92a7bdc8b39e89735e49271501000000000000000000011426495e73889eb3c8bda8927d68533d2813000c21364c6176777777777777777777778caabbcebaa5907b65503b26100000000000000000000000000000000000000000000000000000000000000000000408131c2021201d1509080000000000000000000000000000000000000000000000000000040b171e21272c30323333312e2a23211a0f171f21252525252525211f170c000000000000000000000000000000000000080e10171917100e09000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c23273135393d404243444342403c38352c23211a0f05000000000000000000000000000003172b3e4e5a5f60606060605e463929172939465e60606060605f5b4e3e1b0b00000000000000000000162b40566b808a8a8a8a8a8a816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8a8a8a8a8a8a88735d48331e080000000000081d33485d72878a8a8a8a8a8a7b654f3a2510000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0013283e53687d93a8bdc8b39e88735e49331e00000000000000000000001e33485e73889db3c8bda8937e68533e291300192e43586e828c8c8c8c8c8c8c8c8c8c95a7c8d9baa5907b65503b2610000000000000000000000000000000000000000000000000000000000000000000000000070b0c0b0802000000000000000000000000000000000000000000000000000000000000030a0c12171b1d1e1d1c19150e0c0700040a0c1010101010100c0a04000000000000000000000000000000000002111c23252c2e2c26231c110300000000000000000000000000000000000000000000000000000000000000000000000000010f1a212e3737444b4f5355585859585755524e493d39352c1f180d00000000000000000000000000081d32465a6c747575757575705746331e334657707575757575746c5b39291603000000000000000000162b40566b80959f9f9f9f96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8f9f9f9f9f9d88735d48331e080000000000081d33485d72889d9f9f9f9f8f7a654f3a2510000e24394e63798ea3b8ccb6a18c77614c41566c8196abc1ac96816c57414c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0013283e53687d93a8bdc8b39e88735e49331e00000000000000000000091e33485e73889db3c8bda8937e68533e291300192e43586e8398a1a1a1a1a1a1a1a1a1a7b3c4d0baa5907b65503b261000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161e2e373b4143413b382f1e160a000000000000000000000000000000000000000000000000000000000000000000000005131f2d363f4b50556064686b6d6e6e6e6c6a67635b564e493d342a1d110300000000000000000000000a1f344a5f748a8a8a8a8a8a76614c3621364b61768a8a8a8a8a8b745746321e0a000000000000000000162b40566b8095abb5b5ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b5b5b29d88735d48331e080000000000081d33485d72889db2b5b5a48f7a654f3a2510000e24394e63798ea3b8ccb7a28c77624d41566c8196abc1ad98826d58434c61768ba1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0013283d52687d92a7bdc8b39e89735e49271502000000000000000000091e34495e73899eb3c8bda8927d68533d281300192e43586e8398adb7b7b7b7b7b7b7b7bac4d0d0baa5907b65503b26100000000000000000000000000000000000000000080d0f1313131313130d0b0600000000000000000000000000000000000000000000000000000000000000000000000000080e10171917100e090000000000080e10171917100e090000000000080e10171917100e090000000000000000000a1a28323f4b50575957504c3f32281b0a000000000000000000000000000000000000000000000000000000000000000000061423313d4a4e5d656d75797d8082838383827f7c78726c635b4c483b2f21120400000000000000000000081d33485d72889d9f9f9f8d78634d382333465774899f9f9fa98b76614b36210c000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3b8ceb9a48e79644f41566c8196abc1b2a08a75603b4c61768ca1b6cbb9a38e79644e39240f000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0012273d52677c92a7bcc9b49f89745544311d08000000000000000000081d31445574899eb4c9bca7927d67523d281200192e43586e8398adbababababababababebabababaa5907b65503b261000000000000000000000000000000000000002101b22252828282828282320190e000000000000000000000002090b0d0f0d0b0902000000000000000000000000000002111c23252c2e2c26231c11030002111c23252c2e2c26231c11030002111c23252c2e2c26231c110300000000000002162838454b5d656c6e6c655d4b45392816030000000000000000000000000000000000000000000000000000000000000003142431414e5b63707a82898e9295979899989795918d8781796d62594c3f30221201000000000000000000061b31465b70869bb0b5a48f7a644f3a2529395d72889db2b5a28d78624d38230d000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3b8cebca7917c67523f576c8197acc1be9f8a7559484e63788da3b8cdb8a38e79634e39240e000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0011263c51667b91a6bbcdbaa98b75604b36200b0000000000000000000b20354b60758aa8b9cdbba6917b66513c261100192e43586e8398a5a5a5a5a5a5a5a5a5a8a5a5a5a5a5907b65503b261000000000000000000000000000000000000010202e373a3d3d3d3d3d3d38352b1e0e00000000000000060c0e161e21232423211e160a0900000000000000000000000a161e2e373b4143413b382f1e160a161e2e373b4143413b382f1e160a161e2e373b4143413b382f1e160a0000000000091e324556606e7b8183817b6e605745321e0f00000000000000000000000000000000000000000000000000000000000000112131424e5f6879848f989ea7a8aaadadaeadacaaa7a59d968c8277655d4c4030200f000000000000000000041a2f44596f8499aebba6917b66513c2631465b71869bb0b9a48f79644f3a240f000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3b8cec1ac97816c5d575d6f849aafc4b7a28c77625757677c91a6bcd4c4a28d78624d38230d000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000f253a4f647a8fa4b9d7c7a18c77614c37220c0000000000000000000c21374c61768ca1c6d6baa48f7a654f3a251000192e43586e8290909090909090909090939090909090907b65503b26100000000000000000000000000000000000081b2e3e4b4f5353535353534d483c2b190600000000060e192123283236383938363228241d120200000000000000000a1a28323f4b50575957504c3f32281b28323f4b50575957504c3f32281b28323f4b50575957504c3f32281b0a000000071a2d3d4b60748290969896908375604b3e2d1a0700000000000000000000000000000000000000000000000000000000000a1a2e3f4e60687d8b9aa2adb3b9c5c0c2c3c3c3c1bfc3b7b2ab9f98897b665e4c3e2d1909000000000000000003182d42586d8297adbda8927d68533d282f445a6f8499afbba6907b66513b2611000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3b8cfbeb49f8b7b6f6c6f7b8c9fb4cab5af9983756d6d76859bb0c6cbb7a68b76614c36210c000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000e23384e63788da3c5d5b9a38e79644e39240f0000000000000000000e24394e63798ea3b8d5c5a38e78634e39230e000e24394e63797b7b7b7b7b7b7b7b7b7b7e7b7b7b7b7b7b76614c37210c00000000000000000000000000000000000d22374b5c64686868686868625a4835200b0000060e19202c353838454b4d4f4d4b453839301d150900000000000002162838454b5d656c6e6c655d4b45392838454b5d656c6e6c655d4b45392838454b5d656c6e6c655d4b453928160300000c21364a5b6d8297a0acaeaca198826d5c4a36210d00000000000000000000000000000000000000000000000000000000031628384b5d687e929fa9b4c0c9c9c7bab4b2b1b2b4bac7c9c9bcb5a79e8c7c665c4a372715010000000000000001162b41566b8096abbfaa947f6a553f2a2d43586d8298adbda8927d68533d2813000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3b8c6b2a098888c8481848c9fabbcc1a8978d99888282879ba3b5c9c8b29d88735846331f0a000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000c21364b61768ba6b8cbbba6907b66513b261100000000000000000011263b50667b90a5bbccb8a78b76614b36210c000c21364a5b636565656565656565656569656565656565615847331f0a00000000000000000000000000000000000f253a4f647b7d7d7d7d7d7d78624d38230d020e19202c353c494d5556606264626056514d40312719090000000000091e324556606e7b8183817b6e605745324556606e7b8183817b6e605745324556606e7b8183817b6e605745321e0f00000e24394e63798ea0b1bec3bfb2a08e79644e39240f00000000000000000000000000000000000000000000000000000000091e324556657b8c9fb4bac7c6b9b3aaa99f9d9c9d9fa9abb4bac6c5b8aa9f8a7a645544311d080000000000000000142a3f54697f94a9beab96816c56412c2c41566b8196abbfa9947f6a543f2a15040400000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3b8c3ad988281979996999faabbc9b5a38d78899d97979da5b5c1d0bfad98836e583a291704000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00091e32465773889eb3c8bea9947e69543f291400000000000000000014293f54697e94a9bec8b39e88735746331e0a00071a2d3d4a4e50505050505050505050535050505050504c473a2a17040000000000000000000000000000000000172c41576c819292929292917c67513c2712161e2b353c494d5b636a7176787978756f665e4b4437271502000000071a2d3d4b60748290969896908375604b3e4b60748290969896908375604b3e4b60748290969896908375604b3e2d1a0700142a3f54697f94a9beced8cfbea9947f6a543f2a15000000000000000000000000000000000000000000000000000000001325364b6075879daabbcdc0b4a89e958e89888788898f969fa8b5c1c8baa99c8673604b3520100000000000020b1113283d52677d92a7bcad98836d58432e2a3f54697f94a9beab96816b56412c19191913110b02000000162b40566b8095abc0c1ac96816c57412c170a0a090907050200000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3b8baab96807d91a4acaeb4bbc8bbb09b85718298a8adb2b7c3c6bfb3a1907b66513b261100000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00031628395b70859bb0c5c2ad97826d583b2b18050000000000000005182a3b576d8297acc2c5b09b85705b3929170300000f1f2d36393b3b3b3b3b3b3b3b3b3b3e3b3b3b3b3b3b37332a1c0c000000000000000000000000000000000000172c41576c8196a8a8a8a6917c67513c271a28323c494d5a636d7880868b8d8e8d8a847c6e605544311d100000000c21364a5b6d8297a0acaeaca198826d5c4a5b6d8297a0acaeaca198826d5c4a5b6d8297a0acaeaca198826d5c4a36210d00162b40566b8095abc7d7e8d8c7ab96806b56412b16000000000000000000000000000000000000000000000000000000071c304354697e94a5b7c8c1b4a29a89807975727172757a808a9ba3b5c2c7b5a4927d68533e2e1b0800000006131e26282f3b50667b90a5bbaf9a846f5a452f2f3d52687d92a7bdad98826d58432f2f2f2f29261f14060000162b40566b8095abc0c1ac96816c57412c1f1f1f1f1e1c1a17140f0b07000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798ea3a4a4a4937e74869ca5aeb2b3b1aa9f907b65788a9ea7b0b2b2b1aca199836f5e4c38240f00000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000172c42576c8197acc1c7b19c8772594834200b000000000000000b1f34485971869cb1c6c1ac97816c57422c17000000010f1a21242626262626262626262629262626262626211f170c00000000000000000000000000000000000000172c41566c8196abbdbca6917c67513c273038454b5a626d78828b959ca4a2a4a99f9a918373604b3e2e1b0800000e24394e63798ea0b1bec3bfb2a08e79644e63798ea0b1bec3bfb2a08e79644e63798ea0b1bec3bfb2a08e79644e39240f0013293e53687e93a9baccd6cdbaa9937e69533e29140000000000000000000000000000000000000000000000000000000b20354a6073879db2c3c9b5a39a84766b6460545c5560646b77859ba4b6c9c2b19c86725c4b37220d0000021324313a3e44444f64798ea4b9b19b86715c3644444451667b90a6bbaf99846f5a44444444443e3a3124140200162b40566b8095abc0c1ac96816c574134343434343332302d2924201c130807000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000e24394e63798e8f8f8f8f8f7c67798793999c9d9c978b7e685d657b89959b9d9d9b97908375614b402f1c0900000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000013283d53687d92a8c3cab6a48c77624d372210000000000000000d22374c62778b9fb5cac3a8937d68533e28130000000000070c0e10101010101010101010141010101010100c0a040000000000000000000000000000000000000000162b40556b8095aac0bda7927d68523b3c404c56606a78828c989faab1b5c2c7bab4afa197826d5c4b37220a0000142a3f54697f94a9beced8cfbea9947f6a54697f94a9beced8cfbea9947f6a54697f94a9beced8cfbea9947f6a543f2a15000d22374d62778a9fb4b9c6b9b49f8b78624d38220d00000000000000000000000000000000000000000000000000000010253a50657a8fa5b7cabcab9b857461584f4b4337444b4f596275869cabbccab6a48f7a644f3a250f00000b1e31424e5359595962778da2b7b39d887354595959595964798fa4b9b19b86715c5959595959534e42311f0b00162b40566b8095abc0c1ac96816c57494949494949484745423e39353025211a0f0600000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000b21364b60757a7a7a7a7a7a766163757e84878886817968604e5d65778085888886827b6f6157463322120000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000e23384e63788da5b7cac2a8937e68533e2e18080000000000071b2d3e53687d92abbccab7a58d78634e38230e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3f546a7f94a9bfc1ab96816c595051545e6675808a979faab4bbc8c3c5c9cec9bfb1a08f7a644f3827150200162b40566b8095abc7d7e8d8c7ab96806b566b8095abc7d7e8d8c7ab96806b566b8095abc7d7e8d8c7ab96806b56412b16000b20344859697f939ea8a8a89e947f6a5a4834200b000000000000000000000000000000000000000000000000000001162b40566b8095abc3cab49f8c796356473a35302631353b4857647a8d9fb5cac2aa95806a55402b15000011263a4e60686e6e6e6e758ba0b5b49f8b726e6e6e6e6e6e6e788da2b7b29d88736e6e6e6e6e6e68604e3a261100162b40566b8095abc0c1ac96816c5f5f5f5f5f5f5e5e5c5a57534e4a4336362d21190e000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000091e3245576065656565656561585761696f7273716c635b4e424c59626b707272716c665e4b46392917040000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000c2135495b72879db2c7c5b09b85705c4b36251303000000021222364a5c70859ab0c9c7b29d87725b4935210c0000000000070d0f1212121212121212121212121212121212121212121212121212121212121212120f0d070000000013283d52687d92a7c7c8b39e89776966666a717c87959fa9b4bbc2b6b1aeb0b4bbc8cebead98836d5645311d090013293e53687e93a9baccd6cdbaa9937e6953687e93a9baccd6cdbaa9937e6953687e93a9baccd6cdbaa9937e69533e29140005182b3b4f61697e899193918a7f6a614f3c2b19050000000000000000000000000000000000000000000000000000031629395a70859aafc5c4af9a846f5b4a382a201c141d202b394a5c6f849aafc4c4af9a856f5a392917030013283e53687d838484848399aec3bbaa9a8484848484848484849aafc4b7a699838484848484837e68533e291300162b40566b8095abc0c1ac9681747474747474747473716f6c696460544e4a3d352c1e140600000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100003162839454b4f4f4f4f4f4f4c46464b53595d5e5c574e4a3d313b484c555b5d5d5c57504c4033291b0b000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000061a2c3d576c8196acc1c8b4a38f7a645443301e160d0c0d161e31424f647a8fa2b4c8c2ac96816c573d2c1a0600000002101b222428282828282828282828282828282828282828282828282828282828282828282824221b100200000f24394f64798ea9baccb8a79d877f7b7c7f86919da5b4bac0b3afa49c999b9faabac6c9b39e8975604b36200b000d22374d62778a9fb4b9c6b9b49f8b78624d62778a9fb4b9c6b9b49f8b78624d62778a9fb4b9c6b9b49f8b78624d38220d00000d1d32434f6069767c7e7c7669614f43321d0d0000000000000000000000000000000000000000000000000000000a1e32465773899eb3c8bda8927d68533d2d1a0c0801080d1b2d3e53687d92a8c9c8b39e89735746331e0a00172c41576c819699999999a1b3c7c8b4a29a999999999999999aa2b3c7c4b3a199999999999997816c57422d1700162b40566b8095abc0c4b19f968989898989898989888785827e79746c645c4d493c31241708000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e0c0c0c0c0c0c0c1d33485d72889db2c7baa48f7a654f3a251000000a1b2832363a3a3a3a3a3a363332363e444748474239362d1f2b34374046484846423b382f1e170b00000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000f24394f64798ea3b5c9c1af9a8472604a4032282322232832404e606f849aafc0c9b5a38f7a644f3a240f0000000010202d363a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3a362e201000000b21364b60758a9fb4c9c5b7a69d949091949ca4b2b6c3b8b3a29a8f8784858b9fa8baccb9a78e79644e39240f000b20344859697f939ea8a8a89e947f6a5a4859697f939ea8a8a89e947f6a5a4859697f939ea8a8a89e947f6a5a4834200b000000142532424e586166686661584f43322515000000000000000000000000000000000000000000000000000000000c21364b61768ba7b8ccc6a38e79634e39240f00000000001024394e63798eabbcccb8a78b76614b36210c00172c41576c8196acaeaeaeb3bfcfd1c0b4afaeaeaeaeaeaeaeafb3c0d0cfbfb3aeaeaeaeaeac97826c57422d1700162b40566b8095abc0cebdb1a89e9e9e9e9e9e9e9e9d9c9a97938e8881796e635b4e42342717080000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d483322222222222222222233485d72889db2c7baa48f7a654f3a25100000000a161e21252525252525211f1e21292f3233312d24211a0f1820222b303333312d26231c11030000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000d22364a5c71869bb1c1c8b4a2937e695f4b453838373838454b5e697e93a2b4c8c1b19b86715c4a36220d000000071b2d3e4a4f5252525252525252525252525252525252525252525252525252525252525252524f4a3e2e1b0700091e3245566e8398aebecfc4b7b2a9a5a6a9b1b6c2bbb4a69d92847a726e707b8a9fb4c9c5a7917c67523c27120005182b3b4f61697e899193918a7f6a614f3c4f61697e899193918a7f6a614f3c4f61697e899193918a7f6a614f3c2b1905000000071424313a464c5153514c473a32241507000000000000000000000000000000000000000000000000000000000e23384d63788da2c5cdb9a88a75604b35200b00000000000b20354b60758a9fb5cac5a38d78634e38230e00172c41576c8196acb7b7b7c0c4cddacfc6c3b7b7b7b7b7b7b7b7c2c6cfdbcec5c1b7b7b7b7ac97826c57422d1700162b40566b8095abc0d5cec6b9b4b4b4b4b4b4b4b3b3b1afaca8a69e968e8379696051453426160400000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d483737373737373737373737485d72889db2c7baa48f7a654f3a25100000000003090b1010101010100c0a0a0c141a1d1e1c170e0c0700050b0d161b1d1d1c17110f0900000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000071b2d3e51677c91a3b5c8c0b49f8c7d6b6056504d4c4d5056606a7c8c9fb4c0c8b5a3917c67523e2d1b070000000d22364a5c64676767676767676767676767676767676767676767676767676767676767676767645c4a36220d000216283850657b90a0b2c0cbcbc8bebbbbbfc9bcb5aa9f97887d6f645c595d6c8297acc1bfa9947f6a543f2a1500000d1d32434f6069767c7e7c7669614f4332434f6069767c7e7c7669614f4332434f6069767c7e7c7669614f43321d0d000000000006141b2933363c3e3c3733291c140600000000000000000000000000000000000000000000000000000000000f24394e64798ea3b9c9b49e89745544311d080000000000081d31445574899eb3c9b9a48e79644f39240f00172c41576c8196a2a2a2a2abb0bccdbfb3aea2a2a2a2a2a2a2a2adb2becebdb1aca2a2a2a2a297826c57422d1700162b40566b8095abc0d5dacdc3c0c0c0c0c0c0c0c1c2c4c4c1c4b8b3aca1998b7e6c63514433221200000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d4c4c4c4c4c4c4c4c4c4c4c4c4c5d72889db2c7baa48f7a654f3a251000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000001020354a6072859baabbcebbaa9f8c80756b65626162656b75808c9faabbcebbaa9b8573604b352010000000000f243a4f64797d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a644f3a240f00000a23384b5d6e8298a2b3b8c5c0c1c0c5b9b3ab9f998c8176675f4f4b3f53687d93a8bdc0aa95806b55402b16000000142532424e586166686661584f43322532424e586166686661584f43322532424e586166686661584f4332251500000000000000000b171f21272927211f170c000000000000000000000000000000000000000000000000000000000000000f243a4f64798fa4b9c8b39d88735e372715010000000000011426375d72889db2c7b9a48f7a644f3a250f00172c41576c818c8c8c8c8c969eb0c4b3a1998c8c8c8c8c8c8c8c98a0b2c5b19f978c8c8c8c8c8c816c57422d1700162b40566b8095abc0d5cdbcb0abababababababacadafb4b9c6c9c8bfb3a99f93816c625140301b0b000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d887361616161616161616161616161616172889db2c7baa48f7a654f3a251000000000050b0d1e2020202020201f0f0d070000000000000000000000070d0f1f2020202020201e0d0b05000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000071c304354647a8c9fb4bdc8bbaa9f9588807b7877787b8088959faabbc8bdb49f8c7a645443301c0800000000172c41576c81929292929292929292929292929292929292929292929292929292929292929292816c57422d170000081c2f3f4b617584949ea6a9abacaba9a79e978c83796c61584d41373c51667c91a6bbc1ab96816c56412c17000000071424313a464c5153514c473a32241524313a464c5153514c473a32241524313a464c5153514c473a32241507000000000000000000040a0c1113110c0a0400000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e000000000000001d33485d72889db2c7baa48f7a654f3a2510000c21364c617677777777788096abc0ae998378777777777777788298adc1ac978178777777777776614c36210c00162b40566b8095abc0cebdb09e9595959595959596989a9ea8acb4bac7c7bab49f95806b5e4c392916030000000000000000000000000000000000000000000f253a4f647a8fa4b9c9b49f8b76777777777777777777777777777777768a9eb4c9baa48f7a654f3a25100000000d181f22333535353535353524211a0f0100000000000000010f1a212435353535353535342220180d0000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000001325364a5c697f949fb0bcc8bbb4a69d96908d8c8d90959da6b4bbc8bdb09f947f695c4a3626140100000000172c41576c8196a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797816c57422d17000000111e32465761747e888f9496979694908982796e635b4c463a30273c51667c91a6b0b0ac97816c57422c170000000006141b2933363c3e3c3733291c1406141b2933363c3e3c3733291c1406141b2933363c3e3c3733291c14060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000a1f3346586162626262677c92a7bcad98836e626262626262697e94a9beab96816c6262626262615846331f0a00162b40566b8095abc0c4b19f9580808080808080818385898e979fa9b4c0cdbdb09e917c665746321e090000000000000000000000000000000000000000000f253a4f647a8fa4b9cdbaa99f8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c9ea8b9cdbaa48f7a654f3a251000000d1d2a3437494a4a4a4a4a4a4a39362d200f000000000000000f202d36394a4a4a4a4a4a4a4937342b1d0d00000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000008182d3e4f616c81969eb3b8c5c4b7b3aba5a2a1a2a5abb2b7c4c5b8b39e96816c614f3e2d18080000000000172c41576c8196acbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcac97826c57422d170000000316293946566069747a7e8082807e7a756d635b4e493d33291c273c51667c919b9b9b9b97826c57422d170000000000000b171f21272927211f170c0000000b171f21272927211f170c0000000b171f21272927211f170c000000000000000000000000000000000000000000000000000002090b131819150e0c0600000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000417293a464c4d4d4d50657b90a5baaf9a856f5a4d4d4d4d52677d92a7bcad98836d584d4d4d4d4c463a29170400162b40566b8095abc0c1ac96816c6b6b6b6b6b6b6c6d6f7479818a9aa2b1becdbcb39d8875614b3727150200000000000000000000000000000000000000000f253a4f647a8fa4b9d7c7bab4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1b4b9c6d7baa48f7a654f3a25100005182a3b484c5e6060606060605f4e4a3e2d1a0a00000000000a1a2d3e4a4e5f6060606060605e4d483b2b1805000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000f20324352636c80919ea7b3b8c5c7c0bab7b6b7bac0c7c5b8b3a79e918172604a43322010000000000000172c41576c8196acb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac97826c57422d17000000000b1b2938454b556064696b6c6b696560554e4a3d352c1f1710253a50657b8586868686857f69543f2a1400000000000000040a0c1113110c0a040000000000040a0c1113110c0a040000000000040a0c1113110c0a0400000000000000000000000000000000000000000000000000000a151d20282d2e2b23211a0e000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000c1c2933363737394e64798ea3b9b19c87715c3637373b50667b90a5bbaf9a856f5a453737373633291c0c0000162b40566b8095abc0c1ac96816c57565656565657585460646c778497a0b1c1cbb7a6947f6a5544311d0800000000000000000000000000000000000000000f253a4f647a8fa4b9cfd7cdc9b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6c9cdd7cfbaa48f7a654f3a2510000b1f344859627375757575757574645c4a38271502000000021628384a5c64747575757575757362594834200b000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000011424344552626b7c89959ea7acb1b4bbc8b9c8bbb4b1aca79e96897d6c60544330251402000000000000172c41576c81969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f97826c57422d1700000000000b1a273137444b4f5456575654504b4437362d211a0f040e23374b5d6570707070707069614f3c27120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2731363d42434038352c1f140600000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000c171f212222374d62778ca2c5b39e887354433024394f64798ea4b9b19c86715c36252222211f170c000000162b40566b8095abc0c1ac96816c5741404040404136434b4f5962738297a3b4c8c4b39d8874604b36200b00000000000000000000000000000000000000000f253a4f647a8fa4b9cfd8cac1bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc1cad8cfbaa48f7a654f3a2510000d22374c6277888a8a8a8a8a8a8b7a645645311d100000000c1e324556647a8b8a8a8a8a8a8a8977624d37220d000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000617273444515f6776808991979c9faaa3a4a3aa9f9c9791898076675f4a433625130700000000000000172c41576c818a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a816c57422d170000000000000a151d2731353a3f4142413f3b363127211a0f060000081c2e3f4b505b5b5b5b5b5b544f4332200c000000000000000000000000000000000000000000000001080b0f1315171819181715130f0b0801000000000000000000000000000000000000000000000000000000000e1e2c38454b525858554e493d32241405000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000040a0c0d20364b60758ba7b9b49f8a75604b3522384d62778da2c6b39d88735443301c0d0c0a0400000000162b40566b8095abc0c1ac96816c57412c2b2b2b2c2630353b48556074859bb0c0cbb7a6907b66503b261100000000000000000000000000000000000000000f253a4f647a8fa4b9cfcabaada8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8adbacacfbaa48f7a654f3a2510000b1f344859667c909f9f9f9faa9c8674604b3e2d1a0a000c1c2f404b6074869ca99f9f9f9f917c66594834200b000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000009172634414d58616b757c82878a8d8e8e8e8d8a87827c756b61584d41302518080000000000000000152a3e52636c7575757575757575757575757575757575757575757575757575757575757575756c63523e2a15000000000000000209151d2025292b2d2b2925201d150907000000000011212e373a4646464646463f3c32251503000000000000000000000000000000000000000002090b151d2024282b2c2d2e2d2c2b2824201d150b09020000000000000000000000000000000000000000000000000b1b2c3c495660686d6e6a635b4f43322313000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000000081d31445574899eb3bbaa8c77614c3722364b60758ba8b9b49f8a75604a35200b00000000000000162b40566b8095abc0c1ac96816c57412c17161617141c202b374556647a8fa2b4c7c4ac96816c5736261401000000000000000000000000000000000000000f253a4f647a8fa4b9d4c4ad9c93939393939393939393939393939393939cadc3d4baa48f7a654f3a25100005182a3b4c5e6c8196a4b5b5b5a495806b5c4a38281604172a3a4c5e6c8196a4b6b5b5a497816c5e4c3b2b1805000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000081623303a464c5660676d7275777879797775726d6760564c473a301c13080000000000000000000f223445525760606060606060606060606060606060606060606060606060606060606060606057524535220f00000000000000000001080b0f1416171614100b08020000000000000003111c23253131313131312a2720150700000000000000000000000000000000000000020a161e21273135393e404142434341403e39353127211e160a0200000000000000000000000000000000000000000003172939495b63747d8283807969614f413018080000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000000010a1012171527375d72879cb2c8a38e78634e392332455674899eb4bbaa8c76614c37211712100a01000000162b40566b8095abc0c1ac96816c57412c1702010001080d1927384a5c6f849aafc4c6b09b86715443301c08000000000000000000000000000000000000000f253a4f647a8fa4b9cbb7a6937e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e93a5b7cabaa48f7a654f3a251000000d1d2f404b6074869ca9bac2b49f8c7a645645321e101f334758657b8d9fb5c2baa99c8674604b402f1d0d00000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000004121b293338454b515755606263646362605557524b453833291c120000000000000000000000051727343e414a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a423e3527170500000000000000000000000000000102010000000000000000000000000000080e101b1b1b1b1b1b14120c030000000000000000000000000000000000000009151d28323637444b4e5355565859585655534f4b44373632281d150900000000000000000000000000000000000000000a1e334657637986929798958b7f695f4d3625130000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000005121d24272c2c30455b70859ab0baa58f7a65503a2c28385d72879cb2c8a38d78634e382c2c27251d13050000162b40566b8095abc0c1ac96816c57412c170200000000000a1a2d3e53697e93a8bec9b49f8a74604b35200b000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d887368686868686868686868686868686872879db2c7baa48f7a654f3a2510000000121d32455663798a9fb4bfbbaa9c8674604b3f2e1e31424c6176889dabbcbfb49f8b796356453222120000000000000000000000000000000c21364b61768ba0b6b7b6a18b76614c36210c0000000000000000000000000b171f2832363c37444b4d4e4f4e4d4b44373c3632281f170c000000000000000000000000000917222a2c3535353535353535353535353535353535353535353535353535353535353535352d2a2217090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f19273138454b52556064686a6c6d6e6d6c6a68646055524b45383127190f010000000000000000000000000000000000000c21364b6175879ca4adadaa9f917d675443301c0700000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100001122330393c41414144596e8399aebca6917c6751414141465b70859bb0baa48f7a654f4141413c393023130100162b40566b8095abc0c1ac96816c57412c17020000000000001024394e63798ea3c7cdbaa98c77624d37220d000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d535353535353535353535353535d72889db2c7baa48f7a654f3a251000000002152838495b687e93a1b2c4b6a496806b5d4b392c3c4e606e8399a6b7c4b3a1937e685b4a382816040000000000000000000000000000000c21364b61768ba0a2a2a2a18b76614c36210c00000000000000000000000000040a161e2127263135383939393835312727211e160a04000000000000000000000000000000050f151720202020202020202020202020202020202020202020202020202020202020202017150f05000000000000000000000000000000000000080e10202020202020201e19100400000000000000030f181d1f202020202020110f0900000000000000000004121f2d37444b5660676f75797d808182838281807d7975706860564b44372d1f12040000000000000000000000000000000000152a3f546a7f94a5b6c2c8bbb29d8773604a35200b00000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000a1d30414d5157575757576c8297acbea8937e695757575757596e8499aebca6917c6757575757524d41301d0a00162b40566b8095abc0c1ac96816c57412c17020000000000000b21364b60768ba9bacdc7a48e79644f39240f000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d483e3e3e3e3e3e3e3e3e3e3e485d72889db2c7baa48f7a654f3a2510000000000a1a2c3d4e606e8399a6b7c2b49f8c7b65574537495a687d92a1b2c4b7a699836e604e3d2d1a0a000000000000000000000000000000000c21364b61768b8d8d8d8d8d8b76614c36210c00000000000000000000000000000002090b12141d202223242422201d15120b0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003111c232535353535353535332d22140400000000000313212c323535353535353526231c11040000000000000212222f3d4a55606a757d85898e9395969798989695938e89857d756a60554a3d2f221202000000000000000000000000000000051b30455a70859aafc3d3d8cbb7a58e79634e39230e00000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510001024394d5f676c6c6c6c6c6c8095aabfaa95806c6c6c6c6c6c6c6d8297acbda8937e6c6c6c6c6c675f4d39251000162b40566b8095abc0c1ac96816c57412c1702000000000000091e32455674899fb4c9baa58f7a65503a2510000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d483329292929292929292933485d72889db2c7baa48f7a654f3a251000000000000f1f31424c6176879dabbcbcab9c8775604b445562788a9eb4bfbcab9d8876614c42311f0f00000000000000000000000000000000000b20354a60727878787878787872604b35200b0000000000000000000000000000000000000001080b0d0e0f0e0d0b080100000000000000000000000000000000000000000000000000000000000000000000000001080b0d0f111315161718191918181614110d0b0500000000000000000000000000000000000000000011212e373a4a4a4a4a4a4a4a483f32221000000000000f21313e474a4a4a4a4a4a4a3b382f221100000000000010202f404c5c64747f89929a9fa9a8aaabadaeadabaaa8a99f9a92898074645c4c402f2010000000000000000000000000000000071c31475c71869cb1c6dbe5d2c1a48f7a654f3a251000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100012273c51677c818181818181959eafc3af9e958181818181818181969fb1c1ad9c9381818181817d67523c271200162b40566b8095abc0c1ac96816c57412c17020000000000000417293a5e73889eb3c8baa5907b65503b2610000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e131313131313131d33485d72889db2c7baa48f7a654f3a2510000000000001141f334758657b8d9fb4c1b6a596816c5d4b6073859ba8b9c1b49f8d7b655847332414010000000000000000000000000000000000071c3043546062626262626262605443301c08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141c20222426292a2b2c2d2e2e2e2d2b2926222019120c090300000000000000000000000000000000081c2e3f4b506060606060605f5c503f2d190500000004182c3e4f5b5f606060606060504c402f1c09000000000b1b2e3e4c5e667a86959ea7afb4bac7bfc1c2c2c2c1bfc7bab4afa79e95867a665e4c3e2e1b0b0000000000000000000000000000041a2f44596f8499aec0cfd3c7b5a38d78624d38230d00000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000172c41576c819696969696969fafbcccbcaf9f96969696969696969fb1bdcabaad9f9696969696816c57422d1700162b40566b8095abc0c1ac96816c57412c17020000000000000a1f334658748a9fb4c9baa48f7a654f3a2510000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000004172a3a4b5d6b8095a3b4c3b59f8d7b655c6a7f95a2b4c6b5a395806b5d4b3a2a170600000000000000000000000000000000000000132536434a4d4d4d4d4d4d4d4b433626140100000000000000000000000000000000000000000000000000080e101110100f0e0e0d0c0c0b0801000401000000000000000000000000000000000000000000081826303537393c3e4041424243444342413e3c38342b27211e160b0600000000000000000000000000000e23374b5d65757575757575756e5c48331e09000000081d32475b6d74757575757575665e4c38230f000000031628394b5c667c8b9ca4b3b8c5c9c5b8b3afaeadaeafb3b8c5c9c5b8b3a39b8b7c665c4b39281603000000000000000000000000000013283d52687d92a2b5bcc3b6a99b85715a4835200b00000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000172c41576c8196acacacacacb1bdccdaccbdb1acacacacacacacacb1bdced8cabdb1acacacac97826c57422d1700162b40566b8095abc0c1ac96816c57412c17020000000000000c21364c61768ba9bacec5a38e79644e39240f000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000000000000000c1c2e3f4b6073859ba7b9bcab9d8775647a8c9fb4c0b9a89b8573604b3f2f1c0c0000000000000000000000000000000000000000081825303538383838383838353026180800000000000000000000000000000000000000000000000003111c2325262625242423222221201c141c1916120d0b050000000000000000000000000000000001142636434b4c4f515355565758585958575654514d483c3d36322820190e0300000000000000000000000010253a50657b8a8a8a8a8a8a8c755f4a35200a0000000a1f354a5f748b8a8a8a8a8a8a7c66503b2611000000091e324657647a8b9fa9b5c2c6b9b4aba79e9a9897989a9ea7abb4b9c6c2b5a99f8b7a645746321e0a00000000000000000000000000000b20354b607384979faba8a59d8b7a644f3c2b190600000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000172c41576c8196acbabababababdc7d5d7c9bfbcbababababababababec8d5d5c7bebababaac97826c57422d1700162b40566b8095abc0c1ac96816c57412c170200000000010a192b3c51667b91a6c7cbb8a68c76614c37210c000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000000000000111d3144556278899eb3beb7a5978176869caabbbeb49e8a786355443121110000000000000000000000000000000000000000000008131c2023232323232323201c14080000000000000000000000000000000000000000000000000011212f383b3c3b3a3a3938373736353026312e2b272220180d0b0400000000000000000000000000081c30435460626466686a6b6c6d6e6e6d6d6b6966625a58524b4639352b1e160b000000000000000000000010253a50657a8f9f9f9f9f9f8a755f4a35200a0000000a1f354a5f748a9f9f9f9f9f907b66503b26110000031628384b6175879da9bac7c1b4a89e968e898583828385888e969ea8b4c1c7baa99d8775614b3928160300000000000000000000000000081d3144556075828c929390877b655c4a361e0e0000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000172c41576c8196a4a4a4a4a4a4aab7c7c9b9aca6a4a4a4a4a4a4a4a5aab7c8c7b7aaa5a4a4a497826c57422d1700162b40566b8095abc0c1ac96816c57412c1700070b0c0e141c2837485a6c8297acc1c8b39e88735847331f0a000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000000000000000001152737485a677d92a0b1c3b19f97889ca4b6c3b2a0927d675a4937271503000000000000000000000000000000000000000000000000070b0d0d0d0d0d0d0d0b080100000000000000000000000000000000000000000000000000081c2f3f4b5051504f4f4e4d4d4c4b4b43484644413c37342b221f180c0400000000000000000000000b20354b607377797b7e7f80818283838382807e7b77736d6761574d483c32281b100200000000000000000010253a50657a8fa5b5b5b49f8a755f4a35200a0000000a1f354a5f748a9fb4b5b5a5907b66503b26110000091e3245566a8095a5b7c7c1b4a39b8a8179736f6e6d6e6f7379818a9ba3b4c1c7b7a595806b5745321e0900000000000000000000000000011426374557606d787d7d7a74655d4b3e2d1b000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000172c41576c818f8f8f8f8f8f8f99aac2bfac9b918f8f8f8f8f8f8f9099aac5beaa998f8f8f8f8f816c57422d1700162b40566b8095abc0c1ac96816c57412c1f131c202123263039455562788b9fb4c9c7ae99846e593a291704000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000000000009192b3c4d5f6d8297a4b6bdb1a59da5b6c2b6a598826d5f4d3c2c190900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23384b5d6566656564636362616160545e5c5956514d483b37342a1f170c00000000000000000000182d42586d828c8e919395969797989998979693918d88837d766c625a4b46392e201305000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000b21364b6075899eb3c3c9b5a39b85786c635b5a5958595a5b636b78859ba3b5c9c3b39e8975604b36210b000000000000000000000000000009192839454b5a6267686560554b3f2e2010000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000d23384d62787a7a7a7a7a7a7b8fa4b6bca6917d7a7a7a7a7a7a7a7b90a7b9baa58f7b7a7a7a7a78634d38230e00162b40566b8095abc0c1ac96816c57413434253035363836434b576073849aa9bacdbaa9937e68533e291300000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000000000000000000000e1e30414b6175869caabbc3b7b2b7c3bbaa9d8775614b41301e0e00000000000000000000000000000000000000000000000000000a0f1111100e0d0b090200010000000000000000000000000000000000000000000000000010253b50657b7b7b7a797978777776757473716e6b676259544c473b332a1c1204000000000000000014293e53697e93a4a6a8aaabacadadaeadacaba9a6a69e98928981786c61574b3e302313050000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b2611000012273c51677c91a7b9ccbcab9b8575625a4e4a3d4342433d494e5a6275859babbcccb9a7917c67523c27120000000000000000000000000000000a1b28323c494d5253504b44372e211002000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a2510000c2035495a6265656565656572879cb1b8a38e796565656565656574899eb3b6a18c7765656565635a4935200c00162b40566b8095abc0c1ac96816c5749494949434a4c4d51546066758298a2b3c7c6b49f8a77614c37220c00000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000000000000000000131e324657647a8b9fb4c4cbc7cbc0b49f8c7a6457463323130000000000000000000000000000000000000000000000000004121d242727252422211e161a17130e0b070000000000000000000000000000000000000000071c31475c718691908f8f8e8d8c8c8b8a89888683807c77716a61594c473a2f2214060000000000000014293e53697e93a8bbbdbfc0c1c1c0bfbfc0c0bec5b8b3ada89e978b8175645c4d413023130300000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b26110002172d42576c8297acc5cab49f8c796357493c362d2e2d2e2c363c495763798c9fb4cac5ac97826d57422d180000000000000000000000000000000d1d2b34383e3e3e3e3e3e39362d1f0f00000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100006192c3c494d4f4f4f4f4f5a70859aafbaa5907a65504f4f4f4f5c72879cb1b8a38e78634f4f4f4d493c2c190600162b40566b8095abc0c1ac96816c5f5f5f5f5f54606163676b747b8798a0b2c0cdb9a897826d5947341f0b00000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000000000000000000031629394a5c697f94a6b7cbddc8b4a2947f6a5c4a3929170500000000000000000000000000000000000000000000000000122230393c3c3a39373632282f2c2824201c130b070000000000000000000000000000000000081d33485d72889da5a4a4a3a2a2a1a0a99f9d9b9996918c867f776c61584c403124140500000000000014293e53697e93a8bed3cebdb1acabaaaaabacaeb3b7c4c6b9b4a99f96877a675f4d4130211100000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100001325365b71869bb0c6c3ae99836e5b4a392c211a1918191a212c394a5b6e8399aec3c6b19b86715c372614010000000000000000000000000005192b3c484d5353535353534e4a3d2d1a07000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000e1e2c35383a3a3a3a43596e8398aebca7917c67523c3a3a455b70859ab0baa58f7a65503a3a38352c1e0e0000162b40566b8095abc0c1ac9681747474747474747576787c8087909ca5b2becfbcb49e8a77624d3b2a180400000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000000000000000000000b1b2d3e4a6074889db2c8dac5af9a8573604b3e2e1b0b000000000000000000000000000000000000000000000000000a1d30404d5151504e4d4b453844413d39353025201c1308010000000000000000000000000000021628385e73899eb3bab9b8b8b7b6c7bab4b3b1aeaba6a39b948b8176665e4e4231231300000000000014293e53697e93a8bed2c2b19f979695949597999da6a9b3b8c5bab4a59d8b7d675f4d3f2e1c0c000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100071c30435474899eb3c9bda8937d68533d2d1b0e07000300060e1b2d3d53687d92a8bdc9b39e89745544311d08000000000000000000000000000b2034485a62686868686868635b4a36210c000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000e1920232525252c42576c8197acbea9937e69543e292e44596e8399aebca7917c67523c272320190e000000162b40566b8095abc0c4b19f96898989898989898a8b8d91969da5b2b6c3c9bcb59e927d685948341d0c0000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000000000000000000000c1c2e3f4b6075889db3c8d6c1ac97816c5d4b3a291704000000000000000000000000000000000000000000000000000f24394d5e666665636260565c5a56524e4a43363530251d140900000000000000000000000000091e324556758a9fb4bdbebebfc0c0c1c2c2c4c6c3c0c1b5b1a99f96887c68604e41301f0e000000000014293e53697e93a8bec9b5a3978181807f808284888e949ea6b4bbc3b6a99f8d7d675d4b3a2a17040000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b2611000b20354a60758a9fb5cabaa48f7a654f3a2510000000000000000f253a4f647a8fa4b9ccb9a88a75604b35200b000000000000000000000000000d22384d62787e7e7e7e7e7e79634e39230e000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000060c0d1010152b40556a8095aabfaa95806b55402b2d42576c8297acbea8937e69533e29140c0600000000162b40566b8095abc0cebdb1a89e9e9e9e9e9e9e9faba2a6abb2b7c3cac3b7ab9f95806b604e3b2b18000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000000000000000417293a4b5d6b8095a6b7cbdfcab49f8c7b655846331f140100000000000000000000000000000000000000000000000011273c51667c7c7a79777674716f6c68636054504a4336312619100200000000000000000000000b21364b60768baaa7a8a9a9aaaaabacacadafb1b4bac7cac7bab4a69d8d7e685f4d3d2c1a060000000014293e53697e93a8bec6b19b86716b6a6a6b6d6e73797f88959faab9c6baab9f8c7b655847331f0f0000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b2611000b20364b60758baabbceb8a38e78634e39230e000000000000000e23384e63788da3b8cebbaa8b76604b36210b0000000000000000000000000011263b50667b9093939393937e69533e2914000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000000000014293e53697e93a8beac97826c57422d2b40556b8095aabfaa95806a55402b15000000000000162b40566b8095abc0d5cec6b9b4b4b4b4b4b4b4b4bcc9bcc0c7c6c3b7b2a59d8d806b625142311d0d000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000000000000000e1f334658657b8c9fb4c4d4cbcebbaa9d8776614c42311f0f0000000000000000000000000000000000000000000000081e33485d7388918f8e8c8b898784817d79746d6660544b44372d201204000000000000000000000c22374c61778c91929393949595969697989a9c9fa9adb4bbc8c4b8ab9f927d675b493521110000000014293e53697e93a8bec6b19b86715c55555657595b636a757f8b9ea8b9c6bbaa9d8876614c3e2d1a0700000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100081d314455748a9fb4c9b9a48e79644f39240f000000000000000f24394e64798ea3b9cab49f8a755645321e090000000000000000000000000011263b50667b90a5a8a8a8937e69533e2914000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000000000012273c51677c91a6bcae99836e59442e293e53697e93a8beac97816c57422c17020000000000162b40566b8095abc0c0c0c1c6c0c0c0c0c0c0c0bfbfbdc9bcb5b1aca59d94877c6a62514434231300000000000000000000000000000000000000000000000f253a4f647a8fa4b9c0b29d88735d48331e080000000000081d33485d72889db2c0baa48f7a654f3a2510000000000000000000000e1e30414c6176879dabbcc9c6b6c6c8b7a598836e604e3d2c1a0a00000000000000000000000000000000000000000000071c30435474899ea5a3a2a89e9c9996928e88827b736860554a3e302212040000000000000000000b21364b60757c7c7d7d7e7f7f808181828385878a90979faab4c0c9bcb49f8a79634e3f2e1c0800000014293e53697e93a8bec6b19b86715c463f40423d4a4e57616a7b8a9ea8b9c8b7a697826d5c4a36210d00000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100021527375d72879db2c7bba6907b66513626140100000000000114263650667b90a5bbc7b29d87725d382816020000000000000000000000000011263b50667b90a5bbbda9937e69543e2914000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a251000000000000000000010253a50657a8fa5bab09a85705b4530273c52677c91a7bcae98836e59432e19040000000000162b40566b8095ababababacb1abababababababaaaaa8a6ab9f9c9690877f75665e50433426160500000000000000000000000000000000000000000000000f253a4f647a8fa4ababab9d88735d48331e080000000000081d33485d72889dabababa48f7a654f3a251000000000000000000009192b3c4d5f6e8298a5b7c2b5b1a1b1b5c2b2a0937e685b49382816020000000000000000000000000000000000000000000b20354a60758a9fb5b8c6b9b3b1afaba7a69d9790877e73645c4c40302212010000000000000000091e324556606667686869696a6b6b6c6d6d6f71767b828b9aa2b3bfcdbaa99a846f5d4b37230c00000014293e53697e93a8bec6b19b86715c46312b2d2d3639464b5d657a8a9eb4bfc4b49f8c79644e3b2a1805000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b26110000192e44596e8399aec7c0ab95806b5443301c110902000209111c3043546b8095aac0c7ae99846e59442f19000000000000000000000000000010253a50657a8fa5c9c0ab95806b563e2d19090000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000000000000000e23394e63788ea3c8b29c87725d3827253b50657a90a5bab09a85705b45301b060000000000162b40566b809595959595979c95959595959595959493918e8b86817b736960564c40332516080000000000000000000000000000000000000000000000000f253a4f647a8f959595959588735d48331e080000000000081d33485d728795959595958f7a654f3a2510000000000000000001142637485a677d92a0b2c3b5a49c8b9ca4b5beb49f8a79635645321e120000000000000000000000000000000000000000000c21364c61768babbcbcbec0c2c5c4c1c4b8b3ada49c93857a665e4c402f1f0f000000000000000003162838454b5152525354545555565757585a5760666d788499a1b3c3c7b4a2907b65503a2a1804000014293e53697e93a8bec6b19b86715c46311c181a2129323f4b5c687e92a1b3c7bcab98826d5947341f0b000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b2611000014293e53697e93a9bac7b19c8673604b3d2f201d1519151d202f3d4b6073869cb1c6baa9937e69533e291400000000000000000000000000000e24394e63798eabbcc5b09a85705c4a3727190c00000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000081d33485d72889db2c7baa48f7a654f3a25100000000000000000000c22374c61778caaabab9e897456453124394e63798ea3abab9c87725c47321d07000000000011263b50667c8080808080818780808080808080807f7e7c7976716c6560544b45382f221507000000000000000000000000000000000000000000000000000d22384d62788080808080807f6a543f2a1500000000000000152a3f546a7f80808080808078624d38220d00000000000000000b1d3144556278899eb3bebbaa9c8676869caabbbaa99c8674604b40301d0d00000000000000000000000000000000000000000d22374d62778ca2a5a7a9abadb0b3b8c4c4c8c3b6b2a39b8a7c665e4c3d2c1a0600000000000000000a1a2832363c3c3d3e3e3f40404141424339454b505a63748399a5b7cac0ae99836e5847331f0a000014293e53697e93a8bec6b19b86715c46311c00070b161e2f3d4e606e8399aec1c9b49f8b77624c37220d000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000c21374c61778a9fb4c3b6a4927d675b4b3f3631272e2731363f4b5b677d92a4b6c3b49f8b77614c37220c00000000000000000000000000000b21364b60768b9fb4cab4a28e79645544372a1c12010000000000000000000f253a4f647a8fa4b9c0b29d88735d48331e080000000000081d33485d72889db2c0baa48f7a654f3a25100000000000000000000b20354b60748c959595958b75604b3622374c62778c9595959589735e49341e0900000000000f23384c5e666b6b6b6b6b6c716b6b6b6b6b6b6b6a6a686664605757504b433632281a120400000000000000000000000000000000000000000000000000000b2034485a626b6b6b6b6b6b6a614f3c27130000000000000012273c4f616a6b6b6b6b6b6b625a4835200b000000000000000b1b2e3e4b6073849aa8b9c1b49f8b7a647a8b9fb4c1b5a496816c5e4c3b2b1808000000000000000000000000000000000000000e23394e63798c8e90929495989a9ea6a8afb4c0c9c1b5a89f8d7c665b493621120000000000000000000a161e2127272828292a2a2b2c2c2d2e2832363c49566176879db2c4c9b49f8a77614c37220c000014293e53697e93a8bec6b19b86715c46311c07000003111f31424f647a8fa3b4c8bbaa937d68533e2813000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000a1f3347586b8196a5b6c2b39e8979655d504b45384338454b505d6579899eb3c2b6a596816c5947341f0a0000000000000000000000000000091e32455671869bb0c6c0b09b85746055473a2f1d140900000000000000000f253a4f647a8fa4ababab9d88735d48331e080000000000081d33485d72889dabababa48f7a654f3a2510000000000000000000081c3043546a7f808080808075614b3621354b60738080808080806b56402b16010000000000091c2f404c505656565656575c56565656565656555553514f4b45393b3530261e160a0000000000000000000000000000000000000000000000000000000005192b3c484d565656565656544f4332200d000000000000000c2032434f545656565656564d483c2b1905000000000000031628394a5c6a7f95a2b4c6b5a3957f6a5c6a7f94a3b4c2b19f917c665948362614010000000000000000000000000000000000000b20354a607276787a7c7e808285888c939aa2b1b5c2c6baab9e8a79634e40301d0900000000000000000003090b11121313131c2024282c2d2e2e2c292c384657677c91a6b7cbbbaa927c67523d2712000014293e53697e93a8bec6b19b86715c46311c07000000011322374b5c70859bb0c5c8ae99846f593c2c19060010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b2611000004172a3a4b6175879da7b6b9a79d887b6e6560565a585a5660656e7b889da7b9b6a79d8775614b3a2a1804000000000000000000000000000003162838546a7f94a8b9c9b5a398827361594c403126190a000000000000000f253a4f647a8f959595959588735d48331e080000000000081d33485d728795959595958f7a654f3a25100000000000000000000114263650616a6b6b6b6b6b615746321e314455606b6b6b6b6b6b62503d28140000000000000011222f383b4040404040424740404040404040403f3e3c3936322825201c1408030000000000000000000000000000000000000000000000000000000000000d1d2b34384040404040403f3c3225150300000000000000031525323c3f40404040404038352b1e0e000000000000000d1e324657647a8c9fb4c0baa99b8573604b6073859ba8babdb39e8978625443301c10000000000000000000000000000000000000071c3043546061636567696b6d7073777d848f9ca4b3bfc9b9a89a84705e4d39240e000000000000000000000000000c171f253035393e41434343413e3936394b6074889db2c8c8ac97826d57362513000014293e53697e93a8bec6b19b86715c46311c0700000000071b2e3e53697e93a8c6c8b39e89735a4935200c0010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b26110000000c1e3346576379899da5b4b7a69d8c837a75706f6e6f70757a838c9da6b7b4a59d8979635746331c0c000000000000000000000000000000000c21374c61768a9eb4bfc1b2a0988477665e4b4437281b0a0000000000000d22384d62788080808080807f6a543f2a1500000000000000152a3f546a7f80808080808078624d38220d0000000000000000000008183343505556565656564b463928162637444b565656565656504433210e0000000000000004111c23262b2b2b2b2b2c322b2b2b2b2b2b2b2b2a292724211e16100b08010000000000000000000000000000000000000000000000000000000000000000000d1920222b2b2b2b2b2b2a27201507000000000000000000071520272a2b2b2b2b2b2b2220190e000000000000000d1d30404b6175879caabbc0b49f8b796355445563798a9fb4c0b8a79a8472604b3f2e1c0c000000000000000000000000000000000000132536434a4c4e50525456585b5962686f7b8699a1b3c3c6b4a2917c66513c2c19060000000000000000000001131c2a3336434a4e535658595857534e4a3e44556c8196abc1c6b09b86715443301c070014293e53697e93a8bec6b19b86715c46311c0700000000001024394f64798ea8baccb8a78d78634d38230e0010253a50657a8fa5bacab49f8a755f4a3520000000000a1f354a5f748a9fb4c9bba5907b66503b261100000003172939495b637987959fa9b2ab9f99908a86848384868a8f999fabb3a99f958779635b4939291700000000000000000000000000000000000a1f334758697f94a1b3c0beb2a29a887c6c6055453928190900000000000b2034485a626b6b6b6b6b6b6a614f3c27130000000000000012273c4f616a6b6b6b6b6b6b625a4835200b00000000000000000000001525333c4040404040403632281b0b192631354040404040403d33261604000000000000000000090f111616161616171c16161616161616151513110f0b09030000000000000000000000000000000000000000000000000000000000000000000000000000050b0d16161616161615130d030000000000000000000000030c12151616161616160d0b050000000000000008182b3b4d5e6d8297a5b6c6b4a2937e695b4937495b697e93a2b4c5b4a2957f6a5d4b3a2917040000000000000000000000000000000000081825303537393b3d3f40433b484d535d65758399a4b6cac0af9a85705a4935200c00000000000000000009141d313a474c546063686b6d6e6d6c68645c524d52677c92a7bcc9b49f8974604a35200b0014293e53697e93a8bec6b19b86715c46311c0700000000000b20354b6075899fb4c9c5a5907b66503b26110010253a50657a8fa5bacab49f8a755f392816030000000a1f354a5f748a9fb4c9bba5907b66503b2611000000000b1b2c3d495b6375808b969da6adaea99f9b9998999b9fa9aeafa69d968b8075635b493d2c1b0b000000000000000000000000000000000004172a3a4b60728399a2b1bdc0b3a69d908173605745372715020000000005192b3c484d565656565656544f4332200d000000000000000c2032434f545656565656564d483c2b19050000000000000000000000071520282a2b2b2b2b2b211e160b0009141d202b2b2b2b2b2b282116080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001325364859667c919fb1c3b9a89a8472604a3d2c3d4a6072849aa7b9c0b49f8c7b655846331f1401000000000000000000000000000000000008131c2021232527292b2d2b34373f4b576175869cb2c2cab59f8c78634d38230e000000000000000009192631424e58616a73797d81828383817e7971675f4e63788da3b8cdbaa88c77614c37220c0014293e53697e93a8bec6b19b86715c46311c070000000000081d31445571869bb1c6bda8937d68533e28130010253a50657a8fa5bacebbaa8a755746321e090000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000f1f2c3d4957606b7880888f98a0b2b4b0afadafb0b4b3a199908880786b6057493d2c1f0f000000000000000000000000000000000000000c1c304354617584979fb3b8c4b8b39e968375605544311d1200000000000d1d2b34384040404040403f3c3225150300000000000000031525323c3f40404040404038352b1e0e00000000000000000000000000030d131516161616160c090300000001080b161616161616140e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e10171917100e0900000000000000000000000000000000000006121b20202020202020202020202020202020202020202020202020202020202020202017150f0500000000000a1c3043546277899eb3bdbfb49e8a78625443301c3043546278899eb3bfbbaa9d8776614c42311f0f00000000000000000000000000000000000000070b0c0e10121416181820222e394657657b8fa4b5c9bcab937e69543e29140000000000000001142637444b60687680878e939698989896938e867d6f6061768ca1c7d7c6a38e79634e39240e0014293e53697e93a8bec6b19b86715c46311c070000000000011527375a70859aafc5bfaa947f6a553f2a150010253a50657a8fa5bad9b6a08b76614b36210c0000000a1f354a5f748a9fb4c9bba5907b66503b26110000000000010f1f2c39454b5a636b737b8298adc2c5c4c3c4c5c4af99847b736b635a4b45392c1f0f0100000000000000000000000000000000000000011426364657617481919da6b4c0bdb0a1998373604b402f190900000000000d1920222b2b2b2b2b2b2a27201507000000000000000000071520272a2b2b2b2b2b2b2220190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002111c23252c2e2c26231c11030000000000000000000000000000000616242f3535353535353535353535353535353535353535353535353535353535353535352d2a2217090000000a1a2d3d4a6072849aa7b8c5b3a1927d685a483625132536485a687d92a1b3c5b7a598836e604e3d2c1a0a000000000000000000000000000000000000000000000000000100050b111b29394b5d71869cb1c6c9ae98836e59382816020000000000000d1d314455606d7e89959da5a8abadaeadaca8a49c92837560758aa9bacdb9a48f7a644f3a250f0014293e53697e93a8bec6b19b86715c46311c07000000000000192e44596e8399aec3c0aa95806b55402b160010253a50657a8fa5baccb7a28c77624d37220d0000000a1f354a5f748a9fb4c9bba5907b66503b26110000000000000a1b2838454b5d6470798096a0b2c8bbb4b3b4bbc8b3a196807a71655d4b4538281b0b000000000000000000000000000000000000000000081829394656606c7c889aa2b3bfbfb3a197816c5e4c372614010000000000050b0d16161616161615130d030000000000000000000000030c12151616161616160d0b050000000000000000000000000000000000000000000000000000000000000000000000000000040e14162020202020202020202020202020202020201f1e1d1b16110c0a040000000000000000000000000000000a161e2e373b4143413b382f1e160a0000000000000000000000000000122434424a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a423e3527170500021628384a5b697e94a2b3c5b8a799836e604e3c2b1808182b3c4e5f6e8399a6b8c3b2a0937e685b493828160200000000000000000000000000000000000000000000000000000000000b1b2e3f546a7f94a9bfc8b29d88735645321e0900000000000d1d31424b607381929ea8b2b7c3c0c2c2c0bfc2b6b1a1998372748a9fb4c9baa5907a65503b25100014293e53697e93a8bec7b29d87725d48321d00000000000003182d42586d8297adc2c0ab96816b56412c160010253a50657a8fa5bacfbaa58f7a65503a2510000000091e324556748a9fb4c9baa5907b65503b26100000000000031628394556606d7a858e969eb4aca5aa9f9e9faaa5acb49e968e867b6d605646392816030000000000000000000000000000000000000000000b1b2938454b5e66778499a1b3c2bfb19f907c665544311d0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081621292b353535353535353535353535353535353535353332302b27211f170c070000000000000000000000000a1a28323f4b50575957504c3f32281b0a000000000000000000000000001b2f42525e606060606060606060606060606060606060606060606060606060606060606057524535220f00091e32455663798b9fa4a4a4a49e8977624c42311e0e000d1d31414c6177889ea4a4a4a49f8a79635645321e0900000000000000000000000000000000000000000000000000000000000011253b50657a90a5c8cab59f8b76604b36210b0000000005182a3b4e606d81979fb3b9c6cac4b7b3adabaaacaeb4b3a1937e748a9fb4c9bba5907b66503b26110014293e53697e93a8becab6a58a75603b2a1805000000000004192e43596e8398aec3bfaa957f6a55402a150010253a50657a8fa5bacfbea9937e69543c2b190600000b21364b60768ba9baceb9a48f79644f3a240f0000000000091e3245576074818d9ba3aba89e97908c8a898a8c90979ea8aba39b8f8274615746321e120000000000000000000000000002080b0802000000000b1a2832404c5961748399a4b5c9bdb19c8673604b35200b00000000000000000000000000000000000000000000000000000000000000000000080d0f2020202020201e1b150c000000000000000000000000020b1113202020202020201b19130900000000041626333d404a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a484745413c373329211a0f0200000000000000000002162838454b5d656c6e6c655d4b453928160300000000000000000000000020354a5e7075757575757575757575757575757575757575757575757575757575757575756c63523e2a15000b21364b6076868f8f8f8f8f8f8f7d675947342313000000131f344759667c8f8f8f8f8f8f8f8675604b36210b0000000000000000000000000000000000000000000000000000000000000c21374c61768caabbcebcab8d78634e38230e000000000b1f344859687e939fb1bdccc2b6b1a69d98969596999fa9b19c87748a9fb4c9bba5907b66503b26110014293e53697e93a8bed4c39f8a755948341f0b000000000004182a3a5a6f849aafc4bea8937e69533e29140010253a50657a8fa5bacfc4af9a846f5a4835201811101423384e63788da3c7d4c3a38d78634e38230e00000000091d2f404b607583979fabb4a29a8a827b77747474777b818a9aa2b4b1a0988475614b40301d09000000000000000000000009151d201d1509000000000a151d2f3b47566175869cabbccab6a4927d6752382815020000000000000000000000000000000000000000000000000000000000000002101b22253535353535353330291d0f0000000000000000000006141f262935353535353535302e261a0c0000000e21334451566060606060606060606060606060606060605f5e5c5a56514c473a362d1d150a0000000000000000091e324556606e7b8183817b6e605745321e0f00000000000000000000000020354a60758a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a816c57422d17000c21374c61767b7a7a7a7a7a7a7a675f4d3b2a180500000004182a3b4c5e667a7a7a7a7a7a7a7b76614c37210c0000000000000000000000000000000000000000000000000000000000000a1f334758758a9fb4cac9a58f7a65503a25100000000417293a4c62778a9eb4bdcebfb3a49c908883807f81848a939ea48d788a9fb4c9bba5907b66503b26110014293e53697e93a8beccb7a18c77624c37220d00000000000a1f33475872889db2c7c8a7927d67523d28120010253a50657a8fa5bacfcab49f8c78624d43342a272526304253687d92a8bdcab7a58c76614c37210c000000000f24384c5e6e8298a1b5b5a39a84786d6661585e5861656c78849aa3b5b2a299836e5e4d39240f000000000000000000000d19273136312719120400000002121d2a384657647a8d9fb5cac2af99846f5645321d090000000000000000000000000000000000000000000000000000000000000010202e373a4a4a4a4a4a4a48443b2d1d0c0000000000000000001424313b3e4a4a4a4a4a4a4a4642382a1a09000014293d51626b757575757575757575757575757575757575747372706b6661584e4a3d31271a0c000000000000071a2d3d4b60748290969896908375604b3e2d1a07000000000000000000000020354a60758a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f97816c57422d17000a1f3347586165656565656565645c4d41301d0d00000000000c1d30404c5c6465656565656565615847331f0a0000000000000000000000000000000000000000000000000000000000000417293a5e73899eb3c8bba6907b66513b26110000000a1f3346586c8197a8b9cdc1b3a199867b746d6b6a6c6f757e899d978297a9bacdbba5907b66503b26110014293e53697e93a8bed0bba6907b66513a2a1706000000011325364c61778ca5b7cabbaa8f7a65503a25100010253a50657a8fa5bacfcfbcab99836e614c483b3c3b36434b6070859bb0c5c7b29d87725847331f0a00000006192c3c51667c90a0b2bfb09b8575625a504c473a474c505a6274859bb0c0b2a1917c66513d2c1a0600000000000000000d1d2a37444b44372f221201000000000c1a28394a5c6f8499afc4c9b49f8a75604b36200b000000000000000000000000000000000000000000000000000000000000081b2e3e4b4f6060606060605d584c3b29150100000000000000091931424e53606060606060605b55483826130000162b40566b808a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a888785807c766d635b4b45382a1c0c00000000000c21364a5b6d8297a0acaeaca198826d5c4a36210d000000000000000000000020354a60758a9fb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac97826c57422d17000417293a474c4f4f4f4f4f4f4f4f4a3e302312000000000000001222303e4a4f4f4f4f4f4f4f4f4c473a2a1704000000000000000000000000000000000000000000000000000000000000001e33485d73889db2c8bca6917c67513c27120000000c21364c61768a9fb4c6c9b4a399837466605456555757606978879d979fb1c7d7bba5907b66503b26110014293e53697e93a8bed3c2ad97826d584733211a121110151d304354687d93a8c3cab49f8a75604b36210b0010253a50657a8fa5bad9c8b4a29b947f6d6259535150515460697e93a3b4c8c4ad98836d583a2a17040000000c2035495a71869bb1beb5a38e7a6457483c37332a33373c485664798ea3b5bfb19c86715b4935210c000000000000000c1c2a3b485560554c40301c1408000000000b1b2d3e53687d92a8bdcebbaa8e79644f39240f0000000000000000000000000000000000000000000000000000000000000d22374b5c64757575757575736a5844301b07000000000000011527374e606875757575757575706655422e190400162b40566b80959f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa99f9d9c9a96918a82796b6056473a2a1a0a000000000e24394e63798ea0b1bec3bfb2a08e79644e39240f000000000000000000000020354a60758a9fb5cacacaccc3bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfac97826c57422d1700000c1c2933373a3a3a3a3a3a3a3a362e201204000000000000000412202d363a3a3a3a3a3a3a3a37332a1c0c00000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927c67523d271200000114263753687d93a8bacdbcab9b857460564b43364039454b5a63798b9fb4bdced0bba5907b66503b26110014293e53697e93a8bed3c9b49f8a76614c43352c27262627313f4a6073859bb0c6c8b09b86705745321e090010253a50657a8fa5bacebbaa9b859b9482776e696665666a737e8c9fb4c1cbb8a6927d67523d2812000000000e23384d63788da3b5c6b19b86715c4a392b221f181f212b384a5c71869bb1c6b5a48d78634e38230e0000000000000c1c2a3a48596275665e4c403026180f0800000010243a4f64798fa4b9d8c8a6917c66513c27110000000000000000000000000000000000000000000000000000000000000f253a4f647a8a8a8a8a8a8a88735d48331e08000000000000081d314455687e8a8a8a8a8a8a8a85705b46301b0600162b40566b8095abb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5bab4b3b1afaba99f978d817461594738281603000000142a3f54697f94a9beced8cfbea9947f6a543f2a15000000000000000000000020354a60758a9fc1d2dbccbcafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa97826c57422d170000000c171f212525252525252524221b100200000000000000000002101b222425252525252525211f170c0000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000081d3144556f8499aec6cab49f8c796456453830262a28323c495b6a8095a9bacdd0bba5907b66503b26110014293e53697e93a8bed3cdbaa998826e624e493d3d3b3b37444b5d687e93a3b5c9bbaa95806b56392816030010253a50657a8fa5bacab49f8b798e9f978a837e7c7a7c7f86939faabbcec0b39d8874604b36200b0000000014293e53697e93a8c1c2ac97826d573e2d1b0e0a040a0d1a2d3e576c8297acc1c2a9937e69543e291400000000000b1b293a47586277877c665e4b43362d221b1412111223394e63788ea3b8cdbca7927d67523d28120000000000000000000000000000000000000000000000000000000000000f253a4f647a8f9f9f9f9f9d88735d48331e080000000000001325364b6074879d9f9f9f9fa2907b65503b26100000162b40566b8095abc0cacaccc3bfbfbfbfbfbfbfbfbfc0c1c3c8c7c5c7bab4ab9f968577615645321e0f000000162b40566b8095abc7d7e8d8c7ab96806b56412b16000000000000000000000020354a60758aa3b5c9cebdaf9e959595959595959595959595959595959595959595959595816c57422d1700000000040a0c101010101010100f0d0700000000000000000000000000070d0f101010101010100c0a04000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d281200000b20354b6074899eb4c9c8ae98836e5c4a38281c1415161e2c3d4c61768a9fb4c9d0bba5907b66503b26110014293e53697e93a8bed2c2b5a49c95806e635b55525050525560697b8a9eb4c1c7b49f8b78624d38230d000010253a50657a8fa5bacab49f8a74899ea89f9993919091959ca4b4bbc8c3b4a2947f6a5645311d0900000001162b41566b8096abc0c0ab96806b56412b160000000000162b40556b8095aac0c0ab96816b56412c16010000000317293947586176869c8b7c6a60544a3d372e292726272f3d50657b90a5badac9a6917c66513c27110000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b5b5b29d88735d48331e080000000000071c304354677d92a5b6b5c0b09a85705d4c38230e0000162b40566b8095abc0d5ccbcafaaaaaaaaaaaaaaaaaaabacaeb2b7c4cacdc9bcb5a39b8574604b3e2d1a07000013293e53687e93a9baccd6cdbaa9937e69533e291400000000000000000000001c31465b71869bb0c6c4b19f958080808080808080808080808080808080808080808080807c66513b261100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d281200000e24394e63798ea8b9cdbbaa917c66513e2d1a0a0100030f1f3346586e8399aec3d0bba5907b66503b26110014293e53697e93a8bec9b5a39b869c958379706a676665676c747e8a9ea8b9cdbaa998836e5a4835200b000010253a50657a8fa5bacab49f8a758298a9b4aea8a6a5a6aab1b5c2cbc1b5a59b8573604b3827150200000003182d43586d8298adc2c1ac97816c573828160300000002152838576c8196acc1c2ad98836d58432e18030000000a1e3346576176859ba49f8c7f73635b4f4b3e3e3c3b3d404c5b6c8196abc1cfbcab8f7a644f3a250f0000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e0800000000000b20354a6073869cb1c3c8b4a2907b65503f2f1c090000162b40566b8095abc0cebdaf9e9595959595959595959597999da6acb4bbc8cfc1b4a397826d5c4a36210b00000d22374d62778a9fb4b9c6b9b49f8b78624d38220d0000000000000000000000162b40566b8095abc0c1ac96816c6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a665e4c38240f0000000000000000000000000000000000030a0c151515151515150c0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d2812000012273c52677c91a7c6c9b49f8a75604b36210f000000000417293a53697e93a8bed0bba5907b66503b26110014293e53697e93a8bec6b19b867d92a1998b857f7c7b7b7d8187939fa8b9c6bfb49f8b79634e3c2b1906000010253a50657a8fa5bacab49f8a75788a9faab5c1bbbabbbfc6c4c4b8b3a39b8778625544311a0a0000000003182d42586d8297adc2c4af99846f5645321e120d0c0d121d3245566f8499afc4c2ad98826d58432d18030000000c21364b6175859ba3b5aa9f9484796e645c5753515152555e66798b9fb4c9cab59f8b77614c37220c0000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e0800000000081c2f3f51667c91a4b6c9c0af9a85705d4b372111000000162b40566b8095abc0c4b19f95808080808080808080808184888e979faab7c3d1c1b59f8d79644e39291603000b20344859697f939ea8a8a89e947f6a5a4834200b0000000000000000000000162b40566b8095abc0c1ac96816c5755555555555555555555555555555555555555555555514c402f1d09000000000000000000000000000000000b171e212b2b2b2b2b2b2b211f170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000152a3f556a7f94aabfc6b19c87715645321e09000000000010253a50657a8fa5bacfbba5907b66503b26110014293e53697e93a8bec6b19b867a8ea5aa9f9a9592909092969da5b4bac6beb2a0937e695b4a361e0e00000010253a50657a8fa5bacab49f8a75677d8b9ba3aaaeb1b2b2b1afaba69e938577625a48372614000000000001162b40566b8095abc0c9b49f8a75604b3e302523222325303d4b6075899eb4c9c0ab96806b56412b16010000051a30455a6f859aa3b5c1bbb4a29a8c837a726d696766676b717b889da9bacdc3b09b85705947341f0b0000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e08000000000e23384c5d70859bb0c2c8b4a28f7b65503f2f1c03000000162b40566b8095abc0c1ac96816c6a6a6a6a6a6a6a6a6b6c6e7379818c9da5b7c4cfbcab99836e5746321e0a0005182b3b4f61697e899193918a7f6a614f3c2b19050000000000000000000000162b40566b8095abc0c1ac96816c57414040404040404040404040404040404040404040403b382f2212000000000000000000000000000000000b1b293336404040404040403633291c0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000172c41576c8196acc1c3ad98836e583828160300000000000d22374c62778ca1b7ccbba5907b66503b26110014293e53697e93a8bec6b19b8672879db2b4b0aaa7a5a5a7acb2b7c3c6b9b4a098826e604f3d2d1a0000000010253a50657a8fa5bacab49f8a755f677a858e95999c9d9d9c9a9690887e746259483c2b190900000000000014293e54697e93a9c3cdbaa8947e695c4d413a3837383a404d5c697e93a8b9cdc3a9937e69543e29140000000013283e53687e939eb4bcc9c0b4aa9f988f87827e7c7b7c8086909da6b7c7c9b7a5947f69543b2a18040000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e08000000071b2e3e50657b90a3b5c9c0af9a846f5d4b37211100000000162b40566b8095abc0c1ac96816c57555555555555555657595b636c7a879da6b7cbc9b49f8a75614b36210c00000d1d32434f6069767c7e7c7669614f43321d0d000000000000000000000000162b40566b8095abc0c1ac96816c57412c2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b26241d120400000000000000000000000000000003172939464c555555555555554c463a29170400000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000192e43586e8398adc3c1ab96816c56412c170000000000000c21364b61768ba0c7d7bba5907b66503b26110014293e53697e93a8bec6b19b86717d929fb4b9c6bcbbbabcc1c3c5b8b3a89e938273604b42321f0f0000000010253a50657a8fa5bacab49f8a755f5c64717980848688888685817b75696056483b2b1e0e000000000000000e24394e63798ea5b6cac6b49e8a7a675f544f4d4c4d4f545e667a8a9eb4c6cab7a58e79644e39240f0000000011263a4e606b80949fabb7c3c8bbb4ada59d9793919092959ba3b3b7c4c9bcab9d8775604b36210c000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000d22374b5c6f849aafc1c7b3a28f7a654f3f2e1c0300000000162b40566b8095abc0c1ac96816c574140404040404040423d4a4e5c6478889db3c4cebbaa907c66513b2611000000142532424e586166686661584f4332251500000000000000000000000000162b40566b8095abc0c1ac96816c57412c1715151515151515151515151515151515151515110f0900000000000000000000000000000000000a1e334657616a6a6a6a6a6a6a615846331f0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000091e33495e73889eb3c8bca7927d67523d28120000192f44596e8499aec3c0aa95806b55402b16000000000000091e324657758aa9bacdbba5907b66503b26110014293e53697e93a8bec6b19b86716d81949ea8adb0b2b3b2b1aeaaa79e96897e6e605544312414010000000010253a50657a8fa5bacab49f8a755f4b4f5c646a6e717273716f6b6560564b45382a1d0e00000000000000000c21364a5b72879db2c2cdb9a89e897c7169656261626569717c899ea8b9cdc2b29d87725c4a36210d000000000b1f314250626b7f8d9da5b3b9c6cac3b7b2aca8a6a6a7aab0b5c1cbc4b7ab9f8d7c665645321e09000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000071a2d3d4f647a8fa2b4c8bfaf9a846f5d4b3721110000000000162b40566b8095abc0c1ac96816c57412c2b2b2b2b2b2b2c2d363e4a5a677d92a6b7cbc8ab95806b56402b16000000071424313a464c5153514c473a3224150700000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000c21364c61768080808080808076614c36210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354a60758aa7b8ccc4af99846f5a442f1a05001a2f445a6f8499afc4bfa9947f6a543f2a15000000000000031628395f748a9fb4c9bba5907b66503b26110014293e53697e93a8bec6b19b867160727e8992979b9d9d9d9b99959089807769604b4437271506000000000010253a50657a8fa5bacab49f8a755f4a3e4a4f55595c5d5d5c5a56504b453831271a0d000000000000000000071a2d3d54697e94a4b6c5c6b9a79e91867f7a7877787a7e86919ea7b8c6c6b6a4947f69543d2d1a070000000002142433445061697b87959ea8b1b6c2c4c7c2bebcbbbcc0c6c6c5b9b3a69d8d7d685e4c38281603000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e0800000c21364a5b6e8399aec0c7b3a18f7a644f3f2e1b030000000000162b40566b8095abc0c1ac96816c57412c171515151516171a212d3c4a6073889db3c8c2ac97826d57422d180000000006141b2933363c3e3c3733291c14060000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778c95959595958d78624d38230d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354a60758aa6b7cbbda8937d68533e281300001a2f44596f8499aec4bfaa947f6a553f2a15000000000000001f354a5f748a9fb4c9bba5907b66503b26110014293e53697e93a8bec6b19b8671546069767d82868788888683807b746b62594f423127190900000000000010253a50657a8fa5bacab49f8a755f4a2d363940444748484745413b3632281d150a00000000000000000000000f20354b6073869ca7b9c6c5b9b3a39b948f8d8c8d8f949ba3b3b8c5c6b9a89c8674604b36200f00000000000006162633434f5d65757f89949ca4a9afb2b5bcc9b9c8bbb4b1ada79e96887c685f4e402f1a0a00000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080006192c3c4e63798c9fb5cabfaf99846f5c4b372110000000000000162b40566b8095abc0c1ac96816c57412c1702000000010007101c3043546d8297adc2c3ae99846e59442f190000000000000b171f21272927211f170c00000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2aaaaaaa28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000192e44596e8399aec3c0ab95806b56402b16010000000000091e324556758aa9bacdbba5907b66503b26110014293e53697e93a8bec6b19b86715c4b5761686d71727372716e6a6560554c483b321d15090000000000000010253a50657a8fa5bacab49f8a755f4a3522242b2f31333331302c26211e160a02000000000000000000000000081d314455647a899ea8b4c0c8c2b5b1a9a4a2a1a2a4a9b1b5c1c9c0b4a89e8a7a645645311d0900000000000000081625323f4b57616a777f878e94999d9faba3a4a3aa9f9c9792898176665e4e413122120000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e08000c2035495a6d8298abbcc7b3a18f7a644f3e2e1b03000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000132536556a8095aabfc4af9a856f5a45301a00000000000000040a0c1113110c0a040000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7bfb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000182d43586d8298adc2c1ac96816c57412c170000000000000b21364b60768ba0b5d7bba5907b66503b26110014293e53697e93a8bec6b19b86715c39464b53585b5d5e5d5c5955504b4437342a1d1402000000000000000010253a50657a8fa5bacab49f8a755f4a35200f15191c1d1e1c1a16100b09020000000000000000000000000000011527374a5c647a8a9aa2b0b4c1c3c6bebab7b6b7babec6c3c1b5b0a29a8a7b655c4a3827150200000000000000000714212e39464b58616972797f84888a8d8e8e8d8c8a86827d756c61584c40312313040000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e0805182b3b4d62788b9fb4c9bfae99846f5c4a36201000000000000000162b40566b8095abc0c1ac96816c57412c17020000000000000014293f54697e94a9bec3ad98836e58432e19000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000162c41566b8196abc0c4ae99846f593a29170400000000000c22374c61778ca1b6ccbba5907b66503b26110014293e53697e93a8bec6b19b86715c4633363d42464848484644403b3531271f180d0000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a00040708080705010000000000000000000000000000000000000009192d3e4b5c647884929ba3aaaeb2b7c4b8b9b8c4b7b3aeaaa39b928479655d4b3e2e1a0a0000000000000000000003111b28323a474c545c64696f7276777979787775716d6760574c473a30221305000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48331e1616203448596c8197aabbc7b3a18e7a644f3e2e1b0200000000000000162b40566b8095abc0c1ac96816c57412c170200000000000003162839566b8095abc0c8ab96816c56412c17000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d2812000014293f54697e94a9bec7b29d87725846331f0a00000000000f24394f64798ea4b9cebba5907b66503b26110014293e53697e93a8bec6b19b86715c463121282d31323333312e2b25201d150905000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000000000000000000000000000000000000000000000000000010202e3e4b5a63727d858e94999da6a1a3a4a3a1a69d99958e867d72635b4b3f2e2010000000000000000000000000000b161e2a33373e4a4e545a57606263646361605658524b453933291c120400000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48332c2c2c2a3a4c62778a9fb4c8bfae99836e5c4a3620100000000000000000162b40566b8095abc0c1ac96816c57412c1702020202000408131e3246576e8499aec3bbaa927d68523d2813000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d2812000011263c51667c91a6c5cab49f8b76614c36210f000000000215273753687d92a8bdd0bba5907b66503b26110014293e53697e93a8bec6b19b86715c46311c13181c1d1e1d1c1915100b08010000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a000000000000000000000000000000000000000000000000000000000210202e3c4954606770797f83888b8c8d8e8d8c8b88847f7971686054493d2e2110020000000000000000000000000000030c171f212d36393f39454b4d4e4f4e4c4b45383d3632281f170c000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d48414141414147586b8096a9bac9b3a18e79644e3e2d1b020000000000000000162b40566b8095abc0c1ac96816c57412c181818181819171f2530404b61758a9fb4c7b49f8b76614c37210c000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d281200000e23384d63788da7b8ccbcab927d67523d2d19090000000a1d3144556d8297acc2d0bba5907b66503b26110014293e53697e93a8bec6b19b86715c46311c070306080908070400000000000000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a000000000000000000000000000000000000000000000000000000000002101e2c36434a525b636a6e7376777879787776736e6a645c524a43362c1f10030000000000000000000000000000000000040a101b22242a283236383939383736312728211e160a0400000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88735d565656565656566176899eb4c7bcab99836e5c4a362010000000000000000000162b40566b8095abc0c1ac96816c57412d2d2d2d2d2d2e2a3336434a5e6b8095a8babaa999846f5847331f0a000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d281200000c2035495a73889eb3c8c9ae99836e5c4a3726191110121b293a4b6074899eb3c8d0bba5907b66503b26110014293e53697e93a8bec6b19b86715c46311c070000000000000000000000000000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a000000000000000000000000000000000000000000000000000000000000000e182530353d4a4e555956606263646362605759554e4a3e353025180f01000000000000000000000000000000000000000000070d0f14161e212224242322201d15120b0903000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9c8b29d88736b6b6b6b6b6b6b6b6c8095a8b9cab59f8c79634e3e2d1b02000000000000000000162b40566b8095abc0c1ac96816c5742424242424242433a474c5460687c8b9fb4bcb49f8b79634e3a2a1704000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000001090909090909090d22374d62778ca2b7ccb7a28d78624d38230d09090909090909010000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d2812000006192c3c596e8398aec6cab49f8c79645544342b2725272e394658687d92a7b8ccd0bba5907b66503b26110014293e53697e93a8bec6b19b86715c46311c070000000000000000000000000000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a000000000000000000000000000000000000000000000000000000000000000008131c202d36393f38454b4c4e4f4e4c4b45394039362d201c130800000000000000000000000000000000000000000000000000000003090b0d0e0f0e0c0b090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9cbb7a69680818181818181818181959eafc6c3ae98836e5b4a372b1d10020000000000000000162b40566b8095abc0c1ac96816c5757575757575757585a586168737e8b9fa9b9b49e947f6a5b49351c0c000000000000000000040b0c0e0d0b05000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c1702000000000000000000000000000000000000000000000000000000040e14161e1e1e1e1e1e1e1e22374d62778ca2b7ccb7a28d78624d38231e1e1e1e1e1e1e1e16140e040000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d281200000012283d52677d92a8b9ccbcab9a8473604d483c3c3b3c3e4a576176889db3c3d2d0bba5907b66503b26110014293e53697e93a8bec6b19b86715c46311c070000000000000000000000000000000000000000000000000010253a50657a8fa5babab49f8a755f4a35200a00000000000000000000000000000000000000000000000000000000000000000000070f1a21242a28323637383938373632282a24211a0f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9d4c4b09e969696969696969696979fafbcccb9a48e79696055483b2d20100000000000000000162b40566b8095abc0c1ac96816d6d6d6d6d6d6d6d6d6e6f72767d85939fa9b4a89e93806b61503d2c1a0000000000000000070c181f2224221f180d0800000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c17020000000000000000000000000000000000000000000000000000081621282b333333333333333333374d62778ca2b7ccb7a28d78624d383333333333333333332b2921160800000000000000000000000000000000000000000000000000000000000000081e33485d73889db2c8bca7927d67523d28120000000c21364b6176899eb4c6c9b4a297816f625a54515052555c6475849a9da5b5c1d2bba5907b66503b26110014293e53697e93a8bec6b19b86715c46311c070000000000000000000000000000000000000000000000000010253a50657a8fa5a5a5a59f8a755f4a35200a000000000000000000000000000000000000000000000000000000000000000000000000070c0e15161e212223242322211e16150f0d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1114171614110e0b090200000000000000000000000000000000000000000000000000000f253a4f647a8fa4b9cfcdbcb0abababababababababacb1bdccddc8b29d887f7362594a3e2d1e0e00000000000000162b40566b8095abc0c4b19f968282828282828282828384878c929ba3b0aa9f988a7e6b625143331f0f00000000000002101b222a34373937342a221b10020000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000041626333d40484848484848484848484d62778ca2b7ccb7a28d78624d48484848484848484848413d342616040000000000000000000000000000000000000000050b0d0d0d0d0d0d0d0d0d1e33485d73889db2c8bca7927d67523d28120000000a1e3246576c8196a8b9cdc0b19f9783786f696665676a707a859a9d889ba3b5c9bba5907b66503b26110014293e53697e93a8bec6b19b86715c46311c070000000000000000000000000000000000000000000000000010253a50657b8f90909090908c755f4a35200a0000000000000000000000000000000000000000000000000000000000000000000000000000000003090b0d0e0f0e0d0b090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006141f26292d2b292724211e16130d0c06000000000000000000000000000000000000000000000f253a4f647a8fa4b9cfdacdc4c0c0c0c0c0c0c0c0c0c1c4ced1d8cbb7a69d948477645c4a3c2b1808000000000000162b40566b8095abc0cebdb19f97979797979797979798999da5a6a89e9a948b8378696051443325150100000000000311202d363b474c4e4c473b372e20110400000000000000000000000000162b40566b8095abc0c1ac96816c57412c1702000000000000000000000000000000000000000000000000000e21334450565e5e5e5e5e5e5e5e5e5e5e62778ca2b7ccb7a28d78625e5e5e5e5e5e5e5e5e5e5e56514434210e000000000000000000000000000000000000000e19202223232323232323232333485d73889db2c8bca7927d67523d2812000000031629394c62778a9eb4becebdb1a1998b847e7c7a7c7f858d9ba39580859bb0c6bba5907b66503b26110014293e53697e93a8babab19b86715c46311c07000000000000000000000000000000000000000000000000000c21374c61767b7b7b7b7b7b7b65503b2510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021424313b3e42403e3c39363228282320190e0c06000000000000000000000000000000000000000f253a4f647a8fa4b9cfd4c6b9b4b4b4b4b4b4b4b4b4b4bac7bcc3cac4b7b2a29a887a645a48362513000000000000162b40566b8095abc0d5cebdb1acacacacacacacacacad9d9392918e89857f776e625a4f423326160700000000000011212f3e4a4f59616362594f4b3e2f221100000000000000000000000000162b40566b8095abc0c1ac96816c57412c17020000000000000000000000000000000000000000000000000014283d50626b737373737373737373737373788ca2b7ccb7a28d787373737373737373737373736b62513d29140000000000000000000000000000000000000e1e2b353838383838383838383838485d73889db2c8bca7927d67523d2812000000000b1f344859697e93a0b2bfcfbfb3aa9f9993919091949b9faba38f7a8499aec4bba5907b66503b26110014293e53697e93a5a5a5a59b86715c46311c07000000000000000000000000000000000000000000000000000a1f33475861656565656565655d4b37230e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c0f1214161718191918171615110d0b050000000000000000000000000000000000000000000b1f31424e53575554514e4b45383d38352c2320190e0800000000000000000000000000000000000f253a4f647a8fa4b9d4c4b7a89e9e9e9e9e9e9e9e9e9fa9a2a7aeb4bcc9c0b4a69d8878625443301c080000000000162b40566b8095abc0d5dbcec5c2c2c2c2c2c2c2c2bea9937e7d7c7974706962594d483c322416080000000000000b1b2f3f4b5c647077797770645c4c402f1b0b000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000162b40566b808888888888888888888888888c96a7bbcfbba7968d888888888888888888888888806b56412b16000000000000000000000000000000000005192b3c484d4d4d4d4d4d4d4d4d4d4d4d5d73889db2c8bca7927d67523d28120000000005182a3b4a60728298a1b4bcc9c8bbb4afa9a6a5a7aab0b5a89b85708297adc2bba5907b66503b26110014293e53697e90909090909086715c46311c07000000000000000000000000000000000000000000000000000417293a474c505050505050504b3f2f1c0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e13161e212427292b2d2d2e2e2d2c2b2a26222019120b0902000000000000000000000000000000000011263b4e60696c6b696663605658534d493c38352c231c11070000000000000000000000000000000f253a4f647a8fa4b9cbb7a68f8a8989898989898989898b8d92999fabb6c2c4b7a69a8472604a3625130000000000162b40566b8095abc0d5cec3b7b2b2b2b2b2b2b2b3b4b49f8a86827d766d625a5043352b1e1406000000000000031628394b5d657a858c8e8c857a665e4c392917030000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000172c41576c81969d9d9d9d9d9d9d9d9d9d9da6a7b4c4d7c5b4a7a69d9d9d9d9d9d9d9d9d9d9d97816c57422d1700000000000000000000000000000000000b2035485a6262626262626262626262626273889db2c8bca7927d67523d281200000000000d1c304354607483969fabb4bbc8c5c4bebbbac9bcb4a79e8a796b8095abbabaa5907b66503b2611000d22374d62787b7b7b7b7b7b7a644f3a240f0000000000000000000000000000000000000000000000000000000c1c2933373b3b3b3b3b3b3b372f2111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e192023292932363a3c3e40424243444342403f3c38352b27211e160a0400000000000000000000000000000014293e53697e82807e7c7976726d68625a554d493c372f211a0f01000000000000000000000000000f253a4f647a8fa4b9c8b29d887474747474747474747475787c838c9ca4b5c2c4b4a2927d675443301c0700000000162b40566b8095abc0cebdb1a59d9d9d9d9d9d9d9d9fa8a99f9b97928a82786a614b4437271501000000000000091e324657657b8b9ba2a3a39b8b7c665746331e0a0000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000172c41576c8196acb3b3b3b3b3b3b3b3b3b3b8c4c4d2e2d2c5c4b8b3b3b3b3b3b3b3b3b3b3ac97826c57422d1700000000000000000000000000000000000d22384d6278787878787878787878787878788b9fb4c9bca7927d67523d281200000000000013253645566073808c999faaadb0b2b3b2b1adab9f98897b65697e93a4a4a4a4907b66503b2611000b2034485962656565656565645c4b37220d000000000000000000000000000000000000000000000000000000000c171f2126262626262625231c11030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1e2c35383e39464b4f5154565758585958575654514d483c3c3632281f170b00000000000000000000000000051a2f445a6f84979593918e8a87827d78716a625a504b3f362d1d15090000000000000000000000000f253a4f647a8fa4b9c8b29d88735f5f5f5f5f5f5f5f566062676e79869ca4b5c8c0b29c8773604a35200b00000000162b40566b8095abc0c4b19f968788888888888888898c9199a1ada99f988a7f6d605544311d100000000000000c21364b6175889da9b4c0b5a99e8876614b36210c0000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000172c41576c8196acbebebebebebebebebebec1c4cddbebdbcec4c1bebebebebebebebebebeac97826c57422d17000000000000000000000000000000000a1f354a5f748b8d8d8d8d8d8d8d8d8d8d8d8d8d9fa9bacebca7927d67523d2812000000000000081828384555606b79838b92979b9d9d9d9b98938b8378655d677d8f8f8f8f8f8f7b66503b26110005192b3b484d5050505050504f4b3e2e1b070000000000000000000000000000000000000000000000000000000000040a0c101010101010100e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006192c3c494d535857616467696b6c6d6e6e6d6c6b6a66625a59514b453833291b13020000000000000000000000031628385c71869caaa9a6ab9f9c97928d867f786e655d4e4a3d3127190d00000000000000000000000f253a4f647a8fa4b9c8b29d88735d49494949494949454b4d525b6375869caabbcab6a4907b65503b251000000000162b40566b8095abc0c1ac9681727272727272727374777c84909da6b4a99f948273604b3e2d1b07000000000012273d52677d92a6b7c7d1c7b8a6927d67523d28120000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000172c41576c8196a9a9a9a9a9a9a9a9a9a9a9abb0bdcde0cebdb1aca9a9a9a9a9a9a9a9a9a9a997826c57422d17000000000000000000000000000000000a1f354a5f748a9fa2a2a2a2a2a2a2a2a2a2a2a2b4bac7d8bca7927d67523d2812000000000000000a1a2837444b5c646e777d828587888786837e776e62594c61767a7a7a7a7a7a76614c36210c00000d1d2b34373b3b3b3b3b3b3a372e2010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2035495a63686e72767a7c7e80828283838281807f7b77736e6760564c463a301d150900000000000000000000091e32455673899eb3bec9bcb4b1ada8a49c958c837b6f635b4b44372b1d0f010000000000000000000f253a4f647a8fa4b9c8b29d88735d483434343434273136383d4a5763788b9fb4c9c3ab96816c5637271501000000162b40566b8095abc0c1ac96816c5d5d5d5d5d5d5e5962676f7b889da8b9b4a095806b5c4a36220a0000000000162b40556b8095aac4d5e5d5c5ab95806b56402b160000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000172c41576c81949494949494949494949494969fb0c4d8c4b19f96949494949494949494949494816c57422d17000000000000000000000000000000000a1f354a5f748a9fb4b7b7b7b7b7b7b7b7b7b7b7c9ced8cfbca7927d67523d281200000000000000000a1927313e4a4e5962686d70727372716e6962594d48475861656565656565615846331f0a0000000d19202226262626262624221b100200000000000000000000000000000000000000000000000000000000000000000913191b1e1e1e1e1e18161006000000000000000000000000000000000000000000000002090b1014171819181714100b090300000000000000000000000000000000000e23384d63787e83878b8f9193959797989998979594918d89837c756c61584d41312719090000000000000000000b21364b60768ba7b5bcc9bec3c7c2c2b5b1ab9f999084796b6055483c2c1f0f0100000000000000000f253a4f647a8fa4b9c8b29d88735d48331f1f1f1f151d20222d39495a6c8297acc1c6b19b86715544311d08000000162b40566b8095abc0c1ac96816c5748484848483b484d525d65798a9eb4beb49f8c7a644f3828150200000000152a40556a7f95aac1d1ddd2c1aa95806a55402b150000000000000000000000162b40566b8095abc0c1ac96816c57412c17020000000000000000000000000000000000000000000000000010253b50657b7f7f7f7f7f7f7f7f7f7f7f7f8196abc1d6c1ac96817f7f7f7f7f7f7f7f7f7f7f7f7b65503b2610000000000000000000000000000000000a1f354a5f748a9fb4babababababababababababcbabababaa7927d67523d281200000000000000000009151d2d363b484d53585b5d5e5d5c58544d483b343a474c4f4f4f4f4f4f4c463a29170400000000050b0d1010101010100f0d070000000000000000000000000000000000000000000000000000000000000000000d1b262e3133333333332e2b23180a0000000000000000000000000000000000000000080a161e2125292c2e2e2e2c2926211e160a080000000000000000000000000000071c31465c718593989d9faba6a9abacadadaeadacaba9a6a79e9991898176675f4b443727180800000000000000000e23384d63788d9e9faba5a9adb2b7c4c7c9bcb4aea19a8c8073625a493d2c1f0f00000000000000000f253a4f647a8fa4b9c8b29d88735d48331e0a0a0002090b0f1b2c3c50667b90a5c7cab49f8a75604b35200b000000162b40566b8095abc0c1ac96816c5741333333332b34373f4b5b6a7f95aac5bbaa98826d5645321d090000000010253b50657b90a3b4c2c8c3b5a3907c66503b26110000000000000000000000162b40566b8095abc0c1ac96816c57412c1702000000000000000000000000000000000000000000000000000e23384b5d65696969696969696969696969788ca2b7ccb7a28d78696969696969696969696969655d4c38230e000000000000000000000000000000000a1f354a5f748a9fa4a4a4a4a4a4a4a4a4a4a4a4a7a4a4a4a4a4927d67523d281200000000000000000000010f1a212b34373d424648484846433e37342b202933373a3a3a3a3a3a3633291c0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091b2b3842464848484848433f36281806000000000000000000000000000000000006111c232832363b3e41434443423f3b363228231c110600000000000000000000000004192e43596e8398adb2b5bcc9bec0c1c2c2c2c2c1c0bfc5b8b3aea79e96887d6d60554436261401000000000000000f24394f647a87898a8d9094989da6aab2b6c3cabfb3ab9f958578635b493d2c1d0c000000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000e21364c61768ba9bacebbaa8d77624d38220d000000162b40566b8095abc0c1ac96816c57412c1d1d1d1920222e3d4d62788da7b8c8b39e8975604b36200b000000000b20354a6072859ba4b0b2b1a59b8572604a35200b0000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000081c2f3f4b50545454545454545454545462778ca2b7ccb7a28d78625454545454545454545454504c3f2f1c08000000000000000000000000000000000a1f354a5f748b8f8f8f8f8f8f8f8f8f8f8f8f8f928f8f8f8f8f8f7d67523d2812000000000000000000000000070d182022282d30323332312e292220180d171f21252525252525211f170c00000000000000040e14162020202020201a1811080000000000000000000000090f1120202020202020201917100700000013263849565b5e5e5e5e5e585346362310000000000000000000000000000000000e19202e3738454b5054575859585754504b4538372e20190e000000000000000000000001162b41566b8096abc0c0c4b8b3b0aeadadadaeafb2b5bcc9c8c5b9b3a69d928273605443301c0e000000000000000d22364a5c64727475787b7f83888e949ca5b0b4c0c9bcb4a39b8779635b493b2a18080000000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000a1f334658748a9fb4c9c8a48e79644f39240f000000162b40566b8095abc0c1ac96816c57412c170800050b112035485a73889eb3c8b9a88e78634e39230e00000000071c304354627786949b9d9b958778625443301c070000000000000000000000162b40566b8095abc0c1ac96816c57412c1702000000000000000000000000000000000000000000000000000011212f383b3f3f3f3f3f3f3f3f3f3f4d62778ca2b7ccb7a28d78624d3f3f3f3f3f3f3f3f3f3f3b382f21110000000000000000000000000000000000000f253a4f647a7a7a7a7a7a7a7a7a7a7a7a7a7a7d7a7a7a7a7a7a77614c37220c0000000000000000000000000000050b0d13181b1d1e1d1c19140d0b0500040a0c1010101010100c0a0400000000000000081621292b3535353535352f2c25190b000000000000000003111c232635353535353535352e2b24180a0000192e4256677073737373736d64533f2b0b000000000000000000000000000004121e2b353f4b4f566065696c6d6e6d6c69656056504b3f352c1e12040000000000000000000013293e53687e93a8b1aba6a69e9b99989797989a9c9fabadb4bac7c4b8b3a0978272604b3c2b1906000000000000071b2d3e4a4f5d56606366696e73797f87909ba2b3b8c4c1b5a69d89796359473626140100000000000f253a4f647a8fa4b9c8b29d88735d48331e08000000000000081d31445574899eb4c9baa48f7a654f3a2510000000162b40566b8095abc0c1ac96816c57412c170200000006192b3c5d72879cb2c7c6a5907b65503b26100000000000132536485962757f8688868076625a48362513000000000000000000000000162b40566b8095abc0c1ac96816c57412c1702000000000000000000000000000000000000000000000000000003111c23252a2a2a2a2a2a2a2a2a374d62778ca2b7ccb7a28d78624d382a2a2a2a2a2a2a2a2a26231c11030000000000000000000000000000000000000d22374b5d646565656565656565656565656567656565656565615947341f0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041626333d404a4a4a4a4a4a4441372919080000000000000011222f383b4a4a4a4a4a4a4a4a434036281807001b31465b70858888888888826d583a2917040000000000000000000000000412222f3c494d5d656e757a7e81838383817e7b756e655d4d493c2f22120400000000000000000011263b50667b909f9b96908c8886848382828384878b90989fa9b3bfcbbeb1a0947f6a5a4935200a0000000000000010202d363938454b4d5054585b636a727b85919da6b4c0c4b7a79d8777615443301c0e00000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000b20364b60758ba8b9cdb9a48f7a644f3a250f000000162b40566b8095abc0c1ac96816c57412c1701080b0c132035485a73889eb3c8bba6917c66513c2711000000000008182b3b4857616a7173716a6158483c2b1808000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000080e10141414141414141422374d62778ca2b7ccb7a28d78624d38231414141414141414100e080000000000000000000000000000000000000000081b2e3f4b4f4f4f4f4f4f4f4f4f4f4f4f4f4f524f4f4f4f4f4f4c473a2a180400000000040e14161f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f16140e050000000e21334451566060606060605a544737251100000000000009192f404c506060606060606060595346362410001b30455b70859a9d9d9d9d88725846331f0a000000000000000000000002122230404c5a626f7a838a9093969899989794908a837b6f625a4c403022120200000000000000000e23384e63788d8b86817b7773706f6d6d6d6e6f72767b828b99a1b0bdcdbeb49f8b78624d3928160300000000000002101b2224273136383b3f3d4a4e555e66707c889aa2b2bec5b6a59a8473604b3c2b1905000000000f253a4f647a8fa4b9c8b29d88735d48331e080000000000000e23384e63788da3c6d5c5a38e79634e39240e000000162b40566b8095abc0c1ac96816c57412c1f141c202125303f4d62788da7b8ccc5a48f7a644f3a250f0000000000000d1d2b39464b555b5d5c554c463a2b1e0e00000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d0000000000000000000000000000000000000000000000000000000000000010202e373a3a3a3a3a3a3a3a3a3a3a3a3a3a36434a4a43363a37342a1c0c00000000081621292b3434343434343434343434343434343434343434343434343434343434343434342c29221608000014293d51626b7575757575756f6554412c180300000000021527374c5e6675757575757575756e6453402b1700182e43586d8398adb3b3a58b76614c36210c0000000000000000000000102030404c5e6678838f989fa9a9acadaeadaca9a99f988f8478665e4d4030201000000000000000000b20364b60747c77716b6661595b59585858595a5761666d7883969fb0c0cebaa997826d5745321e090000000000000000070d0f151d2023262a2d3639404c505f67778498a0b2bfc3b4a2947e695a4835200e000000000f253a4f647a8fa4b9c8b29d88735d48331e0a0a0002090b111e2f4053687d92a8bdcbb8a68c76614c37210c000000162b40566b8095abc0c1ac96816c574134342630353736434a5d6b8095aac5ccb8a78d78624d38230d000000000000000d1b2932363f464846403633291b0e0000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d0000000000000000000000000000000000000000000000000000000000000002101b22252525252525252525252535414d5254606054524d4134261605000000041626343d41494949494949494949494949494949494949494949494949494949494949494949413d3426160500162b40566b808a8a8a8a8a8a836f5a442f1a0500000000081d314455667c8a8a8a8a8a8a8a8a826e59432e1900162b40566b8095abc0c3a48f7a654f3a2510000000000000000000000a1a2d3e4c5e667c8999a1aeb4bac7c1c2c2c2c1c7bab4aea199897c665e4d3e2d1b0b00000000000000091d3145566067615856514c473a444342424339464b515a63728196a2b4c8c7b49e8975604b36210b000000000000000000000002090b0e11141a21242f38414d5961738298a1b3c3c0b49f8a78624d3c2c19060000000f253a4f647a8fa4b9c8b29d88735d48331f1f1f1f161e21232f3c4c5e70859ab0c5c8b39e88735847331f0a000000162b40566b8095abc0c1ac96816c5749494949434b4c505460687b8b9fb4c9c8b39e8874604b35200b00000000000000000b161e212a3133312b211f170b000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d000000000000000000000000000000000000000000000000000000000000000000080d0f1010101010101013233545525f6771757570675f51443423120100000e21344451565e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e56514434220e00162b40566b80959f9f9f9f99846f5a442f1a0500000005182a3b4b6074869c9f9f9f9f9f9e8a77624d37220d0013293e53687e93a8bdbda8937e68533e2913000000000000000000031628384a5c667c8c9ea7b3bfc9c3b7b2aeadaeb2b6c3c9bfb3a79e8c7d665c4a3928160300000000000002152738454b524c473a3b37342a2f2e2d2d2e2932363c49546072849aafc2cdb9a8907b66503b26110000000000000000000000000002090b101517181c23303a475560738399a5b6cabaa997826d5a493520090000000f253a4f647a8fa4b9c8b29d88735d483434343434283236383f4b5a657b90a2b4c8c6ae99846e593a291704000000162b40566b8095abc0c1ac96816c5f5f5f5f5f546061656a737e8a9fa9bacebfad98826d5544311d08000000000000000000030a0c151c1e1c150c0a0400000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1e314152636c7d868a8a867d6c625141301d0a000014293d51626b7474747474747474747474747474747474747474747474747474747474747474746b62513d291400162b40566b8095abb5b5af99846f5a442f1a05000000081f344759697f94a4b6b5b5b5a4947e69594834200b0011263b51667b90a6bbc1ac96816c57412c17000000000000000000091e324556647a8b9faab9c5c0b4afa59d9997999da5afb4c0c5b9aa9f8b7a645746321e0d000000000000000a1a2731363c37332a26221f181a18181819161e212c36435463798ea3b5c9c6a9947f6a543f2a150000000000000000000000060a151d20252a2c2e2e2d2b2a3744556176879db2bfc7b49f8b78634d3727150200000f253a4f647a8fa4b9c8b29d88735d49494949494938454b4d535d6578889eb3c0cdbaa8937d68533e281300000000162b40566b8095abc0c1ac96817474747474747475777a7f86929fa8bac7c5b3a1907b665037261401000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7ccb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000011253a4e606c81929b9f9f9b91806c5f4d3924080000162b41566b80898989898989898989898989898989898989898989898989898989898989898989806b56412c1600162b40566b8095abc0c4af99846f5a442f1a05000008182e3e4c6277899eb3c2cfbcab9c8673604b3b2b1805000e24394e63798ea3c6c5af9a85705a3b2b18050000000000000004182a3b4b6075879ca9bac8bcb0a29a8f87838283878f9aa2b0bcc8baa99d8775614b3b2a1805000000000000000a151d2027221f18110c0a040003030300030a0e182536495b71869bb1c6c2ac97826d57422d18000000000000000000020e1a212731363b3f41434443413d38374658657b90a1b3c7bbaa96806b5544311d0800000f253a4f647a8fa4b9c8b29d88735f5f5f5f5f5f5f5f566063686f7b889ea6b8cbc4b49f8a76614c37210c00000000162b40566b8095abc0c4b19f96898989898989898a8c8f949ca4b4bac6c5b9a799836f5e4c38190900000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c1ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b7c9b7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000216283852687d929fb0b4b4b09e917c67513625130000172c41576c81969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e97816c57422d1700162b40566b8095abc0c4af99846f5a442f1a0500001325364a5c6d8297a8b9ccc5b59f8d7a655544311d0d00000c21374c61768ca8b9c8b39e8973594834200b000000000000000b1f3447596b8095a5b6c7beb09e96847a726e6d6e727a84969eb0bec7b7a595806b5948341f09000000000000000002090b120c0a0400000000000000000000000008182c3d586d8297adc2c3ae98836e59432e1900000000000000000a151d2c3538454b50555658595856524d483c4c5e6f8499aec2c8b39e8874604b36200b00000f253a4f647a8fa4b9c8b29d887474747474747474747476787d84909ea6b8c4c8b7a696816b5847331f0a00000000162b40566b8095abc0cebdb1a89e9e9e9e9e9e9f9faba5aab1b6c2ccc2b5a79e8978634d402f1c0000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0c0ac96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca2b4b4b4a28d78624d38230d0000000000000000000000000000000000000000000000000000000000000000000000000000000000091e32455671869cb1bdcac9bdb09b85705443301c0700172c41576c8196acb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3ac97826c57422d1700162b40566b8095abc0c4af99846f5a442f1a0500071c304354647a8d9fb5c6ccb8a797826d5d4b3727150000000a1f33475874899eb4c9b8a78c77624d37220d000000000000011426364c61778a9fb4c3c5b2a0968073645c5958595c64728096a0b2c4c3b49f8a77624c37261401000000000000000000000000000000000000000000000000000000162b40566b8095abc0c2ad98836d58432e18000000000000000b1a27313d494e5660656a6c6d6e6d6b67625a514c50657a8fa4b6cab8a6907b66513b261100000f253a4f647a8fa4b9cbb7a68f8a8989898989898989898b8d929aa2b3b8c4c7baaa9d8876614c3a2a170400000000162b40566b8095abc0d5cec6b9b4b4b4b4b4b4b4b5bcc9bfc7c8c5b8b3a49c897a645a493522110000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abababab96816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778c9f9f9f9f9f8d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000b21364b60768ba4b5c9dfdfc9b49f8a75604a35200b00172c41576c8196acbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdac97826c57422d1700162b40566b8095abc0c4af99846f5a442f1a05031729394a6072859babbccfc1b39e8977614c3f2e19090000000417293a5c71879cb1c6c5a5907b66503b2611000000000000081c3043546b8095a9bacbb8a698826d60544b3e423e4a54606d8298a6b8cbbaa995806b5544311d08000000000000000000000000000000000000000000000000000005182a3b566c8196abc1c1ab96816c56412c170000000000000b1b2938454b5b636d757a7f81838382807c7870665e4c5d72879cb1c7c5ac96816c573b2a1805000f253a4f647a8fa4b9d4c4b7a89e9e9e9e9e9e9e9e9e9fa9a2a8afb4c0cbc2b6a99f8c7b655846331c0c0000000000162b40566b8095abc0c0c0c6c6c0c0c0c0c0c0c0bfbebdc4b8b3aea79e94867a645c4a3c2c19030000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b80959595959595816c57412c170200000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778b8a8a8a8a8a8b78624d38220d00000000000000000000000000000000000000000000000000000000000000000000000000000000000b21364b60768ba4b6cadedfcab49f8a75604a35200b00172c41576c8196a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a897826c57422d1700162b40566b8095abc0c4af99846f5a442f1a050a1e334657687d92a3b5c9c9b5a3937e68594734211000000000001a2f445a6f8499afc4bea9947e69543f29140000000000000b20354b6074889db3c7c7b39e8876614c43362e2d2d36434c6176889db3c6c7b39d8874604b35200b000000000000000000000000000000000000000000000000030a151f3448596f859aafc4c5a9947f6a543f2a150000000000081829394656606c79838990949698999896928b857c6f62596b8095aac9c7b29c87725947341f0b000f253a4f647a8fa4b9cfd4c6b9b4b4b4b4b4b4b4b4b4b4bac7bdc4c9c5b8b3a49c8b7d675d4b3a2917000000000000162b40566b8095ababababb1b1abababababababaaa9a7a6a69e9991887f73645c4a3e2d1e0e00000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667c8080808080807c66513c26110000000000000000000000000000000000000000000000000000000000000000000000000000000b203448596274747474747474625a4835200b0000000000000000000000000000000000000000000000000000000000000000000000000000000000091e32455672879cb2becacabeb19b86715443301c0700172c41576c81939393939393939393939393939393939393939393939393939393939393939393816c57422d1700162b40566b8095abc0c4af99846f5a442f1a0e1a2c3d4c6176889db3c1cfbcab9b8573604b3a2a18020000000002172d42576c8297acc1c2ad97826d5836261401000000000010263b50657b90a6b7cbbaa9947f695846332618181825334657697e93a8bacbb8a6907b65503b261000000000000000000000000000000000000b0b00040a0c0f161e2731424c62778a9fb4c9b9a78f7a654f3a2510000000000114263646576174818b989ea8aaabadaeadabab9f9a91847763657a90abbccab6a58c77624c37220d000f253a4f647a8fa4b9c0c0c3c3c0c0c0c0c0c0c0c0c0c0bebdc6b9b3afa79e95867a675f4d3f2e1c0c000000000000162b40566b8095959595959c9c95959595959595959392908c88837c756a60554a3d2d2010000000000000000000000000000000000000000000000000000000000000000000000000000000000f23384c5e666b6b6b6b6b6b665e4c38240f00000000000000000000000000000000000000000000000000000000000000000000000000000005182b3b484d5f5f5f5f5f5f5f4d483c2b190500000000000000000000000000000000000000000000000000000000000000000000000000000000000316283854697e93a0b2b6b6b1a0927d6853362513000010253a4f657b7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a654f3a251000162b40566b8095abc0c4af99846f5a442f25242135495b6b8096a6b8cbc4b49f8c7a645443301c0c000000000000152a3f556a7f94aabfc6b09b86715443301c08000000000417293a576c8196acc4c9b49f8a76614c3a29170800081729394b61768a9fb4c9c4ac96816c573a2a170400000000000000000000000000060c0e202020171f2125283238454b606c8197a9bac6b39e8974604b35200b00000000081c304354617584969faab4b9c6c1c2c3c2c9bcb5afa29a877963768a9fb4cac3a5907b66503b2611000f253a4f647a8fa4abababadb0abababababababababaaa9a8a6a89e9a93898075645c4d413021110000000000000011263b50667c80808080808687808080808080807f7e7d7b77736e6760564b44372d1f100200000000000000000000000000000000000000000000000000000000000000000000000000000000091c2f404c50565656565656514c402f1d09000000000000000000000000000000000000000000000000000000000000000000000000000000000d1d2b34374a4a4a4a4a4a4a38352b1e0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354b607282939ca5a49c93826d604e3a180800000e22374b5d65686868686868686868686868686868686868686868686868686868686868686868655d4b37230e00162b40566b8095abc0c4af99846f5a443b3a3936404e63798b9fb4c4cbb8a696816c5c4a3626140000000000000013283d52687d92a7bdc9b49f8975604b35200b000000000a1f33475871869cb1c6c3ae98836e5746331b0b0000000b1e3346576e8398adc3c6b19c87715847331f0a0000000000000000000000000e1920233535352933363a39464b56606b7e939fb1c7b9a896816c5544311d0800000006192c3c4b6072849aa2b4bbc8cbc8bbb4b0aeacadaeb1b5a59c877672889db2c7bfa9947f6a543f2a15000f253a4f647a8f95959595989e959595959595959595959492918e89847e756b61574a3e30231203000000000000000f23384c5e666b6b6b6b6b71716b6b6b6b6b6b6b6a696866625959514b45383127190f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000011222f383b4040404040403c382f22120000000000000000000000000000000000000000000000000000000000000000000000000000000000000d182022353535353535352220190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081c30435460727e878b8b877e72604a42311e000000081b2e3f4b4f5353535353535353535353535353535353535353535353535353535353535353534f4b3f2e1c0800162b40566b8095abc0c4af99846f5a50504f4e4c4c5e6f8499aabbcec0b39d8876614c3e2d18080000000000000010253b50657a90a5c9cdbaa98d78634e38230e000000000c21374c61768ca4b5c9c5a7927d68523929170b0d0f0d0b17293952687d92a7c5cab6a48c77614c37210c00000000000000000000000e1e2c35384a4a4a3a464c4f5357616874808d9fb5bdbcb49e8a77624c372715010000000c2035495a6a7f94a2b3c0cec4b7b2aa9f9b989797999c9faba5978170859ab0c5c1ac97826c57422d17000d22384d62788080808080838a808080808080808080807f7d7c79746f6961574b46392d2012040000000000000000091c2f404c5056565656565c5c56565656565656555452514d483b3c3631271d1509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111c23262b2b2b2b2b2b26241d120400000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d1f1f1f1f1f1f1f0d0b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011426364354606972767672686054433023130100000010212e373a3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3a372e21110000162b40566b8095abc0c4af99846f65656564636157667c91a1b3c8c8b4a2927d67584633201000000000000000000e23384d63788dabbccfc7a6917c66513c27110000000010253b50657a90a5c2ccb8a78d78624d38231820222422201923384d62788da7b8ccc2a5907b65503b25100000000000000000000006192c3c495e60606060586164696e767d87959fabbcbcb49e937e685947341909000000031628394d63788b9fb4c0d0c0b4a69d938b8683828284878b939c9f8c798399aec3c4ae99846f59442f1a000b2034485a626b6b6b6b6b6e756b6b6b6b6b6b6b6b6b6b696866636054534b463932291b0f010000000000000000000011222f383b4040404040474740404040404040403e3d3b37342b27201d150a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090f11161616161616110f09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008182636434b5457616157534a43362513050000000003101b222529292929292929292929292929292929292929292929292929292929292929292925231c11030000162b40566b8095abc0cab49f8c7b7b7b7a7a79767374879cb2bfcebbaa9a84705f4d3a29170200000000000000000b20364b60758a9fb5cabfaa957f6a55402a150000000014293e54697e93a9bec8b39e89735a4935242b34373937342b2535485a73889eb3c8bea9947e69543f2914000000000000000000000c2035495a707575757575767a7e8389929ca5b5bcb6ab9f95806b604e3b2a1800000000091e3245576b8196aabbcec2b4a29a887e76716e6c6d6e71777e879695808298adc2c6b19b86715c46311c0005192b3c484d56565656565860565656565656565656555453514e4b43363632281e160b00000000000000000000000004111c23262b2b2b2b2b31322b2b2b2b2b2b2b2a292826222018120b090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b0902000000000000000000000002090b090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000081826303539464b4b4639353025180800000000000000080e10131313131313131313131313131313131313131313131313131313131313131313100e0800000000162b40566b8095abc0cebbaa9f909090908f8e8b888b9ca5b6cac3b49f8b79634e41301b0b000000000000000000091d32455673889db3c8c3ae98836e5938281602000002172c41576c8196acc1c5b09b85705b3c30393b484d4e4d483b39303c5b70859ab0c5c1ac96816c57412c17020000000000000000000e23384d63788a8a8a8a8a8b8f93999ea8b2b6b5b0a49c8c7f72604a42311d0d000000000b21364b6075899eb3c8c9b5a49a8476696158595758595861687481958998a0b2c6c7b29d88725d48331d00000d1d2b34384040404040434a404040404040404040403f3d3c39353026211e160b03000000000000000000000000000000090f1116161616161c1c16161616161616151413110d0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061016182020202020200f0d0800000000000000000000000000070d0f2020202020201816100600000000000000000000000000000a161e211e160a0000000000000000000a161e211e160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141c20293236363228201c1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0d9c8bbb4a5a5a5a5a4a3a69ea6b2b6c3cab7a596806b5b4935231300000000000000000000021528385b70869bb0c5c7b19c87725645321e09000004192f44596e8499aec3c2ad98826d5843404d515962646259524d4142586d8297adc2c4ae99846f59442f1a04000000000000000000152b40556a80959f9f9f9fa1a4a8aeb4b9adab9f9b92867b6a605443302414000000000011263b50667b90a7b9ccc0b19c867561584c463a42423a474c56606c8095a2b2becfc8b39e88735e49331e0000000d1920222b2b2b2b2b2e352b2b2b2b2b2b2b2b2b2b2a282724201c140c090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000917232b2d35353535353525221b1002000000000000000000010f1a21243535353535352e2b23180a0000000000000000000000010f1a28323632281a1104000000000003111a28323632281a0f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b161e21211e160b070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0d5d9cecababababab9c5b8b3b8c5cad3c7b29d8775614b3d2c1a050000000000000000000000192e44596e8399aec3cab49f8a75604b36210b0000061c31465b71869bb0c6c0ab95806b56424f5f677277797772675f4f43556b8095aac0c6b19b86715c46311c070000000000000000081d32485d72879db2b5b5b5b6b9bec3c2ad9c928b857d73655d4a43362513060000000000152b40556a8095aac5c8b4a28f7a6457473a33292d2d2a3338454b6072849aafc4dac9b49e89745f49341f00000000050b0d16161616161920161616161616161616161413110e0b0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c101316181919191918171513110e0b09020000000000000000061727353f424a4a4a4a4a4a3a372e20100000000000000000000f202d36394a4a4a4a4a4a433f3528180600000000000000000003111f2c38454b45382f2211000000000011212f38454b45382d1f12040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c0c090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0d5d7cdc9babababbbec1c6c8cbd5dfd7c2ac97826d5f4d40301f0f0000000000000000000001172c41566c8196abc1c3bbaa8e79644e39240f0000081d32485d72879db2c7bea9937e69544f60697c868c8e8c877d69614f53697e93a8bec7b29d88725d48331d0000000000000000000b20354a60758aa5a0a4a9aeb3b9c5c9b5a4927e77706760554b3f302518080000000000051a2f445a6f8499afc4c5b09a85705c4a392a1f171718171f27314354647a8fa4bdcecab49f8a755f4a352000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d171e2125282b2d2e2e2e2e2d2c2a282624201d150a060000000000001023354552586060606060604f4b3e2e1b0800000000000000071a2d3e4a4e60606060606058534635231000000000000000000114212f3d495660564c402f1d0d0000000c1c2f3f4c5660564a3d2f2214010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abc0d7c6b9b4a4a4a5a6a8acb1b5bcc9ccd6cab49f8d7d675f4d3d2d19090000000000000000000014293f54697e94a9aeaeaea7927d67523d28120000091f34495e74899eb3c9bda7927d68525a697e919ca4a3a59c927f695a52677d92a7bcc9b49e89745f4926140100000000000000000b20354a60758a8a8b8f93989ea7adb4b19c867d766b61594d4130251808000000000000081d32475d72879cb2c7bfaa947f6a553e2e1b0c040000040a1525364b5c758a9fb1c4cab49f8a755f4a35200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0f1215171819191918171613100e0b08010000000000000000000000000000000000000000000000060d1820222933363a3e4042434443434241403e3c39363127211a0e0000000000162b3f52646d757575757575645c4b37220d000000000000000d21364a5c707575757575756d64533f2b160000000000000009141d31404c5b6376665e4c3b2a18080004182a3a4c5d6576635b4c40321d1409000000000000000000000000000000000000000000000000040a0c0f101111100d0b07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d151515151515150b080100000000162b40566b8095abc0cdb9a89e8f8f909193969b9fabb3b9c5cfbcab9f8d7d675b4a3727150100000000000000000012273c51677c91999999999996806b56412b160100071c304354758a9fb4cabca6917c675162788b9fb1b6c2b6b29f8b786251667c91a6bbcab49f8a755544311d0800000000000000000a20354a5e707575767a7e838990979fa9a49c928a8177675f4a43362513000000000000021527375e73889eb3c8baa5907b65503b261000000000000008182e3e576c8197acc1cebbaa8a75604a35200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b141d2024282a2c2e2e2e2e2d2c2b292623201d15090000000000000000000000000000000000000000020f1a212b343739464b4f5355575859595857565553514e4b4538352c1f0e00000000182d42586d828a8a8a8a8a8a7a644f3a250f000000000000000f24394e647a8a8a8a8a8a8a826d58432e1800000000000009192631424e5e6579877c665947362513000f1f344759657c8779665e4f42312619090000000000000000000000000000000000000000030c0c171f21242626262523201c130b0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1920222b2b2b2b2b2b2a201d1509000000162b40566b8095abc0c9b49e8a7b7a7b7c7e81868c959ea7b3bfc9bcab9e8a79635544311d0c0000000000000000000e23384e6379838484848484837f6a543f2a1500000b20354a60758aaabbcebba6917b6654697e94a9bacad3cabbaa947f6954667b90a6bbcfbcab8a75604b35200b0000000000000000071b2f42525e60566064696e747b828a969fa9a99f96897d6c605443301c140000000000081d314455748a9fb4c9b9a48e79644f39240f0000000000000014293f54697e94a9becdb9a88a75604a352000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141c20263135393d4042434344434341403e3b3835312719150700000000000000000000000000000000000a151d2c353b484d54576165686b6d6e6e6e6e6d6c6a68666360564e493d2c1a06000000182d42586d82979f9f9f9f8f7a644f3a250f000000000000000f24394e64798e9f9f9f9f98826d58432e18000000000001142637444b60687c899c8877625443301c101f32424c6177889d8a7c69604b443726140100000000000000000000000000000000000007142027293337393b3b3b3a38353025201d150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1e2b35384040404040404035312719090000162b40566b8095abc0c4af99846f656566696c7177808999a1b2bec9b9a89b8573604b3a29170400000000000000000c2135495b636e6e6e6e6e6e6e6a614f3c271300000b20364b60758ba0b5d8bba5907b66576c8197acc7d8e5d8c8ac97826c57657b90a5bad9b5a08b76604b36210b000000000000000000122434424a4a454b4f545560656d77808b9ba3b4a79e928172604a42311e0e000000000b20364b60748baabbceb8a38d78634e38230e0000000000000012283d52677d92a7bcc9b49e89745f49341f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121826303537444b4e5255575859595858575553504d4b4437322515030000000000000000000000000000000c1a27313d494e59626a70767a7d80828383838382817f7d7b797572635b4935210c000000182d42586d8297adb5b5a48f7a644f3a250f000000000000000f24394e64798ea3b5b5ad98836d58432e180000000000081d314455606c7e8c9ea6998372604a3e2d1b2d3d4f606f8399a69e8c7e6c605544311d080000000000000000000000000000000000031425323b3a474c4e5051514f4d4a4336353127191201000000000000000000000000000000000000000000000000000000000000000000000000000000000005192b3c484d555555555555554b443727150100162b40566b8095abc0c4af99846f5a5051535759626b778398a0b2c0c6b5a3947f695847331f0a0000000000000000061a2c3d494e59595959595959544f4332200d00000b20364b60758ba0b5d8bba6907b66576c8197acc6d6e1d7c6ac97816c57667b90a5bbcbb5a08b76604b36210b0000000000000000000616242f352832363a37444b5059616b79859aa2b3b39f96816c604e3c2b1906000000081d314455758a9fb4cab9a48f79644f3a240f0000000000000012283d52677d92a7bcc8b39e88735e49331e00000000000000000000000000000000000000000000000000000000000000000000000000000000000008131c2f36434b51556064676a6c6d6e6e6e6d6c6b68656360554f4332200c00000000000000000000000000000c1c2a38454b5b636e777f858b8f9395979899989897969593918e8a8679634e38230e000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e1800000000000b20354b607381939faab3a1947e695c4a3928394a5b697e93a1b3aa9f938173604b35200b00000000000000000000000000000000000c2032434f5458616465666665626054524b4437301d1509000000000000000000000000000000000000000000000000000000000000000000000000000000000b2035485a626a6a6a6a6a6a6a605544311d0800162b40566b8095abc0c4af99846f5a443c3e3b484d5962738298a2b4c7c1b39e8976614c3828150200000000000000000f1f2c3538444444444444443f3c322515030000081d314455758aaabbcebba6917b6653687e93a8b9c7ccc8b9a8937e6953667b90a6bbcfbcab8a75604b35200b0000000000000000000000121b20161e21252631353b474c5b6374849aa5b6b09f937e685a4835200b000000021527495e73899eb3c8bba6907b66513b26110000000000000014293e54697e93a9bec6b19c87715c47321c000000000000000000000000000000000000000000000000000000000000000000000000000000000008182530404c5460666e74797d7f81838383838281807e7b78746a614f3c2713000000000000000000000000000c1d2a3a4756606b79838b949b9faba8aaacadaeaeadacabaaa8a6aa9f8c77614c37220c000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e180000000002172d42576c82969fb4bbbfb49f8b7a64574632455763798b9fb4bfbbb49f96826d57422d18020000000000000000000000000000000012273b4f61697276797b7b7b7a78746e6760554d403127190900000000000000000000000000000000000000000000000000000000000000000000000000000417293a4d62788080808080807f74604b35200b00162b40566b8095abc0c4af99846f5a442f292b343b48556073849aa9baccb9a795806a5645321d090000000000000000010f1a21232f2f2f2f2f2f2f2a272015070000000215274a5f748a9fb4c9bca6917c67516176899ea9b4b9b4aa9e8a776151667c91a6bbcab49f8a755544311d08000000000000000003090b0b090202090b0f141d202a343d49566175879cb2bdb49f8a78624d392816030000001c31465c71869bb1c6bfaa957f6a553d2c1a060000000000071b2d3e576c8197acc1c4af9a856f5a45301a0000000000000000000000000000000000000000000000000000000000000000000000000000000000132536434a5e66737c83898e9295979898999898969593908d8c7f6a543f2a150000000000000000000000000a1a2a3b47596174808c989faab0b4bcc9c0c2c3c3c3c3c2c1bfbdc8b39e89745847331f0a000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e1800000000000d23384d6278889da6b7c5baa99c8675614b414b6075869ca9bac5b8a69d8878634d38230e000000000000000000000000000000000014293f54697f878c8e9090908f8d89837c74665e4b4437271501000000000000000000000000000000000000000000000000000000000000000000000000000a1f3346586c81959595959595836e5544311d0800162b40566b8095abc0c4af99846f5a442f1a18202b37445562788b9fb4c8c5b39e8875604b36200b00000000000000000000060c0e1919191919191915130d0300000000001f34495e74899eb3c9bda7927d685258667c8b999ea89e998c7d675952677d92a7bcc9b39e89745e49261401000000000000000a161e21211e160a00000001080c181f2c384657667b90a5b6baa997816c5746321e09000003192e43586e8398adc3c4af9a846f5b4935211408010002081522364a5c71869cb1c6c1ac96816c57412c1700000000000000000000000000000000000000000000000000000000000000000000000000000000091c304354606b7c8791989ea8a7aaacadaeaeadadacaaa8a5aa937d68533e28130000000000000000000000021628384759617785959faab4bbc8c9c2c3b7b2b0afaeafb0b1b2b4bbb09b86715b3a2a1804000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e1800000000000c2035495a6379889da6b8c5b6a497826d5f4d5e6c8197a4b6c5b8a79e8879635a4935200c0000000000000000000000000000000000162b40566b8095a5a3a5a6a6a4a89e9991877c6c605544311d14000000000000000000000000000000000000000000000000000000000000000000000000021527374c61768a9eaaaaaaa38f7a654f3727150100162b40566b8095abc0c4af99846f5a442f1a050d192737485a6b8095aabbcbb8a6927d675239291703000000000000000000000000040404040404040000000000000000081d32485d72879db2c7bea9937e69544d5e667a83898b89847a675f4d53697e93a8bec7b29d88725d48331d000000000000000a1b2832363632281a0b0000000000040e1a28394c5e72879db2c7b49f8a76614b36210c00000014293f54697e94a9c2cab59f8c78634e4131201c1417151d2033424f64798ea4b5c9c3a8937d68533e281300000000000000000000000000000000000000000000000000000000000000000000000000000009192f404a607280909ca4aeb4b9c6bfc1c2c3c3c3c2c1c0bdc8a5907b65503b26100000000000000000000000091e3245566177869ba3b4bbc8c7bab4aca6a59d9b9a999a9b9c9d9faaa698836e58432e1900000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e18000000000006192c3c495b6379889ea7b8c2b19f917d675a667c919fb1c2b8a79e8979635b493c2c1906000000000000000000000000000000000013283d53687d92a8c3babbbbc6b9b3aea59d918173604b42311c0c0000000000000000000000000000000000000000000000000000000000000000000000081d3144556a7f94a8b9c3b09b85705d4b3719090000162b40566b8095abc0c4af99846f5a442f1a050009192b3c4c62778b9fb4c9c4ae99846e5746331e0a000000000000000000000000000000000000000000000000000000061c31465b71869bb0c6c0aa95806b55404d5c646e7475746f645c4d41556b8095aac0c6b19b86715c46311c0700000000000b1b2839454b4b4538291b0f0200000000000b1b2f40586d8298adc2baa9907b66503b26110000000e23394e63798ea4b5c9bcab98826d5f4e423530262c2731364350616f8399aec2cab6a58d78634e38230e0000000000000000000000000000000000000000000000000000000000000000000000000000021527374c5e6b80969eb2b6c3c9c7c4c6b9b4b2b1b1b3b4b9c6bbaa8d78634d38230e00000000000000000000071b2d3e4b6074859ba4b4c1c8bbb4a99f97918c88868583848687888a8e9194806b55402b1600000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e180000000000000e1e2c3d495b647a899ea7b9bdb39e89786278899eb3bdb9a89e897a645b4a3d2c1e0e00000000000000000000000000000000000010253b50657a90a5c7bbb4bbc8c6c9c3b7b29f97826d604e3a2a1704000000000000000000000000000000000000000000000000000000000000000000000b20364b6074889db2c6b7a5917c67523f2e1b000000162b40566b8095abc0c4af99846f5a442f1a0500000e1f3447596e8398aec7c9b49f8a76614c36210c00000000000000000000000000000000000000000000000000000004192f44596e8499aec3c2ad97826d58423e4a4f59566056594f4b3e42576d8297acc2c4ae99846f59442f1a04000000000b1b28394557606056463a2d1d15090300000000162b41566b8096abc0c7aa957f6a55402a150000000c2135495b71869cb1c2c9b2a0927d68604f4b43364137444b51616a7f93a1b3c7c7b29c87725b4935210c0000000000000000000000000000000000000000000000000000000000000000000000000000081d314455667c919eb0bccaccc0b3afa7a89e9d9c9c9d9ea8a2a49f8a75604b36200b000000000000000000000d22364a5c6c8196a3b5c3c3b7aa9f958a827c7772716f6e6f70727375797c7f7b654f3a251000000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e18000000000000000e1f2c3d4a5c647a899ea8b9b9a79a8475849aa7b8b9a89e8a7a645c4a3d2d1f0f000000000000000000000000000000000000000d22384d62778da9a1aa9faaa6b1b5c2cabdb1a0937e695847331f0a000000000000000000000000000000000000000000000000000000000000000000081c2e3f52677d92a6b7c6b29d8774604b352010000000162b40566b8095abc0c4af99846f5a442f1a05000005182a3b52677c91a9bacebaa9917b66513c261100000000000000000000000000000000000000000000000000000002172c41576c8196acc1c5af9a85705a3b2d363938454b45383a372e3b5a70859aafc5c1ac97816c57422c17020000000b1b2839465760757561584a3d31271e160f0d0d0e192c3c576c8197acc1c1ac97816c57422c17020000061a2c3d53687d92a4b6c8beb49f8c7e6f656054585658556066707f8d9fb4bfcdbaa9957f6a553d2c1a0600000000000000000000000000000000000000000000000000000000000000000000000000000b20364b6074879cb2bccdc5b8b3a29a928d8988878788898b8d8f9187725544311d08000000000000000000071a2d3d4f647a8d9fb5c1c5b7a59d8c80776d6661595b5a595a5b5c566063676a655d4b37230e00000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e1800000000000000000f1f2d3d4a5c647b8a9ea8bab4a29a8a9aa2b4baa99e8a7b655c4a3e2d1f0f01000000000000000000000000000000000000000b20354a60738b8e8b8a8a8b919ba3b2bfcebeb39e8976614c37210c0000000000000000000000000000000000000000000000000000000000000000000e23374b5d71869bb1c4b9a8947e695544311d08000000162b40566b8095abc0c4af99846f5a442f1a050000000d21364b61768a9fb4c9c7ac96816c573828160300000000000000000000000000000000000000000000000000000014293f54697e94a9bec8b39d887359483422242731363127242234475973889db2c8bea9947f69543f2a140000000b1b293946576175848576635b4b44373228242222232a37495b70859bb0c5c2ad98826d58432d18030000000f20354b6074869caabbcebbaa9f93847a746f6d6c6d6f757b85949fabbccfc1b49f8a77614c37220f00000000000000000000000000000000000000000000000000000000000000000000000000000115273751677c91a5b6cac8b8a79e90847c7874727172737475777a7c7d6752372715020000000000000000000c21364a5b6f849aabbcc8b8a69d877b6b6158514c473b4544454638454b4e51554f4b3f2e1c0800000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e180000000001080b111921232d3e4b5c657b8a9fa9bab4ab9fabb4baa99f8b7b655d4b3e2e23211a110b080200000000000000000000000000000000071c304354657a78767575767c8699a1b2c4ccb9a8947e69543f29140000000000000000000000000000000000000000000000000000000000000000061a2c3d50657b90a3b5c8b39e8976614b37261401000000162b40566b8095abc0c4af99846f5a442f1a050000000a1e33465770859bb0c5c6b19b86715645321e0900000000000000000000000000000000000000000000000000000010263b50657b90a5c3cbb8a68c77624c37220f151d201d150f22374c61778ca6b7cbc3a5907b66503b261100000316293946576175849a9a86796a60554b4539393737393b485563788c9fb4cac0ab96816b56412c1601000000081d314455657b8c9fb4bcc8bbb4a29a8f88848281828589909ba3b4bcc9c3b5a395806a5947341f0b0000000000000000000000000000000000000000000000000000000000000000000000000000081d3144556e8399aec3cebbaa9e897c6f67625a5d5c5c5e5560626467675f4d391909000000000000000000000e23394e63798ea2b4c9bbaa9e8878645d4c473a37342a302e2f31273136393c3f3a372e21110000000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e1800000009151d20262c353838454b515d657b8b9fb4c9bcb5bcc9b49f8b7b655d514b453938352c26201d1509000000000000000000000000000000001325364b5d65636160586167748299a6b7cbc6af9a85705a36261401000000000000000000000000000000000000000000000000000000000000000c2135495b6f8499aec1bbaa96816b574633190900000000162b40566b8095abc0c4af99846f5a442f1a0500000003172939566b8096abc0cab49f8a76604b36210b0000000000000000000000000000000000000000000000000000000d22374c62778ca5b7cac4a6917c665136261402090b090213253651667c91a6c4cab7a58c77624c37220d00000a1e3246576175849aa2a49c8a7f74686057524e4c4c4e51596273849aabbccfc4a9947f69543f2a1400000000011527374b5d697f949eb4bac6c0b4afa79e999796989a9ea8b0b4c1ccc1b5a59b8574604b3b2a180400000000000000000000000000000000000000000000000000000000000000000000000000000b20354b6075899eb4c9c9b49f8b7b665e524d483c474737444b4d4f52524d41301e0000000000000000000005182b3b566b8096abc0c8b49f8c7b655a4b3f332a2222222222222222222223272a2522211f170c00000000182d42586d8297adc2b9a48f7a644f3a250f000000000000000f24394e64798ea3b9c2ad98836d58432e18000009192731353b3c494d545660666c72798499afc4cfcacfc4af9a8479726c666057544e493d3b363127190900000000000000000000000000000008182e3f4b4f4e4c4b464c566175889db2c8c9b39e89745443301c0800000000000000000000000000000000000000000000000000000000000004182a3a4e63798c9fb5cab49f8b78624d3929170000000000162b40566b8095abc0c4af99846f5a442f1a050000000012273c51677c91a6c8babbaa8f7a644f3a240f0000000000000000000000040b0c0e0d0b050000000000000000000b1f34475972879db2c7c1ac97816c5443301c08000000071c3043546c8196acc1c7b29d8772594834200b00000c21364b6175849aa2b4b6a99f94877d756d6864626263676d778399a2b4c9cbb7a68f7a644f3a240f000000000009192e3f4f616b80929fa8b3bfc8c5b8b3aeadabadafb4b9c6cac6b9b3a39b8778625645321d0c0000000000000000000000000000000000000000000000000000000000000000000000000000000e23394e63798ea8b9cdc6ad97826d5d4c4038352b3232273136383a3c3d39302313010000000000000000000b2034485972879cb1c7bbaa97826d5d4b3c37373737373737373737373737373737373737332a1c0c000000182d42586d8297adc2b9a48f7a644f3a250f0d0e11120f0e0d0f24394e64798ea3b9c2ad98836d58432e180001152737444b50575b63696f757b81878d99a1b3c7dcdfdcc7b3a29a8d87817b766f69635b57514b443727150200000000000000000000000000000010212e373a393635333846576b8196abc0ccb9a88a75604b35200b0000000000000000000000000000000000000000000000000000000000000a1f3347586c8197abbcc0ad98836e5a48351b0b0000000000162b40566b8095abc0c4af99846f5a442f1a05000000000e23394e63788eaaa4a4a4a4927d68523d2813000000000000000000070c181f2224221f180d080000000000000005182a3b586d8297adc6c8b39d8874604b3520130100010f20354a6073889db2c8c6ad97826d583b2b18050000152a3f556a7f94a0b0bcc7bab4a59d9389827d797777787c828a99a1b3c0d0c1b29d8873604a35200b0000000000001021324350626b7e8a99a1acb3b8c4c0c2c2c1c2c3c1c9bcb5b0a89e948577625a483828150000000000000000000000000000000000000000000000000000000000000000000000000000000011273c51667c91a6c6cdbaa88f7a644f3f2f2320191c1d151d2022252727251e1305000000000000000000000d22374c62778ca4b6cab49f8b78624d4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c473a2a17040000182d42586d8297adc2b9a48f7a644f3a2520222426272424222024394e64798ea3b9c2ad98836d58432e1800081d31445560666c72787e848a90969ca5afb3bfd0dce8dcd0c0b3afa59d96908a847e78726c66605544311d0800000000000000000000000000000003101b22252321201f293953687d93a8bdcab59f8a75604b35200b0000000000000000000000000000000000000000000000000000000000021527384c61778a9fb4c9b4a28f7a644f3c2b19000000000000162b40566b8095abc0c4af99846f5a442f1a05000000000b20354b60748c8f8f8f8f8f8f806b56402b160100000000000002101b222a34373937342a221b100200000000000012273c52677c91a8b9cbb7a6907b665141301f110c111f304150667b90a6b7cbbaa8917c67523c27120000000b20354b607382969eb3b8c5c3b6b2a79e98928e8c8c8e91979ea8b3bfd0c2b5a3937e695443301c07000000000000031525334450606879838e979da6a7abadaeafaeaeaca9ab9f9b94897f746259483c2b1a0a0000000000000000000000000000000000000000000000000000000000000000000000000000000014293e53697e93a8bec9b49f8975604b3520110b06000002080b0d0f1212100a01000000000000000000000011263b51667b90a6c2c4af9a856f62626262626262626262626262626262626262626262615847331f0a0000182d42586d8297adc2b9a48f7a644f3a2b3438393b3c393938342b394e64798ea3b9c2ad98836d58432e18000b20354b60737c81878d93999fa9acb2b6c3bcbdc0cad8cac0bdbcc3b6b2aca99f99938d87817c74604b36200b0000000000000000000000000000000000080e100e0c0b14293e53697e93a8bec8b39d88735544311d080000000000000000000000000000000000000000000000000000000000091d3145566a7f95a9bac3b09a85705c4a361e0e000000000000162b40566b8095abc0c4af99846f5a442f1a0500000000081d314455647a7a7a7a7a7a7a79634d38230e0000000000000311202d363b474c4e4c473b372e20110400000000000b21364b6075899eb4c9c4b09a85705f4d3d2f2322232e3d4d5f70849aafc4c9b49f8a76614b36210c000000081d314455607380919ea7b4bbc8c5b9b3ada7a3a1a1a3a6acb4b9c6c9bfb3a49b8573604b362513000000000000000007152633424e5b636e7981888e929598999a99989694908b867e766a6055483b2b1d0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3f556a7f94aabfc6b19c87715544311d080000000000000000000000000000000000000000000000000014293f54697e94a9bec1ac9781777777777777777777777777777777777777777777777776614c37210c0000182d42586d8297adc2b9a48f7a644f3a3c484d4e50524f4e4d483c394e64798ea3b9c2ad98836d58432e18000b20364b607589969ca5a9afb4bac7c1b5b1a7a7adbacabaada8a7b0b5c1c7bab4afa9a59d968975604b36210b0000000000000000000000000000000000000000000003172939566b8096abc0c5b09a85705b3727150100000000000000000000000000000000000000000000000000000000000b20364b6074889db3c7b6a5917c66513e2d1b00000000000000162b40566b8095abc0c4af99846f5a442f1a0500000000011527374a5c64656565656565635b4935210c00000000000011212f3e4a4f59616362594f4b3e2f22110000000000091e3245576d8297adbfc8b4a2927d675b4c3f3837383f4b5b677d91a2b4c8bfad98826d5746321e09000000011426374455606b7d89979faab3b7c4c4c2bdb9b7b7b8bcc2c8c4c2b5b1a1998677625544311808000000000000000000071524313c494d5c646c74797d808284848483817f7b77716961584b44372b1d0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000152b40556a8095aabfc5b09a85705b3727150100000000000000000000000000000000000000000000000000162c41566b8196abc0c4b19f978c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c87725d48321d0000182d42586d8297adc2b9a48f7a644f3a485a626366676463625a48394e64798ea3b9c2ad98836d58432e1800091d3145566c8197acb6c3c4c9bcb5aea39b92929cadc0ad9c92929ba3aeb4bcc9c4c3b6ac97826d5645321e09000000000000000000000000000000000000000000000a1e33465770859ab0c5c7ab96816b56412c160000000000000000000000000000000000000000000000000000000000091c2f4052687d92a6b7c5b29c8773604b35201000000000000000162b40566b8095abc0c4af99846f5a442f1a05000000000009192d3e4a4f4f4f4f4f4f4f4d493c2c190600000000000b1b2f3f4b5c647077797770645c4c402f1b0b00000000031628394e64798ea1b3c7c0b39e8979655d524d4c4d525d6579899eb3c0c8b3a18e79644f392816030000000009192637444b5f6777828b969da6aaafb2b4bcc9b9b8c5b8b3afaba49c918377625948372614000000000000000000000006131e2c353e4a4e546063686b6d6e6f6f6e6c69666158544c473a3127190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a0000000000000000000000000000000000000000000000000000182d43586d8298adc2cebdb1aca1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19e89745e4926140100182d42586d8297adc2b9a48f7a644f3a4d6278797b7c797978624d3b4e64798ea3b9c2ad98836d58432e1800021527384f657a8fa5b6c6bab4ab9f998f867d7e92a7bda8927e7c858f999fabb4b9c6b7a58f7a655038281602000000000000000000000000000000000000000000000c21364b61768a9fb4c9baa9917c66513c271100000000000000000000000000000000000000000000000000000000000e23384c5e71869cb1c4b8a7937e695443301c0800000000000000162b40566b8095abc0c4af99846f5a442f1a0500000000000010202d363a3a3a3a3a3a3a38352c1e0e0000000000031628394b5d657a858c8e8c857a665e4c39291703000000000a21364a5c6e8399a9baccb9a79e887b6f67636163676e7b889ea7b8ccbbaa99846f5c4a361b0b00000000000009192631414d59616d7881888f95999d9faba3a4a3a2a79e9a958e867c6f6159483b2a1909000000000000000000000000000e19212d3636434a4e525658595a59595754504c473a37332a1d15090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a0500000000000000000000000000000000000000000000000000192e43596e8398aec3d8cdc4c0b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b49f8a755443301c0800182d42586d8297adc2b9a48f7a644f475971868e90918e8e867159484e64798ea3b9c2ad98836d58432e1800000a22374b5d72879db2b2a89f978c837b71697e93a8bea9937e69717a838c969ea8b2b29d8773604a35200b000000000000000000000000000000000000000000000417293a52677c92a9bac9b49f8a76604b36210b00000000000000000000000000000000000000000000000000000000071a2d3d50657b90a4b5c8b39e8975614b3626140100000000000000162b40566b8095abc0c4af99846f5a442f1a0500000000000002101b22242525252525252321190e000000000000091e324657657b8b9ba2a3a39b8b7c665746331e0a00000000071a2d3d4d63798b9fb4bec5b8a69e90847c7877787c83909ea6b8c5beb49f8b79634e3e2d1b000000000000000009141d303a474c5a626b747a7f84888a8d8e8e8e8d8b8884807971675f4c473b2a1d0d000000000000000000000000000000060f1a21253035393d404344454443413f3b37332a211f170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a0500000000000000000000000000000000000000000000000000192e44596e8399aec3cdbcb0aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9afb4c0cebbaa8a75604b35200b00182d42586d8297adc2b9a48f7a644f4c61778b9fa5a7a4a48c77624c4e64798ea3b9c2ad98836d58432e180000081b2e3f556a8095a69d948a81786e655d6a7f95aabfaa95806a5d656e78818a949da695806b5443301c07000000000000000000000000000000000000000000000a1f3347586e8399aec7c8ae99836e5745321e09000000000000000000000000000000000000000000000000000000000c21364a5b6f8499afc2bbaa95806b57463218080000000000000000162b40566b8095abc0c4af99846f5a442f1a050000000000000000070d0f1010101010100e0c06000000000000000c21364b6175889da9b4c0b5a99e8876614b36210c00000000000f2135495b697f94a0b2bfc5b8b3a199918d8c8d9199a1b3b8c4bfb2a0947f695b4935201000000000000000000001131c2a343c484d5460656a6f7275777879797776736f6b645c514d41342a1d0d0000000000000000000000000000000000000708131c2024282b2d2f2f2f2e2c2a26221f180c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a20354a5f758a9fb4cac7b4a28a75604a35200b00000000000000000000000000000000000000000000000000182e43586d8398adc2c4b09e9693939393939393939393939393939393939aa2b4c8baa98b75604b36200b00182d42586d8297adc2b9a48f7a644f52677c91abbcbcc2a7927c67524e64798ea3b9c2ad98836d58432e180000001023384d63788d92887f766c635b50566c8196abc1ac96816c57505a636c767f88928d79634e36251300000000000000000000000000000000000000000000000c21374c61768a9fb4c9bbaa927d67523928160300000000000000000000000000000000000000000000000000000005182a3b4e63798ea1b3c9b49f8b77624d392816000000000000000000162b40566b8095abc0c4af99846f5a442f1a0500000000000000000000000000000000000000000000000000000012273d52677c92a6b7c7d1c7b8a6927d67523d2812000000000006192c3c4a60728298a1b4bbc8bfb3aea7a2a1a2a7aeb3bfc8bbb4a1988272604a3d2c1a0200000000000000000000000c181f2b3536434b4f555a5660626364636261585a564f4a3e39301f180c00000000000000000000000000000000000000000000070b0e131618191a1a191714110c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354a60758aa8b9ccd0c09f8a75604a35200b00000000000000000000000000000000000000000000000000172d42576c8297acc1c0ab96807e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e849aafc5b49f8a745544311d0800182d42586d8297adc2b9a48f7a644f576c8297acc9dac2ac97826d574e64798ea3b9c2ad98836d58432e180000000c2035495a6d827d746a61584e493d586d8398adc2ad98836d583c494d58616a747d826d5b49351808000000000000000000000000000000000000000000000316283853687d93a9bac9b49f8a76614c36210c000000000000000000000000000000000000000000000000000000000b1f3447596d8297acbfc0ad98826d5948341b0b000000000000000000162b40566b8095abc0c4af99846f5a442f1a05000000000000000000000000000000000000000000000000000000162b40556b8095aac4d5e5d5c5ab95806b56402b160000000000000e1c304354607383959faab3bfc5c4bcb8b6b8bcc3c5c0b4aa9f958373605443301f0f00000000000000000000000000040e19202630353a4038454b4d4e4f4e4d4c463a4039362d241d120400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091f34495e74899eb3c9c7b4a28a75604a35200b00000000000000000000000000000000000000000000000000152b40556a8095aabfb9a48f7a696969696969696969696969696969696c8297acc1b39d88735e3727150200182d42586d8297adc2b9a48f7a644f5a72879db2c7c9c7b29d87725a4e64798ea3b9c2ad98836d58432e1800000006192c3c52636d6760554c473a35445a6f8499afc4af9a846f5a45353a474c5560676d63523d2c1a0000000000000000000000000000000000000000000000091e32455670859aafc7c4af99846f5846331f0a000000000000000000000000000000000000000000000000000000021628384c62778a9fb4c9b4a28e79644e3b2b1800000000000000000000162b40566b8095abc0c4af99846f5a442f1a05000000000000000000000000000000000000000000000000000000152a40556a7f95aac1d1ddd2c1aa95806a55402b150000000000000013253644556072808c9aa1aab0b4b9c6b9c6b9b4b0aaa29a8c8072605544362513010000000000000000000000000000000508141c20252a27313638393939383633292b24221b100a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b1e2020202020202020201f0b08010000000000000000000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a050000000000000000000000000000000000000000000000000013283e53687d93a8c8bda8937e685454545454545454545454545454596e8398aec3b19c87725c47321d0000182d42586d8297adc2b9a48f7a644f62788da5b6b9b4b9b7a58d78634e64798ea3b9c2ad98836d58432e18000000000e1e35455257524b4437332a31465b70869bb0c5b09b86715b4631293337444b52575245351f0f00000000000000000000000000000000000000000000000b21364b60768a9fb4c9bea9947f69543a291704000000000000000000000000000000000000000000000000000000091e3245566a8095a9bac2af9a846f5c4a361d0d00000000000000000000162b40566b8095abc0c4af99846f5a442f1a0500000000000000000000000000000000000000000000000000000010253b50657b90a3b4c2c8c3b5a3907b66503b261100000000000000081827374454606a79848e959b9ea8a3a4a3a89e9b958e847a6b6054443727180800000000000000000000000000000000000001080b1015151d202223242422211f17160f0d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141c203435353535353535353534201d150900000000000000000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a050000000000000000000000000000000000000000000000000010253a4f657a8faabbc2ad97826d56453e3e3e3e3e3e3e3e3e3e3e475872879cb1c5b09a85705b45301b0600182d42586d8297adc2b9a48f7a6453687d92a8b9a89ea8b9a8937e685364798ea3b9c2ad98836d58432e1800000000001727353e423d3631271f1725365d72879cb2c7b29d87725d3726171f2731363d423f35271701000000000000000000000000000000000000000000000010253a4f657a8faabbcebaa48f7a654f3a2510000000000000000000000000000000000000000000000000000000001325364b6075889eb3c7b6a4907b66513e2d1b0000000000000000000000162b40566b8095abc0c4af99846f5a442f1a050000000000000000000000000000000000000000000000000000000b20354a6072859ba4b0b2b1a59b8572604a35200b000000000000000009192736434b5c646f797f85898c8e8e8e8c898580796f645c4b433627190900000000000000000000000000000000000000000000000002090b0d0e0f0e0d0c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000818263035494a4a4a4a4a4a4a4a4a493531271909000000000000000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a05000000000000000000000000000000000000000000000000000c21364b61768a9fb4c9b39e8975604b3a292929292929292928384c61768b9fb5c1ab96816c56412c170100182d42586d8297adc2b9a48f7a64546e8398adaa9e899ea9ae98836e5464798ea3b9c2ad98836d58432e1800000000000917232a2d28201d15091c30435473899eb3c8b39e89745544311d09151d20282d2a23170900000000000000000000000000000000000000000000000012273d52677c92a7c8d8b7a28c77624d37220d0b0600020000000000000000000000000000000000000000000000071c304354687e93a7b8c5b19c8673604a3520100000000000000000000000162b40566b8095abc0c4af99846f5a442f1a05000000000000000000000000000000000000000000000000000000071c304354627786949b9d9b958778625443301c07000000000000000000091826303d4a4e5b636a7074777879787774706a635b4e4a3e3026180900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001142636434b5e6060606060606060605e4b44372715010000000000000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a05000000000000000000000000000000000000000000000000000a1e32465770859bb0c9b9a7927d68584636281d1515151a21324556697e93abbcc2a7927c67523d27120000182d42586d8297adc2b9a48f7a646074889eb39f8b778b9fb39e88746064798ea3b9c2ad98836d58432e18000000000000060f1518120b08020b20354a60758a9fb4b9b59f8a75604b35200b02080b1218160f060000000000000000000000000000000000000000000000000013293e53687e93a8bdcbb5a08b76604b362b232019191812100a01000000000000000000000000000000000000000b20354a6073869cb1c5b8a7937e685443301c070000000000000000000000162b40566b8095abbabaaf99846f5a442f1a0500000000000000000000000000000000000000000000000000000000132536485962757f8688868076625a48362513000000000000000000000008141c2d363d494e55546062636463626054554e493d362d1c14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0e1215171819191816130f0b090200000000000000000000000000000000000000000000000000000000081c304354607375757575757575757574605544311d080000000000000000000000000000000000040a0c0d0d0d162b40556b8095aac0c4af9a856f5a45301a0d0d0d0d0d0d0d0d0d0d0d0b090200000000000000000000000003162939546a7f94abbcc5b39d88766154453831272a2b2d36434b6074879cb2c9b5a48d78634d38230e0000182d42586d8297adc2b9a48f7a6463798ea6b09b8570859ab0a78e796464798ea3b9c2ad98836d58432e1800000000000000000102000000000c21374c61768caba4a4a4ab8c77614c37220c00000000020100000000000000000000000000000000000000000000000000000012273d52677c92a7bfd0b7a28d78624d483b38352b2e2d27251e13050000000000000000000000000000000000071a2d3e51667b90a4b6c7b39e8875604b362513000000000000000000000000162b40566b8095a5a5a5a599846f5a442f1a050000000000000000000000000000000000000000000000000000000008182b3b4857616a7173716a6158483c2b1808000000000000000000000000010f1a212c353936434a4d4e4f4e4d4a433639362c221b10010000000000000000000000000000000000000000000000000000000000000000000000000000000000000808141c2024282a2d2e2e2e2d2b2824201d150b0801000000000000000000000000000000000000000000000000000b20354b6073898a8a8a8a8a8a8a8a8a8973604b35200b000000000000000000000000000000000c171f21232323232b40556b8095aac0c4af9a856f5a4530232323232323232323232323201d150a0000000000000000000000000d22384d62788b9fb4c8b7a698827260564b44373f403d4a4e616b8096a5b6c5b19c86715a4935200c0000182d42586d8297adc2b9a48f7a64697e93a9aa95806b8095aaa9947e6964798ea3b9c2ad98836d58432e1800000000000000000000000000000e23384d63788d8e8e8e8e8e8d78634e38230e0000000000000000000000000000000000000000000000000000000000000000000e23384d63788da1b3c4c2ac97816e6259524d483c44423d3930231301000000000000000000000000000000000d21364a5c6f849aafc2baa995806a5645321808000000000000000000000000162b40566b80909090909090846f5a442f1a0500000000000000000000000000000000000000000000000000000000000d1d2b39464b555b5d5c554c463a2b1e0e000000000000000000000000000000070f1a2123253035373939393735302523211a0f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000008111c23263035393d404243444342403e3a363127201c14080000000000000000000000000000000000000000000000000f253a4f647a8fa79f9f9f9f9f9f9fa78f7a654f3a25100000000000000000000000000000000c1c2a3337383838383840556b8095aac0c4af9a856f5a45383838383838383838383838383631271a0a00000000000000000000000b2035485a6e8398aabbc4b2a0988274666055565455575c646f7f959eb0c3b9a7937d68533c2c19060000182d42586d8297adc2b9a48f7a646f8499aea9907b657a90a9af99846f64798ea3b9c2ad98836d58432e1800000000000000000000000000000b21364b60747a79797979797a75604b36210b0000000000000000000000000000000000000000000000000000000000000000000c2035495a6f8499a6b4c0b19f9783786e68625a5b5957524d41301e0a00000000000000000000000000000005182b3b4e64798ea2b4c9b49f8a77624c382816000000000000000000000000000e23384d63787b7b7b7b7b7b7a644e39240f000000000000000000000000000000000000000000000000000000000000000d1b2932363f464846403633291b0e000000000000000000000000000000000000060c0e131c202223242322201c130e0c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000002101b222f3736434b4e5255575859595856534f4b453835302618110200000000000000000000000000000000000000000004172a3a556a8095aac5b5b5b5b5b5c5aa95806b553a2a18040000000000000000000000000004172a3a474c4d4d4d4d4d4d556b8095aac0c4af9a856f5a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b45382715020000000000000000000005192b3c4e63798b9fb4c1beb2a098877c746e6b6a6a6c727984959dafbcbfb39e8975604b36210e000000182d42586d8297adc2b9a48f7a6475899eb49f8a7660758a9fb49e897564798ea3b9c2ad98836d58432e180000000000000000000000000000091e3245566064646464646464605745321e0900000000000000000000000000000000000000000000000000000000000000000006192c3c4d6277889aa2aeb4b1a1998b837d7874706e6d675f4d3925100000000000000000000000000000000b203448596d8298adc0bfad97826d5947341a0a000000000000000000000000000c2035495a63656565656565645c4a36210d00000000000000000000000000000000000000000000000000000000000000000b161e212a3133312b211f170b0000000000000000000000000000000000000000000000070b0d0e0f0e0d0b070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000715212e373f4b50546063676a6c6d6e6e6d6b68646056514b43362f1d150a00000000000000000000000000000000000000000a1f33475870859bb0c5c3b7b2b7c3c6b09b86715947341f0a000000000000000000000000000a1f33475861626262626262626b8095aac0c4af9a856f626262626262626262626262626262605645311d0900000000000000000000000e21364a5b6b8096a3b4c2beb2a59c918983817f8082878e99a1afbbc3b3a1937e685745321e09000000182d42586d8297adc2b9a48f7a647a8fa8b09a85705770859aafa88f7a65798ea3b9c2ad98836d58432e18000000000000000000000000000003162838454b4f4f4f4f4f4f4f4b4539281603000000000000000000000000000000000000000000000000000000000000000000000e2034485962778490999fa9a7aa9f99928d898683827d67523d27120000000000000000000000000000031628394d62778b9fb4c9b3a18e79634e3b2a18000000000000000000000000000006192c3c494d5050505050504e4a3e2d1a07000000000000000000000000000000000000000000000000000000000000000000030a0c151c1e1c150c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091725333f4b4f5d656d74797d7f8283838382807d7a756e6660544c4032281a0b000000000000000000000000000000000000000c21374c61778b9fb4c7b7a59da5b7c7b59f8b77614c37220c000000000000000000000000000c21374c617678787878787878788298adc2c7b29c877878787878787878787878787878787874604b36200b0000000000000000000000071a2d3d4b6074859ba4b4c0c3b6b2a79e98969495979ca4afb3bfc2b5a599836f604e39281603000000182d42586d8297adc2b9a48f7a6a7f94aaaa95806b556a8095aaaa957f6a798ea3b9c2ad98836d58432e180000000000000000000000000000000a1a283236393939393939393632281b0a000000000000000000000000000000000000000000000000000000000000000000000005182b3b485962707b838a8f9294969fa7a89e9b9997826d57422d180000000000000000000000000000091e3245576b8095aabbc2af9a846f5b4a361d0d0000000000000000000000000000000e1e2c35383b3b3b3b3b3b39362d200f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c0f1215161718191918171613100c0a04000000000000000000000000000000000000000717273544505d65707b82888e9295979899989795938f89837b73665e4b4538291b0b00000000000000000000000000000000000013253652677c92abbcbaa99d889da9babcab927d675236251300000000000000000000000000182d42576d818d8d8d8d8d8d8d8d98a0b2c6cab6a59c8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d7a644f39240f0000000000000000000000000f1d3145566277869ba2b4bac7c5b9b3aeaba9aaacb1b6c2c9bcb4a49c8777614c42311b0a00000000182d42586d8297adc2b9a48f7a70859aafa9907a6550657a8fa9b09a8570798ea3b9c2ad98836d58432e18000000000000000000000000000000000a161e2124242424242424211e160a000000000000000000000000000000000000000000000000000000000000000000000000000d1d2b3b484c5e666e75797d7f8196acb9b3b0ac97826d57422d1800000000000000000000000000011426364b6075899eb3c8b5a4907b66503d2d1a00000000000000000000000000000000000e19202326262626262624211a0f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0d13171f2124272a2c2c2d2e2e2e2d2b2825211f170f0d07000000000000000000000000000000011425354552626a7a8590989ea7a7aaacadaeaeadaba8a89e9890867b6d6056463929190900000000000000000000000000000000071c3043546d8298adc9b49f8b778b9fb4c9ad98826d5443301c07000000000000000000000000182d42576d8297a2a2a2a2a2a2a2adb2becfd3c3b6b2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a28e79644f39240f000000000000000000000000021527384759627784959fa9b3b8c5c3c3c0bfbfc1c4c7bab4ab9f9786786259473424140000000000182d42586d8297adc2b9a48f7a758a9fb49f8a75604b60758a9fb49f8a76798ea3b9c2ad98836d58432e18000000000000000000000000000000000003090b0f0f0f0f0f0f0f0b0903000000000000000000000000000000000000000000000000000000000000000000000000000005162634424e5761686f7377797d91a6bcc8bbac97826d57422d1800000000000000000000000000081c304354697e93a7b8c4b19c86715e4c381f0f000000000000000000000000000000000000060c0e1010101010100f0d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e192023282a33373a3c3f41424343434342403e3b37332924221b1008000000000000000000000000000f1f324352636c808c9ba3adb3b8c5bfc1c2c2c2c2c0c6b9b4aea49c908174615746372715020000000000000000000000000000000b20354a6074889db3c5af9a8570859aafc4b39e8874604a35200b000000000000000000000000182d42576d8297acb7b7b7b7b7b7c2c6cfdce1d3cac7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a48e79644f39240f000000000000000000000000000a1a2a3b47596274808b969ea7aaaeb1b2b3b2b1afaba99f988c81756259483a2a18060000000000182d42586d8297adc2b9a48f7a7b90a9af9a85705645566f859aafaa907b798ea3b9c2ad98836d58432e18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013233444516068757d84898c8e919bb4ada8aa9f97826d57422d18000000000000000000000000000b20354b6073879cb2c5b8a6927d6853402f1c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c171f212b35383e3a474c4f5254565758595958575553504c473a39362d231c110200000000000000000000061a2c3d4f616c81959fabb5c1c8c9c3b6b2afadadafb2b7c4c9c2b5b19f978475615544311d0f0000000000000000000000000000000f24394f64798ea6b7c6aa957f6a7f94aac5b8a68e79644f39240f000000000000000000000000182d42576d8297acbabababababac5c8d1dee5d7cdc9bababababababababababababab9a48e79644f39240f00000000000000000000000000000d1d2a3b4756606a7881899095999b9d9e9d9c9996918a83796c6057483b2b1c0c000000000000182d42586d8297adc2b9a48f7a8096abaa95806a5538556a7f95aaab9680798ea3b9c2ad98836d58432e180000000000000000000000000000000000000000000000000000000000000000000000040a0c150b0802000000000000000000000000000000000000000000000000000818314151626c7d8892999ea7a3a6a89e98928e8a88806b55402b16000000000000000000000000071b2d3e51667c91a5b6c7b39d8875604b3620110000000000000000000000000000000000000912191b1f1f1f1f1f1f191711070000000000071117191f1f1f1f1f1f1b1913090000000000000000000000000000000000070b151515151515150c0a040000000000000000000000000000000000000000000000000000000c1c2a33373c494d5358586164676a6b6c6d6e6e6d6c6b68656158564f4a3e372f1e160a0000000000000000000c2135495b697f949fb4bcc9c5b9b3aaa59d9998989a9da6acb4bbc8bdb1a29a8473604b3d2d1a070000000000000000000000000003172939556a7f94aac4b9a88f7a647a8fa7b8c5aa957f6a553a2917040000000000000000000000182d42576d8297a4a4a4a4a4a4a4afb4c0d1d7c7bab4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a48e79644f39240f0000000000000000000000000000000d1d2a38454b5a626c757b8083868788888784817c766d645c4b45392b1d0d00000000000000182d42586d8297adc2bba6907c859bb0a98f7a65503a4f657a8fa8b19b857b90a5bac2ad98836d58432e18000000000000000000000000000000000000000000000000000000000000000000080c181f222a201d15090000000000000000000000000000000000000000000000011426364e5f6c81929ea6afb3b0a49c9289837d7975736b62503d28130000000000000000000000000d22364a5c70859ab0c3baa9957f6a5645321d0900000000000000000000000000000000000c1a262d303535353535352f2c24190a0000000a18242c2e353535353535302e261a0c000000000000000000000000000008131c202a2b2b2b2b2b2b211f170b0000000000000000000000000000000000000000000000000004172a3a474c535a62686d7276797c7f81818283838382807d7a76716b645c504b3f32281a0b0000000000000006192c3c4e63798b9fb4bdcfc1b4a79e958d8784838384888e979faab8c4c0b4a295806b5c4a36210e000000000000000000000000000a1e33465770859ab0c5b39e89746074899eb3c5b09b85705846331f0a0000000000000000000000182d42576d828f8f8f8f8f8f8f8f9aa2b4c8cdbaa99f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e7a644f39240f000000000000000000000000000000000d1a27313c484d5560656a6e71727373716f6b6761574e4a3d32281b0d0000000000000000182d42586d8297adc2bfab9a909ba3b49f8a75604b364b6075899fb4a39b9099abbec2ad98836d58432e18000000000000000000000000000000000000000000000000000000000000030a101b222a34373f363127190900000000000000000000000000000000000000000000081c304354687d929fb3b8bcb09e96877d756e6863605655504433210d000000000000000000000005192b3c4f647a8ea2b4c9b49f8a77614c3828150200000000000000000000000000000000091a2a3842454a4a4a4a4a4a444036291900000018283640444a4a4a4a4a4a4642382a1a0900000000000000000000000008182530353f4040404040403633291b0b0000000000000000000000000000000000000000000000000a1f334758616870787d82878c8f9194969798989898979593908b87817970655d4b4538291b0b0000000000000c2035495a6e8399a9bacdc1b4a39b898078726f6d6d6f7379828c9da6b8c5c0b49f8c79644e3d2c1a060000000000000000000000000c21364c61768a9fb4c3ae99846e556e8399aec3b49f8b76614c36210c00000000000000000000000e23384d63787a7a7a7a7a7a7a7a849aafc5c9b49f8b7b7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a75614b36210c00000000000000000000000000000000000a151d2b3537444b5055595c5d5e5d5c5a56514b4639362d1e160a000000000000000000182d42586d8297adc2c9b8aba6b0b5af9a856f56453244556f849aafb5b1a5abb8c8c2ad98836d58432e1800000000000000000000000000000000000000000000000000000000070b171e212e373a474c544b44372715020000000000000000000000000000000000000000000b20354b6073889db2bdc4b09e968074686056534e4b45383d3326150400000000000000000000000b2034485a6e8398adc0bcab97816c5847331a0a000000000000000000000000000000000012263848555b5f5f5f5f5f5f595447361d0d000d1d364653595f5f5f5f5f5f5b5548382613000000000000000000000000132536434a545555555555554c463a29170400000000000000000000000000000000000000000000000c21374c61767e858d93989da5a4a7a9abacadaeaeadacaaa8ab9f9c968e857b6d6056463929160300000000000e23384d63788c9fb5c7c7b5a39b84776b625a5a58585a5b636d7a889da7b9ccbcab99846f5b4935210c00000000000000000000000011273c51667c91aabbc4a8937e6953687e93a8c3bbaa917c67513c271200000000000000000000000c2035495a63656565656565656b8095aac0c4af9a846f656565656565656565656565656565615746321e0a000000000000000000000000000000000000020e19202731363b4044464849484744413c363329211a0f0300000000000000000000182d42586d8297adc2d7c9bfbbc6c7aa957f6a55382837556a7f94aac6c6babec8d8c2ad98836d58432e180000000000000000000000000000000000000000000000000002090f1a212933363f4b4f59616a605544311d080000000000000000000000000000000000000000000f253a4f647a8fa6b7cbc0ab96806b60564b453839363127282115070000000000000000000000031729394d62788b9fb4cab59f8c79634e3a2a18000000000000000000000000000000000000192d425566707474747474746e65543b2b1805182a3b53646e747474747474706755422e190400000000000000000000071c304354606a6a6a6a6a6a6a615846331f0a0000000000000000000000000000000000000000000000162b40566b80939ba3a8adb2b7c3bcbfc0c1c2c3c2c2c1c0c9bcb5b1aba39b908274615746321e130000000003162939556a7f95abbccdbaa99b857462594d483c43433d4a4e5c6478899eb3c2c9b59f8c78634e38230e0000000000000000000000061a2c3d576c8297acc8b7a68e78634e63788da5b7c8ac97826d573d2d1a070000000000000000000006192c3c494d4f4f4f4f4f4f556b8095aac0c4af9a856f5a4f4f4f4f4f4f4f4f4f4f4f4f4f4f4b463929160300000000000000000000000000000000000000000509151d20262b2e31323333322f2c27211e170b07000000000000000000000000182d42586d8297adc2d7dbd3d0cdbaa98f7a654f3a253a4f647a8fa8b9cdd0d2dad8c2ad98836d58432e180000000000000000000000000000000000000000000000060a151d202d3639464b535d656d777f74604b36200b00000000000000000000000000000000000000000012283d52677d92a7c4d4b7a18c77624c4538322823201d150a0d040000000000000000000000000a1e3346576b8096aabbc1ae99846f5b49351c0c0000000000000000000000000000000000001b30455b70848a8a8a8a8a8a836e594834200b1f3447596e828a8a8a8a8a8a85705b46301b06000000000000000000001325364a60727f80808080808076614c36210c000000000000000000000000000000000000000000000013283e53687d93a8b4c1c2c7c4bec4b8b3b0afadadadafb2b4bbc8c6c1b4b09f978475614b42311a0a0000000a1e32465770859bb0c9c9b49f8a786256483b352b2e2e2d363e4a5a677d91a4b5c9bcab957f6a5538271502000000000000000000000c2136495b72879db2c7b29d88735b495b72879db2c7b29d88735b4a36210c00000000000000000000000e1e2c35383a3a3a3a3a40556b8095aac0c4af9a856f5a453a3a3a3a3a3a3a3a3a3a3a3a3a3632291b0b000000000000000000000000000000000000000000000002080b1015191c1d1e1e1c1a16120c0a030000000000000000000000000000182d42586d8297adc2d5d5d8d8c9b49f8a75604b3620364b6075899eb4c9d7d8d5d5c2ad98836d58432e18000000000000000000000000000000000000000001080e19202832363d4a4e576168717a838a8b75604b36210b00000000000000000000000000000000000000000013293e53687e93a8bdcbb6a08b76614b36271e160e0b09020000000000000000000000000000011426374b6176899eb3c8b5a3907b65503d2c1a0000000000000000000000000000000000000012283d52677d929f9f9f9f9f8b77624c37221022374c62778b9f9f9f9f9f927d68523d281300000000000000000000071c304354677c91959595959586705846331f0a000000000000000000000000000000000000000000000010263b50657b90a5c9c8bbb4afa9a5a69d9b9a989798999c9faaafb3c0c8bdb1a299836f604e3828150200000c21364b61768a9fb4cac5ac96816c5a48382b201918181a212d3c4d5f71869cb1c6c9b09b85705645311d09000000000000000000000e23394e63798ea5b7c2ad98826d583d586d8297adc9b7a68e79634e39240e0000000000000000000000000e192023252525252b40556b8095aac0c4af9a856f5a4530252525252525252525252525211e160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000182d42586d8297adc0c0c0c3c2c0af9a846f5645311d3144556f8499afc0c2c3c0c0c0ad98836d58432e180000000000000000000000000000000000000508141c202c3538454b525b636c767e868f989f8b76604b36210b00000000000000000000000000000000000000000012273c52677c91a7c6d6b7a28d77624d38220d02000000000000000000000000000000000000081d314455697e94a7b9c4b19b86715d4b371f0f000000000000000000000000000000000000000b20364b6074889db3b4b4aa947f69543e2e1b2d3e54697f94aab4b4b39e8875604b36200b000000000000000000011426364a6073869caaaaaaa6927c67523a29170400000000000000000000000000000000000000000000000e23384d63788dabb4adaa9f9a94908c88868483828384878a919aa2b4bac7c0b3a1937e685645321d0900000f253a4f647a8faabbccb9a78e79644f3c2b1a0d06000007101e304153687e93a8c6c9b49f8a75604b36200b0000000000000000000316283954697e94a9c3c2a7927d67523d52677c92abbcc4a9947f695439291603000000000000000000000000060c0e101010162b40556b8095aac0c4af9a856f5a45301a10101010101010101010100c0a030000000000000000000000000000000000000000000000000000030a0c1014171819181714110c0a03000000000000000000000000000000182d42586d8297ababababb0adabaa947f6a553827152737546a7f94a9abadb0abababab98836d58432e1800000000000000000000000000000000080d181f2630353c494d56606770798189939ca4ada08b76604b36210b0000000000000000000000000000000000000000000f24394f64798ea8b9cdbaa58f7a65503a2510000000000000000000000000000000000000000b20354b6074879db2c5b7a6927d67523f2e1c0100000000000000000000000000000000000000091d3145566a7f95a9bac8b19c86715c4b3722364a5c71869cb1c8bbaa95806a5645321d09000000000000000000081c304354677c91a4b5c6b29d8774604b35200b0000000000000000000000000000000000000000000000000b20364b60758a9f9f98918a857f7b7773706f6e6d6e6f72767c84919fa9bacdbfb29d8875604b36200b000013283d52687d92a7c8c9b39e8974604b35200e0000000000001323384e63788da8b9ccbaa98e79634e39230e000000000000000000091e3245576f849aafc4b6a48c77624c374c61778b9fb5c4af9a846f5746321e0a000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a0500000000000000000000000000000000000000000000000000000000000000000000000000090b171e21262a2c2e2e2e2c2a26211e170b0700000000000000000000000000182d42586d8295959595959e9895958f7a644f3a250f243a4f647a8f9595989e9595959595826d58432e1800000000000000000000000000030a111c232a3436434b515a626b757d858e979ea8b1b5c2a08b76604b36210b0000000000000000000000000000000000000000000b20354b6075899eb4c9bfa9947f6a543a2a17040000000000000000000000000000000000081b2e3f51677c91a5b7c6b29d8874604b3620110000000000000000000000000000000000000000021527384c62778a9fb4c9b6a48f7a644f3828384f64798ea4b5c9b49f8b77624c382815020000000000000000011426374b6073869cb1c2baa8947f6a5544311d08000000000000000000000000000000000000000000000000081d3144557287938a837c766f696561595b5a5858585a5761676f7d8b9fb4c0cbb7a6917c67513c27120000152a3f556a7f94aabfc6b09b86715443301c080000000000000b20354a6074899eb4c9c7a5907b66503b26110000000000000000000b21364b60768a9fb4c6b19c8671594834475971869cb1c6b49f8a76614b36210c000000000000000000000000000000000000162b40556b8095aac0c4af9a856f5a45301a05000000000000000000000000000000000000000000000000000000000000000000000007121d242933363b3f42434443423f3b363329201c1308000000000000000000000012273c51677d80808080808a8380808074604b36200b20354b6073808080828a80808080807c67523c27120000000000000000000000070b171e212e373b474c5460666f788088929ba2acb4b9c6cac7a08b76604b36210b000000000000000000000000000000000000000000081d3144556e8398aec5c4af9a846f5847331f0a00000000000000000000000000000000000d22374b5d70859bb0c3b9a8947f6a5544311d080000000000000000000000000000000000000000000a1f3447596d8298adc0c2ac97816c56453245566c8197acc2c1ad98826d5948341a0a000000000000000000081d314455677d92a4b6c9b49f8a76614c3727150100000000000000000000000000000000000000000000000002152737576c817e766e67615754504c473b4543424339464b515f677d91a2b4c8c4ad98826d583727150100172c41566c8196abc1c4af9a846f5a36261401000000000000071c30435472879db2c7bca7917c67523c271200000000000000000011263b51667b90a9bac8ab96816c563b2b3b566b8196abc8baa9917b66513c2611000000000000000000000000000000000000162b40556b8095aab8b8af9a856f5a45301a0500000000000000000000000000000000000000000000000000000000000000000002101b222f3839464b5054575859585754504c46393530251810020000000000000000001024394d5f676b6b6b6b6b756d6b6b6b605544311d081d314455606b6b6b6d756b6b6b6b6b675f4d392510000000000000000002090f1a212933363f4b5059626a737c848c969ea7b0b4c0c9c9bcb4afa98b76604b36210b0000000000000000000000000000000000000000000115273751667c91a7b9cab49f8b77614c37210c0000000000000000000000000000000006192b3c4f647a8fa3b4c9b49e8a76614c3727150200000000000000000000000000000000000000000005182a3b4f64798ea2b4c9b39e8975604b364b6075899eb3c8b4a38f7a644f3b2b18000000000000000000011527374b6073879cb2c2bcab97816c58473319090000000000000000000000000000000000000000000000000000092a3e52636c696158514c46393b37342a2f2e2d2e283236414d5f70859ab0c5c7b29c87725544311d0800172d42576c8297acc1c4af99846f5a36251300000000000000001325365b71869bb0c6bda7927d68523d2813000000000000000006192c3c576c8196acc7bbaa917b66513c263b51667b90aabbc7ac97816c573d2c1a060000000000000000000000000000000000162b40556b8095a3a3a3a39a856f5a45301a0500000000000000000000000000000000000000000000000000000000000000000614202d36404c51576165696c6d6e6d6c69666157514a43362d20140600000000000000000a1d30414d51565656565660585656564b4437271502142637444b56565658605656565656524d41301d0a000000000000060a161e212d3639464c535d656e777f8791999fabb3b8c5c8c2b5b1ab9f9a928a74604b36200b000000000000000000000000000000000000000000000b20364b6075899eb3c9bbaa927d6853392917030000000000000000000000000000000b2035495a6e8398aec1bcab96816c584733190900000000000000000000000000000000000000000000000d22364a5c70859ab0c3b9a7927c67523b52677c91a7b8c4b09b85705c4a361d0d000000000000000000081d314455687d92a4b6cab59f8c79634e3a2a170000000000000000000000000000000000000000000000000000000f2234455257534c473a36332926221f181a191819161e21304153697e93a8becab49f8a75604b35200b001a30455a6f859aafc4c6b09b86715443301c0700000000000005192b3c5c72879cb1c7bca7917c67523c271200000000000000000c2035495a72879cb2c7b49f8a76614b3621364b61768a9fb4c7b29d87725b4935210c0000000000000000000000000000000000162b40556b808e8e8e8e8e8e846f5a45301a0500000000000000000000000000000000000000000000000000000000000000071524313e4a4f5e666f767b7f81838383817f7b766f6660544a3e322516080000000000000001122330393c40404040404a434040403631271909000919263135404040434a40404040403c393023130100000000080e19202832363e4a4e576169717a838b949da5afb4bcc9c4b7b2aba39b948b847d75615645311d0900000000000000000000000000000000000000000000091d3245566d8297acc6c8af99846f5746331e0a00000000000000000000000000000417293a4d62788c9fb4cab49f8c78634d3a2917000000000000000000000000000000000000000000000000071b2d3e51677c91a5b7c5af9a846f5948596f8499afc5b7a6917c67523e2d1b000000000000000000021527384b6074879db2c3c2ae99846f5b49351c0c000000000000000000000000000000000000000000000000000000051727343e423e37332a211e17100c0b0400030300030913263b50657b90a5bacebbaa8c77614c37220c00192e43596e8398aec3c8b39e8974604a35200d0000000000000b2034485a73889eb3c8baa5907b65503b261000000000000000000d23384d62788da5b6c5b09b85705746331e32465770859ab0c5b6a58d78634e38230e00000000000000000000000000000000000c22374c617779797979797978624d38230d0000000000000000000000000000000000000000000000000000000000000005152533424e5c64717b848a9094979899989794908a847c72645c4f43332616060000000000000005121d24272b2b2b2b2b352e2b2b2b201d150900000009141d202b2b2b2d352b2b2b2b2b27251d130500000003111c232c3538454b525c646c767e868f989faab2b7c3c5b9b3aca69d968e867f776f6861574638271502000000000000000000000000000000000000000000000215283850667b90a8b9c9b49f8a76614c36210c00000000000000000000000000000a1f3346586c8196abbcc1ae99836e5a49351c0c000000000000000000000000000000000000000000000000001020354b6074879db2c6b49f8b77624d62778b9fb4c7b29d8774604b352010000000000000000000091d314556687d92a5b6c9b5a4907b65503d2c1a00000000000000000000000000000000000000000000000000000000000917222a2c29211f170c0a03000000000000000000000f243a4f64798fa4b9d8c7a28c77624d37220d00182d42586d8297adc2ccb8a78e79644e3c2b1a0e06000100081325364d62778da6b8cbc3a48f7a644f3a240f000000000000000215273853697e93a8c3c6aa95806a553929172839556a7f95aac6c3a9937e695438281602000000000000000000000000000000000b1f34475961636363636363625a4835200b00000000000000000000000000000000000000000000000000000000000001132333435060697a8590999faaa9acadaeadaca9aa9f9991867a696150443324140100000000000000010a1012161616161620181616160b0802000000000001080b1616161820161616161612100a010000000011212f383c494d5660677079828a939ca4adb4bbc8bbb4aea79e979088807971696259524b4639291a0a0000000000000000000000000000000000000000000000000b20364b6075899eb4c9baa9917c67523c271200000000000000000000000000011527374c6176899eb4c9b5a38f7a654f3c2c190000000000000000000000000000000000000000000000000000081d314455697f94a8babcab947f6a556a7f94aabbbaa9947f6a5544311d080000000000000000021528384b6074879db2c3c4b19c86715d4b381f0f000000000000000000000000000000000000000000000000000000000000050f1517140c0a040000000000000000000000010a16283950667b90a5bbcebaa98b76614b36210c00182d42586d8297adc2d5c5ab96816b5a48382b20191816171b22304354687d93a8c5cab6a58c77614c37220c00000000000000091d3145566f8499aec4b9a88f7a654f3a2510253a4f647a8fa8b9c4af99846f5645321e090000000000000000000000000000000004182a3b474c4e4e4e4e4e4e4d483c2b19060000000000000000000000000000000000000000000000000000000000000f1f314250616a7e8c9ba3aeb4bbc8c1c2c3c2c1c8bbb4afa39b8c7f6b625042311f0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081c2f3f4b505a636b757d858e979ea8b1b5c2c0b4b0aa9f999189827b736b635b544d483b3633291b0b00000000000000000000000000000000000000000000000000081d3144556f849aafc4c7ac96816c57412c1700000000000000000000000000081d314455697f94a8b9c3b09b85705d4b371e0e0000000000000000000000000000000000000000000000000000011426374c61768a9fb4c9b29c87725d72869cb1c8b49f8a77614c372715010000000000000000091d324556687e93a5b7cab8a6927d68533f2f1c0100000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000308141c283245576b8095aac0c9b49f8a745746321e0a00172d42576c8297acc1d7c9b49f8a786256483c352b2d2c2d2e37424a6072869cb1c6c7b29d87725947341f0b000000000000000b20364b6075899eb4c9b49e8975604b36200b20354b6075899eb3c9b49f8a75604b36210b00000000000000000000000000000000000c1d2a343739393939393938352b1e0e000000000000000000000000000000000000000000000000000000000000061a2c3d4e606a7f939faab5c1c9c9bcb5b3b1b3b5bcc9cac1b5aa9f94806b604e3d2d1a070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23384b5d656f788088929ba3acb4b9c2b6b1aaa29b938a837c756d6560544e4a3d37342b211e170b00000000000000000000000000000000000000000001080b080102152737566b8095abc0c5b09b86705b362614010000000000000000000000000b20354b6074879db2c6b7a5917c67523f2e1b00000000000000000000000000000000000000000000000000000000091f3347586c8197acc0b6a48f7a657a8fa4b6c0ac97826d58473319090000000000000000021628384b6075879db2c3c7b39e8875604b36201100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a161e263038454b6075889db2c8c6b09b86715b3929160300172c41566c8196abc1dac9b7a69b8574625a4d493c4241423f4b4f606a7f95a4b6cac4ad98836e583b2a18040000000000000010263b50657b90a8b9c4ae99846f5544311d081d3144556e8499aec3baa9907b66503b26110000000000000000000000000000000000000c181f222424242424242320190e000000000000000000000000000000000000000000000000000000000000000c2136495b687e929db4bbc8c3b7b2ab9f9e9c9e9fabb2b7c3c8bbb49e937e685b4a36211200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010253b50657b848c969ea7b0b4c1b8b3aba49c958d857e766e676056504a4336362d2220180d0a0300000000000000000000000000000000000000000008141c201c141b17293e53697e93a8bec8b39e88735443301c080000000000000000000000081c2e3f52677d92a6b7c6b29d8774604b352010000000000000000000000000000000000000000000000000000000000417293a4e63798ea2b3c3ac97826d8297acc2b4a28e79634e3a2a17000000000000000000091e324556697e93a6b7cbbaa995806a5645321d090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c181f283236434b56606c8197a6b7cbc0ab96816b56412c160000162b40566b8095abc0cfbcab9d889b85786b625a59575657595d656f7e8d9fb4c2cbb8a6927d67523d27120000000000000005192b3b566b8196abc6c4a9947e69543727150215273754697e93a9c4c7ab96816c563c2b1905000000000000000000000000000000000000040b0c0e0e0e0e0e0e0d0b0600000000000000000000000000000000000000000000000000000000000000081c2f3f4e63798b9fb4bccebfb3a59d938b8887888b939da5b2bfcebcb49f8b79634e402f1c0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f84999fabb3b8bab4ada69e968f877f7870686158514b4538353025211a0f0b050000000000000000000000000000000000000000000000081826303530263029334154697f94a9beccb8a78a75604b35200b00000000000000000000000e23374b5d71859bb0c4b9a8947f695544311d0800000000000000000000000000000000000000000000000000000000000c2135495b6f849aafc3b49e8a77899eb3c3af9a846f5b4a361c0c0000000000000000031628394b6075889db3c4c9b49f8a77624c38281502000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e19212a3438454b5460677481979fb1c4c7b4a28f7a644f3a240f0000152a3f546a7f94a9bfcab59f8c798e9b898078726e6d6b6c6e737a84939fabbccfc2b39d8875604b36200b000000000000000b2034485971869cb1c6b8a68e79634e39240e000e23394e63798ea6b7c7b19c87725a4835200b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23384c5d6f849aa9bacdc0b3a199877e77737173767e8798a0b2c0cdbaa99a85705e4c38240d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afbcc9baa99f989088817a726a625a534c473a363228201c1308070000000000000000000000000000000000000000000000000001142636434b4336453a464c5f6f849aafc4cab49f8a755443301c080000000000000000000006192c3c50657a8fa3b5c8b39e8976614c372715010000000000000000000000000000000000000000000000000000000000061a2c3d51667b90a4b6b9a89e899ea7b9b6a5917c66513d2d1a000000000000000000091e324557697e94a6b7cbc0ad97826d5947341a0a000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b222c353a474c566068737c86979fb1bdcdbaa99a84705c4a36220d000012283d52677d92a7bccfbcab8b74869b9e968d888382818284888f99a1b4bcc9c7b5a4957f6a5645311d09000000000000000d22374d62778ca4b5c8b39d88735b4a36210c000c2136495b73889db2c8b6a48d78624d38220d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004182a3b50657b90a2b4c7c7b4a29983766961585c586168768298a2b4c7c7b4a2907b66513b2b1905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afc4c9b49f8b827b746c645c554d493c37332a211e160b0700000000000000000000000000000000000000000000000000000000081c30435460545c5b5a58616b7d91a2b3c7c7b29d87725d36261401000000000000000000000c2135495b6e8399aec1bbaa96816b5746331909000000000000000000000000000000000000000000000000000000000000000f20354a6073879cb2c6b9a89fa8b9c5b29d8773604b35200f0000000000000000031629394b6075889db3c4c2b4a28e79634e3b2a1800000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a212d363c494d59616a757e87919ca4b1bdcebbb49f8b79644e3e2e1b07000010253b50657a90a5c5d6b7a28c777b90a0aba59d99979697999ea6afb3bfcfc5b9a99c8674604b382715020000000000000114263753687d92a8c2c2ad98836d583d2d1a0700061a2c3d586d8298adc2c2a8937e68533727150200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1f3447596f8499afc0cdbaa99a847461584c473a474c576173849aa9bacdc0af9a846f594834200b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afc4c7b19c877971696259534c4639363127221b100c060000000000000000000000000000000000000000000000000000000004182a3a4b60737371706f7176808c9fb4c0d0c0ad98836e58432e190000000000000000000004172a3a4d63788c9fb5cab49f8b78624d3929170000000000000000000000000000000000000000000000000000000000000000071c304354697e93a8b9c6bab4bac6b9a8937e695443301c0800000000000000000a1e324657697f94a6adadadad9a846f5b4a361d0d0000000000000000000000000000000000000000000000000000000000000000000000000000000a161e2d363e4a4f5b636c778088939ca5b1b6c2c7bab49d937e695c4a3620100000000d22384d62788da7b9ccb9a48f7a6d8297a1b4b2aeacabacaeb3b8c4c7cac2b5a79e8b7a645645321a0a00000000000000081d3144556e8398aec3c2a7927d68523d281300000012283d52677d92a7c2c3ae99836e5544311d0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c22374c61778b9fb4cac9b49f8a786256463a332a3339465562778a9fb4c9cab59f8c77624d37220d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afc4cab6a49c8e867f776f686157514b4437372e2321190e0a04000000000000000000000000000000000000000000000000000a1f334758738988868585868b959faabbcec4b4a2907b65503b2610000000000000000000000a1f3347586c8197abbcc0ad98836e5a48351b0b0000000000000000000000000000000000000000000000000000000000000000001325364b6176899eababababababab9e8976614c3626140100000000000000000c21364b617688989898989898907c66513d2d1a0000000000000000000000000000000000000000000000000000000000000000000000000000010f1b28323d4a4e5c646e78818a959ea7b2b6c3cac3b7a99f937f6a604e3d2d1a020000000b2035485a74899eb3c9bda8927d687483969faab4bac7c1c3c4c2c1c2b6b1a49c897b655c4a38281500000000000000000b20354b6074899eb3c9b6a48d77624d38220d0000000d22374d62778ca4b6c9b49e8975604b36200b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013283d53687d92aabbcec2ab96806b5a4838291f181f293748596b8096abc2cfbcab937e68533e2913000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499acb4b9c2b6b1a49c948b847d766e6660554f4b3f38352c221f180c0903000000000000000000000000000000000000000000000c22374c61778c9e9b9a9a9b9faab4bbc8c4b7a69a8472604a35200b000000000000000000021527384c61768a9fb4c9b4a28f7a644f3c2b1900000000000000000000000000000000000000000000000000000000000000000000081e3246576c81959595959595959595816c574633180800000000000000000010253a50657b828383838383838172604a35200f0000000000000000000000000000000000000000000000000000000000000000000000000003111f2c39454b5b636e7a838c979fa9b3b8c5cac8bbb4a59d8b7e6a615042311f0f0000000005192b3c5a70859aafc5c1ac97826c6073808c989fa9abadafafadaba8a49c928679655d4b3e2d1a0a000000000000000010253a4f657a8fa7b9c7b19c87725a4834200b0000000b2034485971879cb1c6b9a88f7a65503a25100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002162838586d8398adc8cab6a48e79634e3c2b1a0b040b192b3b4e63788da4b5c9c9ae98836e5939291703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172d42576c818e979ea8b1b5c2b5b1ab9f9a928a837c756c645d554d493c37342a211e160b0801000000000000000000000000000000000000000f243a4f64798fa4b1b0afb1b4bbc8c9bfb3a69d8878625443301c07000000000000000000091d3145566a7f94a8bac3b09b85705c4b371e0e00000000000000000000000000000000000000000000000000000000000000000000031629394d627880808080808080808078624d392917000000000000000000000e23374b5d656d6d6d6d6d6d6d6c605443301c070000000000000000000000000000000000000000000000000000000000000000000000000311212f3d4957606b79838e999fabb4bac7cccabfb2aa9f96877a68605043332414010000000000162b40566b8095abc6c7b29c87725b606b79838a9195989a9a9896938d877d73635b4b3f2e200f000000000000000004182a3b556b8095aac5c8ac97816c573c2b190500000005182b3b576c8196acc8c6ab95806b563b2b1805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091e32455672879cb2c7c7b19c87725b49351d0d0000000d2135495b71869cb1c6c7b29d87725746331e0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3e52636c79828a939ca4adb4bbbcb4afa99f989188817a726a635b544c473a363228201c140801000000000000000000000000000000000012273d52677c92a7bcc0c1c0bfc6b9b4ada199887a645a49362513000000000000000000000b20364b6074889da0a0a0a5917c66513e2e1b0000000000000000000000000000000000000000000000000000000000000000000000000b2035485a626b6b6b6b6b6b6b6b6b625a48351b0b00000000000000000000081c2e3f4b5058585858585858574a433625130000000000000000000000000000000000000000000000000000000000000000000000000010212f3f4b5b6375808c99a1aeb4bcc9cdc9bcb5aea1998c8075645c4e423325150600000000000010253a50657a8fa8b9cab6a58e79634e5b636e767c8083848483817e78726860544a3d2e21110100000000000000000b1f34475971869bb0c6bbaa917c66513c2711000000000011263c51667b91aabbc6b19b8671594834200b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b21364b60758a9fb4cac2ac97826d573d2c1a00000000061a2c3d576c8297acc1cab59f8b76614b36210c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f223545525c646c767e868f989faab2b7c3bab4aea79e978f87807870696159524b45393530261c140800000000000000000000000000000000152a40556a7f95a6a9abababaaa8a89e988f8377645c4a3c2b18080000000000000000000013283d52687d8b8b8b8b8b8b8773604b35201000000000000000000000000000000000000000000000000000000000000000000000000005192b3c484d5656565656565656564d483c2b1900000000000000000000000011212e373a434343434343434235302518080000000000000000000000000000000000000000000000000000000000000000000000000d1d2e3f4b5d657986969faab3bfcacdc8bbb4ab9f998e83796b61574b3e31241507000000000000000b20364b6075899eb3c9c3ab96816c584a4e5861676b6e6f6f6d6c68625a524b43362d1f11030000000000000000000c22374c61778b9fb5cab49f8b76614c36210c00000000000c21364c61768a9fb4cab5a38c77624c37220d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23384d63788dabbccfbea9947e69543f2914000000000014293e54697e93a9becfbcab8e79634e39230e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051727353e4a4e576169717a838b949da5afb4bcc5b8b3aca59c958d857e776f676057504b433630261808000000000000000000000000000000172d42576c818d919495969695938f89837a6e62594a3e2d1e0e00000000000000000000000b20354b607375767676767674605443301c08000000000000000000000000000000000000000000000000000000000000000000000000000e1e2b353840404040404040404038352b1e0e00000000000000000000000003111c23252e2e2e2e2e2e2e2d201c130800000000000000000000000000000000000000000000000000000000000000000000000005182a3b4b5d657b8a9ca4b4bbc8ccc6bab4aa9f978c837a6e635b4b46392e2014060000000000000000081d3144556d8297adc1c9b49e8a76614c3f474c5156585a5a5856534d493c353026180f010000000000000000000013253652677d92abbcc5b09b85705846331f0a00000000000a1e33465770859bb0c5c2a7927d685236261401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010253a4f657a8fa4c9d9bba6917b66513c2611000000000011263b51667b90a6bbdac9a5907b65503b2610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000917202d3639464c535d656e777f8790999fabb3b8c5c3b6b2aaa39b938b847d756d6560544b43362614010000000000000000000000000000152a3e52636c787c7f808181807d7a756e655d4d483b2d2010000000000000000000000000081d314455606060606060606055443626140100000000000000000000000000000000000000000000000000000000000000000000000000000e1920222b2b2b2b2b2b2b2b2b2320190e000000000000000000000000000000080e1018181818181818170b0700000000000000000000000000000000000000000000000000000000000000000000000000000b1f344759657b8a9ea8b6c2cec5b9b3a89f968b82796e645c4e4a3d32281b1002000000000000000000021527374f647a8fa3b5c9b9a897816c5d4b3c373c4043454543413e38352b201c14080000000000000000000000071c3043546d8398adc9c7aa95806b553a291704000000000003172939556a8095aac6c3ad98836e5443301c08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b51667b90a6bbcfbaa58f7a65503a2510000000000010253a4f657a8fa4bacfbca6917c67513c27120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a212933363f4b5059626a737b848c959ea6b0b4c0c7c1b5b0aa9f999289827b746b605443301c0800000000000000000000000000000f223545525a6267696b6c6b6a686560564f4b3f342b1d100200000000000000000000000001152737444b4b4b4b4b4b4b4b443727180800000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d1616161616161616160d0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071a2d3d4c6277899ea8b9c6c9bcb4a79e958a81786d635b4f4a3e362d1e160b0000000000000000000000000922374b5d71869bb1c1c6b49f8c7b655a483b2e2b2e2f2f2e2c292320190e08010000000000000000000000000b20354a6074889eb3c8baa9907a65503b25100000000000000010253a50657a8fa8b9c8b39e8974604b35200b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012273c51677c91a6bcceb9a48e79644f39240f00000000000f24394e64798ea3b9cebca7927c67523d271200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b171e212e373b474c5460666f788088929aa2acb4b9c6c8bbb4afa89e9890888073604b35200b0000000000000000000000000000051727353c494d515456565655534f4b4538372e20180d000000000000000000000000000000091927313536363636363636312719090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b0e11141618181918171614110e0b08020000000000000000000000000c21364a5b6e8399a7b8c6c6b9ab9f968980776c625a4e493d362d211a0f0300000000000000000000000000081b2e3f51667c91a3b4c7bcab9d887862594b3e32281d151817130d0b060000000000000000000000000000000f243a4f64798fa6b8c9b49f8a75604b36200b000000000000000b20364b6075899eb4c9b8a78f7a644f3a250f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012273c51677c91a6bcceb9a38e79644e39240f00000000000e24394e63798ea3b8cebca7927d67523d2812000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a111c232a3436434b515a626b757d858e979ea8b1b5c2c9c6b9b4ada69d8b75604b36210b00000000000000000000000000000009171e2b35383c3f404141403e3a363127221b1005000000000000000000000000000000000009151d20212121212121201d15090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c131c202327292c2d2e2e2e2d2c292624201d15100b070000000000000000000e24394e63798ea1b2c5c8b9a89e8d81766a61584d483c352c221b1007000000000000000000000000000000001024384c5e70859ba9bac9b8a69c8778645c4b45383127201c14110e0b08010000000000000000000000000417293a556a7f95aac5c4af9a846f5645321d0900000000000000081d3144556f8499afc4c5aa95806a553a2a17040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263c51667b91a6bbcfbaa48f7a654f3a251000000000000f253a4f647a8fa4b9cfbca6917c67513c2712000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080d181f2630353c494d56606770798189939ca4adb4bac7c9c4b7a08b76604b36210b00000000000000000000000000000000000e192023272a2b2c2c2b2825201d150a08000000000000000000000000000000000000000001080b0b0b0b0b0b0b0b080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c171f21253035383c3e414243444342413f3c3936312725201c130801000000000005182a3b576c8197acbfcebbaa9e8a7b6c61584c473a342b211a0f07000000000000000000000000000000000000091d2f404e63798b9fb4bec4b6a59c887a6b60564b45383530262623201d1514120c0300000000000000000a1f33475870859bb0c5c5a9947f695438281502000000000000000215273754697e94a9c4c5b09b85705847331f0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010253b50657a90a5bacfbba5907b66503b2611000000000010263b50657b90a5bad0bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000508141c202b3538454b525b636c767e868f989fa9b2b7c3b5a08b76604b36210b000000000000000000000000000000000000060b0d12141617161513100b0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a212a333736434a4d51545657585958575654514e4b44373a3530251d1409000000000b1f34475972879db2c7cab49f8c7b655d4c463a332a20190d060000000000010000000000000000000000000000001221364a5b6a7f94a0b2c0c3b6a69d8b80746860564f4b43363b383531272a27201507000000000000000c21374c61768b9fb4cab8a78e79644f39240f0000000000000000000f24394e64798ea6b8cab49f8b77614c37210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23394e63798ea3c4d4bda8937d68533e2813000000000013283e53687d93a8bdd5c5a38e79644e39240f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e19202832363d4a4e576168717a828a949da5aeb4a08b76604b36210b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c0e0f101111100e0b090200000000000000000000000000000000000000000000000c171f2d363a474c5354606366696b6d6d6e6d6c6b6966636055554f4a4336312619090000000d22374c62778ca5b6cac1ac97816c5d4c3f33291f170c0500000000050b0d160b0902000000000000000000000000071a2d3d4a60728298a2b3bfc4b7a99f95877e756c64605454504d4b44373f3c3225150300000000000012273c52677c91aabbc8b39e8874604a35200b0000000000000000000b20354a6074889eb3c8bcab927c6752362513000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364c61768ba6b7cbc1ac96816c573b2a180500000004182a3a566c8196abc1ccb8a78c77614c37220c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a151d202d3639464b535d656d777f8790999fab8b76604b36210b0000000000000000000000000000000000040b0c1111111111111611111111111111111111111111110b09020000000000000001080b151515151515150d0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e15171f2123252626262523201d150a0f0500000000000000000000000000000000000002101c2a333d4a4e5861686e74787c7e818283838382817e7b7975706b6560544b443726140100000f24394f64798ea4c3d3baa48f7a654f3f2f1f170c0400000000000d181f222b201d150a0000000000000000000000000f1c3043546074849aa1b1bdc7bab4a59d9388817a746e6a666360555c544f4332200c0000000000071a2d3d586d8297adc8c0ae98836e5443301c07000000000000000000071c3043546e8398adc0c9ad98826d5443301c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1e33465773889db2c8c5b09b85705947341f0b0000000a1f34475970859ab0c5c8b39e88735947341f0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f1a212933363f4b4f59616a737b848c958b76604b36210b000000000000000000000000000000000c181f222727272727272b2727272727272727272727272727211e160a000000000009141d202a2b2b2b2b2b2b2320190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f1a21232a293337393a3b3c3b3a383631272a221709000000000000000000000000000000000512202e3a474c5b636d777d84898d91939697989998979694918e8985807a736b605544311d08000010263b50657b90a5bacbb6a18c76614c37211104000000000004111d2a3437403631271a0a0000000000000000000000001325364556617583979fb3b8c5c3b7b2a79e968f89837f7b7875737169614f3c271200000000000c21364a5b73889dabababa8937d6853362513000000000000000000000013253653687d92a8ababab9d8874604a35200b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003172939596f8499aec4cab49f8b77624c3929160700071628394c61778b9fb4cac4af9a846f5a3a2a1804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b171e212e373a474c5460666f78808875604b36210b0000000000000000000000000000000c1d2a34373c3c3c3c3c3c403c3c3c3c3c3c3c3c3c3c3c3c3c3c3632281a0a00000009192631353f40404040404038352b1e0e000000000000000000000000000000000000000000000000000000000000000000000000000000000009141d202c35383f3a474c4e4f5051504f4d4b45383e342717050000000000000000000000000000041223303f4b58616c79828a92999ea7a6a9abacadaeadacaba9a6a99f9a958f878073604b35200b000010253a50657a8fa5bacbb5a08b76604b36210b00000000040c181f2f3b474c564b45382719090000000000000000000000081828384657617381919ea7b4bbc8c5b8b3aba79e9994908d8a88867f69543f2a1400000000000e24394e63798e95959595958d78624d38230d00000000000000000000000d22384d62788d95959595958e79644e39240f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000142a3f54697f94a9c1cfbcab937e69574632221b181a21324557697e93aabbcec2aa947f6a553f2a15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a101b222a3436434b515a626b7572604a35200b000000000000000000000000000004182a3b474c5151515151515651515151515151515151515151514b45382816020001142637444b555555555555554d483c2b190600000000000000000000000000000000000000000000000000000000000000000000000000000112192631353d494e5559586163646566666563605657524534220f0000000000000000000000000001122330414d5d6476818c979fa9aeb3b9c5bec0c2c2c3c2c1c0bec7bab4afaaa69c87725544311d0800000e24394e63798ea3c4d4b7a28d77624d3822130d0c0d10181f2a33404c59626b6056453727190900000000000000000000000a1a28394655606c7c89979faab4bac6c8c5b8b3aea9a5aa9f9d95806a55402b1500000000000f243a4f647a8080808080807f6a5a4935200c00000000000000000000000b2035485a6a7f8080808080807a644f3a240f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23394e63798ea3b5c9c9b39d8875614b43362d2d2d36434b6075889db3c8cab6a48e79644e39240f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080c181f2630353c484d5660605443301c0700000000000000000000000000000b1f344759616666666666666b6666666666666666666666666666605645321e0900081d314455606a6a6a6a6a6a6a625a4835200c0000000000000000000000000000000000000000000000000000000000000000000000000008141c2f37444b535b636a6f7376787a7b7b7b7a7875716c63523e2a15000000000000000000000000000f2030414d5f677b87979faab4bac7c9c6c7bab4b1afadadadaeb0b3b9c5c1c4ac97816c573726140100000d22374c62778ca6b7cbbca6917c6751403125222122252a333a474c5e657780746055443727190900000000000000000000000b1b2837444b5f6777818b979fa8afb4bbc8c6c3bfc8bbb4a8937d68533e281300000000000d22364a5c646b6b6b6b6b6b6a61503c2c1906000000000000000000000005192b3c50616a6b6b6b6b6b6b645c4b37220d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2135495b71869bb1c3cbb8a697816c614e4a3e423d4a4e616c8196a6b7cbc3b19c86715c4a36210d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408141c202b3538454b4a433625130000000000000000000000000000000c22374c61777c7c7c7c7c7c807c7c7c7c7c7c7c7c7c7c7c7c7c7c74604b36210b000b20354b60737f80808080808078624d3a2a1704000000000000000000000000000000000000000000000000000000000000000000000009182630404c55606871787f84888c8e8f9091908f8d8a87816c57422c170200000000000000000000000a1a2d3e4d5f677d8c9da6b4bbc8c8c2b5b1aaa99f9c99989798999b9ea7a7acb3ab917c67513c27120000000b1f34475973889db2c8c3ae99836e5e4e423a3837383a3a474c58616c7b889583736055443727190900000000000000000000000b192731414d59616c79818a939a9faaacb1b4bbc8bebba6907b66513b26110000000000071b2d3e4a4f565656565656555043331e0e000000000000000000000000000e1e334350555656565656564f4b3e2e1b0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d53687d92a5b6cac4b19f947f6f645c5957595c646e7f949fb0c4cab7a5937e68533e2d1a070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e1920273136353025180800000000000000000000000000000011263b50667b90919191919195919191919191919191919191918c78624d37220d00081d3144556e83959595959595816c5847331f0a0000000000000000000000000000000000000000000000000000000000000000000009192636434b5e66737d868d94999da6a3a4a5a6a5a4aa9f9c8a75604a35200b00000000000000000000031628384a5c677d8c9faab7c4cec1b4b0a49c948e8a86848382838486898c91979d9f8b76614c37210c00000005182a3b586d8297adc2c7b3a1917c6860544f4d4c4d4f5358616a7781909da199837360554437261401000000000000000000000009151d303a474c5b636c767e858b92979b9faaa6a9aba38e79644e39240f00000000000010202d363a404040404040403c3325150000000000000000000000000000001525333c3f4040404040403a372e20100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f20364b6074879cb2bdcebdaf9d948379726e6d6e727983949daebdcdbdb29d8775604b36210f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a151d20201c13080000000000000000000000000000000011263b50667b90a5a6a6a6a6aba6a6a6a6a6a6a6a6a6a6a6a6a28c77624d37220d00011426374f647a8fa2aaaaaa9f8a76614c382715020000000000000000000000000000000000000000000000000000000000000000011426374454606b7c86939ca4aaaeb2b7c4b9babbbbc8bbb49f8a75604a35200b00000000000000000000091e324556647a8a9faabbc8c8bbb4a39b90867f7975716f6e6d6d6e7074777c82889085715847331f0a0000000011273c51667c91a4b5c9bfb49f8b7d71696562616265696e777f89979fb3b3a1988273605544311d0800000000000000000000000002121c2a343d494e58616970777c81868a8e919495978c77614c37220c00000000000002101b22242b2b2b2b2b2b2a28201507000000000000000000000000000000071520282a2b2b2b2b2b2b24221b1002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091d314556667c909fb1bfccbbafa1998e87848284878e99a1aebbccbfb19f917c665645321e090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b0b0700000000000000000000000000000000000011263b50667b90a5bbbbbbbbc0bbbbbbbbbbbbbbbbbbbbbbb7a28c77624d37220d00000922374b5c70859bb0c3baa8947f6a5645311d0900000000000000000000000000000000000000000000000000000000000000000c1d3144556072808d9ca4b1b5c2c4bfc5b8b3b2b1b2b3b4bc9f8a75604a35200b00000000000000000005182b3b4b6075879ca9bac8c7baaa9f94857b716a6460555a585858595b5962676c747b7d67523a2a1704000000000b20354b6073869cb1bccdbaa99f92867e7a7776777a7e848a959ea7b1bdbfb2a0988373604b35200b00000000000000000000000000000c181f2c353a474c535861676c7175787b7e80828372604a35200b0000000000000000070d0f16161616161615130d030000000000000000000000000000000000030d13151616161616160f0d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021527384c5e6c8196a1b2beccbfb3aea49c9997999ca4aeb3bfcdbfb2a197816d5e4d3828160200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbd0d8cec9b8b8b8b8b8b8b8b8b8b8b8b7a28c77624d37220d0000071b2e3e51677c91a5b6c6b39d8874604b362011000000000000000000000000000000000000000000000000000000000000000c1d31424b607382959fabb6c2c1b5b0a9a4a79e9d9c9d9e9fab9f8a75604a35200b0000000000000000000b203448596b8095a5b6c7c9baa99f8c7e72655d554f4b4437434243443b484d52556066675f4d391c0c0000000000081c304354667c919eb0bec7bab4a49c948f8d8c8d8f93999fa9b3b9c5c5b8b39f978476614b36210c000000000000000000000000000000040e1a212933373a474c525756606366696b6d6e605443301c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1a2f404b60738398a0b4b9c6c7c2b6b1aeacaeb1b6c2c7c6b9b4a1998374604b40301a0a0000000000000000000000000000000000000000000000000000000000000000080e10202020202020201e19100400000000000000030f181d1f202020202020110f0900000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbd8c7bab4a3a3a3a3a3a3a3a3a3a3a3a3a28c77624d37220d0000001020354b6073879db2c5b7a6927d68523f2f1c08000000000000000000000000000000000000000000000000000000000004182a3b4e606c8196a0b5bcc0b4afa39b948f8b89888787888a8d918a75604a35200b0000000000000000031628384d62778b9fb4c3cfbcab9f8b7b6960544b3f393531272e2d2e2f2b343737444b50524d41301d000000000000011426364c5e6b8096a0b4bac7c2b5b1a9a4a2a1a2a4a8aeb4bac7c8bbb4a79e918173615746321e0a0000000000000000000000000000000000060c171f212a33373d38454b4e51545657594a4336251300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b1d2020202020201e0b0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000121d314455607482939ea8b3b8c5c3c6c3c2c3c6c3c5b8b3a89e9383756056453222120000000000000000000000000000000000000000000000000000000000000003111c232535353535353535332d22140400000000000313212c323535353535353526231c11040000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbcebaa99f8e8e8e8e8e8e8e8e8e8e8e8e8e8c78624d37220d000000081c304354697e93a7b9c4b19c86715d4c38230f00000000000000000000000000000000000000000000000000000000000b1f344759687e929fb0bfbbb4a29a8f867f7a76737272727375787b816c56412c17010000000000000000091e3245566b8196a9bacec3b49f8d7c665d4a43362f24201d15191818191820222631353b3c393023120100000000000008182f404a607282939fa9b4bac7c6bebab7b6b7babec3c4c5b8b3aa9f97897c6c6055463929160300000000000000000000000000000000000000040a0c181f2227273136393c3f4042443530251808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131c203335353535353533201d15090000000000000000000000000000000000000000000000000000000000000000000000000000000000021527374556606e7e89959ea6aaaeb1b2b3b2b1aeaaa79e968a7e72605745382815040000000000000000000000000000000000000000000000000000000000000011212e373a4a4a4a4a4a4a4a483f32221000000000000f21313e474a4a4a4a4a4a4a3b382f22110000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc9b49f8b797979797979797979797979797974604b35200b000000011426364b6176899eb3c8b5a4907b65503d2c1a0600000000000000000000000000000000000000000000000000000006192c3c4c6177899eb3bdbbaa9f94847a716a6461575d5c5d556062666c62513e29140000000000000000000b21364b6075899eb4c7cab6a595806b5e4c3f302518110b080100030300050b0d141d202627251d12050000000000000000121c304354606d7e8b979fa9adb2b7c3b8b9b8c5b8b3afaba79e968b8177665e4b4437291b0b0000000000000000000000000000000000000000000000040a0c12151d202326292b2d2e201c130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000818253035484a4a4a4a4a4a493531271909000000000000000000000000000000000000000000000000000000000000000000000000000000000009192838454b60687780889095999b9d9e9d9c9995908881776960544539281a0a00000000000000000000000000000000000000000000000000000000000000081c2e3f4b506060606060605f5c503f2d190500000004182c3e4f5b5f606060606060504c402f1c0900000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c867163636363636363636363636363605544311d0800000000081e3246576b8096aabbc2af99846f5b4936210c0000000000000000000000000000000000000000000000000000000c2035495a6d8297a7b9bbaa9f8c7f70645c544f4b46394737444b4d515651443422100e0c0600000000000013253652677c91a8b9ccc4b29c8774604b402f1c1308000000000000000000000001080b1112100a0100000000000000000000132536434a606979828a93989da5a1a3a4a3a2a69e9a95908981786c61584d403127190b0000000000000000000000000000000000000000000000000000000002090b0e11141618190b0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000132536434a5d6060606060605e4b443727150100000000000000000000000000000000000000000000000000000000000000000000000000000000000a1a2832424e59616b747b8083868888888684807b756b62594a4336281b0a00000000000000000000000000000000000000000000000000000000000000000e23374b5d65757575757575756e5c48331e09000000081d32475b6d74757575757575665e4c38230f00000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c4e4e4e4e4e4e4e4e4e4e4e4e4b443727150100000000031629394d62788b9fb4c9b59f8c79634e3b2a180400000000000000000000000000000000000000000000000000021628384d63788c9fb5c0b49f8c7d69614f4b3e3a36332932263135383c413e3425252523211a0f01000000071c3043546e8398aec6cbb7a6927d6756453222120000000000000000000000000000000000000000000000000000000000000008182530424f5b636d777e83878b8c8d8e8e8d8b8885807b746c625a4c473a301d150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c304354607275757575757573605544311d080000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161e313b474c5560656a6e71727372716e6b6560554c483b3025180a00000000000000000000000000000000000000000000000000000000000000000010253a50657b8a8a8a8a8a8a8c755f4a35200a0000000a1f354a5f748b8a8a8a8a8a8a7c66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47393939393939393939393935312719090000000000000b203448596d8298adc0bcab97826d5947341f0a00000000000000000000000000000000000000000000000000091e3245566b8196abbcb4a2947f6a5f4f43373840464848463f36332933363a3a3a3a3a39352c1f0f0000000b20354a6074889eb3c8c8b29d8874604b38281504000000000000000000000000000000000000000000000000000000000000000008131c323d494e5962696d7275777879797876736f6b6560554d493c332a1c1201000000000000000000000000000000000000000000000000000000000000000000000000000000000a10122020202020201d1b140b00000000000000000000000000000000000a141a1c20202020202012100a0100000000000000000000000000000b20354a6073878a8a8a8a8a8a8973604b35200b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000002141d2a3437444b5055595c5d5e5d5c5955504b4437342a1c13080000000000000000000000000000000000000000000000000000000000000000000010253a50657a8f9f9f9f9f9f8a755f4a35200a0000000a1f354a5f748a9f9f9f9f9f907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c473224242424242424242424201d15090000000000000005192b3b4f64798ea2b4c9b49f8a77614c382816020000000000000000000000000000000000000000000000000b21364b6075899eb3c0b09b8572604a413c484d555b5e5e5b544c463a464c50505050504e493d2c1a0600000f24394e64798ea7b8ccc7ab96816b5544311a0a0000000000000000000000000000000000000000000000000000000000000000000000141f2c363b474c53585660626364636260575a56504b4437352b1f180c0000000000000000000000000000000000000000000000000000000000000000000000000000000004121d2427353535353535322f271c0e0000000000000000000000000000000e1c272f3235353535353527251d130500000000000000000000000000071c3043546b81969f9f9f9fa7907b66503828150200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c181f2731353b4044464849484744403b3631271f180d00000000000000000000000000000000000000000000000000000000000000000000000010253a50657a8fa5b5b5b49f8a755f4a35200a0000000a1f354a5f748a9fb4b5b5a5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0e0e0e0e0e0e0e0e0e0b08010000000000000000000d22364a5c70859aafc2baa995806a5645321e0800000000000000000000000000000000000000000000000011263c51667c91a7b8b4a28f7a645443434a5a626b707373706a61574a58616565656565635b4935210c000013283d53687d92a8c5cdbaa98f7a654f372715000000000000000000000000000000000000000000000000000000000000000000000000010f1a212a34373e38454b4c4e4f4e4d4b4539403b35312720190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000122230393c4a4a4a4a4a4a47433a2c1c0000000000000000000000000000001c2c3943474a4a4a4a4a4a3c3930231301000000000000000000000000001325364f647a8fa5b6b5c5ad97826d5645321d090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000409151d20252b2e31333333312f2b26201d1509050000000000000000000000000000000000000000000000000000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000071b2d3e51667c91a4b6c7b39e8875604b362513000000000000000000000000000000000000000000000005192b3c576c8197acc5af9a84705c4a4354606a7880858888857f76645c61767b7a7a7a7a79634e39230e0001162c41566b8196abc0c9b49f8975604b36200b0000000000000000000000000000000000000000000000000000000000000000000000000000060d181f222928323637383939383632282b26201d1509060000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1d30404d516060606060605d574a3a1e0e000000000000000000000000000d1d394a575c606060606060524d41301d0a000000000000000000000000000822364a5c72879cb2c7c9b39e8975604b36200b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b1015191c1d1e1d1c1916100b080200000000000000000000000000000000000000000000000000000000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000001020354a6073879cb1c5b8a6927d685443301c07000000000000000000000000000000000000000000000b2034485a72879cb2baa9917c6752424a60727f8b959b9d9d9b94887a64657a8f8f8f8f8f826d58432e1800041a2f44596f8499aec4c5b09b85705645311d0900000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d14151d202223242423211e1616100b080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001024394d5f677575757575757268573c2b1905000000000000000000000005182b3b576871757575757575675f4d39251000000000000000000000000000071b2d3e556b8095aac2ccb9a7917c66513928160300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000071c304354687e93a7b8c5b19c8673604a35200f000000000000000000000000000000000000000000000d22384d62778da5b6b49f8a76614b4f606c81949faab0b3b3b0a69d8a79657a8fa4a5a598836d58432e1800071c31465c71869bb1c6c2ac97826d5738271502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b0d0e0f0e0d0b09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012273c51677c8a8a8a8a8a8a86725a4835200b00000000000000000000000b2034485971868a8a8a8a8a8a7d67523c271200000000000000000000000000001024394e63798ea4b5c9c5ad98836e5745321e090000000000000000000000000000000000000000000000000000000000000001080b0e121517181919181717161513110f0c0a0300000000000000000000000000040a0c0f111416171818191919191918171513100c0a04000000000000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000001325364b6075889eb3c7b6a4907b66503d2d1a0700000000000000000000000000000000000000000011263b51667b90a6c3af99846f574759697e939fb4bbc8c8c7c4b7a89b85727a8fa4baad98836d58432e1800091e33485e73889db3c8bfaa947f6a553f2a150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364c61768a9f9f9f9fa48d78624d38220d00000000000000000000000d22374d62778ca49f9f9f9f8b76614c36210c00000000000000000000000000000c21364a5b71869cb1c6c9b49e8975604b36210b0000000000000000000000000000000000000000000000000000000002090b141d2023272a2c2e2e2e2d2d2c2b2a292624211e160b0b0200000000000000030c0b171f212427292b2c2d2e2e2e2e2e2e2d2c2a2825221f18120b09030000000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000081e3245566b8095a9bac2af9a846f5b4a36210d000000000000000000000000000000000000000000152a3f546a7f94a9bfaa947f6a554c62778a9fb4bdcec3b6b2adacafa3917c7a8fa4baad98836d58432e1800081d314455748a9fb4c9bda8927d68533d28130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c111516171919181614100c0a030000000000000000000000000000000a1e33465770859aafb5c3a8927d6853362513000000000000000000000013253652687d92a7c2b5b09a85705846331f0a0000000000000000000000000000071a2d3d556a7f95aac1cdb9a8917c67523929170300000000000000000000000000000000000000000000000000030a161e21263135393d3f4243434343424140403e3c39363229261f1406000000000007142027293336393c3e40414243434444444342413f3d3a37342a27211e160a04000000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000031628384c62778b9fb4c9b3a28e79634e3b2b18050000000000000000000000000000000000000003182e43586d8398adc5a5907b6550576b8095a8bac9bcb4a59d97979a9f99847b8fa4baad98836d58432e18000b20354b60758aaabbcebba6917b66513c26110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e171f21262a2b2d2e2e2d2c2925211e160b09020000000000000000000000000317293954697f94a9c3c3ad98836e5443301c07000000000000000000071c3043546d8398adc2c4a9947f6a543a2917040000000000000000000000000000000f23384d63788da3b5c9c6ae99836e5746331e0a0000000000000000000000000000000000000000000000000b161e28323637444b4e525557585959585756565553514f4b46393a31241402000000031425323b3a464c4f515455575758595959595858565552504c473a3c3632281f170c0000000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000a1f3448596d8297adc0c0ad97826d594834200a00000000000000000000000000000000000000001325365b71869bb0b8a78c77624c6176899eb3c6bcab9f94878281848b9a8a7b90a5bbad98836d58432e18000b21364b60768ba0b5d8bba5907b66503b2611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e1920232a33373b3f4142434342413e3b363229201d150a0000000000000000000000000e24394e63798ea5b7c8b39e8874604a35200b0000000000000000000b20354a6074889eb3c8b7a68e79644e39240f000000000000000000000000000000000c2135495b71869bb0c9c9b49f8a76614c36210c0000000000000000000000000000000000000000000000121b293238454b52556063676a6c6d6e6e6d6c6c6b6a6866646157534e42311f0b0000000c2032434f5458616466696b6c6d6d6e6e6e6e6e6d6c6a6865615958524b453933291c1103000000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000005182a3b4e63798ea2b3c9b49f8b77624c39281603000000000000000000000000000000000000071c30435473889db2b39e89735951667c91a8b9c4b49f8d7f736d6c6f7884957f95aabfad98836d58432e18000c21364c61768ba1b6dabaa5907a65503b251000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1a212c35383a474c515456575859585653504b46393632281c1308000000000000000000000c21364a5b72879db2c7b8a78e79644f39240f0000000000000000000f24394e64798ea6b8c8b29d88735c4a36210d0000000000000000000000000000000006192c3c54697f94abbccdbaa9927d68523a2a1704000000000000000000000000000000000000000008131c2f39464b5660676e74797c7f81838383828281807f7e7b79767268604e3a261100000012273b4f61697276797c7e80818283838383838382817f7d7a77726d6760574c463a2e2112040000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000d21364a5b6f849aafc2baa995806b5745321e080000000000000000000000000000000000000b20354a60748a9fb4b19b86715c576c8197acc6b7a695806a6054575a627485959eafc2ad98836d58432e18000b20364b60758babbccfbba6907b66513b261100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131c2c353c494d565861666a6b6c6e6e6d6b69656157524b45383025180c000000000000000000071a2d3d576c8197acc7c5a9947f6a543828160e0e0e0e0e0e0e0e0e15283854697f94a9c4c8ac97826d573d2d1a0700000000000000000000000000000000000e22384d62788c9fb5cac7af99846f5847331f0a0000000000000000000000000000000000000008182530404c57616a757d83898e929497989898989796959593918e8b877e68533e2813000000142a3f54697f878b8e9193959697989899999998979694928f8c88827c756b61584b3f2f22120000000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000071a2d3d50667b90a4b5c7b39e8975604b3626140100000000000000000000000000000000000c22374c61778caabbae99846f595672879cb2c7b29d8774604b433c4856647a8fa4bcc2ad98836d58432e1800091d324556758a9fb5cabca7927c67523d27120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091825303d494e5a636b72777b7f8082838382817e7a766f6860564a43362a1c0e00000000000000000011263c51667b91a9bac4af9a846f56453224242424242424242424243245566f849aafc4bbaa917c66513c27110000000000000000000000000000000000000b2035485a70859bb0c8cab49f8b77614c37210d00000000000000000000000000000000000000132536434a5e66757f8992999ea8a7aaacadaeaeadacababaaa8a6ab9f947f69543f2a14000000162b40566b8095a5a4a6a9aaacacadaeaeaeaeadadabaaa7a5a59d9891898076655d4c402f1d0d00000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000f20354a6073869cb1c4b8a7937e685443301c0800000000000000000000000000000000000e23394e63798ea3c8ad97826d5860758a9fb4c7aa947f6a5544312b384a5c758aa2b4c2ad98836d58432e1800021528385f74899eb4c9bda8937e68533e29130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009192636434a5b636f7880878c909496979898979693908a847d75686054473a2b1e0e00000000000000000c21364b61768a9fb4c9b49f8a75604b393939393939393939393939394b60758a9fb4c9b49f8a76614b36210c00000000000000000000000000000000000005192b3c53697e93aabbcebbaa937e68533b2b18050000000000000000000000000000000003111c304354606b7c88959ea7aeb3b9c6bfc1c2c3c3c2c1c1c0bfbdc9bca6917c67513c271200000013283e53687d93a8c3bbbec0c1c2c2c3c3c3c3c3c2c1bfbdc3b7b2ada79e95887b665e4c3c2b1905000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000071c304354687d92a6b8c5b29c8773604b35201000000000000000000000000000000000000f24394f647a8ea4b9ab96816b5663788eaabbbaa98e79644f37271a2e3e5b70859bb0c2ad98836d58432e1800001d32475d72879cb2c7bfaa947f6a553f2a15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011426374454606979848c969ca5a6a9abacadaeadaba8a99f9a92887e726158483c2b1b0b00000000000000091e3246576f849aafc4baa9907b65504e4e4e4e4e4e4e4e4e4e4e4e4e50657b90a9bac4af9a846f5746331e0a000000000000000000000000000000000000000e22374c62778b9fb4cac8af9a8570594834200b00000000000000000000000000000000112133434a607280909da6b3b8c5c9c9c1c7bab4b3b1b1b2b3b4bbc8bac6a48e79644f39240f00000010263b50657b90a5c9bebbc9bcb4b3b2b1b1b1b2b3b4bbc8bfc6c7c5b9b3a69d8b7c665a4834200c000010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000001325364b6075889eb3c7b6a4917c66513e2d1b070000000000000000000000000000000010253a4f657b8fa4baaa957f6a55667b90a6c8b49f8a75604b3520182d42586d8297adc2ae99846f59442f1a00051b30455a70859aafc5c2ad98826d583a2917040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091d31445560727e8a999fabb2b6c3bfc0c1c2c2c2c0c7bab4afa69e938476625a483a2917040000000000000316283954697e93a9c3c7ab96806b6363636363636363636363636363636b8095abc7c3a9947e695439291703000000000000000000000000000000000000000b1f3447596f849aafc8cab49f8b77624c37220e00000000000000000000000000000009192e3f50616c81959eb2b7c4ccc6b9b4aca7a99f9d9c9c9d9e9faaa2a5a8a88c77614c37210c0000000e23384e63788dabaca9a6a3ab9f9e9d9c9c9c9c9d9faaa5aab1b6c2ccc4b7a99e8978624d3a2a18040010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000081d3245566a7f95a9bac3af9a85705c4a36220d0000000000000000000000000000000010253b50657a90a5baa9947f6a54677c92a7bcb19c87725443301c1b30455a70859aafc5b3a18a75604a35200002182d42576d8297acc2c7b19c87725846331f0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091930404b607382939fa9b5bcc9c9bcb5b1aeadadafb2b7c3c9c4b8b3a29a8778625846331f11000000000000000e23384e63788da5b6cab49f8c79797979797979797979797979797979798b9fb4c9b7a58e78634e39230e000000000000000000000000000000000000000005182a3b53687d93aabbcebcab937e69543c2b190500000000000000000000000000011527374b5d6a7f959fafbccbc7bab4a89e97928c8a88878788898a8b8d90939589745847331f0a0000000b20364b60758c999693918e8c8a898787868787888a8c90959ca4b4bac7c7b9a898826d5847331f0a0010253a50657a8fa5bacab49f8a755f4a35200a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000021528384c61778a9fb4c9b4a28e7a644f3b2b190500000000000000000000000000000011263b50667b90a5bba9947f6954687d93a8bdaf9a85705a3626141a2f445a6f8499afc4bf9f8a75604a3520000014293e54697e93a9c7cab59f8b76614c36210d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021527374c5e6c8196a0b4bac7c2b5b1ab9f9c9998989a9da5abb4bac7c0b4a59c8676614c3f2f1c080000000000000c2135495b72879cb2c7bbaa9f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9fa9bac7b29d87725b4935210c0000000000000000000000000000000000000000000d21374c61768a9fb4c9c9b09b85705a4835200b00000000000000000000000000081d314455657b8c9fb4bdccc3b6a99f9489827c777473717273747575787a7d80806b563a2a1704000000091d324556708484817e7b7977757372727171727375777b8086929fa9bacdc6b49f8a77614c37220c0010253a50657a8fa5bacab49f8a755f4a3520000000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000000a1f3447596d8297abbcc0ad98826d594834200b00000000000000000000000000000011263c51667b91a6bba9947e6954697e94a9beaf99846f5a442f1a1a30455a6f859aafc4b59f8a75604a3520000010253a50657a8fa9bacdbcab907b66513b2a18050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081d314455667c919fb0becdbcafa49c928b8784838384878d969fa9b6c3c3b5a498826d5d4c382310000000000000061a2c3d576c8196acc6c8bbb4a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3b4bac7c7ac97816c573d2c1a060000000000000000000000000000000000000000000a1f3347586f8499afc7cab59f8c78624d38220e000000000000000000000000000b20354b6074869cabbccfc3b6a59c8a7f766c6762595e5c5c5d5e56606265686b6b62513d1c0c00000000021528385566706f6c6966646160545d5c5c5c5d546062656a737d8b9fb4c6cebbaa927c67523d27120010253a50657a8fa5bacab49f8a755f392916030000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000004182a3a4e63798c9fb5cab49f8b78624d39291603000000000000000000000000000011263b51667b90a6bba9947f6954697f94a9beae99846f59442f1a1b30465b70859bb0c5b59f8a75604a352000000b20364b60758a9fb4c9c9ae98836e5947341f0f000000000000000000000000020c1214110f0a000000000000000000000000000000000000000000000000000000000000000000000000000000000b20364b6074879db2bdccbcaf9e95867d76716f6d6d6f7278818b9da5b6c4c2b2a0907b65503e2d1b0700000000000011263b50667b90a8bacdcecab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c9cecdbaa9907b66513b26110000000000000000000000000000000000000000000004172a3a52677d92a9bacdbcab947f69543d2c1a060000000000000000000000071b2d3e53687d92a4b6c9c7b7a59c87796a6158524d483b47474838454b4d50535656514434210000000000000a1a3848555b5a5754514e4c4b433647474736434b4c505460677d92a8b9ccc8ab95806b56402b160010253a50657a8fa5bacebbaa8a755746321e0a0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000c2135495b6f8499afc2bbaa96806b5746321e09000000000000000000000000000010263b50657b90a5baa9947f6a54697e94a9beaf9a856f5a45301a1c31475c71869cb1c6b59f8a75604a35200000091d3245566f849aafc7c9b49f8b77624c3d2c18080000000000000000000006141f262927241d1204000000000000000000000000000000000000000000000000000000000000000000000000000316283852677d92a5b7cac2af9e9580746861585958585a5b636b79879da6b7cbbeb09a85705c4a36220d0000000000000b21364b6075899fb4c9dedfc9bfbcbcbcbcbcbcbcbcbcbcbcbcbcbfc9dfdec9b49f8a76604b36210b00000000000000000000000000000000000000000000000c21364b61768a9fb4c9c9b19b86715b4935210c00000000000000000000000d22364a5c71869cb1c2cdbaa99d8776635b4c463a37342b323233283236383b3e40413d342616040000000000001a2a38424544413e3c39373530263231322630353736434b6074899eb4c9c2ad98826d58432d180010253a50657a8fa5bad9b6a08b76614b36210c0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000000061a2c3d50657b90a3b5c8b39e8976614b372614010000000000000000000000000010253b50657a90a5baaa957f6a55687d93a8bdb09b86715b3b2a181e34495e73899eb3c8b59f8a75604a352000000215283853687e93a9bacebbaa957f6a5b49362614040000000000000000041424323b3e3c3930221204000000000000000000000000000000000000000000000000000000000000000000000000091e3245566f849aafc3c9b5a395806b60554c463a43433c494d5b6377889db3c1c8b4a28e79644f39240f000000000000091e3245566f8499aec4d9c9b9aca6a6a6a6a6a6a6a6a6a6a6a6a6acb9c9d9c4af99846f5745321e0900000000000000000000000000000000000000000000000a1e3346576e8399aec6c9b5a38d78634e38230f00000000000000000000000f24394f64798ea4b5c9c7b49f8a7a64584a3d33292220191c1d1e151d202325282b2c29211608000000000000000c1a262d302f2c29262422201c141d1c141c2024273136455672879db2c7c3ae98836e59432e190010253a50657a8fa5baccb7a28c77624d37220d0000000a1f354a5f748a9fb4c9bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000000000f23384c5d71869bb1c4b9a7937e695544311d08000000000000000000000000000f243a4f647a8fa4b9ab96816b56677c91a7bcb39e89735948341f16283960758aa7b8ccc29f8a75604a35200000000c21374c61768a9fb4c9c8b49f8b79635443301f180c03000000000006132232424f54514d403023120500000000000000000000000000000000000000000000000000000000000000000000000b21364b60758a9fb4c9c9b19b8673604b443733292e2e2c353d4959667b90a3b4c8c0aa95806b553827150200000000000216283853697e93a8c2d3c6ac9b919191919191919191919191919bacc5d3c3a9937e69543928160300000000000000000000000000000000000000000000000317293952677c91a8b9cdc1aa957f6a553d2d1a0700000000000000000000132536556a8095aac2cdbaa996806b5c4a3a2d1f170d0b0500070002090b0d10131616140e040000000000000000000912191b1a1714110f0c0c131c20242630353937444b5160758b9fb4cac1ac97826c57422d170010253a50657a8fa5bacfbaa5907b65503b2610000000091e324556748a9fb4c9baa5907b65503b261000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000000000081c2f3f52687d92a6b7c5b29d8774604b352010000000000000000000000000000e23384e63798da3c8ac97826d57657a8fa5c6b8a78c77624c37221e324657758a9fc5c9b5a48a75604a35200000000a1f3347586d8298abbccdbaa99b8573604b44332a1e17100d0c0d0f192030404f6069665e4d4130231305000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8faabbc2bcab927d67544331271f17181819212c3b4c5e70859bb0c5c6b19b86715645311d090000000000000d23384d62788da4b6cab9a8917d7c7c7c7c7c7c7c7c7c7c7c7d91a7b9cab6a48d78634d38230e000000000000000000000000000000000000000000000000000b21364b6075899eb4c9c6b19c86715b4a36210c000000000000000000071c30435470859aafc5c9b49f8a77624c3e2d1c0f040000000000000000000000000101000000000000000000000000000004060500090c171f212530353936434b4e545560666f8096aabbcec3aa957f6a55402a150010253a50657a8fa5bacfbfa9947f6a543e2e1a0b03000b21364b60768ba9baceb9a48f79644f3a240f00000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000000000001120364b6074889db2c6b6a5917c67513e2e1b080000000000000000000000000c22374c61778caabbae99846e5962788da8bac5a7927d6752402f27384b61768ba0b6c6b19c86715c47311c0000000417293a4e63798c9fb4c5c7b4a396806b624c473a332925232222242c35414d5e697e7c675f4d413023130500000000000000000000000000000000000000000000000000000000000000000012283d52677d92a7acacac9f8b77614c36261509040000060f1d2f4052687d92a7c5cab49f8a75604b36200b0000000000000b2035485a72879cb1c7b49e8975676767676767676767676775899eb3c7b29c87725a4935200c00000000000000000000000000000000000000000000000000091e3245566d8398adc5cab6a48e79634e3924100000000000000000000b20354a6074899eb4c9c3ae99846e594834200f000000000000000000000000000000000000000000000000000000000000000008111c2329333736434a4e54546064696f757b84969eb0c8cbb7a58f7a65503a25100010253a50657a8fa5bacfc6b09b86715c4b38281e16171827384e63798ea3c7d4c3a38d78634e38230e00000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000000091d3145566a7f94a8bac3b09b85705c4b37220e0000000000000000000000000b20354b60748a9fb4b09b86705b6075899fb4c4af9a846f5e4c3f364556687d92a7bfc2ad98836d58432e18000000000c2135495b6d8297a7b8c9c1b09e95806e61584c46393a3837373a3c494d5f677c8b8b7d675f4d4130231301000000000000000000000000000000000000000000000000000000000000000014293f54697e949797979797887358473318080000000000001123384d63788da7b9ccbbaa8e79634e39230e00000000000006192b3c566b8196abc6b9a88f7a65515151515151515151647a8fa7b9c6ab96816c563c2c1906000000000000000000000000000000000000000000000000000316283851667c91a7b9ccc2ab95806b563e2e1b0700000000000000000d22374d62778ca8b9ccbea9947e69543b2b180100000000000000000000000000000000000000000000000000000000000003111c232f383a474c52546063696e74797e8489909aa2b0bccebdb29d8774604b36200b0010253a50657a8fa5bacfc9b5a38f7a6456463932282d2c364556697e93a9becab7a58c76614c37210c00000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000000021527384c61768a9fb4c9b4a38f7a644f3c2b19060000000000000000000000081d31445573889db2b39d8873575470859bb0c5b4a2917c665d53515460748699a1b3c2ad98836d58432e1800000000061a2c3d4c6177899eabbccfbcaf9e95837769615753504d4c4d4f535a626e7d8b9f9f8c7d675f4d41301e0a000000000000000000000000000000000000000000000000000000000000000011263b50667b828282828282806b553a2a17000000000000000c2035495a74899eb3c9c8a5907b66503b26110000000000000010253b50657b90a8b9c6aa95806a553a3c3c3c3c3c39556a7f95aac5b9a8907b65503b261000000000000000000000040a0c151515151515150c0a04000000000b20364b6075899eb3c9c7b29d87725c4a36220800000000000000000f243a4f64798fa4c6d6b9a48f7a644f3a240f0000000000000000000000000000000000000000000000000000000000000816212e373f4c505861676d74797e83898e94999ea8afb3c0c8bbb49f927d685544311d080010253a50657a8fa5bacfd1c0b19c867461574b4539423d49546074879cb2c7c7b29d87725847331f0a00000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000000000a1f3347586c8197abbcc1ae98836e5a4835200b0000000000000000000000011426375b70859bb0b7a68b7661566b8095abc2c0b49e8a7b6e6866687381978499afc2ad98836d58432e1800000000000f1f334758667c8d9fb5bdcfbcafa199897f766e686562616264686f7883929fa9aa9f8c7d675f4d39251000000000000000000000000000000000000000000000000000000000000000000f23384c5e666d6d6d6d6d6d6b62503d1c0c0000000000000006192c3c5d72879cb2c7bca6917c67513c2712000000000000000b20364b6075899eb4c5b09b857058463327272733465770859ab0c5b49e8975604b36200b0000000000000000000c181f222a2a2a2a2a2a2a211f170c000000091d3145566d8297adc4cab6a58f7a644f362513000000000000000011263b50667b90a5bbd9c8a28c77624d37220d0000000000000000000000000000000000000000000000000000000000081626333f4b4f5d656e767c82888e93999ea7a9aeb3b9c6c9c0b4aa9f95816c5f4e372715020010253a50657a8fa5bad2c2b4a29b9983756760575857585b63728197a5b6cac4ad98836d583a2a170400000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000000000000004172a3a4d63788c9fb4cab49f8b78624d3a2917040000000000000000000000182e43586d8398adc4a48f79644f647a8fa4b6c9b9a89e8d837d7b7e85978b7c91a6bbad98826d58432d18000000000004182a3a4c5e6a80959fb5bcc9bfb2a79e948a837e7a787777797e848c98a0b4babbaa9f8c7d67523d27120000000000000000000000000000000000000000000000000000000000000000091c2f404c5057575757575755504433210000000000000000001c31465b71869bb0c6bda7927d68523d281300000000000000081d3144556e8399aec3b49f8b76614c36211221364b61768a9fb4c3ae99846e5645321d0900000000000000000c1c2a34373f3f3f3f3f3f3f3733291c0c00000215273850657b90a6b8cbc3ab96816b5443301c070000000000000011273c51667c91a6bbcebbaa8b76604b36210b000000000000000000000000000000000000000000000000000000000216263444515d65707b838a92989ea6a9aeb3b8c5c4c6c6b9b3aca29a8c8072604b41311909000010253a50657a8fa5bac9b5a39b859b99877d76706e6c6e717983979fb1c3cbb8a6927d67523d28120000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000000000000000c2035495a6e8399aec1bbaa96816c5846331f090000000000000000000000152a3f556a7f94aabda8937e68535c71869cb1c0c6b9ab9f999290939b9a847c90a6bbac97826d57422d180000000000000c1c2f4050626c81959fabb8c5c5b8b3a89f98938f8d8c8c8f93999fabb2becdc1b5a498826d58432e1800000000000000000000000000000000000000000000000000000000000000000012222f383b424242424242403d332616040000000000000005182b3b5c72879cb1c7bca6917c67513c2712000000000000000215273753687d93a8c2bbaa917c66513c2711263c51667b91aabbc2a8937e6853382815020000000000000004182a3a474c555555555555554c473a29170400000b20354b6074889eb3c8c8b29d8873604a35200b0000000000000012273c51677c91a6bccab49f8a755745321e09000000000000000000000000000000000000000000000000000000001020344451626b7b8590989fa9adb3b8c5c3c6c9bcb5b1aba89e978f847a6a60544330231300000010253a50657a8fa5bac6b19b86798ea59d928a85838283868d99a1b1bdcec0b39d8874604b36200b0000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000000000006192c3c50657a8fa3b5c8b49e8976614c372715010000000000000000000011263c51667c91a6c3ad97826d5852677d92a2b3c3c9bcb5aea8a6a8a4927d7c92a7bcac97816c57422c17000000000000001222334451636c808d9ea7b4bbc8c6bab4aea8a5a2a1a2a4a8aeb4bcc9c8bbb4a39b8676614c36210c00000000000000000000000000000000000000000000000000000000000000000004121c23262d2d2d2d2d2d2b2821160800000000000000000b2034485973889eb3c8baa5907a65503b251000000000000000000d22374d62778ca4b5c8ac97816c573c2b192b3b576c8196acc8b5a48d78624d38220d00000000000000000a1f344759616a6a6a6a6a6a6a615847331f0a0000081d3144556c8197acc4cbb7a68f7a65503726140100000000000011263c51667b91a6bbcebbaa8b75604b36200b000000000000000000000000000000000000000000000000000000071b2d3e51626b808d9ba3aeb4bac7c7c9bcb4b0abab9f9c969089827a6f645c4b433626140500000010253a50657a8fa5bac4af9a8474899eb2a99f9a9897989ca4aeb3bfcec3b4a2947f6a5645311d090000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000000000000000000e23374b5d71859bb0c3b9a8947f695544311d08000000000000000000000d22374d62778ca5b6b29d88735c4a6072849aa5b4c0cacac3c7baaa9c86737e93a8beaa95806b55402b1600000000000000041525344551626b7c88979faab3b8c4c4c3bdbab7b6b7b9bdc4c6c6b9b3aa9f968577615846331f0a0000000000000000000000000000000000000000000000000000000000000000000000090f111818181b1b1b1c0f0d070000000000000000000e22374d62778ca7b8ccc3a48e79644f39240f00000000000000000b2034485971869cb1c6b19c87725a48352034485972879cb1c6b19c86715a4835200b00000000000000000c22374c61777f7f7f7f7f7f7f76614c37210c00000114263750657a8fa6b7cbc4ac97816c5544311d0800000000000010253a50657a8fa5c8d9b7a18c77624c37220d0000000000000000000000090f1113110b010000000000000000000d22364a5c6b80959fabb5c1c9c2b6b1abab9f9b96918b86817b756d645c4f4a3e302618080000000010253a50657a8fa5bac2ad98826d8298a9bab4b0adacadb1b5c2c7cbc1b5a59b8573604b382715020000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000000000000081c2e3f52677d92a5b7c6b29d8774604b352011000000000000000000000b2034485972879db2b7a68e79644f546176879aa2b0b5bcbbb4a99f8b7a6c8297acbea9937e69543e291400000000000000000716263444505e6676828b969da6aaafb2b4bcc9b9b9c6b9b3b0aba89e978b80746159473a29170400000000000000000000000000000000000000000000000000000000000000000000000006141f26283030303224211a0f0b050001010007101e2f4052677d92a7c5cab6a58c77614c37220c000000000000000005182b3b566b8095abc5b6a48d78624d3822374d62778ca4b6c6ab96806b563c2b190500000000000000000e24394e63798e94949494948d78634d38230e0000000b20354a6073889db2c8c8b39e8874604b35200b0000000000000e23384d63788daabbceb9a48f79644f3a240f00000000000000000004121c242628251e130300000000000000000f24394e647a8c9fb4bcc9c0b4afa49c96908b86817c76716b6560564f4b3e362d1c1408000000000010253a50657a8fa5babaab96816b788a9faab5c1c3c1c3c6c6c4c4b8b3a39b8778625544311a0a000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000000000000001120354b6074879db2c6b7a5917c67523f2e1c0800000000000000000005182b3b586d8297adc4ab96806b574758627784929b9fabaa9f9a8b7d6770859bb0c5a6917b66513c261100000000000000000008162633404d58616c7881888f959a9d9faba3a4a3a2a89e9b96918982786b6056473b2a1b0b000000000000000000000000000000000000000000000000000000000000000000000000021424313a3e4545454739362d222018181616171a212e3c4c5e70859ab0c5c7b29d87725947341f0b00000000000000000010253a4f657a8fa7b9c2a8927d685336253652687d92a7c2b9a88f7a65503a25100000000000000000000e24394e63798ea3aaaaaaa28d78634d38230e000000071c3043546b8196abc3cbb8a6907b65503827150200000000000b21364b60768a9fb4cabea9937e69543b2a1805000000000000000012222f383b3d3a311e160a00000000000002162838586d8297abbccfc1b4a29a8f87817b76716b66615856504b4538372e221b100100000000000010253a50657a8fa4a4a4a4947f69677d8b9ba3aaaeb1b2b2b1afaba69e938577625a4837261400000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000000000000000000081d314455697f94a8b9c3b09b85715d4b37230e0000000000000000000011273c51667c91a8bab39e8975604b485962737d858b8d8e8a847a6761768a9fb4b9a78d78634d38230e00000000000000000000071522303a474c5a626c747a8084888a8d8e8e8e8d8c8986817c756c625a4b45382a1d0c000000000000000000000000000000000000000000000000000000000000000000000000000b1f31424e535a5a5a5c4e4a3d37342b2d2b2b2d2d363f4b5a667c90a2b4c8c5ad98826d583b2a18040000000000000000000b20354b6075899eb3c3ad98836e54433043546d8398adc2b39e8975604b36200b0000000000000000000e24394e63798ea3b8bfb8a28d78634d38230e000000001325364f647a8fa5b6cac5ac97826d5645311d090000000000091e32455671879cb1c6c3ae98836e5948341f10000000000000000e1e2f404c51524e4132281b0f0100000000091e32455673889db3c9c9b5a39a847a726b66615856514c473a3b363228221b1007000000000000000010253a50657b8f8f8f8f8f8f7d685f677a858e95999c9d9d9c9a9690887e746259483c2b190900000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000000000000000000011527374c6176899eb4c8b5a38f7a654f3c2c19060000000000000000000b21364b60758a9fb4b8a7947f6959484855606870757879766f645c687d93aabbb39e8974604a35200b000000000000000000000004121c2a333c484d5560656a6f737577787979787674716c6660564d493c32281a0c000000000000000000000000000000000000000000000000000000000000000000000000000011263a4e606870707071645c534d483b424140423d4a4e5d6478899eb3c0ccb8a7927d68523d281300000000000000000000081d3144556e8398aec9b39e8874604a354a6074889eb3c3ae98836e5544311d080000000000000000000e24394e63798ea3b8cdb8a28d78634d38230e000000000822364a5c72879db2c7c9b39e8975604b36200b000000000002162838576d8297acc6c9b49f8a77624c3e2e1e110903000108121e2b3c4c5e6668604b45392c1f13050000000b21364b60768ba6b7cbc5b09b8573645c56514c463a3c37332a26211e160a08080b08020000000000000c21364c61767a7a7a7a7a7a76614c5c64717980848688888685817b75696056483b2b1e0e0000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000000000000000000000091f3346586c8196aabbc1ae99836e5a4935200c000000000000000000091e3245576d8297adc0b39e8977625544444b525660636361584e6074869cb1c7ae99846f5443301c07000000000000000000000000000c171f2b3537444b50555a5660626364646361585b56514b4538352b1d150a00000000000000000000000000000000000000000000000000000000000000000000000000000013283e53687e8585858679706962595a57565657595c646d7a889da7b8ccc4b39e8875604b36210b000000000000000000000115273752687d92abbcb8a78e79644f394e64798ea6b8c1a8927d6853372715020000000000000000000e24394e63798ea3b8cdb8a28d78634d38230e0a0a0a0a071b2e3e566b8095abc2ccb9a7917b665138281603000000000012273c51677c91a8b9ccbaa995806b5c4b3c2f211e1617141d202f3c485a667c7d6d6057493d3023130400000d22374d62778ca2c4d4bea9947f69554b3e3b36332926211f171818191a1b151d201d150900000000000a1f334658616565656565656158474b4f5c646a6e717273716f6b6560564b45382a1d0e000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000000000000000000000417293a4d62788b9fb4cab49f8c78634d3a2a17040000000000000000031628394f647a8fa2b4b9a89a84736055493d38454b4d4e4c4b5e697e93a4b5baa9937e6853362513000000000000000000000000000000040e19202631353a4038454b4d4e4f4e4d4c473a413c36322820190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000162b40556b80959a9a9c8e857e77736f6d6b6b6c6e7379828c9da6b7c5c9b7a695806b5645321e0900000000000000000000000d22374c62778b9fb5c5a9947f6a543854697f94a9c4b5a38c77624d37220d000000000000000000000e24394e63798ea3b8cdb8a28d78634d38231f1f1f1f1f1f1f24394e64798ea4b6cac5ad98836d5645321e0900000000000c21364b6176899eb3c7c7b49f8c7a645a4c3f3632282d263135404c5a627888928275635b4d4130221200000c22374c61778ca9bacdbfaa947f6a5445393632282f2d2d2c2d2d2e2e2f302731363127190a000000000417293a464c4f4f4f4f4f4f4c473a373e4a4f55595c5d5d5c5a56504b453831271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c070000000000000000000000000000000000000000000000000000000000000000000000000b2035485a6e8398aec1bcab96816c5847331f090000000000000000000a22364a5c6f849aafbdb4a2988273635b514d4b4b4c4f5560697c8b9fb4c2b49f8a77614c37220c00000000000000000000000000000000000509141d20252b273136383939393837332a2c27211e160a06000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3f556a7f94aaafb1a29a938c88848280808283888e989faab7c4cebcab9d8877614c3828160300000000000000000000000b1f34475971869bb0c4af9a846f5645566f849aafc4b19b8671594834200b000000000000000000000e24394e63798ea3b8cdb8a28d78634d38343434343434343434364a5c71869cb1c6c9b49e8975604b36210b0000000000091e3246576c8197a9bacdbbaa9d8778655d504b45384237444b505e6678869ca0978679675f4d402f1d09000b20354b60758a9fb4c9c6b19b857260574f4b46394443424242424343444637444b4437281b0a000000000b1b2933363a3a3a3a3a3a37332a222d363940444748484745413b3632281d150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0700000000000000000000000000000000000000000000000000000000000000000000000006192b3c4f647a8fa3b4c9b49e8a76614c372715020000000000000000071b2e3e4f647a8f9fb1c0b2a09885796e6762606061646a747f8b9fa9babaa998826d5947341f0a0000000000000000000000000000000000000001080b1015151d202223242423211f1717110b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000142a3f54697f94a9bec0b4afa8a69d9997969597999da6adb4bbc8c8bbb49f8d7b655847331a0a00000000000000000000000005182a3b556a8095aac5b49f8a75604b60758a9fb4c5aa95806b553b2b1805000000000000000000000e24394e63798ea3b8cdb8a28d78634d49494949494949494949493d556a7f95aac1cdb9a8917c67513929170300000000031628394d62788b9fb4c1c8b7a59d897b6f6660565957585560656f7c889ca4b1a49c8a7d675e4c38240f00081d31445571869bb0c8c9b5a39782756b6561575b59585757575858595a5b5c5560554539281603000000000b171f21252525252525211f17101b22242b2f31333331302c26211e160a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c07000000000000000000000000000000000000000000000000000000000000000000000000000e22374b5c70859bb0c3b9a8947f6a5544311d080000000000000000001022364a5c6c8197a4b6beb2a39b8b837c77757577797f86949fa9bac0b49f8b78634d3a2a180400000000000000000000000000000000000000000000000002090b0d0e0f0f0e0c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014293e54697e93a9bed1c8c5c4b7b3afacababacaeb3b8c4cacac2b5aa9f947f6a5d4b3a2a1800000000000000000000000000000f253a4f647a8fa7b8baa9907b6550657b90a9bab8a78f7a654f3a251000000000000000000000000e24394e63798ea3b8cdb8a28d78635f5f5f5f5f5f5f5f5f5f5f5f5f5f63788da3b5c9c6ae99836e5746331e0a00000000000b2034485a6b8095a3b5c4c3b7a79e90847b75706e6c6d6f747b84909da6b6c2b5a89e907b66513b26110001142637556b8095aabbcec1b1a09788807a7672706e6d6d6c6c6d6d6e6f707273746f5745321e090000000000040a0c1010101010100c0a0400070d0f15191c1d1e1c1a16100b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c0703030303030303030000000000000000000000000000000000000000000000000000000000081b2e3e51677c91a5b6c6b29d8874604b362011000000000000000000071b2d3e4b6175869ca6b7c1b4aa9f98918d8a8a8c8f959ca4b4bac1b4a295806a5a49351c0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8bdd2cfbeb2adb3b8c5bec0c1c2c2c1c8bbb4afa49c8c7f6a61503f2f1c0c00000000000000000000000000000b20354b6074889eb3c7ab96806b566b8095abc7b39e8974604b35200b00000000000000000000000e24394e63798ea3b8cdb8a28d787474747474747474747474747474747474869bb1c6c9b49f8a76614b36210c000000000005192b3c4b6074859ba6b7c3c5b8b3a29a908a8583828284899099a1b3b7c4c9bbaa9c8774604b36200b00000d22384d62788b9fb4bfcebeb1a69d958f8b87858482828182828383848587898d75604b36210b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47321c1818181818181818180c0a040000000000000000000000000000000000000000000000000000001020354b6074879db2c5b7a6927d67523f2f1c08000000000000000000101e3246576378889da5b3bfbbb4ada6a2ab9faba4aab1b6c2bdb1a39a8473604b3c2c19000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b0f12151718191918171614110e0b0802000000000000000000000000000013283d52687d92a7bdd4c4b2a0989ea7a6a9abacadadaba9aa9f9a91867b69615043332111000000000000000000000000000000081c3043546d8298adc8b19b86715971869bb0c9ad98836e5544311d08000000000000000000000012273c51677c91a6bcd1bba8978d898989898989898989898989898989898a8fa3b5c9cdbaa9927d67523a2a170400000000000d1d3145566278889da5b4c0cbc0b3afa99f9b9997979a9ea7afb3bfcbc6baab9f8b7b655544311d0800000b2034485a6b8095a1b1bdc8c4b8b3abab9f9d9b9998979797979898999b9c9e8d78634e38230e0000000000000000000000000000000000000000000001080b150c0b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c47322e2e2e2e2e2e2e2e2e2e211f170c0000000000000000000000000000000000000000000000000000081d314455697e93a7b9c4b19b86715d4b37230f00000000000000000003162839495a6379879aa1b1b5c2c3bcb7bcb4bcc9bfc4c0b4af9f978475615544311e0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0d151d2024282a2c2d2e2e2d2c2b2a2723201d15120d0b050000000000000000000012273d52677c92a7bccbb7a69882898d9194969798979694908a847c73655d4f43332515030000000000000000000000000000000114263652677c92aabbb59f8b7761778b9fb5bcab927d675237261401000000000000000000000012273c52677c91a7bcd1c5b5a8a89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea8b5c1d2d7c7ae99846f5847331f0a000000000002152738485a6379879aa2b3b8c4cac7bab4b0aeacadafb3b8c5c7c9bfb3a89f8d7e685d4b37271502000005192b3c4b607383979fb0b4c1c6c8c9bcb5b2b0aeadacacacadadaeafb0b1a5907b66503b261100000000000000000000000000000000000000000008141c202a221f180c0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c4743434343434343434343433733291c0c00000000000000000000000000000000000000000000000000011426374b6176899eb3c8b5a3907b65503d2c1a060000000000000000000b1b2c3c4a5b637784929ca4abb1b4bac7b8c5b8b3afaaa29a8f817461574637271500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e1920232731363a3d40424343434241403f3c38363127282220190d08000000000000000012273c51677c91a6bcc8b29d887374787b7f81828382817e7b766f6760554b3f3225150700000000000000000000000000000000000c21374c61768b9fb4bcab927c677c91abbcb49f8b77614c37220c00000000000000000000000012273c52677c91a7bcd1d5c5c6b9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b9c6d2dddfc9b49f8a76614c37210d0000000000000a1a2b3c495b637784939da6b0b4bcc9c3c5c3c1c2c4c5c3c6bab4ada1998a7c68604e3f2e1909000000000d1d314455607381909ba3abb1b5bcc9c0c3c5c3c2c2c1c1c2c2c3c4c4bda8937d68533e2813000000000000000000000000000000000000000008182630353f37342a231c110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c87715c5858585858585858585858584c473a29170400000000000000000000000000000000000000000000000000091e3246576b8096aabbc2ae99846f5b4935210c000000000000000000000e1e2d3d4a59626f7d868f969b9fa9a3a3a2a79e9a958e857b6d60564639291909000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b222b353838454b4f52555758595958575654514e4b44373d37342b221b100300000000000011263b51667b90a6bbc8b39e8973606366696b6c6d6d6c69656158514b44372e2114060000000000000000000000000000000000000a1f33475870859bb0c9ad97826d8297acc9b09b85705947341f0a00000000000000000000000012273c52677c91a7bcc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c5c9d1cebbaa937d68533b2a18050000000000000d1d2c3d495962737e88929b9fababaeb0b2b3b2b1b0adaaa89f988f8478665e4e423121110000000000011426374455606c7b858e969c9faba8abadafb1b2b2b3b3b3b2b1b0afacaa95806b55402b160000000000000000000000000000000000000001142636434b554c473b372e211e170b070000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc6b19c86716d6d6d6d6d6d6d6d6d6d6d6d6d615847331f0a00000000000000000000000000000000000000000000000000031629394d62788b9fb4cab59f8c79634e3a2a1804000000000000000000000f1f2d3b484c5f67737a8186898c8d8e8d8b89847f7970655d4b4538291b0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c181f2e373c484d54566064676a6c6d6e6e6d6c6b696663605557524d483b372e211000000000000010263b50657b90a5bac9b49f89745f4e5154565758585654504c463a3531261910020000000000000000000000000000000000000004172a3a556a7f94aac4b29d8773879db2c4aa957f6a553a2a180400000000000000000000000012273c52677c91a7abababababababababababababababababababababababababb0b5c1b5b5b09b86715948341f0b000000000000000f1f2c3b48546068757d858b9196999b9d9d9d9c9b98959089827a6f625a4d403124130300000000000009192737444b5d65707980868b909396989a9b9d9d9d9e9d9d9c9b99979492826d58432e1803000000000000000000000000000000000000081c304354606a6159504b3f363329211a0f09020000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc9b5a498828383838383838383838383838276614c37210c00000000000000000000000000000000000000000000000000000b2034485a6d8398adc0bcab97816c5947341f0a00000000000000000000010f1d2b34414d5460656c71757778797876736f6a635b504b3f32281a0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002101c2a343e4b4f5a62697075797d7f818283838281807f7c7875716c6762594f4b3f2e1b08000000000010253a50657a8fa5bacab59f8a7556453c3f41424342413f3b363329201d1409000000000000000000000000000000000000000000000f24394f64798ea6b7b7a6947f94a5b7b8a68f79644f3a240f0000000000000000000000000010253b50657b9095959595959595959595959595959595959595959595959595959ba39f9f9f9fa38c77624c37220d00000000000000010f1d2b36434b56606870777c8083868788888786837f7b756d645c4d493c302213060000000000000000091927313f4c505c646b71767b7e81838586878888888888878684827f7d7a644f39240f000000000000000000000000000000000000000b20354b60737f776e655d534c4639362d201d150a06000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbd2c2b2a0989898989898989898989898988c77624d37220d000000000000000000000000000000000000000000000000000005192b3c4f647a8ea2b4c9b49f8a77614c3828150200000000000000000000000d18203036434a505655606263636261575a554e4a3d372e1d150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000412202e3a474c5c646e787f858a8f92959798989897969594918d8a86827d7775655d4b37220e00000000000f243a4f64798fa4b9cfbcab8b75604b362a2c2d2e2d2c2926211f170b080100000000000000000000000000000000000000000000000b20354a6074889db3c4af9d949dafc3b39e8874604a35200b000000000000000000000000000d22374c6277808080808080808080808080808080808080808080808080808080868a8a8a8a8a8a8a7c66513c26110000000000000000000d18263038454b535962676b6e7172737372706e6a6560564f4b3e352b1e12040000000000000000000009151d2f383e4a4f56586165696b6e707172737373737272706f6c6a68645c4a36220d000000000000000000000000000000000000000b20354b60758a8a837a716961574e4a3d36322820190e0801000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbd0cfbeb2adadadadadadadadadadadada28c77624d37220d0000000000000000000000000000000000000000000000000000000d22364a5c70859ab0c3baa9957f6a5645321d090000000000000000000000000513182530353a37444b4c4e4e4d4c46394039362d231c1102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000312222f3e4b59616d7a838b949a9fa9a7aaacadaeaeadacaba9a6aa9f9c97928c8a7b654f3a251000000000000f24394e64798ea3b9dab6a18b76614c3621161718181714100c0a040007070700000000000000000000000000000000000000000000071c3043546d8297adc8bbafaaafbbc8ad98826d5443301c07000000000000000000000000000b1f344759626b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7075757575757575665e4c38240f0000000000000000000008141c2832363b474c5156595b5d5e5d5c5b5855504b4538372e20190e0000000000000000000000000002111c232d36393a464c505356585a5c5d5d5e5e5e5d5c5b5a5755524f4a3e2d1b07000000000000000000000000000000000000000b20354b60758a9f988f867e766c645c524b4538352c201d14090500000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc7c7c7c6c2c2c2c2c2c2c2c2c2c2c2b7a28c77624d37220d000000000000000000000000000000000000000000000000000000071b2d3e51667c91a4a0a0a09e8875604b36200b000000000000000000000000000008131c2025263135373839383633292a23211a0f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011212f404c5c6477828d999fabb0b4bac7bfc1c2c3c2c2c1c0bec8bbb4b1aca7a28f7a65503a251000000000000e23394e63788ea3b8ccb7a18c77624c37221c1c1c1c1c1c1c1c1c1c1c1c1c1c100e08000000000000000000000000000000000000000013253651677c91aabbc0c0bfc0c0bbaa917c6752362513000000000000000000000000000005182a3b474c5656565656565656565656565656565656565656565656565656565b60606060606060514c40301d090000000000000000000000010a161e212a34373c414446484848474643403b363228221b10060000000000000000000000000000000008101b22242933363b3e41434546484848494848474644423f3d39362d201000000000000000000000000000000000000000000b20354b60758aa0ada49c93898279706760564d493c3531261f180d080000000000000000000000000000000000000000000000000000000000000011263b50667b90a5b1b1b1b1b6b1b1b1b1b1b1b1b1b1b1b1b1a28c77624d37220d000000000000000000000000000000000000000000000000000000001020354b6073868b8b8b8b8b8b7d68533d281300000000000000000000000000000000070b10141d2022232423211e17150e0c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1d2f3f4c5e667a88989fabb4bcc9c9c3c3b7b2afadadadaeafb2b7c3cac6c1baa58f7a65503a251000000000000d23384d62788da2b7ccb7a28d77624d3832323232323232323232323232323225231c11030000000000000000000000000000000000000c21364c61768a9fababababababab9f8b76614c37210c0000000000000000000000000000000d1d2a3437404040404040404040404040404040404040404040404040404040464a4a4a4a4a4a4a3c38302212000000000000000000000000000003090d181f22272b2e3132333332312e2a26201d150a070000000000000000000000000000000000000000070d0f171f2125292c2e303132333333333332312f2d2a2824221b100200000000000000000000000000000000000000000b20354b60758aa0c2b5b1a89e978e857d756b625a514b4437342a231c110a040000000000000000000000000000000000000000000000000000000011263b50667b909c9c9c9c9ca49c9c9c9c9c9c9c9c9c9c9c9c9c8c77624d37220d00000000000000000000000000000000000000000000000000000000081c304354607476767676767573604b35200b0000000000000000000000000000000000000001080b0d0e0e0d0c0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005192b3c4b5d667c8b9da6b5bcc9c8bbb4aea7a59d9a989798999a9da5afb4c0d1baa58f7a65503a251000000000000d22374d62778ca2b7ccb8a38d78634e474747474747474747474747474747473b372f21110000000000000000000000000000000000000a1f334658708495959595959595959585705847331f0a000000000000000000000000000000000d181f222b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b313535353535353526241d12040000000000000000000000000000000000050b0d1216191c1d1e1e1d1b1915100b090200000000000000000000000000000000000000000000000000040a0c101416191b1c1d1e1e1e1e1d1d1b1a1715130f0d07000000000000000000000000000000000000000000000b20354b60758aa0b5c8c6b9b4aca39b928880786f6660554c483b372e211f170b07000000000000000000000000000000000000000000000000000010253a4f657b8687878787878a878787878787878787878787878677624c37220d0000000000000000000000000000000000000000000000000000000001142636445560606060606060605544311d08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092034485a657b8b9fa9b7c4cdbeb2aa9f99918c87858382838485878b9aa2b4c8baa58f7a65503a251000000000000c22374c61778ca1b6ccb9a38e79645c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c504b3f2f1c0800000000000000000000000000000000000417293a50667c8080808080808080807c66513a2917040000000000000000000000000000000000050b0d1616161616161616161616161616161616161616161616161616161b20202020202020110f090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354b60758aa9b0b4c1c8c9c1b4b0a79e968c847c746a6259504b3f363329221b10090200000000000000000000000000000000000000000000000e22374b5d65727272727272757272727272727272727272727272625947341f0b000000000000000000000000000000000000000000000000000000000008182737444b4b4b4b4b4b4b4b44372715010000000000000000000000000000000000000000000000000000000000000000070c0e110f0c0a0400020000000000000000000000000000000000000000000000000000000000000000000000000000091930414d6278899ea9bac7c7bab4a0988c837c77726f6e6d6d6e707276849aafc5baa58f7a65503a251000000000000c21364b61768ba0b6dab9a48f7a717171717171717171717171717171717171655d4b37230e0000000000000000000000000000000000000b23384c5e666b6b6b6b6b6b6b6b6b665e4c381c0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d0f20202020202020202020202020202020202020202020202020202020201f1d170e020000000000080e102020202020202020202020202020202020202020202020202020202020110f090000000000000b20354b60748a939ba3abb3b7c4c9c5b8b3ab9f9991877f776e655d544c463a362d211e160a06000000000000000000000000000000000000000000081b2e3f4b4f5c5c5c5c5c5c605c5c5c5c5c5c5c5c5c5c5c5c5c5c4c473b2a18050000000000000000000000000000000000000000000000000000000000000919273136363636363636353127190900000000000000000000000000000000000000000000000000000000000000010f1a21242624221f181a1714100b09020000000000000000000000000000000000000000000000000000000000000000011426374d5f70849aa7b8c7c7baa99f9283786e6761595a585858595a576b8095aac0baa58f7a65503a251000000000000b20364b60758babbccfbdaa998f8687878787878787878787878787878787867b65503b2510000000000000000000000000000000000000091c2f404c50565656565656565656514c402f1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a2020202020202020200a0400000000000000000000000000000000000000010f1a2124353535353535353535353535353535353535353535353535353535353534322b201202000003111c2325353535353535353535353535353535353535353535353535353535353526231c110400000000081d31445561767d858e969da6aeb4bbc8c9bcb5afa59d948b837a716961584e4a3e36322820190e09000000000000000000000000000000000000000010212e373a4747474747474a474747474747474747474747474737342a1d0d000000000000000000000000000000000000000000000000000000000000000009151d20212121212121201d150900000000000000000000000000000000000000000000000000000000000000000f1f2d36393c3937332a302d2925201d150b09030000000000000000000000000000000000000000000000000000000000081d314455677d91a2b4c5cdbaa99f8b7d6e635a524c473a4342434439556b8095aac0baa58f7a65503a25100000000000091d314556758a9fb5cac7b7aaa49c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c917c66513c27110000000000000000000000000000000000000011222f383b4040404040404040403b382f221200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161e3535353535353535351f170c0000000000000000000000000000000000000f202d36394a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49463d30200e000011212e373a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a3b382f22110000000001142637465861687079808891999faab1b5c2c8c3b7b2aa9f988f867e766d645c524b4538352c231c110300000000000000000000000000000000000003101b2225323232323232353232323232323232323232323232221f180d0000000000000000000000000000000000000000000000000000000000000000000002080b0b0b0b0b0b0b0b08010000000000000000000000000000000000000000000000000000000000000000071a2d3d4a4e514e4c473a45423f3a363228211e160a030000000000000000000000000000000000000000000000000000000b20354b6073879db2c0cebdb49f8b7b675f4d493c37342a2e2d2e2f40556b8095aac0baa58f7a65503a251000000000000215274a5f748a9fb4c9dfc7c2b5b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a6917c66513c27110000000000000000000000000000000000000004111c23262b2b2b2b2b2b2b2b2b26241c1204000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1b29324a4a4a4a4a4a4a4a4a33291c0c00000000000000000000000000000000071a2d3e4a4e60606060606060606060606060606060606060606060606060606060605f5a4e3d2b1700081c2e3f4b506060606060606060606060606060606060606060606060606060606060504c402f1c09000000000919293a464c535b636b747b838b949ca4acb3b8c5c8bbb4ada49c938a8279706860564d493c382f21110000000000000000000000000000000000000000080e101d1d1d1d1d1d201d1d1d1d1d1d1d1d1d1d1d1d1d1d0d0b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364a5b63666461585d5a5754504b45383632281e160a0000000000000000000000000000000000000000000000000005182b3b52677c91a5b6cac6b19f917d675d4d41352c221f181918182b40556b8095aac0baa58f7a65503a25100000000000001f34495e74899eb3c9ced1c8c5c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0bba6917c66513c2711000000000000000000000000000000000000000000090f11161616161616161616110f09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003162939465e606060606060605e463a2917040000000000000000000000000000000d21364a5c707575757575757575757575757575757575757575757575757575757575746c5a46321d000e23374b5d657575757575757575757575757575757575757575757575757575757575665e4c38230f00000000000b1b2933363d494e5560666e777e868e969ea7afb4bcc9c2b6b1a89e978e857d756b635a504c3f2f1c0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e1316191b1c1c1d0d0b0500000000000000040a0c1d1c1c1b1916130e0c06000000000000000000000000000000000000000000000e24394e63797b797774726f6c69656056524b453932281a100300000000000000000000000000000000000000000000000b2034485970859aafc3ccb9a897826d5f4d3f3020190e0a040003162b40556b8095aac0baa58f7a65503a25100000000000091e33495e73889eadb1bec0b4b0ababababababababababababababababa6917c66513c271100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1e3246577075757575757575705846331f0a0000000000000000000000000000000f24394e647a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a745f49341f0010253a50657b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7c66503b26110000000000000b171f212c3637444b515961697179818991999fabb2b6c3c6b9b4aca39b928981786f655d4c38230e0000000000000000000000000000000000000002090b1111111111111111111111111111161111111111110d0b05000000000000000000000000000000000000000000060c0e192023282b2e30313232221f180d00000000000c181f22323231302e2b2823211a0e0c0700000000000000000000000000000000000000152a40556a7f918e8c898785827e7a756f6760574b45382e211406000000000000000000000000000000000000000000000d22374c62778b9fb4cac9b49e8977614c41302113090b0f0f0f0f162b40556b8095aac0baa58f7a65503a25100000000000081e33485d73879597a09f9fa29a9595959595959595959595959595959595917c66513c27110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b11132020202020201a171107000000000000000000000000000000000000000000000c21364b61758a8a8a8a8a8a8a76614c36210c0000000000000000000000000000000f24394e64798e9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e89745f49341f0010253a50657a8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f907b66503b261100000000000000040a0f1a212731353a474c545c646c757c848b949ca5adb4b9c6c1b5b0a79e968c847c65503b26100000000000000000000000000000000000000a151d2027272727272727272727272727272b272727272727221f180d000000000000000000000000000000000000070f1a21232c35383d40444546474737342a1d0d0000000c1c2a33374747464544403d38352c23211a0f070000000000000000000000000000000001162b41566b8096a3a99f9c9a97948f8a847d756a60564b3f3124150700000000000000000000000000000000000000000013293e53687e93abbccfbcab96806b5947342312161e2125252525252b40556b8095aac0baa58f7a65503a2510000000000000142a3f54697f80828a8a8a8a8580808080808080808080808080808080808079634e39230e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006141f26293535353535352f2c24190b0000000000000000000000000000000000000000000c21364b61768b9f9f9f9f9f8b76614c36210c0000000000000000000000000000000f24394e64798ea3b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b49e89745f49341f0010253a50657a8fa5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5907b66503b2611000000000000000000000609151d202a34373e4a4f5660676f777f878f979ea8b0b4c0c5b8b3ab9f9a846f5a45301a00000000000000000000000000000000000a1a2832363c3c3c3c3c3c3c3c3c3c3c3c3c3c403c3c3c3c3c3c37342a1d0d00000000000000000000000000000003101b222c35393c494d5256595a5b5c5c4c473b2a18050004182a3a474c5c5c5b5a5956524e493d39362d221b1003000000000000000000000000000002172d42576c8297acbab4b2afaca9a99f9992887f75655d4e42322515050000000000000000000000000000000000000005182a3b596e8398aec9cab59f8c78624d3b2a181a2832363a3a3a3a3a3a40556b8095aac0baa58f7a65503a251000000000000012273b4f61696b6d75757575706b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b635b4936210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021424313a3e4a4a4a4a4a4a44403729190700000000000000000000000000000000000000000c21364b61768ba0b5b5b5a18b76614c36210c0000000000000000000000000000000f24394e64798ea3b9bfbfbfbfbfbfbfbfc0c3cccacacacec5c1bfbfbfbfbfbfbfb49e89745f49341f0010253a50657a8fa5babfbfbfbfbfbfbfc1c4cecacacacdc3c0bfbfbfbfbfbfbfbba5907b66503b261100000000000000000000000001080c181f222d3638454b5259626a727a8289929aa2b4c8ccc9bcaf9a856f5a45301a0000000000000000000000000000000002152838454b5151515151515151515151515151565151515151514c473b2a1805000000000000000000000000000b161e2d363d494e565a63686b6e70717172625947341f0b000a1f33475861727171706e6b68635b564e4a3d362d1e170b0000000000000000000000000003182e43586d8398adbfc1c4c4c1c7bab4afa69e94867b68604f43322313010000000000000000000000000000000000000b1f34485973889db3c8c6b09b86715a49351d162838454b4f4f4f4f4f4f4f556b8095aac0baa58f7a65503a25100000000000000c2032434f545658606060605b5656565656565656565656565656565656564e493d2c1a060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1f31424e5360606060606059544737241100000000000000000000000000000000000000000c21364b61768ba0b6cab6a18b76614c36210c0000000000000000000000000000000f24394e647a8ea3aaaaaaaaaaaaaaaaaaaaafbcccdfcebdb1acaaaaaaaaaaaaaaaa9e89745f49341f0010253a50657a8fa5aaaaaaaaaaaaaaaaacb1bdcedfcdbcb0abaaaaaaaaaaaaaaaaa5907b66503b2611000000000000000000000000000000040a101b222832363b484d555d656d767d849ab0c5dadac4af9a856f5a45301a00000000000000000000000000000000091d3245566066666666666666666666666666666b666666666666625947341f0b0000000000000000000000010f1b29323e4a4f5b636c72787d80838586878677624c37220d000c22374c61778687868583807d78726c635b4f4a3e33291b10020000000000000000000000041a2f44596f8499a7aaacafb2b5bcc9c8c5b8b3a49c8c7e6a614f41311f0f0000000000000000000000000000000000000d22374c62778ca6b7cbbfaa95806a553c2b191e3245566064646464646464646b8095aac0baa58f7a65503a2510000000000000031525323b3f40424a4a4a4a4540404040404040404040404040404040404039362c1f0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263a4e60687575757575756f6554402c1703000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000f24394e647a8e95959595959595959595959eafc3d7c5b19f979595959595959595958a745f49341f0010253a50657b8f959595959595959595969fb1c4d8c3b09e95959595959595959595907b66503b26110000000000000000000000000000000003090e192025303539464c535b636b737c91a6bcd1dac4af9a856f5a45301a000000000000000000000000000000000b20364b60747c7c7c7c7c7c7c7c7c7c7c7c7c7c807c7c7c7c7c7c77624c37220d0000000000000000000003111f2d39464b5c646f7981878d9295999a9b9c8c77624d37220d000d22374c62778c9c9b9a9995928d8781796f645c4c46392d20110300000000000000000000051b30455a70848f929497999d9fabacb3b8c5c3b6aa9f937f6a5f4e3d2d1a0a000000000000000000000000000000000010253b50657a90a5c4d5c5a5907b65503b261021364b60747a7a7a7a7a7a7a7a7a849aafc4baa5907a65503b251000000000000000071520272a2b2d35353535302b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b23211a0f010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e8a8a8a8a8a8a836f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000d22374c627780808080808080808080808095aac0d5c1ac97818080808080808080807f6a553f2a15000d23384d6278808080808080808080808196acc1d5c0ab95808080808080808080808078634d38230e0000000000000000000000000000070a161e212b3536434a5057616870788088919bacbfd7cdc4af9a856f5a45301a000000000000000000000000000000000d22374c62778c91919191919191919191919191959191919191907c66513b26110000000000000000000311212e3d4a57616d7a848e969da5a7abaeafb0a28c77624d37220d000d22374c62778ca1b0afaeaba7a59d968e847a6d61574a3e2f211103000000000000000000000d22374d62777a7d7f8284878b90979ea7b3b8c5bbb49d927d685c4a382816020000000000000000000000000000000013283e53687d93a8bdccb8a78c76614c37210e23384e63798d8f8f8f8f8f8f8f8f9aa2b4c7bba6907b66513b26110000000000000000030c12141618202020201b1616161616161616161616161616161616160e0c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e939f9f9f9f99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000b1f344859626a6a6a6a6a6a6a6a6a6a6a748aa0b5cab7a18c776a6a6a6a6a6a6a6a6a6a61503c2713000b2035485a626a6a6a6a6a6a6a6a6a6a778ca1b6cbb5a08b756a6a6a6a6a6a6a6a6a6a635a4935200c0000000000000000000000050b101b222832363c484d5460656d767d858d969da6acb9cac6b9b4ac9a856f5a45301a000000000000000000000000000000000d22374c62778ca1a6a6a6a6a6a6a6a6a6a6a6a6aba6a6a6a6a6907b66513b261100000000000000000011212e3f4b5c6475828d9aa2abb2b7c3c0c3c0b7a28c77624d37220d000d22374c62778ca1b7c0c3c0c3b7b2aba29a8d8276645c4b3f2f2111010000000000000000000b203448596265676a6c6f72767b8189949ea7b4c0bbb49f8b7a645645321e0d00000000000000000000000000000000152b40556a8095aabfc8b39e88735847331f0e23384e63788da3a4a4a4a4a4a4a4afb4c0d0bba6907b66513b26110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b5b5ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000005182a3b484c5555555555555555555560758aa0b5cab7a18c7762555555555555555555504333200d0006192b3c484d55555555555555555561778ca1b6cbb5a08b76605555555555555555554d493c2c1906000000000000000002080d181f222e3738454b525a626a737b828a939ba3abb3b7c4c2b6b1a89e978e826d57422d18000000000000000000000000000000000d22374c62778ca1b7bbbbbbbbbbbbbbbbbbbbbbc0bbbbbbbba6907b66513b261100000000000000000e1e2e3f4b5d657a86979fabb3c0c7c6b9b4aeaba8a28c77624d37220d000d22374c62778ca1a8abaeb3b9c6c7c0b4ab9f98877a655d4b3f2f1f0f00000000000000000005182b3b484d505255575a5761666c757e899aa2b3bfbaa99c8674604b3b2b1805000000000000000000000000000000172d42576c8297acc1c5b09b86705b3a29170e23384e63788da3b8b9b9b9b9b9b9c4c7d0d0bba6907b66513b261100000000000000000000000000000000000000000000000000000000000000000000030a2020202020202020200a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000d1d2a34374040404040404040404b60758aa0b5cab7a18c77624c404040404040403f3c3325150300000e1e2b353840404040404040404c61778ca1b6cbb5a08b76604b404040404040404038352c1e0e000000000000000009151d202a34373e4b4f5660676f787f8790989fa8b0b4c1c8bbb4ada49c938a82796d63523f2a16000000000000000000000000000000000d22374c62778ca1b7b8b8b8b8b8b8b8b8b8b8b8c9cdd7d0bba6907b66513b2611000000000000000a1a2c3c4b5d657b8a9ca4b5bcc9bfb3afa89e999593918c77624d37220d000d22374c62778c919395999ea8afb3bfc9bcb5a59c8a7b655d4b3d2c1b0a0000000000000000000d1d2b34373a3d3f4239464b50566069778499a1b3c1b6a4947f6a594834200d000000000000000000000000000000192e43596e8398aec3c4ae99846f59442f1a0e23384e63788da3b8bababababababdc0c0c0bba6907b66513b26110000000000000000000000000000000000000000000000000000000000000000000b161e3535353535353535351f170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000000d181f222b2b2b2b2b2b2b2b354b60758aa0b5cab7a18c77624c372b2b2b2b2b2b2a27201507000000000e1920232b2b2b2b2b2b2b374c61778ca1b6cbb5a08b76604b362b2b2b2b2b2b2b2320190e0000000000000008131c2731363b474c545c646c757d848c959da5adb4bac6c3b7b2aa9f988f867e766c645c524535230f000000000000000000000000000000000d22374c62778ca1a3a3a3a3a3a3a3a3a3a3a3a3b4bac7d7bba6907b66513b261100000000000003162838495b657b8b9ea8b6c3c2b6b1a19a908984807d7c7c74604b36210b000b20364b60747c7c7d8084899099a1b1b6c2c3b6a89e8b7b655b49392816030000000000000000000d18202225282a2d29323638454b5962748399a3b4c2b49e8a77624d3b2a180500000000000000000000000000001a2f44596f8499aec4c2ad98826d58432d180e23384e63788da3a5a5a5a5a5a5a5a8ababababa6907b66513b261100000000000000000000000000000000000000000000000000000000000000000b1b29324a4a4a4a4a4a4a4a4a33291c0c000000000000000000000000000000000000000000050b0d101010101010100d0d0d0d0d0d0d0d0d0d0d13293e53687e93a8bdc4ae99846f59442f1a09030000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000000050b0d1515151515151520354b60758aa0b5cab7a18c77624c3722151515151515130d03000000000000060b0d15151515151522374c61778ca1b6cbb5a08b76604b36211515151515150e0c06000000000000000818253037444b51596269717a8189929a9fabb2b6c3c9bcb5afa59d948b837a716961584e4a3e35271706000000000000000000000000000000000d22374c62778c8e8e8e8e8e8e8e8e8e8e8e8e8e9fa9bacdbba6907b66513b2611000000000000091e3245566379899ea9b9c6bfb2a49c90847b756f6b686766605645321e0900091d324556606667686b6e757b848f9ca4b2bec6b9a99e8979635745321e1000000000000000000000050b0d10121517161e2128323b48566074859ba8b9b9a896816c5948341f0a00000000000000000000000000001a2f455a6f849aafc4c2ac97826d57422d180e23384e63798d9090909090909090939595959595907b66513b26110000000000000000000000000000000000000000000000000000000000000003162939465e606060606060605e463a291704000000000000000000000000000000000000000d19202225252525252525232323232323232323232323293e53687e93a8bdc4ae99846f59442f211e160a00000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b000000000000000000000000000000132536434a5560666e777f868f979ea7afb5bcc9c5b8b3ab9f9991877f776e655d534c463a362d20170900000000000000000000000000000000000b20354b607579797979797979797979797979798a9fb4c9bba6907b66513b26110000000000071b2e3e4b6075869ca7b8c7beb1a098867b6f666055565352514b45382816020002152838454b515253565560666f7b8698a0b1bdc7b9a79c8675604b3e2e1b0800000000000000000000000000000000030a0c161e2b38455662788a9eb4c3b49f8a77624c38271502000000000000000000000000001a30455a6f859aafc4c1ac97816c57422c170b21364b60757b7b7b7b7b7b7b7b7b7d80808080808076614c37220c000000000000000000000000000000000000000000000000000000000000000a1e3246577075757575757575705846331f0a0000000000000000000000000000000000000d1d2b34373a3a3a3a3a3a3a383838383838383838383838383e53687e93a8bdc4ae99846f5944383632281a0a000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b0000000000000000000000000000071c304354606b747c848b949ca4acb3b9c5c9c1b4b0a79e968c847c746a6259504b3f363329221b1002000000000000000000000000000000000000081d314455606363636363636363636363636371869bb1c6bba6907b66513b261100000000000d22364a5c6b8196a4b6c5bfb19f978275655d514b44373e3c3c3632281a0a0000000a1a2832363c3c3e37444b505d657582979fb1bfc5b6a496816c5c4b37221100000000000000000000000000000000000000020d1a2838485a697e93a5b6baa995806b5645311d09000000000000000000000000001a2f445a6f8499afc4c2ad97826d58422d18091e32455760656565656565656565686b6b6b6b6b6b615847331f0a000000000000000000000000000000000000000000000000000000000000000c21364b61758a8a8a8a8a8a8a76614c36210c000000000000000000000000000000000005192b3b484d5050505050504f4d4d4d4d4d4d4d4d4d4d4d4d4d4d53687e93a8bdc4ae99846f594d4d4b45382816030000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354a6072808891999faab1b6c2c9c6b9b4aca39b928880786f6660554c483b372e211f170b07000000000000000000000000000000000000000001152737444b4e4e4e4e4e4e4e4e4e4e4e4e5c71869bb1c6bba6907b66513b261100000000091c2f3f4f647a8c9fb4c2c3b3a197817261574b3f363127282727211e160a00000000000a151d202727282731363f4b5760728197a1b3c3c2b59f8d7a644f402f1c0900000000000000000000000000000000000001142637444b5d6074879cb2c7b39e8875604b36200c00000000000000000000000000192f44596e8499aec3c3ae99836e59442e1903162839454b505050505050505050535656565656564c473a2a1804000000000000000000000000000000000000000000000000000000000000000c21364b61768b9f9f9f9f9f8b76614c36210c00000000000000000000000000000000000b203448596265656565656565626262626262626262626262626262687e93a8bdc4ae99846f626262605645321e090000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354b60758a9ea6aeb4bbc8c9c2b5b1a89e978e857d756b625a514b4437342a231c110a04000000000000000000000000000000000000000000000009192731353939393939393939393939465c71869bb1c6bba6907b66513b2611000000000e23384c5d70849aabbccbb7a5998372605446392e201d151312110b09020000000000000002090b111213151d202e39455460728399a5b7cabcab9a85705e4c38230e000000000000000000000000000000000000081d314455607375757e93a8bdb8a6917c67523a2a1804000000000000000000000000182d43586d8298adc2c4af9a856f5a362614010a1b2832363b3b3b3b3b3b3b3b3b3e40404040404037332a1c0c00000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b5b5b5a18b76614c36210c00000000000000000000000000000000000d22374d62787a7a7a7a7a7a7a787878787878787878787878787878788095abc0c6b19c867878787875604b36210b0000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354b60758aa0b8c5cac7bab4ada49c93898179706760564d493c3531261f180d0800000000000000000000000000000000000000000000000000000009151d202424242424242424242431465c71869bb1c6bba6907b66513b261100000006192c3c50657b90a2b4c9bfb29d877661544336281b110802000000000000000000000000000000000000000208111b283643546176879db2bfc9b4a2907b66503d2c1a0600000000000000000000000000000000000b20354b6073878a8a939cadc1c4af99846f5847331f0a000000000000000000000000162b41566b8096abc0c6b09b86715443301c08000a161e21262626262626262626282b2b2b2b2b2b221f180c0000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cab6a18b76614c36210c000000000000000000000000000000000014293e54697e8f8f8f8f8f8f8f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d959eb0c3c9b5a49c8d8d8d8d7c66503b26110000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354b60758aa0b5c3b7b2a99f988f867e766c645c524b4538352c201d14090500000000000000000000000000000000000000000000000000000000000001080b0e0e0e0e0e0e0e0e0e1c31465c71869bb1c6bba6907b66513b26110000000c2035495a6f849aafc0c7b3a1917c6658473626180b000000000000000000000000000000000000000000000000000a1826364758667b90a1b3c7c0af9a846f5b4935210c0000000000000000000000000000000005192b3b51667c91a69fa8adbacacab49f8b77614c37220c00000000000000000000000014293f54697e94a9bec9b49e8975604b35200b000003090b101010101010101010131616161616160c0a04000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000000e23384e63788da8a5a5a5a5a4a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2abb0bccdd2c2b5b1a2a2a2907b66503b26110000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354b60758aa0b4aea59d948a837a716961574e4a3d36322820190e080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000000e23384d63788c9fb5cac0af99846f5e4c3a2a18080000000000000000000000000000000000000000000000000000000818293a4c5e6f8399aec0cab59f8c78634e38230f000000000000000000000000000000000b203448596f8499aec4bdc1c6c9cebbaa937e68533a2a1704000000000000000000000011263c51667b91a6c5cdb9a88d78634e38230e000000000000000000000000000000010101010101000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000000b20354a6074899eb4babababab7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c0c3cddae0d2c9c6b7b7a5907b66503b26110000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354b60758aab9f9990877f776e655d534c4639362d201d150a0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000061a2c3d566b8095abbcc8b4a28f7a644f402f1c0c00000000000000000000000000000000000000000000000000000000000c1c2f404f647a8fa2b4c8bcab96806b563d2c1a060000000000000000000000000000011426364d62788b9fb4cac1b5b0b5c1c8af9a856f5847331f0a00000000000000000000000d23384d62788da7b9ccc6a7927c6752382815020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000071c30435470859ab0c5cfcfcac0bdbabababababababababababababac2c6cfdce3d6ccc9babaa5907b66503b26110000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354b60758a958c847b736a61594f4b3f363329211a0f0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100000c2135495b72879cb1c9c7b09a85705c4b372212000000000000000000000000000000000000000000000000000000000000001222364a5c70859aafc7c9b29c87725b4936210c0000000000000000000000000000081c3043546a7f95aabbc2b5a39ba3b5c6b49f8b77614c37210c00000000000000000000000b20354a6074899eb3c9c1ac97816c5645321d090000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000000132536566c8196abc1d6cabaada8a4a4a4a4a4a4a4a4a4a4a4a4a4a4adb2becfd6c5b9b3a4a4a4907b66503b26110000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b20354b60748880786f6660544c473b372e211e170b07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100000e23384e63788da4b6cabaa9927d68533e2e1b0400000000000000000000000000000000000000000000000000000000000000071b2e3e52687d92a9bacab6a58e79634e39230e00000000000000000000000000000b20354b6074879db2c8b5a49b869ba8b9bbaa927d68523928160300000000000000000000071c3043546e8499aec9c8b39e8975604b36201300000000000000000000000000070c0e170b0700000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000000013283d52687d92a7c7d7c0ad9c928f8f8f8f8f8f8f8f8f8f8f8f8f8f98a0b2c6ccb9a79e8f8f8f8f7b66503b26110000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b0000000000000000000000000000081d31445560756b625a514b4336342a231c110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000014293e54697e93a9c2c9b49f8a76614b3621100000000000000000000000000000000000000000000000000000000000000000001021364b61768a9fb4c9c3a9947e69543f29140000000000000000000000000005182b3b51667b90a5b7c7b19c86758a9eb4c8ae99836e5746321e09000000000000000000000013253654697e93abbcccb8a7917c675241301c0c00000000000000000000010f1a21242c201c13080000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000e24394e63798ea9bacdbda8927e7a7a7a7a7a7a7a7a7a7a7a7a7a7a8298adc2c9b39e897b7a7a7a76614c36210c0000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b000000000000000000000000000001152737455660564d483c3530261f180c080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110004182a3b596e8398aec3c4af9a846f5746331e0a0000000000000000000000000000000000000000000000000000000000000000000a1e3346576f849aafc4c3ae98836e593b2b18050000000000000000000000000b203448596e8399aec3baa9937e6e8499aec3b49f8a76614b36210c00000000000000000000000d22384d62788c9fb5cac5af9a84705f4d3a2a190a0000000000000000000f1f2d363941353025180800000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000b20354b6075899fb4c9bca7927c67656565656565656565656565687e93a8bdc4ae99846f656565615846331f0a0000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000009192738454b4538352b201c14080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000b1f34475973889db2c8c8a9947f6954392917030000000000000000000000000000000000000000000000000000000000000000000317293954697e94a9c8c8b29d8873594834200b0000000000000000000000011426364d62778b9fb4c9b49f8a77687e93a8c2baa9917c675137271502000000000000000000000b2035485a70859aafc3c8b4a2927d67584737271a0e040000000000030f1d2d3d4a4e574a4336251808000000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000000081d31445570869bb0c5c0ab96816b564f4f4f4f4f4f4f4f4f4f53687e93a8bdc4ae99846f594f4f4c463a2917040000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b000000000000000000000000000000000a1a273136312720190e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000c22374c61778ca6b7cbbbaa8f7a654f3a251000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8faabbcbb7a68c77624c37220d0000000000000000000000081c3043546a7f94aabbc4ae98836e62788da4b6c7ad98826d5544311d080000000000000000000005192b3c52677c91a5b6cac0b39e8876615545382b1f18110e0d0c0e171e2d3b4a5b636c605443362618080000000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000000001142637576c8197acc1c4af9a856f54433a3a3a3a3a3a3a3a3e53687e93a8bdc4ae99846f59443a3633291c0c000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000000000a151d201d150a06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110010253a4f657a8fa4c4cab49f8a76604b36210b00000000000000000000000000000000000000000000000000000000000000000000000b21364b60768a9fb4cac4a58f7a65503a251000000000000000000000000b20354b6074879db2c8b7a6907b665a71869cb1c6b39e8975604b36200b00000000000000000000000e20354b6073879cb2c0cbb8a69983736056483c342a262322222329333d4a59637981726054433626180800000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000013283e53687d93a8c8c9b39e8974604a35252525252525293e53687e93a8bdc4ae99846f59442f211f170c00000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000000000002090b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110013283d53687d92a8bdc7b19c87725745321e090000000000000000000000000000000000000000000000000000000000000000000000091e32455672879cb1c7bda8937d68533e28130000000000000000000005182a3b50667b90a5b7c9b29d887460566b8096abc6b9a7907b65503625130000000000000000000000081d314455677d91a2b3c5c5b3a1988274625a4c473b3b3837373939464b5b63778796817260544336261808000000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000000000f24394f64798eaabbccb9a78d78634d38231010101013293e53687e93a8bdc4ae99846f59442f1a0a040000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100162b40566b8095abc0c4af99846f5a39281603000000000000000000000000000000000000000000000000000000000000000000000003162838596f8499aec4c0ab96806b56412b16000000000000000000000b1f3448596e8399aec3bcab95806b5450657a90a8b9c5ac97816c5443301c0700000000000000000000011426374d5f6f849aa7b8c8bfb2a09884786b615954504e4c4c4e5157616a79879d9f978172605443362614010000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000000000b20364b60758a9fb4c9c5a7917c67523c271200000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000000020b1113202020202020202020202020202020202020202020202020202020202013110b020000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100182d42586d8297adc2c1ac96816c57412c1700000000000000000000000000000000000000000000000000000000000000000000000000172c41576c8196acc1c2ad97826d58422d18000000000000000000001325364c62778b9fb4cab59f8c78634d4b6075899eb3c8b39d8874604a35200b0000000000000000000000091930414d6278899eaabbc9beb2a29a8a80776f696663626163676d767f8b9da5b19f978172605443301c080000000000000000000000000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210e00000000000000000000000000000000000000091d31455671869bb1c6c0ab96806b56412b1600000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000006131e2628353535353535353535353535353535353535353535353535353535353529261f140600000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001a2f44596f8499aec4bfaa947f6a553f2a1500000000000000000000000000000000000000000000000000000000000000000000000000152a3f556a7f94aabfc4af99846f5a442f1a000000000000000000071c3043546a7f94aabbc6af9a85705a4944556e8399aec3b7a68f7a644f3a250f000000000000000000000000132035485a657c8c9fabbac6c0b4a89e958b847f7b787777787c8289959fa9b6beb1a0978273604b35200b000000000000000000000000000000000000000000000000000000000005192b3c4d63788da2b8cdb8a38e79634e3c2c190600000000000000000000000000000000000002152738576d8297acc2c4af9a846f5a3c2b1906000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c0000000000000000000000000000000000000000000000000000000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b0000000000000000000000000000021324313a3d4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a3e3a31241402000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001b31465b70869bb0c5bda8937e68533e29130000000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8bdc6b09b86715b46311c0000000000000000000b20354a6073879db2c8b9a8927d67523c3753687d92a8c2c4ab96806b563d2d1a07000000000000000000000005192b3c4c5e677d8d9fa8b6c2c6b9b4aa9f9994908d8c8c8e91979ea7b4bac7c5b8a99d8877614c37220c00000000000000000000000000000000000000000000000000000000000b2035485a6d8298adc2d7c3ad98836e5a4935200f0000000000000000000000000000000000000013293e53687e93a8c8c8b39e89735a4935200b000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000000000070d0f0d0b0600000b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b00000000000000000000000000000b1e31424e536060606060606060606060606060606060606060606060606060606060534e42311f0b000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001c32475c71879cb1c6bca7917c67523c27120000000000000000000000000000000000000000000000000000000000000000000000000012273c51677c91a6bcc7b19c87725c47321d000000000000000005182a3b50657b90a5b6c9b39e8975604b36374d62778ca3b5c7b29c87725b4a36210c0000000000000000000000000e1e2f404d5f677d8a9ca4b4b9c6c8bbb4afa9a5a3a1a1a3a6acb3b9c5c9bfb2a79e8b7b655847331f0a00000000000000000000000000000000000000000000000000000000061a2c3d4d62788da0b2c5dac6b2a08d78624d3d2c1a060000000000000000000000000000000000000f253a4f647a8faabbccb8a78d78624d38230d000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000002101b22242320190e0b0b20354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b000000000000000000000000000011263a4e6068757575757575757575757575757575757575757575757575757575757568604e3a2611000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001d32475d72879cb2c7bba6917b66513c26110000000000000000000000000000000000000000000000000000000000000000000000000011263c51667b91a6bbc7b29d87725d48321d00000000000000000b1f3447596e8398aec3c2ac97826c56453234485971869bb1c6b6a58e79634e39240e00000000000000000000000000112130414d5f677a86959ea8b2b7c3c4c4bebbb8b7b6b8bcc2c6c7bab4ada199897b655d4b3a2a1804000000000000000000000000000000000000000000000000000000000c2135495b6d8297adbeced1cfbead98826d5b493521100000000000000000000000000000000000000b21364b60768a9fb4cac5a6917c67513c2712000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000010202d363938352b22201820354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b000000000000000000000000000013283d53687e8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7e68533e2913000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001d33485d72889db2c7bba5907b66503b26110000000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5bac8b29d88735d48331e00000000000000001325364c62778b9fb4c9b5a48f7a644f38282b3b566b8095abc5c3aa957f6a553c2b190600000000000000000000000003132330414d5c64747f8a959da5aaafb2b4bcc9b9b9c6b9b4b1aca99f988e8377655d4b3f2e1c0c00000000000000000000000000000000000000000000000000000000071a2d3d4e63798c9fb4cac9bcc9cab49f8c79634e3e2d1b070000000000000000000000000000000000091e32455671869cb1c6c0ab95806b56402b16000013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c00000000000000000000000000000000071b2d3e4a4e4d483c37342b21354b60758aa0b5cab7a18c77624c37220d000000000000000000000000000000000000000000000c22374c61778ca1b6cbb5a08b76604b36210b000000000000000000000000000013283d53687d929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f937e68533e2913000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001e33485e73889db3c8baa5907b65503b26100000000000000000000000000000000000000000000000000000000000000000000000000010253b50657a90a5bac8b39e88735e49331e00000000000000071c3043546a7f94aabbc8b19c86715c4a361a253a4f657a8fa7b8c6b19b86715a4935200b00000000000000000000000000051323303e4a56606a7680878f94999d9faba3a4a3a2a89e9b97918a837a6e62594b3f2e211100000000000000000000000000000000000000000000000000000000000c21364a5b6e8398aabbbab4a7b4babcab98836e5c4a362210000000000000000000000000000000000003162838586d8298adc2c4af9a846f5a3c2b19050013293e53687e93a8bdc4ae99846f59442f1a04000000000000000000000000000000000000000c21364b61768ba0b6cbb6a18b76614c36210c000000000000000000000000000000000d22364a5c64625a544c483b37354b60758aa0b5cab7a18c77624c37220d00000000000000000000000000000000000a0a0a0a0a0c22374c61778ca1b6cbb5a08b76604b36210b0a0a0a0a0a00000000000000000013283d53687d92a8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a8937e68533e2913000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001d33485d72889db2c7bba6907b66513b26110000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5bbc8b29d88735d48331e000000000000000b20354a6073879cb2c8bbaa947e69543e2e1b20354b6074899eb3c8b5a38d78624d38230d00000000000000000000000000000412202d38454b58616a727a7f84888a8d8e8e8e8d8c8986817c766e645c4c483b2e21110300000000000000000000000000000000000000000000000000000000071b2e3e4e63798c9fb5baa99f919fa9bab59f8d79644e3e2e1b08000000000000000000000000000000000014293e54697e93a9c9c8b39e88735a4835200b0013293e53687e93a8bdc4ae99846f59442f1a0400000000000000000000000a0a0a0a0a0a0a0a0c21364b61768ba0b6cbb6a18b76614c36210c0a0a0a0a0a0a0a0a00000000000000000f24394e647a7870696259534c474b60758aa0b5cab7a18c77624c37220d0000000000000000000000000000080e101f1f1f1f1f1f22374c61778ca1b6cbb5a08b76604b36211f1f1f1f1f1f100e0800000000000013283d53687d92a8bdcacacad1c8c4bebebebebebebebebebebebebebebebebebda8937e68533e2913000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001d32475d72879cb2c7bba6917c66513c27110000000000000000000000000000000000000000000000000000000000000000000000000011263c51667b91a6bbc7b29d87725d48321d00000000000004182a3a50657b90a5b6c9b49f8b77614c3722101d3144556e8398adc9c1a9947e69543b2a1804000000000000000000000000000002101a28323a474c555c646a6f727577787979787674716c6761574f4a3e342b1d110300000000000000000000000000000000000000000000000000000000000d22364a5c6e8399abbcb49f8b7c8b9fb4bcab99846f5c4b372211000000000000000000000000000000000010253a50657a8fabbcccb8a78d77624d38220d0013293e53687e93a8bdc4ae99846f59442f1a040000000000000000080e101f1f1f1f1f1f1f1f1f21364b61768ba0b6cbb6a18b76614c36211f1f1f1f1f1f1f1f1f100e080000000000152b40556a808d857e776f6861585260758aa0b5cab7a18c77624c37220d00000000000000000000000003111c232534343434343434374c61778ca1b6cbb5a08b76604b363434343434343426231c11030000000013283d53687d92a8bdd2e3d1c0b4afa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8937e68533e2913000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001c32475c71879cb1c6bca7927c67523d27120000000000000000000000000000000000000000000000000000000000000000000000000012273c52677c91a7bcc6b19c87715c47321c0000000000000a1f3447596e8398adc3c4ae99836e5947341f0a14263752687d92abbcc5b09a85705947341f0b000000000000000000000000000000000a151d2a33373e4b4f555a5660626364646361585c57524c4639362d20180d000000000000000000000000000000000000000000000000000000000000081c2e3f4f647a8fa1b3bbaa97816c8197aabbb3a18f7a644f3f2f1c08000000000000000000000000000000000c21364b61768b9fb5cac5a6917c66513c27110013293e53687e93a8bdc4ae99846f59442f1a0400000000000003111c232534343434343434343434364b61768ba0b6cbb6a18b76614c363434343434343434343426231c1103000000152b40556a80959b938b857d766f6761758aa0b5cab7a18c77624c37220d00000000000000000000000011212e373a49494949494949494c61778ca1b6cbb5a08b76604b49494949494949493b382f21110000000013283d53687d92a8bbcbdcc8b4a29a93939393939393939393939393939393939393937e68533e2913000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611001b30465b70859bb0c5bea8937e69533e29140000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8bdc5b09b86705b46311b0000000000000c22374c61778a9fb4c9b7a6907b66513a2a18040c22374c61778b9fb5cab49f8b77614c37220c0000000000000000000000000000000000020c171f212e373a3f38454b4d4e4f4e4d4c473a423c363329221b1005000000000000000000000000000000000000000000000000000000000000000e23374b5d6f849aafbfb49f8b7862788b9fb4bfaf9a846f5d4b372312000000000000000000000000000000000a1e33465772879cb2c7c0aa95806b55402b160013293e53687e93a8bdc4ae99846f59442f1a0400000000000011212e373a49494949494949494949494b61768ba0b6cbb6a18b76614c49494949494949494949493b382f2111000000152b40556a8095aaab9f9a938a847d76738aa0b5cab7a18c77624c37220d0000000000000000000000081c2e3f4b4f5f5f5f5f5f5f5f5f5f61778ca1b6cbb5a08b76605f5f5f5f5f5f5f5f5f504c3f2f1c0800000011273c51667c919daebdcdc4af9a847e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e79634e39230e000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100192f44596e8499aec3bfaa957f6a55402a1500000000000000000000000000000000000000000000000000000000000000000000000000152a40556a7f95aabfc4ae99846f59442f1a0000000000081c2e3f54697f94a9bac8b29d8874604b35200c000b1f34475971869bb0c6bcab927d685339291703000000000000000000000000000000000000040a101b22252a273136383939393837332a2c27211e170b070000000000000000000000000000000000000000000000000000000000000000091c2f4050657a8fa2b3bcab97826d5a6d8297aabbb4a2907b6550402f180800000000000000000000000000000003172939586e8398adc3c4af99846f5a3b2b180513293e53687e93a8bdc4ae99846f59442f1a040000000000081c2e3f4b505f5f5f5f5f5f5f5f5f5f5f5f61768ba0b6cbb6a18b76615f5f5f5f5f5f5f5f5f5f5f5f504c3f2f1c080000152b40556a8095aabcb4afaa9f99928a8399aec3ccb7a18c77624c37220d00000000000000000000000e23374b5d6574747474747474747474768ca1b6cbb5a08b7474747474747474747474655d4c38230e0000000f24394c5e697f949fb0bfc9b49f8a7a69696969696969696969696969696969696969635b4a36210c000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100182d42576d8297acc2c1ac97826c57422d1700000000000000000000000000000000000000000000000000000000000000000000000002172d42576c8297acc1c2ac97826d57422d1800000000000e23374b5d72879cb1c7c0ab95806b5544311d080004182a3b556a8095aac5c9ae99846f5746331e0a000000000000000000000000000000000000000000080d0f15151d202223242423211f1717120c0a03000000000000000000000000000000000000000000000000000000000000000000000823384c5e70859ab0c0b49f8c79634e63788c9fb4c0b09b85705e4c36251300000000000000000000000000000000142a3f54697f94a9bec8b39d8873594834200b13293e53687e93a8bdc4ae99846f59442f1a0400000000000e23374b5d6574747474747474747474747474758ba0b6cbb6a18b7674747474747474747474747474655d4c38230e0000152b40556a8095aac1c7c8bbb4aea99f99a1b2c6ccb7a18c77624c37220d000000000000000000000010253a4f657b8a8989898989898989898c94a6bacdb8a4928c8989898989898989898a7b65503b2610000000091d30404f616c8196a0b2c0baa99e89796359535353535353535353535353535353534e4a3d2d1a07000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100152b40556a8095aabfc4af9a856f5a3a2a170400000000000000000000000000000000000000000000000000000000000000000000000417293a5a6f849aafc4c0aa95806b55402b160000000004172a3a50657b90a4b6c8b4a28d78634d3726140100000f243a4f647a8fa7b8c9b49f8a76614b36210c0000000000000000000000000000000000000000000000000002090b0d0e0f0f0e0c0a0400000000000000000000000000000000000000000000000000000000000000000000000000000818304050667b90a2b4bcab98826d5b495a6d8298abbcb4a3907b665443301c0800000000000000000000000000000010263b50657b90a5c3cbb8a68c77624d37220d13293e53687e93a8bdc4ae99846f59442f1a04000000000010253a50657b8a8989898989898989898989898b93a5b9cdb9a6948b8989898989898989898989898a7b65503b26100000152b40556a8095a3aab2b6c3c8c7bab4aeb2bfcfccb7a18c77624c37220d000000000000000000000010253a50657a8f9e9e9e9e9e9e9e9e9ea8a6b3c3e2cebbaa9f9e9e9e9e9e9e9e9e9e907b66503b261100000000122232434b60728298a2b4c2b8a79c8777615645363e3e3e3e3e3e3e3e3e3e3e3e3e39362d1f0f00000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110012283d52677d92a7c9c7b29d88725847331f0a00000000000000000000000000000000000000000000000000000000000000000000000a1f33475872879db2c7bda7927d68523d2813000000000a1f3347586d8398adc2c6b09a85705b493519090000000b20354b6074889eb3c8baa9917c675238281502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011426364d5e71859bb0c0b59f8c79634e3d4e63798c9fb4c1b19b8672604a3626140100000000000000000000000000000c21374c61768ca5b7cac4a6917b66513c261113293e53687e93a8bdc4ae99846f59442f1a04000000000010263b50657b909e9e9e9e9e9e9e9e9e9e9e9ea8a5b1c2d4c2b2a6a89e9e9e9e9e9e9e9e9e9e9e9e907b66503b2611000010253b50657b858d959ca5acb3b8c5c9c3c6cfd5ccb7a18c77624c37220d000000000000000000000010253a50657a8fa5b4b4b4b4b4b4b4b4b9c6c3d1ebd9c8bbb4b4b4b4b4b4b4b4b4a5907b66503b26110000000004141c3043546074849aa4b6c4b6a59b85746054433029292929292929292929292923211a0f0100000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000f243a4f64798fabbccab7a58c77614c37210c00000000000000000000000000000000000000000000000000000000000000000000000c21374c61768ca5b7cac2a48f7a644f3a250f000000000c21374c61778a9fb4c9b9a8927d68523c2c1900000000081c3043546d8298adc8c7ad98836e5645321d090000000000000000000000000000000000000000000000000000000000000000050b0d1215171819181715120d0b0500000000000000000000000000000000000000000000000000081c304354667c91a3b5bfae98836e5b4a36495b6e8398abbcb5a3917c675443301c0900000000000000000000000000000a1f33475872879db2c7bfaa95806a55402b1513293e53687e93a8bdc4ae99846f59442f1a04000000000010263b50657b90a5b4b4b4b4b4b4b4b4b4b4b4b9c6c2cfdfd0c2c6b9b4b4b4b4b4b4b4b4b4b4b4a5907b66503b261100000e23384b5d65707880878f969ea6adb4b9c6c0c0c0b7a18c77624c37220d000000000000000000000010253a50657a8fa5bac0c0c0c0c0c0c0c1c4cdcacacacdc4c0c0c0c0c0c0c0c0bba5907b66503b261100000000000114263645566176869ca6b8c3b4a3998372604b433223141414141414141414140e0c07000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000c21364c61768b9fb5cac3a5907b66503b2611000000000000000000000000000000000000000000000000000000000000000000000010253b50657b90a5c3cab6a48c76614c37210c000000081c2e3f54697e94a9bac9b49e8976614b36210e000000000114263652677c92aabbc9b49e8975604b36200b0000000000000000000000000000000000000000000000000000000000050b0d182022272a2d2e2e2e2d2a272220180d0b05000000000000000000000000000000000000000000011527374b6073869cb1c1b3a18e79644e3d2d3d4e63798c9fb5c1b19c8673604b372715020000000000000000000000000004172a3a596e8399aec3c4ae99846f593b2a1813293e53687e93a8bdc4ae99846f59442f1a04000000000010263b50657b90a5bac0c0c0c0c0c0c0c0c0c0c0c4cdcacacacdc4c1c0c0c0c0c0c0c0c0c0c0bba5907b66503b26110000081c2f3f4b505b636a727a818890989ea8abababababa18c77624c37220d000000000000000000000010253a50657a8fa5ababababababababacb0bdb5b5b5bcb0abababababababababa5907b66503b26110000000000000818283847586278889ea8b9c1b3a196816c614f413021100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000a1e33465772879cb1c7c0ab95806b563c2b190600000000000000000000000000000000000000000000000000000000000000000005192b3c556b8095aac0c7b19c87725847331f0a0000000e23374b5d72869cb1c7c2ac97826d5746321e0900000000000c21374c61768b9fb4cab9a8907b6651362614010000000000000000000000000000000000000000000000000000030d181f222b34373c3f42434443423f3c37342b2220180d0300000000000000000000000000000000000000081d314455677d92a4b5bfae99836f5c4a3621364a5b6e8399aebfb6a4927d675544311d0a0000000000000000000000000000152a3f556a7f94aabfc8b39d88735948341f13293e53687e93a8bdc4ae99846f59442f1a04000000000010263b50657b90a5ababababababababababababb0bcb5b5b5bdb0ababababababababababababa5907b66503b261100000011212f383d494e555c646c747b8289929595959595958c77624c37220d000000000000000000000010253a50657b8f959595959595959595969f9f9f9f9f9f9e96959595959595959595907b66503b2611000000000000000a1a2a3a495a647a8a9eaabbbfb09f947f695f4d3f2e1f0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110003172939576d8297acc9c6b19b86715a483520090000000000000000000000000000000000000000000000000000000000000000000b2035485a71869bb0c6c9ad97826d583a291704000004172a3a50657a8fa4b6cab6a48f7a644f3928160300000000000a1f33475870859bb0c5c6ac97826d5443301c08000000000000000000000000000000000000000000000000000b161e2a34373b484d5155575859585755514d483b37342b1e160b0000000000000000000000000000000000021527384b6074879cb2c2b3a18f7a644f3e2d1a2d3d4f647a8ea1b3c2b29d8774604b382816020000000000000000000000000011263b51667b90a6c4c6b7a68c77624c372213293e53687e93a8bdc4ae99846f59442f1a04000000000010263b50657b90959595959595959595959595969e9f9f9f9f9f9f96959595959595959595959595907b66503b261100000003111c232c35383e4b4f5560666d767d8080808080808075614b36210c00000000000000000000000d23384d627880808080808080808080818a8a8a8a8a8a8a818080808080808080808079634e38230e00000000000000000c1c2b3c4a5c667c8c9fb4bcbdb59f8d7d675d4b3d2c1d0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000013283d52687d92abbccab59f8c78624d3727150200000000000000000000000000000000000000000000000000000000000000011527374d62788c9fb5cabcab927d68533d28130000000a1f3347586d8298adc2c8b19c86715c4b371b0b00000000000004172a3a556a7f94aac4c8b39e8874604b35200b0000000000000000000000000000000000000000000000010f1b28323b474c545962676a6c6d6e6d6c6a676259554c483b32281b1002000000000000000000000000000000091d314556687d92a5b6c0af9a846f5c4a36200f22364a5c6f8499afc0b6a5937e685645321e0b000000000000000000000000000d22374c62778ca6b0b0b0a6907b66513b2613293e53687e93a8bdc4ae99846f59442f1a0400000000000e23384d637880808080808080808080808080818a8a8a8a8a8a8a818080808080808080808080808079634e38230e0000000000080e1a21232e3737444b505761676b6b6b6b6b6b6b615746321e0a00000000000000000000000c2035495a626b6b6b6b6b6b6b6b6b6b6c757575757575756b6b6b6b6b6b6b6b6b6b6b635b4935210c0000000000000000000e1e2d3e4c5e687e939eb0bebcab9f8b7b655b493b2a1b0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100000c22374c61778b9fb4cabcab957f6a5544311d0a00000000000000000000000000000000000000000000000000000000000000081d3144556a7f94abbccab59f8b77624c37220d0000000c21374c61768a9fb4babbaa947f69543e2e1b00000000000000000f24394f64798ea6b7bab8a68f7a654f3a25100000000000000000000000000000000000000000000003111f2d39464b59626a71777c7f82838383827f7c77726a62594b46392d20110300000000000000000000000000031628394b6074879db2c3b4a28f7a654f3e2e1b071b2d3e4f647a8fa2b4c3b29d8775604b392816030000000000000000000000000b1f34475973889b9b9b9b9b957f6a55402a15293e53687e93a8bdc4ae99846f59442f1a0400000000000c2035495a636b6b6b6b6b6b6b6b6b6b6b6b6b6b757575757575756c6b6b6b6b6b6b6b6b6b6b6b6b6b635b4935210c00000000000000060c101b2227313539464b52565656565656564b4639291603000000000000000000000006192c3c494d56565656565656565656576060606060606056565656565656565656564e493d2c1a060000000000000000000010202f404e606b8095a0b2c0baa99e89796359473928180800000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b261100000b1f34475970859ab0c6c9b29d8774604b392816030000000000000000000000000000000000000000000000000000000000031628384b6074879db2c9c6b09b85705948341f0b00000115273754697e93a9a4a4a49f8b77624c37221000000000000000000b20354a6074889da4a4a4a496816b563727150100000000000000000000000000000000000000000111212e3d4a57616b777f868c9194979899989794918c877f776b61574a3e2e211101000000000000000000000000091e324557697e93a5b7c1af9a84705d4b372010001022374b5c6f849aafc0b7a6937e695746321e0b00000000000000000000000005182a3b576c81868686868686806b56402b16293e53687e93a8bdc0ae99846f59442f1a04000000000006192c3c494d56565656565656565656565656566060606060606056565656565656565656565656564e493d2c1a06000000000000000000000709151d202832363d404040404040403632291b0b000000000000000000000000000e1e2c353840404040404040404040414a4a4a4a4a4a4a414040404040404040404038352c1f0e000000000000000000000002122231424a60728298a2b4c2b8a79d877761574536261401000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000004182a3b53697e93a8b9cbb7a5927d685745321e1100000000000000000000000000000000000000000000000000000000000e1e324556687d92a5b7cabaa8937e69543b2a18050000081d31445571868f8f8f8f8f8f836e5947341f0b0000000000000000071c3043546d828f8f8f8f8f8f87725544311d0800000000000000000000000000000000000000000f1f2e3f4b5c6475808a949ca4a6aaacadaeadacaaa6a49c948a8075645c4b3f2e200f0000000000000000000000031729394b6075889db3c3b4a3907b65503f2e1b0200081b2e3e50657b8fa2b4c4b39e8875614b3a2917040000000000000000000000000d293e51636c7171717171716b62513d2913293e53687e93a8ababab99846f59442f1a040000000000000e1e2c353840404040404040404040404040414a4a4a4a4a4a4a414040404040404040404040404038352c1f0e0000000000000000000000000001080b161e21272b2b2b2b2b2b2b211e160b0000000000000000000000000000000e1920232b2b2b2b2b2b2b2b2b2b2c353535353535352c2b2b2b2b2b2b2b2b2b2b23211a0e0000000000000000000000000004141c3043546074849aa4b5c4b6a59b8575605443301c14050000000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000000c21364c61768a9eb4c7c3b29d8775604b3f2f1f0f0100000000000000000000000000000000000000000000000000010f1e2e3f4b6075879db2c3c8b49f8a76614c36210d0000000b20354b60737b7a7a7a7a7a7a77624d3b2a18050000000000000000001325364d62777a7a7a7a7a7a7b73604b35200b000000000000000000000000000000000000000b1b2d3d4b5d657a86959fa8b1b6c2bfc1c2c2c2c1bfc2b6b1a99f96867a655d4b3e2d1c0c000000000000000000000a1e334657697f94a6b7c1b09b85705d4b3821100000001023374b5d70859ab0c1b8a6947f6a5846331f0c0000000000000000000000000e22344551575b5b5b5b5b5b565144332113293e53687e939595959595846f59442f1a04000000000000000e1920232b2b2b2b2b2b2b2b2b2b2b2b2b2c353535353535352c2b2b2b2b2b2b2b2b2b2b2b2b2b23211a0e000000000000000000000000000000000003090c12161616161616160c0a030000000000000000000000000000000000060c0d16161616161616161616172020202020202016161616161616161616160e0c060000000000000000000000000000000013253645566176869ca6b7c3b5a3998372604b433223120300000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b26110000000a1e3346576c8197a9bacab7a595806b5d4b3d2c1f1207000000000000000000000000000000000000000000000007121f2c3c4b5d6b8095a5b7cabbaa97826d5846331f0a000000081d3144556065656565656565625948341d0d0000000000000000000008203448596265656565656565605544311d08000000000000000000000000000000000000031729394a5b657b8a9ca4b4bac6c8bbb4b1aeadaeb1b4bbc8c7bab4a49c8a7b655c4a3a291704000000000000000004172a3a4c6176899eb3c4b5a3907b66503f2f1c03000000081c2e3f50657b90a3b5c4b39e8976614c3a2a18040000000000000000000000051626343e41464646464646403d3326160f243a4f647a8080808080807d68523d2813000000000000000000060c0e16161616161616161616161616162020202020202017161616161616161616161616160e0c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000818273846586278889da8b9c1b3a196816c614f4130211001000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000000031729394d62788b9fb4c4c3b49f8d7b655b493d30211a0f0b080100000000000000000000000000000001080b0f1a21303d495b657b8c9fb4c3c5b49f8b78624d3a29170400000001152737444b4f4f4f4f4f4f4f4d483b2b18000000000000000000000005182b3b484d4f4f4f4f4f4f4f4b44372715010000000000000000000000000000000000000a1e33465763798a9ea8b6c2c5b8b3aa9f9b9897989b9faab3b8c4c2b6a89e8a7a645846331f1000000000000000000a1f3347586a8095a7b8c2b09b85715e4c38211100000000001123384c5e70859bb0c1b8a795806b5847331f0d000000000000000000000000081622292c3131313131312b292116080d22374b5c646b6b6b6b6b6b685f4e3a2510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d171c1f2020202020200e0c070000000000000000020b111320202020202020201f1d170e02000000000000000000000000000a1a293a485963798a9eaabbbfb09f947f695f4d3f2e1f0f000000000000000000000000000000000000000000000000000000000000000000000000000000071c31465c71869bb1c6bba6907b66513b2611000000000b2035485a6c8196a6b8cbbcab9e8879635b4d40362d23201d151b0c0a0400000000000000040a0c1b151d20232d36404c5b6379889daabbcbb8a696816c5a49351c0c000000000009192731353a3a3a3a3a3a3a37342b1d0d0000000000000000000000000d1d2b34373a3a3a3a3a3a3a3531271909000000000000000000000000000000000000071a2d3e4c6176879da8b9c6c0b4a79e948b86838283868b939ea6b4c0c6b9a89d8776614c3e2d1b0700000000000005182a3b4c6176899eb3c5b5a4917c6651402f1c030000000000091c2f4051667c91a3b5c5b49e8a77614c3b2b1805000000000000000000000000050e15171c1c1c1c1c1c16140e0400071b2e3e4b4f565656565656524e41311e0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d13152020202020202012100a0100000000000000000000000000010a10122020202020202015130d0300000001111f2a313435353535353524211a0f01000000000006131e2628353535353535353534322b201202000000000000000000000000000b1b2b3b4a5b657b8c9fb4bbbdb59f8d7d675d4b3d2c1d0c0000000000000000000000000000000000000000000000000000000000000303030303030303071c31465c71869bb1c6bba6907b66513b26110000000006192b3c4c6176889db3bdc9b8a69d8779665e4e4a3d3935312731221f180c00000000000c171f2131273135393d4a4e5e6679879da6b8c8bdb39e8877614c3c2c190000000000000009151d20252525252525252220180d00000000000000000000000000000d18202225252525252525201d1509000000000000000000000000000000000000000d21364a5c6c8197a5b7c6c0b4a29a887e77716e6d6e71767e889aa2b4c0c6b7a597826d5c4a36220e0000000000000b1f3448596b8096a8b9c2b19c8673604a352012000000000000001124384c5e71869bb1c2b9a896806b594834200e0000000000000000000000000000000206060606060601000000000010202e373a4040404040403d3a31231301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071520272a3535353535353528251e1305000000000000000000000005131e2527353535353535352a2820150700000d1f2f3d46494a4a4a4a4a4a39362d1f0f00000000021324313a3d4a4a4a4a4a4a4a4a49463d30200e00000000000000000000000000000d1d2d3d4c5d677d929dafbdbcab9f8b7b655b493b2a1b0a0000000000000000000000000000000000000000000000000000040a0c1818181818181818181c31465c71869bb1c6bba6907b66513b261100000000000e1f334758667c919fb1c0c4b7a69d8a7c6e635b544e4b44374637342a1c0c0000000c1c2a33374637444b4e535b636e7c899da5b7c4c0b19f917c665847331e0e000000000000000001080b101010101010100d0b0500000000000000000000000000000000050b0d101010101010100b08010000000000000000000000000000000000000005192b3c4e64798d9fb5c3c5b4a29a847769615859585958616977849aa2b4c4c3b19f8e7a644f3c2b19060000000005192b3c4c62778a9fb4c6b6a4917c675443301c0700000000000000091d2f4051677c91a4b5c6b49f8a77624d3c2b190600000000000000000000000000000000000000000000000000000002101b22242b2b2b2b2b2b28251e1305000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031525323c3f4a4a4a4a4a4a4a3d3a3023130000000000000000000000132330393d4a4a4a4a4a4a4a3f3c3325150300172a3d4d5a5e6060606060604e4a3d2d1a070000000b1e31424e5360606060606060605f5a4e3d2b1700000000040a0c0f0f0f0f0f0f0f0f0f1f2f3f4d5f6a7f959fb1bfbaa99e8979635947392819090000000000000000000000000000000000000000000000000b171f212e2e2e2e2e2e2e2e2e2e31465c71869bb1c6bba6907b66513b2611000000000004172a3a4c5e6c8197a2b3c0c4b7a89e91837970696360555c5b4c473a2a18040004172a3a474c5b5c556063696f7983919ea7b7c3c0b4a297816c5e4d3a2a18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b2035485a6e8399abbcccb8a79a847461594c473a423a474c586174849aa6b8cbbdae99836e5a4835200b000000000b2034485a6c8196a8bac3b19c8673604b3625130000000000000000001220354a6073869cb1c2baa997816c5a4835200a0000000000000000000000000000000000000000000000000000000000070d0f16161616161613100b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d2032434f5460606060606060524d41301b0b0000000000000000000a1a30414d526060606060606055504333200d001c31465a6b74757575757575705b4a36210c00000011263a4e60687575757575757575746c5a46321d0000000c171f212424242424242424242424314150616c8197a1b3c1b8a79d877761574537261401000000000000000000000000000000000000000000000b1b2933364343434343434343434343465c71869bb1c6bba6907b66513b26110000000000000c1c30404b6073839aa2b3bfc6b9b3a1998e857e7875727170615947341f0a000a1f3347586170717275787e848e99a1b3b9c5bfb3a29a8473604b40301c0c000000000000000000000000000000000000000000000000000000000000040a0c11151718191816140f0b0801000001080b121110100f0e0e0d0d0c0b0b07000000000000000d22384d62788c9fb4c9c3b39e89776156473a332a2d2a333a47566176889eb3c3cab59f8c78624d38230d000000011527374d62788b9fabababa5927d675443301808000000000000000000071c304354677d92a4ababab9f8b78624d3827150200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013273c4f616a75757575757575675f4d3928160300000000000000031628384d5f67757575757575756a61503c2813001f34495e74898a8a8a8a8a8a79634e39240e0000061a2c3d53687e8a8a8a8a8a8a8a8a8a745f49341f00000c1c2a333739393939393939393939393939434b60738399a3b5c3b6a59b8575605544311d160500000000000000000000000000000000000000000417293a464c5858585858585858585858585c71869bb1c6bba6907b66513b261100000000000000121d31445561758499a1b4bbc8bfb3aea29a938e8a87868577614c37220c000c21374c61768586878a8e939aa2aeb3bfc8bbb4a19984766155443122120000000000000000000000000000000000000000000000000000000000070c181f22262b2c2e2e2d2c2924201d150909151d202726262524242322222121201c13080000000005182b3b556a7f95abbccbb7a5937e685947382a1f1718171f2a384758687d92a5b7cabcab95806a553c2b19050000081d3144556d829595959595958773604b36261400000000000000000000001325364b607386959595959595826d5645311d0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b101517181917130d0b050000060b0d111110100f0e0e0d0c0c0b09020000000000152a3f546a7f8a8a8a8a8a8a8a7d675746321e0e00000000000000091e324556677d8a8a8a8a8a8a8a7f6a553f2a15001f34495e74899e9f9f9f9f8e79634e39240e00000c2135495b70859b9f9f9f9f9f9f9e8a745f49341f0004172a3a474c4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e556175859ba5b7c3b5a3998373604b4434220e00000000000000000000000000000000000000000a1f334658616d6d6d6d6d6d6d6d6d6d6d6d6d71869bb1c6bba6907b66513b261100000000000000011527374657617483949faab4c0cac0b4afa9aa9f9d9c8c77624d37220d000d22374c62778c9c9d9faaa8afb4c0cac0b4aa9f9583756158463727150400000000000000000000000000000000000000000000000000000008131c202a34373c4042434343413e3a35312720192731353c3c3b3a3a39383837363635302518080000000b2034485971869cb1c9c7b29d8774604b3a2a1a0c0400040c1a2a3a4b6074879db2c7c9b19c86715a4834200b00000b20354b6074808080808080807b6555443118080000000000000000000000081d314455657b8080808080808074604b36200b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a161e21262a2c2e2e2c282220190d0e19202327262525242423222221201d150a000000000b20364b6074869cab9f9f9f9d8875614b3c2b1905000000000005192b3b4b6075879d9f9f9f9f9c8674604b36200b001f34495e74899eb3b5b5a38e79634e39240e00011426364e63788da2b4b5b5b5b5b49e89745f49341f000a1f3347586164646464646464646464646464646464646477879db2c7c1b3a197816c62513e291400000000000000000000000000000000000000000c21364c6176828383838383838383838383838298a3b5c9bba6907b66513b2611000000000000000009192939465660727f8c9aa2aeb4bcc9c5c8bbb4b2a28c77624d37220d000d22374c62778ca1b2b4bbc8c4c9bcb4afa29a8c7f726057463a2919090000000000000000000000000000000000000000000000000000000d182530353a474c51555758595856534f4b4437352c37444b5151504f4f4e4e4d4c4c4b4a433625130000000d22374d62778ca4b5c9c3aa95806a5544311c0c00000000000c1d3144556a7f95aac3c9b5a48d77624d38220d0000081d314455606b6b6b6b6b6b6b655d4c372614000000000000000000000000011426374b5d656b6b6b6b6b6b6b605645311d090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e19202832363b40414343413d38342b201e2b35383c3b3b3a3939383837363631271a10030000081d314455657b8d9fb5c5b7a695806a5a48352010000000000008203448596a7f95a5b7c5b1a08f7b655645311d09001f34495e74899eb3c9b8a38e79634e39240e00081c3043546b8095abc0d1cacac9b49e89745f49341f000c21374c6176797979797979797979797979797979797979797d91a7bcd0bfb19f96816c56412c1701000000000000000000000000000000000000000d22374c62778c98989898989898989898989898a0b2c2d2bba6907b66513b26110000000000000000000b1b29384554606a7a8490999fabaeb3b7c4bbb7a28c77624d37220d000d22374c62778ca1b7bbc4b8b3aeab9f9990857a6a60544539291b0b0000000000000000000000000000000000000000000000000000000e1d2b36434a515961666a6c6d6e6d6b696460554d493c4455606766656564636362626160605443301c07000012283d52677d92a7c2cbb7a58e79634e372715000000000000011527374e63798ea5b7cac2a7927d67523d2812000001152737444b55565656565656504c3f2f19090000000000000000000000000009192f3f4b50565656565656554b45382715020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000151e2c3538454b505557585857534d483c352c3c494d5151504f4f4e4d4d4c4b4b45382e21100000021527374b5d6d8297a7b8c4b49f8a78624d3f2e180800000008182e3e4d62788a9fb4c3b8a797826d5d4b38271502001f34495e74899eb3c9b8a38e79634e39240e000b20354b6074889db2c8dddfdec9b49e89745f49341f0013283d53687d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e919bacc0d4cebdb19c87715c47321c07000000000000000000000000000000000000000d22374c62778ca1adadadadadadadadadadadadb2becfd0bba6907b66513b2611000000000000000000000b1a2836434b5c64707b848b93989da6a4a5a6a28c77624d37220d000d22374c62778ca1a6a5a4a69d99938b847c70645c4b4336281b0b0000000000000000000000000000000000000000000000000000000e1e2b3b485460666f777b8081838382817e7a746c625a4a4b60737c7b7b7a7979787777767572604a35200b0001172c41566c8196abc1c7b29d88725b4a36190900000000000000092135495b72879db2c7c1ac96816c57412c170000000919273135404040404040403b382f211100000000000000000000000000000011212f373b404040404040403631271a0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131c333c494d5660656a6c6d6e6c68625a4d493c495a626666656564636362616160564b3f2e1b08000009192e3f4c6176889eb3c0baa998826e5d4b3625130000001325364b5c6d8298a8bac0b39e8977614c3f2e1a0a00001f34495e74899eb3c9b8a38e79634e39240e0417293a50667b90a6b7cbdff3dec9b49e89745f49341f0013283d53687d92a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a7acb9c9dcdac4af9a856f5a45301a05000000000000000000000000000000000000000d22374c62778ca1b7c2c2c2c2c2c2c2c2c2c2c2c6c7c7c7bba6907b66513b261100000000000000000000000a1826303e4a4e5e666f777e83888b8e9091928c77624d37220d000d22374c62778c9291908e8b88837e786f665e4f4a3e3026180a0000000000000000000000000000000000000000000000000000000a1b2b3c485962727c848c91959798989896938f8881786a605461778c91908f8f8e8d8d8c8b8b816c57412c1700031628395b70859ab0c5c3ad98836e583d2d1a0000000000000000061a2c3d586d8398adc2c5b09b85705b3929170300000009151d202b2b2b2b2b2b2b26231c110300000000000000000000000000000003111c23252b2b2b2b2b2b2b201d150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000818253043505a626d757b7f818383817d786e635a4d4d62787c7b7a7a79797877777675655d4b37220e000000101f334758687d92a2b4c7b2a08f7a655443301c0b00071c304354647a8d9fb5c6b4a2927d6858473321110000001f34495e74899eb3c9b8a38e79634e39240e0a1f3347586e8398adc4d4e7f3dec9b49e89745f49341f0013283d53687d92a8b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bcc0c9cfcfcfc4af9a856f5a45301a05000000000000000000000000000000000000000d22374c62778ca1b1b1b1b1b1b1b1b1b1b1b1b1b6b1b1b1b1a6907b66513b261100000000000000000000000008141c2d36404c505962686e7376797b7c7d7d75604b36210b000b21364b60757d7d7c7b7976736e68625a514c40362d1c140800000000000000000000000000000000000000000000000000000003162839485a627784919aa2a6aaacadaeadaba8a79e968b7f726062788da2a5a4a4a3a3a2a1a196816c57412c1700091e32465773889eb3c8bfa9947f6a543f2a15000000000000000000142a3f54697f94a9bec8b39e88735746331e0a0000000001080b16161616161616100e0800000000000000000000000000000000000000080e10161616161616160b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000132536434a616a78828a909596989896928b8378675f54697e9190908f8e8e8d8d8c8b8b7b654f3a251000000004172a3a4e5f70849aa9babeb09b8572604a392916031628394a6072859babbcbbaa9a8472604a3a2a18030000001f34495e74899eb3c9b8a38e79634e39240e0c21374c61768a9fb4c9dbdee5dec9b49e89745f49341f0013283d53687d92a8babababababababababababababababababababababababaaf9a856f5a45301a05000000000000000000000000000000000000000d22374c62778c9c9c9c9c9c9c9c9c9c9c9c9c9ca49c9c9c9c9c907b66513b26110000000000000000000000000001101b222f383b484d535957616466676768605745321e0900091e324556606867676664615859534d483c382f221b100100000000000000000000000000000000000000000000000000000000091e3245576278889aa1afb4c0bfc0bbb8b7b8c5b8b3a99f94826d63798ea3b8bab9b8b8b7b7ac96816c57412c17000c21364b61768ba6b8cbbba6917b66513c261100000000000000000011263b51667b90a6bbcbb8a68b76614b36210c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c304354606d7f8b989fa9aaacadadacab9f998a7d675e6a8095a6a5a4a4a3a2a2a1a08f7a654f3a2510000000000c1c31414e63798b9fb4c3b5a3927d685746321e0e1e324557677d92a3b4c3b49f8b79635443301c0c000000001f34495e74899eb3c9b8a38e79634e39240e1a2d3d53687e93a9bac9c6c9d2dec9b49e89745f49341f0013283d53687d92a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49a856f5a45301a05000000000000000000000000000000000000000c22374c617686878787878787878787878787878a8787878787867b65503a251000000000000000000000000000000007111c232b34373e39464c4f505152524b45392816030003162838454b525251504f4c463a3e38352b241d12070000000000000000000000000000000000000000000000000000000000021528384b6075869ca6b3bfc4b7b3aba5a3a2a3a5a9aeb4b4a0947f69798fa4b9d0c7c4bebbc6ac96816c57412c17000e23384e63788da3c4d5b9a38e79644e39240f0000000000000000000e24394e63798ea3c9d5c5a38e78634e39230e00000000080e1020202020202020202020202020202020202020202020201f1c170d01000000000000000000000000000000000000000000000000000000000000030d131520202020202020202015130d04000000000000000000000000000000000000071a2d3d4a607281949faab4bac7c1c2c3c9bcb4a89f8c7c666c8197acbabab9b8b8b7b6a48f7a654f3a25100000000000132135495b6b8095a5b6c1b39d8875614b3c2b192b3c4b6075889db2c1b7a595806b5b4a36251300000000001f34495e74899eb3c9b8a38e79634e39240e21364a5b70859bb0c2b5b1b5c2d2c9b49e89745f49341f0013283d53687d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f846f5a45301a05000000000000000000000000000000000000000a1f33475861727272727272727272727272727275727272727272655d4b37230e0000000000000000000000000000000000090d19202229293336393b3c3d3d3632281b0a0000000a1a2832363d3d3c3b39363329292220190e0900000000000000000000000000000000000000000000000000000000000000091d3245566a7f94a4b6c4beb2a69d95908e8d8e9093999faab49e8a777a90a5babfb3afa8a6a3a896816c57412c170010253a4f657a8fa4bad7c6a18c77614c37220c0000000000000000000c21374c61768cabbccfbaa48f7a654f3a2510000003111c2326353535353535353535353535353535353535353535353534312a1f110100000000000000000000000000000000000000000000000000000000071520282a3535353535353535352b2821150700000000000000000000000000000000000d21364a5c697f949fb4bbc8cdc9c5b8b3b1b2b3b9aa9e89776e8398adc3cfcec5c2bdc5a48f7a654f3a25100000000000061a2c3d4b6074879cb2beb7a695806b5a48352035485a6a8095a6b7beb29d8775604b3d2d180800000000001f34495e74899eb3c9b8a38e79634e39241527374e63798ea3b5b5a49ca4b5c9c9b49e89745f49341f000d22374c62777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79634e39240e000000000000000000000000000000000000000004182a3a474c5c5c5c5c5c5c5c5c5c5c5c5c5c5c605c5c5c5c5c5c504b3f2e1c0800000000000000000000000000000000000000050b0d13171e212426272828211e160a00000000000a161e212828272624211f17130d0b050000000000000000000000000000000000000000000000000000000000000000000b20364b6075899eb3c2c1b2a09888807b7878797b7e848b979fa8937e7c91a6bbb3a19a93918e8b897f6a55402a150011263c51667b91a6bbcdbaa88a75604b35200b0000000000000000000b20354b60758a9fb5cabba6917c66513c2711000011212f383b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49463d2f1f0d000000000000000000000000000000000000000000000000000000031525333c404a4a4a4a4a4a4a4a4a403c3325150400000000000000000000000000000005182b3b4e64798b9fb4bdcec6bab4aba79e9c9c9ea7aaa796816f849aafc4cebeb2ada7a4a78f7a654f3a25100000000000000f1e324556667b90a0b2c4b49f8a78624d3f2e3f4d62788a9fb4c4b2a0907c665645321f0f0000000000001f34495e74899eb3c9b8a38e79634e39241d3144556b8096abb6a49c869cb1c6c9b49e89745f49341f000b1f3447596265656565656565656565656565656565656565656565656565656565635b4a36210c0000000000000000000000000000000000000000000c1c2a333747474747474747474747474747474a4747474747473a372e2111000000000000000000000000000000000000000000000000030a0c0f111212130b09030000000000000003090b131212110f0c0a040000000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a7b9c9b5a39882756b6663626365696f77818d9e99837d92a7bcaf9a837e7b7976746a61503c28130012273d52677c92a7bcc9b49f89745544311d08000000000000000000081c30435474899eb4c9bca7927d67523d281200081c2f3f4c5060606060606060606060606060606060606060606060605e5a4d3d2a170300000000000000000000000000000000000000000000000000000d203343505560606060606060606055504333210d0000000000000000000000000000000b203448596e8398aabbcec4b7a89f958d898787898d949e9f8a76869bb0c6c5b2a098928f8c897a644e39240f000000000000021628384c5e6e8298a7b9baa998836e5d4b364b5d6e8298a9bab9a898836e5e4c382816010000000000001f34495e74899eb3c9b8a38e79634e392420354b6074889db3b19c86798da3b8c9b49e89745f49341f0005182a3b474c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4a3d2d1a07000000000000000000000000000000000000000000000c181f2232323232323232323232323232323532323232323225231c1103000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40556b8095aac5c6b19b85736157504e4d4e505459626c7b899e99849aafbea8937e696664615855504333200d0013283d52687d92a7bdc8b39e89735e49271501000000000000000000011426495e73889eb3c8bda8927d68533d2813000e23384c5d657575757575757575757575757575757575757575757575746b5a46311c08000000000000000000000000000000000000000000000000000013283c50616a7575757575757575756a62503c28100000000000000000000000000000000d22374d62778b9fb4c8cbb7a69d8a807873727274787f899b917c889db3c8c2ad98827d7a7673645c4a36220d000000000000000a1a2f404c6277899eb3c1b2a08f7b65544354647a8fa0b2c1b49e8a77624d402f1a0a000000000000001f34495e74899eb3c9b8a38e79634e39242a3a51667b91a6b7aa947f798da3b8c9b49e89745f49341f00000d1d2a34373a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39362d1f0f000000000000000000000000000000000000000000000000040a0c1d1d1d1d1d1d1d1d1d1d1d1d1d1d201d1d1d1d1d1d100e080000000000000000000000000000000000000913191b1e1e1e1e1e181610060000000000000000000000080e101212121212100e09000000080e101212121212100e09000000000000000000080e101212121212100e090000000000182d42586d8297adc2bda7927d685546393938393b3b484c5d657a8b9f9aa2b4bea8937e69534e4c463a3c332515030013283e53687d93a8bdc8b39e88735e49331e00000000000000000000001e33485e73889db3c8bda8937e68533e29130010263b50657b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89745e49341f0900000000000000000000000000000000000000000000000000071b2d3e556a7f8a8a8a8a8a8a8a8a8a806a553e2e1b08000000000000000000000000000013283d53687d92aabbcebfb39d88796b635b5c5d5b636a77859b919da6b7cbbaa58f7a686461584e4a3e2d1b070000000000000000111f344859697e93a3b5beb09b8573604b6072859bb0beb5a3937e69594834221200000000000000001f34495e74899eb3c9b8a38e79634e39243347586e8399aeb49f8b77788da3b8c9b49e89745f49341f0000000d181f222525252525252525252525252525252525252525252525252525252524211a0f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1b262e3133333333332e2b23180a000000000000000003111c2325272727272726231c1103111c2325272727272726231c1103000000000003111c2325272727272726231c1103000000192f44596e8499aec3b8a38e79634e3729232324262b343f4b5c6a7f95a8b4c0bea8937e69533e36332928201507000013283e53687d93a8bdc8b39e88735e49331e00000000000000000000091e33485e73889db3c8bda8937e68533e29130010263b50657b909f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e89745e49341f09000000000000000000000000000000000000000000000000000d22364a5c72879c9f9f9f9f9f9f9f9c87725c4b3722090000000000000000000000000003182d42586d8297adc8c7b3a18f7b655b4e493d3d494e596175879db2b7c4d4baa58f7a65504c473a362d201000000000000000000005182a3b4b6073859baabbb5a3927d6857687d92a3b5bcab9b8573604b3b2b180400000000000000001f34495e74899eb3c9b8a38e79634e3924374c61778a9fb4ae99846f788da3b8c9b49e89745f49341f00000000050b0d101010101010101010101010101010101010101010101010101010100e0c070000000000000000000000000000000000000000000000000000090f11151515151515151515151515151515151515151515151515151515151515151515110f0900000000091b2b3842464848484848433f362818060000000000000011212f383b3c3c3c3c3c3b382f2111212f383b3c3c3c3c3c3b382f2111000000000011212f383b3c3c3c3c3c3b382f2111000000192f44596e8499aec3b8a38e78634e39231912101018202f3e4b6175899eb4c9bea8937e69533e291f170c0d0300000013283d52687d92a7bdc8b39e89735e49271502000000000000000000091e34495e73899eb3c8bda8927d68533d28130010263b50657b90a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b39e89745e49341f09000000000000000000000000000000000000000000000000011426374f647a8fa4b6b5b5b5b5b5b6a58f7a644f37271501000000000000000000000000071c31475c71869cb1c6c4af9a846f5d4b3d352c2c353a4757667c91a6b7cbcfbaa58f7a65503a332a221b1002000000000000000000000d1c304354647a8c9fb4c1b39d88766175889db3c1b49f8c7a645544311d0d0000000000000000001f34495e74899eb3c9b8a38e79634e392d3e54697e93a9b8a7917c67788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003111c23262a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a26231c1204000013263849565b5e5e5e5e5e585346362310000000000000081c2f3f4b505252525252504c402f1c2f3f4b505252525252504c402f1c09000000081c2f3f4b505252525252504c402f1c090000172d42576c8297acc1bba6917c665142342b2725242323243246576e8398aec3bea8937e69533e29140400000000000012273d52677c92a7bcc9b49f89745544311d08000000000000000000081d31445574899eb4c9bca7927d67523d28120010263b50657b90a5babcbcbcbcc1c4cdcacacacac1bdbcbcbcbcbcb39e89745e49341f09000000000000000000000000000000000000000000000000081d3144556c8196abc2cfcabacacfc3ac96816c5544311d08000000000000000000000000011426375d73889db2c8bea9937e69543f2e211a1a212a394a6073889db2c8cfbaa58f7a65503a25170c07000000000000000000000000011426364a5c6c8196a6b7b8a695806b8095a6b7b7a696816c5c4a372614000000000000000000001f34495e74899eb3c9b8a38e79634e39364a5c71869bb1b39e887563788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011222f383b3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b382f22120000192e4256677073737373736d64533f2b0b0000000000000e23384b5d656767676767655e4c3823384b5d656767676767655e4c38230e0000000e23384b5d656767676767655e4c38230e000014293e54697e93a9c1c3ae99836e604d483c3d3a393839393939596e8499aec3bea8937e69533e29140000000000000011263c51667b91a6bbcdbaa98b75604b36200b0000000000000000000b20354b60758aa8b9cdbba6917b66513c26110010263b50657b90a5a7a7a7a7a7abb0bdcdddcabaada8a7a7a7a7a7a79e89745e49341f090000000000000000000000000000000000000000000000000b20354b6074889db3c9bcb4a5b4bcc9b39e8874604b35200b000000000000000000000000081d31445574899fb4c9bba6907b66513b261106060c1c3043546c8196acc1cfbaa58f7a65503a251000000000000000000000000000000008182d3e4b6175879db2bfb49f8b7a8b9fb4bfb29d8876614c3e2d1909000000000000000000001f34495e74899eb3c9b8a38e79634e39374e64798ea3b5ac96816c63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091c2f404c50555555555555555555555555555555555555555555555555555555555555555555504c402f1c09001b31465b70858888888888826d583a291704000000000010253b50657b7c7c7c7c7c7b65503b263b50657b7c7c7c7c7c7b65503b261000000010253b50657b7c7c7c7c7c7b65503b261000000e23394e63798ea3b5c6b3a1937e6c625a55524f4e4e4e4e4f4f5e73889eb3c8bea8937e69533e2914000000000000000f253a4f647a8fa4b9d7c7a18c77614c37220c0000000000000000000c21374c61768ca1c6d6baa48f7a654f3a25100010263b50657b90929292929292969fb0c4d5c1ad9c939292929292929289745e49341f0900000000000000000000000000000000000000000000000316283950667b90a6b8bcab9f909fabbcb8a6907b66513929160300000000000000000000000b20354b60758aa9bacdbaa48f7a654f3a251000000013253652687d92a7bdd2bea9937e69543e291400000000000000000000000000000000101e334657667c91a1b3baa99f909fa9bab3a1917c67574633201000000000000000000000001f34495e74899eb3c9b8a38e79634e3944556c8196abb5a38e796463788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f23384c5e666a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a665e4c38230f001b30455b70859a9d9d9d9d88725846331f0a00000000061c31465b7185919191919186715c4731465b7185919191919186715c47311c0700061c31465b7185919191919186715c47311c07000c21364a5b70859bb0bdbfad9c938178706a67656463636464646574899eb3c9bea8937e69533e2914000000000000000e23384e63788da3c5d5b9a38e79644e39240f0000000000000000000e24394e63798ea3b8d5c5a38e78634e39230e000d22374c62777d7d7d7d7d7d7d8196abc1d3bda8937e7d7d7d7d7d7d7d7d67523c2712000000000000000000000000000000000000000000000000091e3245576d8298adc4b49f8c7b8c9fb4c5ad98836d5746321e0a00000000000000000000000b20354b60758aa0b5d7baa48f7a654f3a25100000000f243a4f64798fa4b9cebfaa95806a55402b1500000000000000000000000000000000031729394d5e6f8399a8babab4a5b4babaa999846f5f4d3929170200000000000000000000001f34495e74899eb3c9b8a38e79634e394b6074889eb3b19b86715c63788da3b8c9b49e89745f49341f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c66503b261100182e43586d8398adb3b3a58b76614c36210c00000000071c31475c71869ca7a7a79c87725d4732475c71869ca7a7a79c87725d47321d0800071c31475c71869ca7a7a79c87725d47321d0800071a2d3d50667b909fb1bfbaad9f978b85807c7a79787879797a7b7d92a7b9ccbea8937e69533e2914000000000000000c21364b61768ba6b8cbbba6907b66513b261100000000000000000011263b50667b90a5bbccb8a78b76614b36210c000b1f3448596267676767676767798ea4b9cbb6a08b7667676767676767675f4d3925100000000000000000000000000000000000000000000000000b21364b6075899eb4c5b09a8570859aafc9b49f8a76614b36210d00000000000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000d22374d62778ca2b7ccbea8937e69533e291400000000000000000000000000000000000b1b30404d62788a9fb4c2c9bac9c2b49f8a78624d41301b0b0000000000000000000000001f34495e74899eb3c9b8a38e79634e3b51667c91a7b8aa937e695463788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c81949494949494949494949494949494949494949494949494949494949494949494816c57422d1700162b40566b8095abc0c3a48f7a654f3a251000000000081d32475d72879cb2bcb29d88725d4833475d72879cb2bcb29d88725d48331d0800081d32475d72879cb2bcb29d88725d48331d0800000f23384c5e6c8197a1b4bbbdb1aa9f9a95928f8e8d8e8e8e8f90929bacc5d6bea8937e69533e291400000000000000091e32465773889eb3c8bea9947e69543f291400000000000000000014293f54697e94a9bec8b39e88735746331e0a0005182a3b484c52525252525264798ea4b9cbb6a08b7661525252525252524d41301d0a000000000000000000000000000000000000000000000004182a3a52677d92a8b9c1a9937e697e93abbcbaa8927d67523b2a1805000000000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000c21364c61768ba1b6cbbaa58f7a65503a2510000000000000000000000000000000000000122035485a6a7f94a4b5c9cfc9b6a4947f6a5a49352312000000000000000000000000001f34495e74899eb3c9b8a38e79634e47596f8499aeb49f8b77614e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c8196aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa97826c57422d170013293e53687e93a8bdbda8937e68533e291300000000081e33485d73889db2c8b39e88735e4933485d73889db2c8b39e88735e49331e0000081e33485d73889db2c8b39e88735e49331e000000091c2f404b607383959faab3bfbbb4afaaa7a4a3a3a3a3a4a4a5a7acb9cad3bea8937e69533e291400000000000000031628395b70859bb0c5c2ad97826d583b2b18050000000000000005182a3b576d8297acc2c5b09b85705b3929170300000d1d2a34373d3d3d3d3d4f64798ea4b9cbb6a08b76614b3d3d3d3d3d3c393023120100000000000000000000000000000000000000000000000a1f3447596f8499afc6b5a38d7862778c9fb5c6af9a846f5948341f0b000000000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354b60758aa0b5cabaa58f7a65503a251000000000000000000000000000000000000005192b3c4b6073869cb1c6dbc6b19c8674604b3c2c1905000000000000000000000000001f34495e74899eb3c9b8a38e79634e4c62778b9fb4ae99836e584e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c8196acbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfac97826c57422d170011263b51667b90a6bbc1ac96816c57412c1700000000091e33495e73889eb3c8b39e89745e4925495e73889eb3c8b39e89745e4925130000091e33495e73889eb3c8b39e89745e49251300000000111d3144556073808b99a1a9b1b4bcc9bcbab9b8b8b9b9b9babac0c4cdd3bea8937e69533e29140000000000000000172c42576c8197acc1c7b19c8772594834200b000000000000000b1f34485971869cb1c6c1ac97816c57422c17000000000d181f2228282828394f64798ea4b9cbb6a08b76614b362828282827251d12050000000000000000000000000000000000000000000000000c22374c61778b9fb4c5b09b86705a70859bb0c5b49f8b77624c37220f000000000000000000000b20354b60758aa0b5cabaa48f7a654f3a2510000000081d314455758a9fb5cabaa58f7a65503a2510000000000000000000000000000000000000000e1d314455647a8fa4b9cfbaa48f7a655544311e0e00000000000000000000000000001f34495e74899eb3c9b8a38e79634e54697f94aab8a6917b66514e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c8196acb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2ac97826c57422d17000e24394e63798ea3c6c5af9a85705a3b2b18050000000a1f34495f74899eb4c9b49f8a74544330495f74899eb4c9b49f8a745443301c07000a1f34495f74899eb4c9b49f8a745443301c07000000021527374455606b78838d949b9faba8aaabacadadacacaaa8a5abb0bccdbea8937e69533e2914000000000000000013283d53687d92a8c3cab6a48c77624d372210000000000000000d22374c62778b9fb5cac3a8937d68533e28130000000000050b0d12121224394f64798ea4b9cbb6a08b76614b362112121212100a0100000000000000000000000000000000000000000000000006192c3c53697e93aabbc2a9947f6a54697f94a9c1bbaa937e69543d2c1a060000000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000114264a60758a9fb5cabaa58f7a65503a251000000000000000000000000000000000000000081c30435464798ea4b9ceb9a48f7a645443301c0d00000000000000000000000000001f34495e74899eb3c9b8a38e79634e5c71869cb1b39d8874604b4e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c81969d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d97826c57422d17000c21374c61768ca8b9c8b39e8973594834200b000000081d314455758a9fb4cabaa98a75604a354455758a9fb4cabaa98a75604a35200b00081d314455758a9fb4cabaa98a75604a35200b0000000009192737444b5b636e787f868b8f9295969798989796959290969eb0c4bea8937e69533e291400000000000000000e23384e63788da5b7cac2a8937e68533e2e18080000000000071b2d3e53687d92abbccab7a58d78634e38230e000000000000000000000f24394f64798ea4b9cbb6a08b76614b36210c0000000000000000000000000000000000000000000000000000000000000c2035495a70859bb0c8b5a48d78634d62788da3b5c8b09b86715b4935210c0000000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000020354a60758a9fb5cabaa58f7a65503a251000000000000000000000000000000000000004182a3a4b6073859bb0c6dbc6b09b8573604b3b2a1805000000000000000000000000001f34495e74899eb3c9b8a38e79634f647a8fa4b5ab96806b55444e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152b40556a80878888888888888888888888888888888888888888888888888888888888888887806b55402b16000a1f33475874899eb4c9b8a78c77624d37220d0000000b20354b60758aaabbceb5a08b76604b364b60758aaabbceb5a08b76604b36210b000b20354b60758aaabbceb5a08b76604b36210b0000000000091926313c494d5a626a7176797d808182838382817f7d7b8096abc0bea8937e69533e291400000000000000000c2135495b72879db2c7c5b09b85705c4b36251303000000021222364a5c70859ab0c9c7b29d87725b4935210c000000000000000000000f24394f64798ea4b9cbb6a08b76614b36210c0000000000000000000000000000000000000000000000000000000000000e23384d63788da3b4c6b19c86715b495a71869bb1c6b5a38d78634e3823100000000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a2510000000000000000000000000000000000000091f344759687e93a3b5c9d2c9b5a3937e695947341f11000000000000000000000000001f34495e74899eb3c9b8a38e7963566c8197acb5a38e79634e374e63788da3b8c9b49e89745f49341f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013283c50626a7272727272727272727272727272727272727272727272727272727272727272726b62503d2814000417293a5c71879cb1c6c5a5907b66503b26110000000c21364b61768ba0b6d9b6a18c76614c374b61768ba0b6d9b6a18c76614c37210c000c21364b61768ba0b6d9b6a18c76614c37210c00000000000009141d2c353c494d54576064686a6b6d6e6d6d6c6a686a7f94a9bfbda8927d68533d28130000000000000000061a2c3d576c8196acc1c8b4a38f7a645443301e160d0c0d161e31424f647a8fa2b4c8c2ac96816c573d2c1a06000000000000000000000f24394f64798ea4b9cbb6a08b76614b36210c0000000000000000000000000000000000000000000000000000000000071b2e3e556a7f95aac1c2aa957f6a553c556a7f94aac2c1aa95806a553e2e1b0800000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a2510000000000000000000000000000000000009192e3f4c6177899eb3c1cabdcac1b39e8977624c3f2e19090000000000000000000000001f34495e74899eb3c9b8a38e79636075899eb3b09b85705b4a384e63788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d21334350555d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55504433210d00001a2f445a6f8499afc4bea9947e69543f29140000000c22374c61778ca1b6ccb7a18c77624c374c61778ca1b6ccb7a18c77624c37220d000c22374c61778ca1b6ccb7a18c77624c37220d00000000000000010e19212c353839454b4f535556575858575755566b8096abc0c9a6917c67513c27120000000000000000000f24394f64798ea3b5c9c1af9a8472604a4032282322232832404e606f849aafc0c9b5a38f7a644f3a240f00000000000000000000000f24394f64798ea4b9cbb6a18b76614c36210c00000000000000000000000000000000000000000000000000000000000d22364a5c72879cb2c7b6a48e79634e394e63798ea4b6c7b29d87725c4b37220900000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000000000000011527374b5d6d8297a7b8bcb5a8b4bcb9a798826d5d4b3727150200000000000000000000001f34495e74899eb3c9b8a38e7963677c91a7b8a9937e68533d384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041525333c40484848484848484848484848484848484848484848484848484848484848484848403d332616040002172d42576c8297acc1c2ad97826d583626140100000d22374d62778ca2b7ccb7a28d78624d384d62778ca2b7ccb7a28d78624d38230d000d22374d62778ca2b7ccb7a28d78624d38230d000000000000000000060e1920232832363a3d4041424343424145566e8398aec3bcab8f79644f3a240f0000000000000000000d22364a5c71869bb1c1c8b4a2937e695f4b453838373838454b5e697e93a2b4c8c1b19b86715c4a36220d00000000000000000000000f24394f64798ea4b9cdb7a28d78624d38230d00000000000000000000000000000000000000000000000000000000011426374f647a8fa4b6c7b19c87725b4a36495b71869cb1c6b6a58f7a644f37271502000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000000000000081d314455657a8d9fb5bcab9f929fabbcb2a08f7b655544311d0d00000000000000000000001f34495e74899eb3c9b8a38e79636f8499afb49f8a76614c36384e63788da3b8c9b49e89745f49341f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071521282b3333333333333333333333333333333333333333333333333333333333333333332b28211608000000152a3f556a7f94aabfc6b09b86715443301c0800000e23384d63788da2b8cdb8a38e78634e394d63788da2b8cdb8a38e78634e39230e000e23384d63788da2b8cdb8a38e78634e39230e0000000000000000070d0f1d1e1f161e2124282b2c2d2e2d36414b6075899eb3c9b49f8b76614c36210c000000000000000000071b2d3e51677c91a3b5c8c0b49f8c7d6b6056504d4c4d5056606a7c8c9fb4c0c8b5a3917c67523e2d1b0700000000000000000000000f24394f64798ea4b9cdb8a38e78634e39230e00000000000000000104040404040400000000000000000000000000081d3144556c8196acc3c3ab95806b563d2d3d556b8095aac3c3ac97816c5544311d08000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000000000005182b3b4b6073869cabbcb59f8d7d8d9fb4beb19c8674604b3b2b1905000000000000000000001f34495e74899eb3c9b8a38e7963778b9fb4ad98836e584633384e63788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d13151d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d16140d040000000013283d52687d92a7bdc9b49f8975604b35200b00000e24394e63798ea3b8ceb9a38e79644e394e63798ea3b8ceb9a38e79644e39240f000e24394e63798ea3b8ceb9a38e79644e39240f00000000000002101b2224333334273135363737393a3d3d4a4e5f6a7f95a8b9c8b19b86715746331e0a000000000000000000001020354a6072859baabbcebbaa9f8c80756b65626162656b75808c9faabbcebbaa9b8573604b3520100000000000000000000000000f24394f64798ea4b9ceb9a48f79644f3a240f0000000000050e1417191919191919100e08000000000000000000000b20354b6074889eb3c8b7a58e79644f3924394e64798ea5b6c8b39e8875604b36200b000000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a25100000000000000000000000000000000a20344859697e94a4b5baa898826d8297a8b9b5a4947f695948342011000000000000000000001f34495e74899eb3c9b8a38e796a7f94abb7a6907b66503a29384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e10131313131313131313131313131313131313131313131313131313131313131313100e08000000000010253b50657a90a5c9cdbaa98d78634e38230e00000f24394f64798ea4b9ceb9a48f7a644f3a4f64798ea4b9ceb9a48f7a644f3a250f000f24394f64798ea4b9ceb9a48f7a644f3a250f00000000000010202d36394848494a444b4b4c4d4e5053565b636e7d8c9fb4c6bbaa957f6a553929170300000000000000000000071c304354647a8c9fb4bdc8bbaa9f9588807b7877787b8088959faabbc8bdb49f8c7a645443301c080000000000000000000000000f24394f64798ea4b9cebba6917b66513c261100000000081622292c2f2f2f2f2f2f25231c1103000000000000000316283950667b90a6b8c7b29d87725c4a3622364a5c72879cb2c7b8a7907b6651392917030000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000000000a1a2f3f4d62778a9eb4c2b49f8a7862778a9eb4c2b49e8a78624d402f1a0a0000000000000000001f34495e74899eb3c9b8a38e7972879cb1b29d8874604b3523384e63788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101b222529292929292929292929292929292929292929292929292929292929292929292925231c11030000000e23384d63788dabbccfc7a6917c66513c2711000010253a4f657a8fa4bacfbaa58f7a65503a4f657a8fa4bacfbaa58f7a65503a25100010253a4f657a8fa4bacfbaa58f7a65503a25100000000000071b2d3e4a4f5d5e5e5f55606161626365686c727983929faabbc3b49f8b78624d37220d0000000000000000000000001325364a5c697f949fb0bcc8bbb4a69d96908d8c8d90959da6b4bbc8bdb09f947f695c4a362614010000000000000000000000000f24394f64798ea4b9cebea9947e69543f2914000000051626343e414444444444443a372e211100000000000000091e3246576d8298adc4c4ab96816b563e2d1b2d3e566b8096abc3c5ad98836e5746331e0a0000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000000021527384c5d6e8398a8b9b7a695806a596a7f95a6b7b9a898836e5e4c3828150200000000000000001f34495e74899eb3c9b8a38e797a8fa4b6aa95806b54433023384e63788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010212e373a3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3a372e21110000000b20364b60758a9fb5cabfaa957f6a55402a15000010263b50657b90a5bad0bba5907b66503b50657b90a5bad0bba5907b66503b26110010263b50657b90a5bad0bba5907b66503b261100000000000d22364a5c64727374747575767677797a7d81878e98a0b4bbc6b7a596816c594834200b00000000000000000000000008182d3e4f616c81969eb3b8c5c4b7b3aba5a2a1a2a5abb2b7c4c5b8b39e96816c614f3e2d1808000000000000000000000000000f24394f64798ea4b9cec1ac97816c573928160300000e2234445156595959595959504b3f2e1c080000000000000c21364b6176899eb4c9b7a68f7a644f3a2510243a4f647a8fa5b7c9b49f8a76614b36210d0000000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000000091d314556657b90a0b2c2b39d8875614b6075889db2c1b2a0907b665645321d0e00000000000000001f34495e74899eb3c9b8a38e798297acb4a28d78634d362623384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081b2e3f4b4f5353535353535353535353535353535353535353535353535353535353535353534f4b3f2e1c080000091d32455673889db3c8c3ae98836e59382816020011263b51667b90a6bbd0bba6917c66513c51667b90a6bbd0bba6917c66513c27110011263b51667b90a6bbd0bba6917c66513c271100000000000f24394f647a878889898a8a8b8c8c8e8f92969ca4aeb2bec4b8a89d8776614c3b2b1905000000000000000000000000000f20324352636c80919ea7b3b8c5c7c0bab7b6b7bac0c7c5b8b3a79e918172604a4332201000000000000000000000000000000f24394f64798ea4b9cec5b09b86705745321e09000014293e51626c6e6e6e6e6e6e655d4b37230e000000000004182a3b52677d92a8b9c8b29d8873604a35200b20354a6073879db2c7baa9927d67523b2a180500000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000006192b3c4b6074869cb1beb5a4927d68574657687d92a3b5beb29c8774604b3c2c1906000000000000001f34495e74899eb3c9baa5907b899eb3b09a85705b49351823384e63788da3b8c9b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e22374b5d65686868686868686868686868686868686868686868686868686868686868686868655d4b37230e0000021528385b70869bb0c5c7b19c87725645321e090012273c51677c91a6bcd1bca7917c67523c51677c91a6bcd1bca7917c67523c27120012273c51677c91a6bcd1bca7917c67523c271200000000000e23384d63788d9d9e9f9faba0a1a2a3a5a8abb1b6c2cabfb3a69d8a7a645846331d0d0000000000000000000000000000011424344552626b7c89959ea7acb1b4bbc8b9c8bbb4b1aca79e96897d6c6054433025140200000000000000000000000000000f24394f64798ea4b9cec9b5a38b76604b36210f0001172c41566c808484848484837b65503a251000000000000b1f3447596f8499afc6c5ac96816c5443301c071c3043546c8196abc4c7af9a846f5948341f0b00000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a25100000000000000000000000000a2035485a6a7f94a4b6bfb19c8673604b394a6072859bb1bfb6a5957f6a5a49352012000000000000001f34495e74899eb3c9beab9a909ea8b9a8927d68533c2c1923384e63788da3b8c9b49e89745f49341f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010253a4f657a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b654f3a2510000000192e44596e8399aec3cab49f8a75604b36210b0012283d52677d92a7bcc0bda7927d68523d52677d92a7bcc0bda7927d68523d28130012283d52677d92a7bcc0bda7927d68523d281300000000000b21364b60768ba7b3b4b4bcb6b6b7b8babdc1c7c9bcb5afa199887a645c4a3a2917000000000000000000000000000000000617273444515f6776808991979c9faaa3a4a3aa9f9c9791898076675f4a4336251307000000000000000000000000050b0d0f24394f64798ea4b9ced1c1a6907b66513d2d1a0a0417293a5c72879999999999917c66513c271100000000000c22374c61778b9fb4cab8a7907a65503625130013253650657a8fa6b8cab49f8b77624c37220f00000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000000a1a2f404d62788a9fb4c2b3a1907b655443304354657b8fa1b3c3b49f8a78624d40301b0a0000000000001f34495e74899eb3c9c8b8aba5b3b9b49f8a76614b36210e23384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c81939393939393939393939393939393939393939393939393939393939393939393816c57422d17000001172c41566c8196abc1c3bbaa8e79644e39240f0013283d53687d92a8abababa8937d68533e53687d92a8abababa8937d68533e28130013283d53687d92a8abababa8937d68533e28130000000000091e32455673899eb3c0c0bfbfbfbebdbbc4b7b3aeab9f99908377645c4a3e2d1b0b000000000000000000000000000000000009172634414d58616b757c82878a8d8e8e8e8d8a87827c756b61584d41302518080000000000000000000000000d1920222324394f64798ea4b9d2c2b5a899846f5b4a382719111f33475873899eaeaeaea5907b65503b26100000000006192c3c54697e93aabbc8b39e8874604b35200b000b20354b6074889db3c8bbaa947e69543d2c1a06000000000b20354b60758aa0b5cabaa48f7a654f3a25100000000b20354a60758a9fb5cabaa58f7a65503a251000000000000000000000031628384c5e6e8399a9babbaa99836f5d4c3626364b5d6e8399aabbbaa999836f5e4c3928160300000000001f34495e74899eb3c9dec8bebac9c3ad98826d5746331e0e23384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c8196a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a897826c57422d1700000014293f54697e94a9aeaeaea7927d67523d28120014293e53697e939595959595937e69543e53697e939595959595937e69543e29140014293e53697e939595959595937e69543e29140000000000021628385c71869cababaaaaaaa9a9a8a6a4a69d99938c847b6e62594a3e2d201000000000000000000000000000000000000000081623303a464c5660676d7275777879797775726d6760564c473a301c13080000000000000000000000000d1d2b34373838394f64798ea4b9c9b5a49c898e79635645372b2726374c61768ca7b8c3c4a48f79644f3a240f000000000c2135495b70859bb0c8c5ac97826d5544311d0800081c3043546c8197acc5c8b09b86715b4935210c000000000b20354b60758aa0b5babaa48f7a654f3a25100000000b20354a60758a9fb5babaa58f7a65503a251000000000000000000000091e324556667c91a1b3c5b49f8b79634e3f2f182e3f4e63798b9fb4c5b3a1917c665745321e0f00000000001f34495e74899eb3c9dedad2d0cab6a58f7a65503929170e23384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c8196acbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdac97826c57422d1700000012273c51677c91999999999996806b56412b160010253a4f657b808080808080807b65503a4f657b808080808080807a65503a25100010253a4f657b808080808080807a65503a25100000000000001a2f445a6f84969695959594949392918f8c88837e776f655d4c483b2d201002000000000000000000000000000000000000000004121b293338454b515755606263646362605557524b453833291c120000000000000000000000000005192b3b484d4d4d4d4f64798ea4b9c6b19c86798e85746055483c3c3b4251667c91a6c5cbb8a68c76614c37210c000000000e23384d63788da3b5c9b9a7907b665037261401000114263650657b90a7b8c9b5a38d78634e382310000000000b20354b60758aa0a4a4a4a48f7a654f3a25100000000b20354a60758a9fa4a4a4a48f7a65503a2510000000000000000000061a2c3d4b6075879db2bfb9a797816c5b493521112135495b6c8196a7b9bfb29d8775604b3d2c1a06000000001f34495e74899eb3c9def3ecdac9b29d8773604a35200b0e23384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c8196acb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4ac97826c57422d170000000e23384e6379838484848484837f6a543f2a15000e22374b5d656b6b6b6b6b6b6b655d4b374b5d656b6b6b6b6b6b6b655d4b37230e000e22374b5d656b6b6b6b6b6b6b655d4b37230e00000000000012273d52677d81808080807f7f7e7d7c7976736e696259504b3f342a1d100200000000000000000000000000000000000000000000000b171f2832363c37444b4d4e4f4e4d4b44373c3632281f170c00000000000000000000000000000b20344859626262626264798ea4b9c3ae9984768c978173625a54515053606f8499afc4c8b39d88735847331f0a000000081b2e3e556a8095aac1c9b39e8975604b36200b0000000b20354b6074899eb3c8c1aa95806b553f2e1b080000000b20354b60748a8f8f8f8f8f8f7a654f3a25100000000b20354a60758a8f8f8f8f8f8f7b65503a25100000000000000000000b2135495b6b8095a5b7c3b39e8977614c3d2c1a061a2c3d4c6176899eb3c3b7a595806b5b49352113000000001f34495e74899eb3c9def3e3cfbcab957f6a5443301c070e23384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41576c81969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e97826c57422d170000000c2135495b636e6e6e6e6e6e6e6a614f3c271300081b2e3f4b4f56565656565656504b3f2e3f4b4f56565656565656504b3f2e1c0800081b2e3f4b4f56565656565656504b3f2e1c080000000000001025394d5f676c6b6b6b6a6a6a69686664615859534d483b372f1f180d0000000000000000000000000000000000000000000000000000040a161e2127263135383939393835312727211e160a040000000000000000000000000000000d22374d627878787878787d91a6bcc1ab968173889e9784786f696665686f7e93a1b3c7c8af99846f5a3a2a17040000000d22374b5c72879cb2c7c6ad98826d5544311d08000000081d3144556d8297adc6c7b29d87725d4b372209000000081d314455657b7a7a7a7a7a7a75614c36210c0000000010253a4f657b7a7a7a7a7a7a76614c36210c00000000000000000b1b30414e63798b9fb4c3b6a5947f695847331f0f000e1f334758697f94a5b6c3b49f8b79634e41301b0b0000001f34495e74899eb3c9def3dfcab59f8c78624d362513000e23384e63788da3b8c9b49e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162c41566b808a8989898989898989898989898989898989898989898989898989898989898989816c56412c17000000061a2c3d494e59595959595959544f4332200d000010212e373a404040404040403a372e212e373a404040404040403a372e211100000010212e373a404040404040403a372e2111000000000000000a1e30414d52565656555555545453514f4c473a3e37342b231c1105000000000000000000000000000000000000000000000000000000000002090b12141d202223242422201d15120b090200000000000000000000000000000000081e33485d73888d8d8d8d8d919bacbfbea9937e6d8298a29a8c847e7c7b7d84939caebfcebbaa937d68533e2813000000011527374f647a8fa5b6cab9a8917c6651372715020000000115273751667b90a8b9cab6a58f7a644f372715020000011527374b5d65656565656565615746331e0a000000000e22374b5d65656565656565615846331f0a00000000000000031629394d5f6f849aa9bac1b29d8774604b3a2a18010004172a3a4b6074879cb2c0bbaa9a846f5f4d3929170300001f34495e74899eb3c9d9dbd6c6af9a846f5a48351808000e23384e63788da3b8c9b49e89745f49341f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014293d51626b7474747474747474747474747474747474747474747474747474747474747474746c62513e2914000000000f1f2c3538444444444444443f3c32251503000003101b22252b2b2b2b2b2b2b25231c111b22252b2b2b2b2b2b2b25231c110300000003101b22252b2b2b2b2b2b2b25231c11030000000000000001132330393d41414040403f3f3e3d3c3a37332a292220180d08000000000000000000000000000000000000000000000000000000000000000000000001080b0d0e0f0e0d0b08010000000000000000000000000000000000000000081e33485d73889da2a2a2a2a6acb9c9bba6917b667c91a4aa9f99939190929aa1aebbcbc4b49f8b77614c37220c000000081d3144556c8196acc3c9b49e8975604b36210b00000000000b20364b6075899eb3c9c3ac97816c5544311d0800000009192e3f4b4f4f4f4f4f4f4f4c463929170300000000081b2e3f4b4f4f4f4f4f4f4f4c463a291704000000000000000a1e324657677c91a2b3c7b4a3917c675645321c0c0000000c1d314556677c91a2b4c8b4a2927d675746331e0f00001f34495e74899eb3c0c3c7c5b9a8927d67523c2b1900000e23384e63788da3b8c0b49e89745f49341f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e21344451565f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f56514434220e00000000010f1a21232f2f2f2f2f2f2f2a272015070000000000080e1016161616161616100e0800080e1016161616161616100e0800000000000000080e1016161616161616100e080000000000000000000005131e25272c2b2b2b2b2a2a29282724211f17140d0b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2b7b7b7bcbfc9ceb8a38e796372869ca9b4aea9a6a5a8afb3bfcec3b7a696816c5847331f0a0000000b20354b6074889eb3c8c7ad98836e5645321e090000000000091d3245566d8398adc6c8b39e8875604b36200b0000000010212e373a3a3a3a3a3a3a3633291b0b00000000000010212e373a3a3a3a3a3a3a3633291b0b00000000000000071a2d3d4b6175889db2c0beb09b85705f4d38281500000000021527384d5f70859aabbcc0b39d8876614c3d2d1a07001f34495e74899eababaeb3b1ad9e8975604b36210e00000e23384e63788da3ababab9e89745f49341f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051626343d41494949494949494949494949494949494949494949494949494949494949494949413e34261605000000000000060c0e1919191919191915130d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a1012171616161515151413110f0c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889db2babababbbfbfbfb6a08b7661647a8b9fa9b5c1bbbabdc4c5c8bbb4a59d8776614c3a2a180400000316293951667b90a6b8babaa9917c67523828160200000000000215283851677c91a8babab8a7917b66513929170300000003101b2225252525252525211e170b0000000000000003101b2225252525252525211f170b00000000000000000c21364a5b6b8196a6abababa08f7a644f41301a0a00000000000a1a30404f647a8d9fabababa696816c5c4a36210d001f34495e748995959599a1a09795826d5745321e0900000e23384e63788d959595959589745f49341f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081621292c3434343434343434343434343434343434343434343434343434343434343434342c2922160800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73889da4a4a4a4a5a9a9a9a99f8a75575c677d8b9ba3aaafb1b3b2b0adaa9f978778635746331c0c0000000a1e3246576d8398a4a4a4a49f8a76614b36210c000000000000000b21364b60758a9fa4a4a4a498836e5746331e0a0000000000080e101010101010100c0a0300000000000000000000080e101010101010100c0a040000000000000000000e24394e63798a959595959595826e5c4b372312000000000000001222364a5c6d829595959595958a79644e39240f00152a40556a7f808080838a8a828079634e3928160300000c22374c6177808080808080806a55402b15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e14161f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f17140e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081e33485d73888f8f8f8f8f9094949494948a75604d5f677a858f959a9c9d9c9b98938b8177635a49392917000000000c21364b61768a8f8f8f8f8f8f836e5746321e0a00000000000000091e3245576e838f8f8f8f8f8f8a76614b36210c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012273c51677d8080808080808078624d3e2e1b0500000000000000071b2d3e4d6278808080808080807d67523c27120013283c50616a6b6b6b6e75756d6b635b4a361b0a0000000a1f344759616b6b6b6b6b6b6a62503c281300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f243a4f647a7a7a7a7a7a7b7f7f7f7f7f7a644f414d5c64707a808587888786837d786c6159493c2c1b0b000000000c21364b61757a7a7a7a7a7a7a78624d3929160300000000000000031628394d62787a7a7a7a7a7a7a75614c36210c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001024394d5f676b6b6b6b6b6b6b625a483520100000000000000000001020344859626b6b6b6b6b6b6b675f4d392510000d203343505556565659606058564e4a3d2d1a0000000004182a3a474c56565656565655504333210d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22364a5c646565656565666a6a6a6a6a645c4a363e4a4f5d656b6f717372706e68625a4c473b2c1e0e00000000000a1e3346576165656565656565625a48341b0b0000000000000000000a203448596265656565656565615746331e0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1d30414d51565656565656564d483c2b190200000000000000000005192b3b484d56565656565656524d41301d0a00041525333c40404040444a4a424039362d1f0f00000000000c1c2a3437404040404040403c332515040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2d3e4a4f4f4f4f4f4f5054545454544f4a3e2e2e363f4b4f555a5c5e5d5b58534d483c342a1d0e00000000000003172939464b4f4f4f4f4f4f4f4d483c2b190000000000000000000005192b3b484d4f4f4f4f4f4f4f4c463929170300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000122330393c4040404040404038352b1e0e00000000000000000000000d1d2b3437404040404040403c39302312010000071520282a2b2b2b2f35352d2b23211a0f010000000000000c181f222b2b2b2b2b2b2b282115070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010202d363a3a3a3a3a3a3b3f3f3f3f3f3a362e201b222e373a404547484746433e38342b1f180c00000000000000000b1b2933363a3a3a3a3a3a3a38342b1d0d00000000000000000000000d1d2b34373a3a3a3a3a3a3a3633291b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004121d24272b2b2b2b2b2b2b2220190e000000000000000000000000000d1920222b2b2b2b2b2b2b27251d120500000000040d131516161619202018160e0c07000000000000000000040a0c16161616161615130d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002101b22242525252525262a2a2a2a2a24221b1007111c23252b30323332312e282220190d04000000000000000000000b171e21252525252525252220190d000000000000000000000000000d19202225252525252525211e170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1012161616161616160d0b05000000000000000000000000000000050b0d1616161616161612100a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d0f10101010101115151515150f0d07000000080e10161a1c1e1d1b19130d0b0500000000000000000000000000030a0c101010101010100d0b05000000000000000000000000000000050b0d101010101010100c0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Assets/Font/CascadiaCode SDF.asset.meta b/Assets/Font/CascadiaCode SDF.asset.meta new file mode 100644 index 0000000..a57a806 --- /dev/null +++ b/Assets/Font/CascadiaCode SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f653ac5b85a721e4c9383008e6a565a7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01.meta b/Assets/Font/CascadiaCode-2111.01.meta new file mode 100644 index 0000000..d3d4d9c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1975e1a343c267144b24ec21817ccdf8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf.meta b/Assets/Font/CascadiaCode-2111.01/otf.meta new file mode 100644 index 0000000..989700a --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e050a316be9416f498af9cbd2cc659b7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static.meta b/Assets/Font/CascadiaCode-2111.01/otf/static.meta new file mode 100644 index 0000000..f33a613 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94d5f46762b78b84da07e0a43c6e05a0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Bold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Bold.otf new file mode 100644 index 0000000..1c23cae Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Bold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Bold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Bold.otf.meta new file mode 100644 index 0000000..359d553 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Bold.otf.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: e099aa05d6b3c0c4b9865686a7835bbd +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-BoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-BoldItalic.otf new file mode 100644 index 0000000..1e19b19 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-BoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-BoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-BoldItalic.otf.meta new file mode 100644 index 0000000..51ad4b8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-BoldItalic.otf.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 8663150164109c348be3bb39b7aebf1d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLight.otf new file mode 100644 index 0000000..14a4665 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLight.otf.meta new file mode 100644 index 0000000..a4c278c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLight.otf.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: e51fcacd50bd10d4190500d62c483bd1 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLightItalic.otf new file mode 100644 index 0000000..0379598 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLightItalic.otf.meta new file mode 100644 index 0000000..6fb7a8e --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-ExtraLightItalic.otf.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 0121b7f3b1375ed47bf6fec94f46917e +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Italic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Italic.otf new file mode 100644 index 0000000..a190f0d Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Italic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Italic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Italic.otf.meta new file mode 100644 index 0000000..0af5af6 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Italic.otf.meta @@ -0,0 +1,41 @@ +fileFormatVersion: 2 +guid: ecafe5fef77f5d146bda0b0724b6f6c8 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: cad612b349b5ef74ca38d022d2d6174b, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + - {fileID: 12800000, guid: 1b24c9cd038a582498295a7e7d7e2a14, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Light.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Light.otf new file mode 100644 index 0000000..5c203d7 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Light.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Light.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Light.otf.meta new file mode 100644 index 0000000..066a4ab --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Light.otf.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 2150041a33809f14296c060b65d57e12 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-LightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-LightItalic.otf new file mode 100644 index 0000000..34d8ebb Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-LightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-LightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-LightItalic.otf.meta new file mode 100644 index 0000000..104138d --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-LightItalic.otf.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 2a361a73a2e35f345bf2bed85f5cee12 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Regular.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Regular.otf new file mode 100644 index 0000000..ae3b7ec Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Regular.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Regular.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Regular.otf.meta new file mode 100644 index 0000000..011d950 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-Regular.otf.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 662915ab71124d544bd2416493d3ff32 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBold.otf new file mode 100644 index 0000000..caac82c Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBold.otf.meta new file mode 100644 index 0000000..72f416d --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBold.otf.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: 1b24c9cd038a582498295a7e7d7e2a14 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: cad612b349b5ef74ca38d022d2d6174b, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBoldItalic.otf new file mode 100644 index 0000000..c563428 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBoldItalic.otf.meta new file mode 100644 index 0000000..b0d1105 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiBoldItalic.otf.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: 7e12edc0a1a3e384691f91c378cce503 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: cad612b349b5ef74ca38d022d2d6174b, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: dd494862431cf7f4ba7efa7643637a46, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: ecafe5fef77f5d146bda0b0724b6f6c8, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 0ef6060f2a288c84e9928ac9d3b8cfe8, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: dd8d2ffc7dfeb6c47a80924234a173e6, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + - {fileID: 12800000, guid: 1b24c9cd038a582498295a7e7d7e2a14, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLight.otf new file mode 100644 index 0000000..e31420b Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLight.otf.meta new file mode 100644 index 0000000..3a26ad8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLight.otf.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: dd494862431cf7f4ba7efa7643637a46 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: cad612b349b5ef74ca38d022d2d6174b, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: ecafe5fef77f5d146bda0b0724b6f6c8, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + - {fileID: 12800000, guid: 1b24c9cd038a582498295a7e7d7e2a14, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLightItalic.otf new file mode 100644 index 0000000..6d826bf Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLightItalic.otf.meta new file mode 100644 index 0000000..72afdef --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCode-SemiLightItalic.otf.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: d25656f31b315204aa1a6f7d237f0f9c +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Bold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Bold.otf new file mode 100644 index 0000000..eef1f0a Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Bold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Bold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Bold.otf.meta new file mode 100644 index 0000000..29b8d24 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Bold.otf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 203b63fc9ede9a04597ace04500697b4 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-BoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-BoldItalic.otf new file mode 100644 index 0000000..f11b9f9 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-BoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-BoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-BoldItalic.otf.meta new file mode 100644 index 0000000..065fc87 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-BoldItalic.otf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 0279e4915f2133e43b22fa7044da5b2e +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLight.otf new file mode 100644 index 0000000..a714bfd Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLight.otf.meta new file mode 100644 index 0000000..5528bc7 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLight.otf.meta @@ -0,0 +1,44 @@ +fileFormatVersion: 2 +guid: 7c7b4e4e8a045584086d743854cffcb9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 5a294a4d671367c438a538f06b2590b2, type: 3} + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 6be27a05dd74d8a46a06897a04a86fef, type: 3} + - {fileID: 12800000, guid: 8a1a944b23780e4479ea065f82f6ab07, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 2b15e701014bbbe43bdac86cd3f011ef, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 6a9c05a0d5a5c0742902842c52557e75, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLightItalic.otf new file mode 100644 index 0000000..df57406 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLightItalic.otf.meta new file mode 100644 index 0000000..00daba8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-ExtraLightItalic.otf.meta @@ -0,0 +1,39 @@ +fileFormatVersion: 2 +guid: 5a294a4d671367c438a538f06b2590b2 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Italic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Italic.otf new file mode 100644 index 0000000..b17fc9c Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Italic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Italic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Italic.otf.meta new file mode 100644 index 0000000..d24430c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Italic.otf.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: d7e803e9afeb74b43a2107397027be3c +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Light.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Light.otf new file mode 100644 index 0000000..9fbdd13 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Light.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Light.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Light.otf.meta new file mode 100644 index 0000000..2a0ee05 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Light.otf.meta @@ -0,0 +1,43 @@ +fileFormatVersion: 2 +guid: 6be27a05dd74d8a46a06897a04a86fef +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 5a294a4d671367c438a538f06b2590b2, type: 3} + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 8a1a944b23780e4479ea065f82f6ab07, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 2b15e701014bbbe43bdac86cd3f011ef, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 6a9c05a0d5a5c0742902842c52557e75, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-LightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-LightItalic.otf new file mode 100644 index 0000000..9df8dd4 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-LightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-LightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-LightItalic.otf.meta new file mode 100644 index 0000000..ea8b3d3 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-LightItalic.otf.meta @@ -0,0 +1,26 @@ +fileFormatVersion: 2 +guid: 23969a968d2ac384f88017b855d52d65 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Regular.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Regular.otf new file mode 100644 index 0000000..2e88e5c Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Regular.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Regular.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Regular.otf.meta new file mode 100644 index 0000000..8ce912f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-Regular.otf.meta @@ -0,0 +1,31 @@ +fileFormatVersion: 2 +guid: 05a61caabb179da4b9cc50bec09ffbcc +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBold.otf new file mode 100644 index 0000000..9b21ed5 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBold.otf.meta new file mode 100644 index 0000000..6ae1ac8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBold.otf.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 629fbd559c237554192ef77d0db80049 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBoldItalic.otf new file mode 100644 index 0000000..c98a9b0 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBoldItalic.otf.meta new file mode 100644 index 0000000..c39948e --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiBoldItalic.otf.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 1541d7f69c7a6df409a865ad7bc440a4 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLight.otf new file mode 100644 index 0000000..8755b39 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLight.otf.meta new file mode 100644 index 0000000..a2452f7 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLight.otf.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: 07ac1b9e37c0fdc4c8cb2f488299d087 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLightItalic.otf new file mode 100644 index 0000000..b3b908f Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLightItalic.otf.meta new file mode 100644 index 0000000..b90eaa7 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaCodePL-SemiLightItalic.otf.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 73a0f8316330c0c418ae9b8325e85950 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Bold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Bold.otf new file mode 100644 index 0000000..dd04fab Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Bold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Bold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Bold.otf.meta new file mode 100644 index 0000000..a73a14f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Bold.otf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 10c86a68a439aa6429f557d38e388ef5 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-BoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-BoldItalic.otf new file mode 100644 index 0000000..cd61b7d Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-BoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-BoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-BoldItalic.otf.meta new file mode 100644 index 0000000..1ebdec8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-BoldItalic.otf.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 60ab01224bc39194f922c46a7a70a9a4 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLight.otf new file mode 100644 index 0000000..8a544a1 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLight.otf.meta new file mode 100644 index 0000000..19fde72 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLight.otf.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 9398bd1eae741a64ca69902dd71aa009 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLightItalic.otf new file mode 100644 index 0000000..398214e Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLightItalic.otf.meta new file mode 100644 index 0000000..427e1ec --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-ExtraLightItalic.otf.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: aeffe14ac9dbe34479f836adf6bdf791 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 9e28a5ce361eb2a46a46d8272d12f12c, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 0d19470ebbb215c4dad39f6a3f24df26, type: 3} + - {fileID: 12800000, guid: 0e3b4d549388b4545a03bbc48fc6f93b, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 6b442b14725966e4eb9c0f1800e6bcbd, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 7daf213e64c4d704095dcd6c6c863182, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Italic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Italic.otf new file mode 100644 index 0000000..ebc83c1 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Italic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Italic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Italic.otf.meta new file mode 100644 index 0000000..e4a3d46 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Italic.otf.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: 7daf213e64c4d704095dcd6c6c863182 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 0d19470ebbb215c4dad39f6a3f24df26, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 6b442b14725966e4eb9c0f1800e6bcbd, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Light.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Light.otf new file mode 100644 index 0000000..4c4b9db Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Light.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Light.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Light.otf.meta new file mode 100644 index 0000000..af61e14 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Light.otf.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: 34bd48ec385f5e64ebcda7dab36799fd +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-LightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-LightItalic.otf new file mode 100644 index 0000000..9722452 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-LightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-LightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-LightItalic.otf.meta new file mode 100644 index 0000000..f41b6c4 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-LightItalic.otf.meta @@ -0,0 +1,43 @@ +fileFormatVersion: 2 +guid: 0e3b4d549388b4545a03bbc48fc6f93b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 0d19470ebbb215c4dad39f6a3f24df26, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 6b442b14725966e4eb9c0f1800e6bcbd, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 7daf213e64c4d704095dcd6c6c863182, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Regular.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Regular.otf new file mode 100644 index 0000000..30caa58 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Regular.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Regular.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Regular.otf.meta new file mode 100644 index 0000000..d369952 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-Regular.otf.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 413b4bf824414f6489d68654376a4132 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBold.otf new file mode 100644 index 0000000..822684f Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBold.otf.meta new file mode 100644 index 0000000..4528f88 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBold.otf.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: 47ff4ca1522d99248947cc6e51a62533 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBoldItalic.otf new file mode 100644 index 0000000..01646f4 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBoldItalic.otf.meta new file mode 100644 index 0000000..d33a876 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiBoldItalic.otf.meta @@ -0,0 +1,26 @@ +fileFormatVersion: 2 +guid: 7215d5890c5c6bf43b0c96114779870f +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLight.otf new file mode 100644 index 0000000..6f22e25 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLight.otf.meta new file mode 100644 index 0000000..e89052d --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLight.otf.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 8661181a0ff3595468b3a1811bd5f2d4 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLightItalic.otf new file mode 100644 index 0000000..5de1908 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLightItalic.otf.meta new file mode 100644 index 0000000..3d8b899 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMono-SemiLightItalic.otf.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: 976833f9681f28349bef5cd77590e4ea +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Bold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Bold.otf new file mode 100644 index 0000000..c948719 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Bold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Bold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Bold.otf.meta new file mode 100644 index 0000000..3ce75b3 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Bold.otf.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: 3a025c4c6ccf1114182701d0519e228e +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-BoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-BoldItalic.otf new file mode 100644 index 0000000..0a68538 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-BoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-BoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-BoldItalic.otf.meta new file mode 100644 index 0000000..662045b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-BoldItalic.otf.meta @@ -0,0 +1,31 @@ +fileFormatVersion: 2 +guid: 2646836949d564e419237c261f866c76 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLight.otf new file mode 100644 index 0000000..ee0b181 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLight.otf.meta new file mode 100644 index 0000000..a95fe0f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLight.otf.meta @@ -0,0 +1,46 @@ +fileFormatVersion: 2 +guid: 6ff211e0581856d47906604cdefea214 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: ed4f4686d9fbf484f984f2d3ff068123, type: 3} + - {fileID: 12800000, guid: bd25d7f14e09f6643917bc460ebb762d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: 1f3bffa5f7b7c06489f9a61c91aca489, type: 3} + - {fileID: 12800000, guid: eea2dc3a90bd3b94e971b86012fda8a0, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: 9da594005cd02514b91d5167da9e65f0, type: 3} + - {fileID: 12800000, guid: 9e95ab9419b44444f952f79763d3ecee, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + - {fileID: 12800000, guid: 6d9e27a784ceade4f809b197fd4bd2f3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLightItalic.otf new file mode 100644 index 0000000..2900a59 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLightItalic.otf.meta new file mode 100644 index 0000000..79ab921 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-ExtraLightItalic.otf.meta @@ -0,0 +1,26 @@ +fileFormatVersion: 2 +guid: a32539a7529de5e4885a0a7d24dca07b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Italic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Italic.otf new file mode 100644 index 0000000..b022f38 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Italic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Italic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Italic.otf.meta new file mode 100644 index 0000000..f5d0e2a --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Italic.otf.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: e422a85fac38a3d48a6ac1a231d18283 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Light.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Light.otf new file mode 100644 index 0000000..ef6948b Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Light.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Light.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Light.otf.meta new file mode 100644 index 0000000..b5844d6 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Light.otf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: a02da5c5712289048b8f127080e6d20b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-LightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-LightItalic.otf new file mode 100644 index 0000000..940c4e7 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-LightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-LightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-LightItalic.otf.meta new file mode 100644 index 0000000..604e931 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-LightItalic.otf.meta @@ -0,0 +1,28 @@ +fileFormatVersion: 2 +guid: e501a19f18e1326428382e44032391b9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Regular.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Regular.otf new file mode 100644 index 0000000..ab18c40 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Regular.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Regular.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Regular.otf.meta new file mode 100644 index 0000000..d191795 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-Regular.otf.meta @@ -0,0 +1,43 @@ +fileFormatVersion: 2 +guid: 9e95ab9419b44444f952f79763d3ecee +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: ed4f4686d9fbf484f984f2d3ff068123, type: 3} + - {fileID: 12800000, guid: bd25d7f14e09f6643917bc460ebb762d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: 9da594005cd02514b91d5167da9e65f0, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + - {fileID: 12800000, guid: 6d9e27a784ceade4f809b197fd4bd2f3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBold.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBold.otf new file mode 100644 index 0000000..8d0b5a8 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBold.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBold.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBold.otf.meta new file mode 100644 index 0000000..3189282 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBold.otf.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: a263475191e3ad542963be7410748694 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBoldItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBoldItalic.otf new file mode 100644 index 0000000..1ed2af5 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBoldItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBoldItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBoldItalic.otf.meta new file mode 100644 index 0000000..7695421 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiBoldItalic.otf.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: 9da594005cd02514b91d5167da9e65f0 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + - {fileID: 12800000, guid: 6d9e27a784ceade4f809b197fd4bd2f3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLight.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLight.otf new file mode 100644 index 0000000..2e70a39 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLight.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLight.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLight.otf.meta new file mode 100644 index 0000000..1368cd2 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLight.otf.meta @@ -0,0 +1,41 @@ +fileFormatVersion: 2 +guid: bd25d7f14e09f6643917bc460ebb762d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: 9da594005cd02514b91d5167da9e65f0, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + - {fileID: 12800000, guid: 6d9e27a784ceade4f809b197fd4bd2f3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLightItalic.otf b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLightItalic.otf new file mode 100644 index 0000000..627c03d Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLightItalic.otf differ diff --git a/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLightItalic.otf.meta b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLightItalic.otf.meta new file mode 100644 index 0000000..980297b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/otf/static/CascadiaMonoPL-SemiLightItalic.otf.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: ed4f4686d9fbf484f984f2d3ff068123 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: bd25d7f14e09f6643917bc460ebb762d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: 9da594005cd02514b91d5167da9e65f0, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + - {fileID: 12800000, guid: 6d9e27a784ceade4f809b197fd4bd2f3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf.meta new file mode 100644 index 0000000..fdb4ad9 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 308260d3af7616f499ce6be9bc7838dc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCode.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCode.ttf new file mode 100644 index 0000000..b47bf63 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCode.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCode.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCode.ttf.meta new file mode 100644 index 0000000..15251a1 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCode.ttf.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: 979318e2cdafc0e43bfd56bb63011857 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodeItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodeItalic.ttf new file mode 100644 index 0000000..0d48bfe Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodeItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodeItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodeItalic.ttf.meta new file mode 100644 index 0000000..07e671c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodeItalic.ttf.meta @@ -0,0 +1,44 @@ +fileFormatVersion: 2 +guid: 0ef6060f2a288c84e9928ac9d3b8cfe8 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: cad612b349b5ef74ca38d022d2d6174b, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: dd494862431cf7f4ba7efa7643637a46, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: ecafe5fef77f5d146bda0b0724b6f6c8, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: dd8d2ffc7dfeb6c47a80924234a173e6, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + - {fileID: 12800000, guid: 1b24c9cd038a582498295a7e7d7e2a14, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePL.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePL.ttf new file mode 100644 index 0000000..8a7c949 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePL.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePL.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePL.ttf.meta new file mode 100644 index 0000000..f0f774f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePL.ttf.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: d328b83d9d41ea843a22d6fb443304c9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePLItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePLItalic.ttf new file mode 100644 index 0000000..c85c8b7 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePLItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePLItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePLItalic.ttf.meta new file mode 100644 index 0000000..8d31233 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaCodePLItalic.ttf.meta @@ -0,0 +1,41 @@ +fileFormatVersion: 2 +guid: 8a1a944b23780e4479ea065f82f6ab07 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 5a294a4d671367c438a538f06b2590b2, type: 3} + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 6a9c05a0d5a5c0742902842c52557e75, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMono.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMono.ttf new file mode 100644 index 0000000..d15637e Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMono.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMono.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMono.ttf.meta new file mode 100644 index 0000000..556d9e6 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMono.ttf.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 9699f2754c2af1b48a85157351cf1322 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoItalic.ttf new file mode 100644 index 0000000..2fba921 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoItalic.ttf.meta new file mode 100644 index 0000000..e62ed8c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoItalic.ttf.meta @@ -0,0 +1,41 @@ +fileFormatVersion: 2 +guid: 0d19470ebbb215c4dad39f6a3f24df26 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 6b442b14725966e4eb9c0f1800e6bcbd, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPL.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPL.ttf new file mode 100644 index 0000000..d3b1b40 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPL.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPL.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPL.ttf.meta new file mode 100644 index 0000000..08c596e --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPL.ttf.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: 0c80b066771014344b945e69794dbd4d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPLItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPLItalic.ttf new file mode 100644 index 0000000..a0bbfbd Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPLItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPLItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPLItalic.ttf.meta new file mode 100644 index 0000000..8edc66c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/CascadiaMonoPLItalic.ttf.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 89512ac2cd546ef4c8125d16deafdae9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static.meta new file mode 100644 index 0000000..5159052 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5bbe08e6af708b499d4babde6aee7f3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Bold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Bold.ttf new file mode 100644 index 0000000..9218232 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Bold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Bold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Bold.ttf.meta new file mode 100644 index 0000000..637c416 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Bold.ttf.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: 0813b01ecbba92c44bef402d7f5d26f2 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-BoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-BoldItalic.ttf new file mode 100644 index 0000000..0cb3268 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-BoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-BoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-BoldItalic.ttf.meta new file mode 100644 index 0000000..3a1b4f1 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-BoldItalic.ttf.meta @@ -0,0 +1,26 @@ +fileFormatVersion: 2 +guid: b1487468da584594cb7a15872aed71fe +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLight.ttf new file mode 100644 index 0000000..d474a45 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLight.ttf.meta new file mode 100644 index 0000000..80586a8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLight.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 204a86901b7801b438475cb7b702bb5d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLightItalic.ttf new file mode 100644 index 0000000..39cb8a1 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLightItalic.ttf.meta new file mode 100644 index 0000000..c8d2992 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-ExtraLightItalic.ttf.meta @@ -0,0 +1,28 @@ +fileFormatVersion: 2 +guid: 92a0985f69d48b5489cc62c7c896e4e7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Italic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Italic.ttf new file mode 100644 index 0000000..474dbd2 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Italic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Italic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Italic.ttf.meta new file mode 100644 index 0000000..ace5619 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Italic.ttf.meta @@ -0,0 +1,43 @@ +fileFormatVersion: 2 +guid: dd8d2ffc7dfeb6c47a80924234a173e6 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: cad612b349b5ef74ca38d022d2d6174b, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: dd494862431cf7f4ba7efa7643637a46, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: ecafe5fef77f5d146bda0b0724b6f6c8, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + - {fileID: 12800000, guid: 1b24c9cd038a582498295a7e7d7e2a14, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Light.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Light.ttf new file mode 100644 index 0000000..782cc48 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Light.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Light.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Light.ttf.meta new file mode 100644 index 0000000..a0daed3 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Light.ttf.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 72e5aa1b7b152674291d9fccb8294ce3 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-LightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-LightItalic.ttf new file mode 100644 index 0000000..10a66d8 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-LightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-LightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-LightItalic.ttf.meta new file mode 100644 index 0000000..cf5a79e --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-LightItalic.ttf.meta @@ -0,0 +1,46 @@ +fileFormatVersion: 2 +guid: 8e4490b76dd91344ab522ad695957e6d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: cad612b349b5ef74ca38d022d2d6174b, type: 3} + - {fileID: 12800000, guid: 7e12edc0a1a3e384691f91c378cce503, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: dd494862431cf7f4ba7efa7643637a46, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: ecafe5fef77f5d146bda0b0724b6f6c8, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 0ef6060f2a288c84e9928ac9d3b8cfe8, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: dd8d2ffc7dfeb6c47a80924234a173e6, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + - {fileID: 12800000, guid: 1b24c9cd038a582498295a7e7d7e2a14, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Regular.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Regular.ttf new file mode 100644 index 0000000..685374a Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Regular.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Regular.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Regular.ttf.meta new file mode 100644 index 0000000..7ccd6fc --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-Regular.ttf.meta @@ -0,0 +1,31 @@ +fileFormatVersion: 2 +guid: c554b88478e850f479e97db4368dd46e +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBold.ttf new file mode 100644 index 0000000..05733ab Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBold.ttf.meta new file mode 100644 index 0000000..96323ee --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 10d43bf45edfedf4f9711d6664cc5724 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBoldItalic.ttf new file mode 100644 index 0000000..7180693 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBoldItalic.ttf.meta new file mode 100644 index 0000000..4c20fe4 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiBoldItalic.ttf.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: b273c3775fe5a054bae87bc5a5582946 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLight.ttf new file mode 100644 index 0000000..20931f8 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLight.ttf.meta new file mode 100644 index 0000000..ecf5734 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLight.ttf.meta @@ -0,0 +1,39 @@ +fileFormatVersion: 2 +guid: cad612b349b5ef74ca38d022d2d6174b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: e971295cdb2ffcb489543c1d44f356ea, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 2a361a73a2e35f345bf2bed85f5cee12, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLightItalic.ttf new file mode 100644 index 0000000..7596a3f Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLightItalic.ttf.meta new file mode 100644 index 0000000..fc086ac --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCode-SemiLightItalic.ttf.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: e971295cdb2ffcb489543c1d44f356ea +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code + fallbackFontReferences: + - {fileID: 12800000, guid: 72e5aa1b7b152674291d9fccb8294ce3, type: 3} + - {fileID: 12800000, guid: 2150041a33809f14296c060b65d57e12, type: 3} + - {fileID: 12800000, guid: 0813b01ecbba92c44bef402d7f5d26f2, type: 3} + - {fileID: 12800000, guid: b273c3775fe5a054bae87bc5a5582946, type: 3} + - {fileID: 12800000, guid: b1487468da584594cb7a15872aed71fe, type: 3} + - {fileID: 12800000, guid: e099aa05d6b3c0c4b9865686a7835bbd, type: 3} + - {fileID: 12800000, guid: c554b88478e850f479e97db4368dd46e, type: 3} + - {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + - {fileID: 12800000, guid: e51fcacd50bd10d4190500d62c483bd1, type: 3} + - {fileID: 12800000, guid: 0121b7f3b1375ed47bf6fec94f46917e, type: 3} + - {fileID: 12800000, guid: 8663150164109c348be3bb39b7aebf1d, type: 3} + - {fileID: 12800000, guid: 92a0985f69d48b5489cc62c7c896e4e7, type: 3} + - {fileID: 12800000, guid: d25656f31b315204aa1a6f7d237f0f9c, type: 3} + - {fileID: 12800000, guid: 662915ab71124d544bd2416493d3ff32, type: 3} + - {fileID: 12800000, guid: 10d43bf45edfedf4f9711d6664cc5724, type: 3} + - {fileID: 12800000, guid: 204a86901b7801b438475cb7b702bb5d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Bold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Bold.ttf new file mode 100644 index 0000000..65941a2 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Bold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Bold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Bold.ttf.meta new file mode 100644 index 0000000..4749f69 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Bold.ttf.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: 2b15e701014bbbe43bdac86cd3f011ef +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 5a294a4d671367c438a538f06b2590b2, type: 3} + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 8a1a944b23780e4479ea065f82f6ab07, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 6a9c05a0d5a5c0742902842c52557e75, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-BoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-BoldItalic.ttf new file mode 100644 index 0000000..f7b3a00 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-BoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-BoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-BoldItalic.ttf.meta new file mode 100644 index 0000000..18d85c8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-BoldItalic.ttf.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 2a74b8f31b781c749a78d29af98e7528 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLight.ttf new file mode 100644 index 0000000..1b17eba Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLight.ttf.meta new file mode 100644 index 0000000..4badb6c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLight.ttf.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: f8fe9657cc6af3b468e817ed63d946b9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLightItalic.ttf new file mode 100644 index 0000000..e793fc6 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLightItalic.ttf.meta new file mode 100644 index 0000000..243d27a --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-ExtraLightItalic.ttf.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 52706a0613984894683a283cecf417d7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Italic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Italic.ttf new file mode 100644 index 0000000..7e081b3 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Italic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Italic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Italic.ttf.meta new file mode 100644 index 0000000..1751bed --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Italic.ttf.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 95a8c9c5570ab414a8fd029ba2b14165 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Light.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Light.ttf new file mode 100644 index 0000000..5f1f977 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Light.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Light.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Light.ttf.meta new file mode 100644 index 0000000..004fbd6 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Light.ttf.meta @@ -0,0 +1,46 @@ +fileFormatVersion: 2 +guid: dd9778bc87a0ac047abac85d3a31eb5f +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 5a294a4d671367c438a538f06b2590b2, type: 3} + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 6be27a05dd74d8a46a06897a04a86fef, type: 3} + - {fileID: 12800000, guid: ad84452b26e21764eabbbb6e8ca553b0, type: 3} + - {fileID: 12800000, guid: 8a1a944b23780e4479ea065f82f6ab07, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 2b15e701014bbbe43bdac86cd3f011ef, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 6a9c05a0d5a5c0742902842c52557e75, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 7c7b4e4e8a045584086d743854cffcb9, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-LightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-LightItalic.ttf new file mode 100644 index 0000000..aa3ae57 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-LightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-LightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-LightItalic.ttf.meta new file mode 100644 index 0000000..a498c08 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-LightItalic.ttf.meta @@ -0,0 +1,28 @@ +fileFormatVersion: 2 +guid: b328d34aaa081424885b43ca0c477a8c +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Regular.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Regular.ttf new file mode 100644 index 0000000..6ed7634 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Regular.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Regular.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Regular.ttf.meta new file mode 100644 index 0000000..52836fb --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-Regular.ttf.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 138bbd549dc21384c9699145ed70f47b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBold.ttf new file mode 100644 index 0000000..0301806 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBold.ttf.meta new file mode 100644 index 0000000..0d68977 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBold.ttf.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: 6a9c05a0d5a5c0742902842c52557e75 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 5a294a4d671367c438a538f06b2590b2, type: 3} + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBoldItalic.ttf new file mode 100644 index 0000000..e10a909 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBoldItalic.ttf.meta new file mode 100644 index 0000000..d2386b7 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiBoldItalic.ttf.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: ad84452b26e21764eabbbb6e8ca553b0 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 5a294a4d671367c438a538f06b2590b2, type: 3} + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: 07ac1b9e37c0fdc4c8cb2f488299d087, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 05b83e7cb5ed33b4e9bb321ec2516ba1, type: 3} + - {fileID: 12800000, guid: 2a74b8f31b781c749a78d29af98e7528, type: 3} + - {fileID: 12800000, guid: 6be27a05dd74d8a46a06897a04a86fef, type: 3} + - {fileID: 12800000, guid: 8a1a944b23780e4479ea065f82f6ab07, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 1541d7f69c7a6df409a865ad7bc440a4, type: 3} + - {fileID: 12800000, guid: 2b15e701014bbbe43bdac86cd3f011ef, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 6a9c05a0d5a5c0742902842c52557e75, type: 3} + - {fileID: 12800000, guid: d7e803e9afeb74b43a2107397027be3c, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: 7c7b4e4e8a045584086d743854cffcb9, type: 3} + - {fileID: 12800000, guid: 95a8c9c5570ab414a8fd029ba2b14165, type: 3} + - {fileID: 12800000, guid: f8fe9657cc6af3b468e817ed63d946b9, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLight.ttf new file mode 100644 index 0000000..347f639 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLight.ttf.meta new file mode 100644 index 0000000..5301dc9 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLight.ttf.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 05b83e7cb5ed33b4e9bb321ec2516ba1 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: f3e88d691b3bd52459406083e61d65e8, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: 05a61caabb179da4b9cc50bec09ffbcc, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLightItalic.ttf new file mode 100644 index 0000000..4e777a2 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLightItalic.ttf.meta new file mode 100644 index 0000000..41fbed2 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaCodePL-SemiLightItalic.ttf.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: f3e88d691b3bd52459406083e61d65e8 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Code PL + fallbackFontReferences: + - {fileID: 12800000, guid: 52706a0613984894683a283cecf417d7, type: 3} + - {fileID: 12800000, guid: d328b83d9d41ea843a22d6fb443304c9, type: 3} + - {fileID: 12800000, guid: 629fbd559c237554192ef77d0db80049, type: 3} + - {fileID: 12800000, guid: 73a0f8316330c0c418ae9b8325e85950, type: 3} + - {fileID: 12800000, guid: 0279e4915f2133e43b22fa7044da5b2e, type: 3} + - {fileID: 12800000, guid: 23969a968d2ac384f88017b855d52d65, type: 3} + - {fileID: 12800000, guid: b328d34aaa081424885b43ca0c477a8c, type: 3} + - {fileID: 12800000, guid: 138bbd549dc21384c9699145ed70f47b, type: 3} + - {fileID: 12800000, guid: 203b63fc9ede9a04597ace04500697b4, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Bold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Bold.ttf new file mode 100644 index 0000000..ee9ae9a Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Bold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Bold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Bold.ttf.meta new file mode 100644 index 0000000..e03f683 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Bold.ttf.meta @@ -0,0 +1,39 @@ +fileFormatVersion: 2 +guid: f93a52d02d735b642888188cc77164da +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-BoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-BoldItalic.ttf new file mode 100644 index 0000000..1291b79 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-BoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-BoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-BoldItalic.ttf.meta new file mode 100644 index 0000000..237b009 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-BoldItalic.ttf.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 813563a4513417c4090b2827f3e9c52f +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLight.ttf new file mode 100644 index 0000000..929ddf7 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLight.ttf.meta new file mode 100644 index 0000000..2cdfcaa --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLight.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 60c5ece5ac951d947917e489462848e3 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLightItalic.ttf new file mode 100644 index 0000000..d117cb0 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLightItalic.ttf.meta new file mode 100644 index 0000000..82a1c80 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-ExtraLightItalic.ttf.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 553537cb0228a3a4b8f583b45983bc19 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Italic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Italic.ttf new file mode 100644 index 0000000..b28baa6 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Italic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Italic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Italic.ttf.meta new file mode 100644 index 0000000..d999455 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Italic.ttf.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 82925369bcb803e4c9893c8a93462f99 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Light.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Light.ttf new file mode 100644 index 0000000..0b9c046 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Light.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Light.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Light.ttf.meta new file mode 100644 index 0000000..3a56150 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Light.ttf.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 98cb6cce4999ba24c9ece0f040a46999 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-LightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-LightItalic.ttf new file mode 100644 index 0000000..eb08218 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-LightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-LightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-LightItalic.ttf.meta new file mode 100644 index 0000000..21d523b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-LightItalic.ttf.meta @@ -0,0 +1,46 @@ +fileFormatVersion: 2 +guid: ce1ad8a62a947bd43ba8fc00cd9e44b0 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 9e28a5ce361eb2a46a46d8272d12f12c, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: aeffe14ac9dbe34479f836adf6bdf791, type: 3} + - {fileID: 12800000, guid: 0d19470ebbb215c4dad39f6a3f24df26, type: 3} + - {fileID: 12800000, guid: 0e3b4d549388b4545a03bbc48fc6f93b, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 6b442b14725966e4eb9c0f1800e6bcbd, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 7daf213e64c4d704095dcd6c6c863182, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Regular.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Regular.ttf new file mode 100644 index 0000000..d6cdcaa Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Regular.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Regular.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Regular.ttf.meta new file mode 100644 index 0000000..5c641a7 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-Regular.ttf.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: 6b442b14725966e4eb9c0f1800e6bcbd +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBold.ttf new file mode 100644 index 0000000..b2cb62b Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBold.ttf.meta new file mode 100644 index 0000000..b72ffd8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBold.ttf.meta @@ -0,0 +1,28 @@ +fileFormatVersion: 2 +guid: 82f98b018f18cea47a1b7ed59b34b459 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBoldItalic.ttf new file mode 100644 index 0000000..218dd74 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBoldItalic.ttf.meta new file mode 100644 index 0000000..3b164f4 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiBoldItalic.ttf.meta @@ -0,0 +1,31 @@ +fileFormatVersion: 2 +guid: b48580b843fd54e43a077dead5f53c71 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLight.ttf new file mode 100644 index 0000000..7c75a99 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLight.ttf.meta new file mode 100644 index 0000000..798b228 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLight.ttf.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: 578652f4830267c42b044b346566a598 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLightItalic.ttf new file mode 100644 index 0000000..15d37bf Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLightItalic.ttf.meta new file mode 100644 index 0000000..91b2f6f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMono-SemiLightItalic.ttf.meta @@ -0,0 +1,44 @@ +fileFormatVersion: 2 +guid: 9e28a5ce361eb2a46a46d8272d12f12c +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono + fallbackFontReferences: + - {fileID: 12800000, guid: 7215d5890c5c6bf43b0c96114779870f, type: 3} + - {fileID: 12800000, guid: 10c86a68a439aa6429f557d38e388ef5, type: 3} + - {fileID: 12800000, guid: 60ab01224bc39194f922c46a7a70a9a4, type: 3} + - {fileID: 12800000, guid: 47ff4ca1522d99248947cc6e51a62533, type: 3} + - {fileID: 12800000, guid: 553537cb0228a3a4b8f583b45983bc19, type: 3} + - {fileID: 12800000, guid: 9398bd1eae741a64ca69902dd71aa009, type: 3} + - {fileID: 12800000, guid: 82f98b018f18cea47a1b7ed59b34b459, type: 3} + - {fileID: 12800000, guid: 0d19470ebbb215c4dad39f6a3f24df26, type: 3} + - {fileID: 12800000, guid: 0e3b4d549388b4545a03bbc48fc6f93b, type: 3} + - {fileID: 12800000, guid: 60c5ece5ac951d947917e489462848e3, type: 3} + - {fileID: 12800000, guid: 98cb6cce4999ba24c9ece0f040a46999, type: 3} + - {fileID: 12800000, guid: 413b4bf824414f6489d68654376a4132, type: 3} + - {fileID: 12800000, guid: 6b442b14725966e4eb9c0f1800e6bcbd, type: 3} + - {fileID: 12800000, guid: 8661181a0ff3595468b3a1811bd5f2d4, type: 3} + - {fileID: 12800000, guid: b48580b843fd54e43a077dead5f53c71, type: 3} + - {fileID: 12800000, guid: 976833f9681f28349bef5cd77590e4ea, type: 3} + - {fileID: 12800000, guid: 34bd48ec385f5e64ebcda7dab36799fd, type: 3} + - {fileID: 12800000, guid: 578652f4830267c42b044b346566a598, type: 3} + - {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + - {fileID: 12800000, guid: 813563a4513417c4090b2827f3e9c52f, type: 3} + - {fileID: 12800000, guid: 9699f2754c2af1b48a85157351cf1322, type: 3} + - {fileID: 12800000, guid: 7daf213e64c4d704095dcd6c6c863182, type: 3} + - {fileID: 12800000, guid: 82925369bcb803e4c9893c8a93462f99, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Bold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Bold.ttf new file mode 100644 index 0000000..62f47fe Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Bold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Bold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Bold.ttf.meta new file mode 100644 index 0000000..9b97fc9 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Bold.ttf.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 89ba4e40f6db2c743a6bb97e6716f184 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-BoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-BoldItalic.ttf new file mode 100644 index 0000000..e09dce9 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-BoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-BoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-BoldItalic.ttf.meta new file mode 100644 index 0000000..6f60cf8 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-BoldItalic.ttf.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: f9e9395d39bf6f2459f01d33ffab3108 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLight.ttf new file mode 100644 index 0000000..1598b3d Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLight.ttf.meta new file mode 100644 index 0000000..1174f1b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLight.ttf.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 012eb903275a75441b97b6772de905c7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLightItalic.ttf new file mode 100644 index 0000000..cfbbd5b Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLightItalic.ttf.meta new file mode 100644 index 0000000..882aafd --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-ExtraLightItalic.ttf.meta @@ -0,0 +1,39 @@ +fileFormatVersion: 2 +guid: 6d9e27a784ceade4f809b197fd4bd2f3 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Italic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Italic.ttf new file mode 100644 index 0000000..ec83624 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Italic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Italic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Italic.ttf.meta new file mode 100644 index 0000000..9d71dbe --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Italic.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: d03b432838c756c40911f28e4f96ca06 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Light.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Light.ttf new file mode 100644 index 0000000..ac43563 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Light.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Light.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Light.ttf.meta new file mode 100644 index 0000000..7b1b756 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Light.ttf.meta @@ -0,0 +1,44 @@ +fileFormatVersion: 2 +guid: eea2dc3a90bd3b94e971b86012fda8a0 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: ed4f4686d9fbf484f984f2d3ff068123, type: 3} + - {fileID: 12800000, guid: bd25d7f14e09f6643917bc460ebb762d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: 9da594005cd02514b91d5167da9e65f0, type: 3} + - {fileID: 12800000, guid: 9e95ab9419b44444f952f79763d3ecee, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + - {fileID: 12800000, guid: 6d9e27a784ceade4f809b197fd4bd2f3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-LightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-LightItalic.ttf new file mode 100644 index 0000000..93a3030 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-LightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-LightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-LightItalic.ttf.meta new file mode 100644 index 0000000..c4a16b2 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-LightItalic.ttf.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 1280dee6c362e3f4da55f45cf913ea4b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Regular.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Regular.ttf new file mode 100644 index 0000000..437d452 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Regular.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Regular.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Regular.ttf.meta new file mode 100644 index 0000000..2a5762f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-Regular.ttf.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: e58e465a8dcbdf049935a37d498eab99 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBold.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBold.ttf new file mode 100644 index 0000000..cae13ea Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBold.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBold.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBold.ttf.meta new file mode 100644 index 0000000..78c44da --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBold.ttf.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: 2a78d28b0bf469f43944563ddb345973 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBoldItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBoldItalic.ttf new file mode 100644 index 0000000..ab25adc Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBoldItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBoldItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBoldItalic.ttf.meta new file mode 100644 index 0000000..6611d14 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiBoldItalic.ttf.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: 16958435965fc6f4fbd4b844cd61b5f7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLight.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLight.ttf new file mode 100644 index 0000000..d3f0b3c Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLight.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLight.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLight.ttf.meta new file mode 100644 index 0000000..689676c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLight.ttf.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: 1f3bffa5f7b7c06489f9a61c91aca489 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: ed4f4686d9fbf484f984f2d3ff068123, type: 3} + - {fileID: 12800000, guid: bd25d7f14e09f6643917bc460ebb762d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: eea2dc3a90bd3b94e971b86012fda8a0, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: 3cb743b4a83cd5844b9b97d5e4415cf8, type: 3} + - {fileID: 12800000, guid: 9da594005cd02514b91d5167da9e65f0, type: 3} + - {fileID: 12800000, guid: 9e95ab9419b44444f952f79763d3ecee, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + - {fileID: 12800000, guid: 6d9e27a784ceade4f809b197fd4bd2f3, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLightItalic.ttf b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLightItalic.ttf new file mode 100644 index 0000000..f159800 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLightItalic.ttf differ diff --git a/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLightItalic.ttf.meta b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLightItalic.ttf.meta new file mode 100644 index 0000000..5b0f772 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/ttf/static/CascadiaMonoPL-SemiLightItalic.ttf.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 3cb743b4a83cd5844b9b97d5e4415cf8 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Cascadia Mono PL + fallbackFontReferences: + - {fileID: 12800000, guid: 16958435965fc6f4fbd4b844cd61b5f7, type: 3} + - {fileID: 12800000, guid: 0c80b066771014344b945e69794dbd4d, type: 3} + - {fileID: 12800000, guid: e58e465a8dcbdf049935a37d498eab99, type: 3} + - {fileID: 12800000, guid: 2646836949d564e419237c261f866c76, type: 3} + - {fileID: 12800000, guid: a32539a7529de5e4885a0a7d24dca07b, type: 3} + - {fileID: 12800000, guid: 89512ac2cd546ef4c8125d16deafdae9, type: 3} + - {fileID: 12800000, guid: a02da5c5712289048b8f127080e6d20b, type: 3} + - {fileID: 12800000, guid: 012eb903275a75441b97b6772de905c7, type: 3} + - {fileID: 12800000, guid: f9e9395d39bf6f2459f01d33ffab3108, type: 3} + - {fileID: 12800000, guid: a263475191e3ad542963be7410748694, type: 3} + - {fileID: 12800000, guid: 1280dee6c362e3f4da55f45cf913ea4b, type: 3} + - {fileID: 12800000, guid: e501a19f18e1326428382e44032391b9, type: 3} + - {fileID: 12800000, guid: 2a78d28b0bf469f43944563ddb345973, type: 3} + - {fileID: 12800000, guid: 3a025c4c6ccf1114182701d0519e228e, type: 3} + - {fileID: 12800000, guid: d03b432838c756c40911f28e4f96ca06, type: 3} + - {fileID: 12800000, guid: e422a85fac38a3d48a6ac1a231d18283, type: 3} + - {fileID: 12800000, guid: 89ba4e40f6db2c743a6bb97e6716f184, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2.meta new file mode 100644 index 0000000..792190b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 352b5bcb2e184e64480556d23a3b02c3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCode.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCode.woff2 new file mode 100644 index 0000000..8865499 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCode.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCode.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCode.woff2.meta new file mode 100644 index 0000000..7918b3b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCode.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d79ca948967a7864aaed8fa81473fee0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodeItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodeItalic.woff2 new file mode 100644 index 0000000..5c1d8d2 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodeItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodeItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodeItalic.woff2.meta new file mode 100644 index 0000000..5dc5cc0 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodeItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb1c73daec77cad4385a386f3538ca21 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePL.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePL.woff2 new file mode 100644 index 0000000..a3fa12b Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePL.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePL.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePL.woff2.meta new file mode 100644 index 0000000..c87691d --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePL.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5e934c4775f13114580132f8883b5d1a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePLItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePLItalic.woff2 new file mode 100644 index 0000000..4669cf6 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePLItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePLItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePLItalic.woff2.meta new file mode 100644 index 0000000..84a3b94 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaCodePLItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cb19ac94ad9b5fe4cad0ad217898a6c9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMono.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMono.woff2 new file mode 100644 index 0000000..9ffc780 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMono.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMono.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMono.woff2.meta new file mode 100644 index 0000000..9393fff --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMono.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c4d522afd374a20488823d25a15e4def +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoItalic.woff2 new file mode 100644 index 0000000..176d149 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoItalic.woff2.meta new file mode 100644 index 0000000..72abbd3 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e9057fa260427b84084423e079e40a15 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPL.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPL.woff2 new file mode 100644 index 0000000..fc6ddd3 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPL.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPL.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPL.woff2.meta new file mode 100644 index 0000000..26ca3fa --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPL.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 73f98d25c21f3fb4da873e8bcc7630e4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPLItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPLItalic.woff2 new file mode 100644 index 0000000..e24de96 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPLItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPLItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPLItalic.woff2.meta new file mode 100644 index 0000000..b9dc2d5 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/CascadiaMonoPLItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7af3f1a0526318f4882e75d471aa0c41 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static.meta new file mode 100644 index 0000000..c143a0d --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61cc38d3a79994247ae4f5b0097f0da9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Bold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Bold.woff2 new file mode 100644 index 0000000..9e65d6d Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Bold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Bold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Bold.woff2.meta new file mode 100644 index 0000000..9f9219b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Bold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0bd94cacd7bf66f47b5c538a8237f084 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-BoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-BoldItalic.woff2 new file mode 100644 index 0000000..ecfadf4 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-BoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-BoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-BoldItalic.woff2.meta new file mode 100644 index 0000000..3f28abd --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-BoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8e18cc937351ae647a74ecd56edbc2fe +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLight.woff2 new file mode 100644 index 0000000..adffedf Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLight.woff2.meta new file mode 100644 index 0000000..cee1f27 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 466beb3616243b8439ab6f109dfbf2ea +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLightItalic.woff2 new file mode 100644 index 0000000..1b3b5f3 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLightItalic.woff2.meta new file mode 100644 index 0000000..bd60ab7 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-ExtraLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b55d8d64cfac07c4c83bcb74eb8a22e0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Italic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Italic.woff2 new file mode 100644 index 0000000..1962359 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Italic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Italic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Italic.woff2.meta new file mode 100644 index 0000000..03d82a1 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Italic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 39ecaeb24580b5e4fb6894fd253163b6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Light.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Light.woff2 new file mode 100644 index 0000000..6b63437 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Light.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Light.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Light.woff2.meta new file mode 100644 index 0000000..0fc2b10 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Light.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 01960735ba9b6e243bab84885bf048bd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-LightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-LightItalic.woff2 new file mode 100644 index 0000000..bc7648c Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-LightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-LightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-LightItalic.woff2.meta new file mode 100644 index 0000000..a4553b4 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-LightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 06d6e64b94e724b47a6e817b48876e37 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Regular.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Regular.woff2 new file mode 100644 index 0000000..433b124 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Regular.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Regular.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Regular.woff2.meta new file mode 100644 index 0000000..d8119f3 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-Regular.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6f20faf7bd2ae3948afce05a9909c059 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBold.woff2 new file mode 100644 index 0000000..d1ae896 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBold.woff2.meta new file mode 100644 index 0000000..d3eef9c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ffdbae7bde63b3c4890f2f973a9187cc +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBoldItalic.woff2 new file mode 100644 index 0000000..71a0936 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBoldItalic.woff2.meta new file mode 100644 index 0000000..a71e889 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiBoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7c81b51ad782e1749a86d90651a27684 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLight.woff2 new file mode 100644 index 0000000..fb0f9de Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLight.woff2.meta new file mode 100644 index 0000000..9ed990b --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 600fb8658ebb49d4e8c8ea355a5e4910 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLightItalic.woff2 new file mode 100644 index 0000000..af02455 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLightItalic.woff2.meta new file mode 100644 index 0000000..4d9226c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCode-SemiLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7c84f4ac5e3770c40ab02daaf80b5d6d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Bold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Bold.woff2 new file mode 100644 index 0000000..8f1aa70 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Bold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Bold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Bold.woff2.meta new file mode 100644 index 0000000..cc0128d --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Bold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 40795123bfc78ec45829a1a4515b3187 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-BoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-BoldItalic.woff2 new file mode 100644 index 0000000..cc3be0a Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-BoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-BoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-BoldItalic.woff2.meta new file mode 100644 index 0000000..a17ac9e --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-BoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 023cae74155838b40a5c315a788a0148 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLight.woff2 new file mode 100644 index 0000000..5faa6f9 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLight.woff2.meta new file mode 100644 index 0000000..2af2a11 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 92b4dea91a4ed7641b11fd6412d1dbba +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLightItalic.woff2 new file mode 100644 index 0000000..7b99be8 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLightItalic.woff2.meta new file mode 100644 index 0000000..9833e7f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-ExtraLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 45a9d71f7217da444bd2e41cf052c78e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Italic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Italic.woff2 new file mode 100644 index 0000000..72f1779 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Italic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Italic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Italic.woff2.meta new file mode 100644 index 0000000..19e3dae --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Italic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ab8fefd93dbe9ea40a45ff89a97046a7 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Light.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Light.woff2 new file mode 100644 index 0000000..848e8e4 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Light.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Light.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Light.woff2.meta new file mode 100644 index 0000000..294f6b3 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Light.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e68f8098cdbc0a941abbc5d9258a051c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-LightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-LightItalic.woff2 new file mode 100644 index 0000000..f487c05 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-LightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-LightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-LightItalic.woff2.meta new file mode 100644 index 0000000..ebd2f23 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-LightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5432639433ae19f4fb13f91ccec2f72b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Regular.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Regular.woff2 new file mode 100644 index 0000000..5ea63e6 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Regular.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Regular.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Regular.woff2.meta new file mode 100644 index 0000000..8ae0917 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-Regular.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 74cd40dfb269085468641b1750210923 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBold.woff2 new file mode 100644 index 0000000..dd3b26e Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBold.woff2.meta new file mode 100644 index 0000000..a21f225 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cc8ffee690fc13047a60888c4280fde8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBoldItalic.woff2 new file mode 100644 index 0000000..6de6657 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBoldItalic.woff2.meta new file mode 100644 index 0000000..ce2b41c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiBoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8a279010fd828174bb2185d9b1fbb0fd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLight.woff2 new file mode 100644 index 0000000..9d76556 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLight.woff2.meta new file mode 100644 index 0000000..eef89dd --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5ab5c576b882d1747bec7bb7664a83e8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLightItalic.woff2 new file mode 100644 index 0000000..215ece8 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLightItalic.woff2.meta new file mode 100644 index 0000000..ef69470 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaCodePL-SemiLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 24bc1b4444faeb34db4d377f5967cc28 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Bold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Bold.woff2 new file mode 100644 index 0000000..8ad451e Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Bold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Bold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Bold.woff2.meta new file mode 100644 index 0000000..e83ea80 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Bold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5eeaa625b8dbe9d43be19ce3378a42de +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-BoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-BoldItalic.woff2 new file mode 100644 index 0000000..f3f82c6 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-BoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-BoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-BoldItalic.woff2.meta new file mode 100644 index 0000000..edb4964 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-BoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6290e4beb040d5e499caa033a152e8c5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLight.woff2 new file mode 100644 index 0000000..0e8c265 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLight.woff2.meta new file mode 100644 index 0000000..ffd1641 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c7ec235d56242ca42b4d61b6f43af0b5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLightItalic.woff2 new file mode 100644 index 0000000..70faa0d Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLightItalic.woff2.meta new file mode 100644 index 0000000..59ab567 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-ExtraLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a9a4a48150112624da8d57db05833c31 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Italic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Italic.woff2 new file mode 100644 index 0000000..98ee54f Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Italic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Italic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Italic.woff2.meta new file mode 100644 index 0000000..2c7caae --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Italic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5c725ded5feaf0f429aeae10e4265726 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Light.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Light.woff2 new file mode 100644 index 0000000..695cfe1 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Light.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Light.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Light.woff2.meta new file mode 100644 index 0000000..c9e9c33 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Light.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8ce862c42c3817e4697098db87999d71 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-LightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-LightItalic.woff2 new file mode 100644 index 0000000..4a755c9 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-LightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-LightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-LightItalic.woff2.meta new file mode 100644 index 0000000..00df3ac --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-LightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 00b66b1c6759ca04c95ccf2fa45d103c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Regular.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Regular.woff2 new file mode 100644 index 0000000..1cf7c9a Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Regular.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Regular.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Regular.woff2.meta new file mode 100644 index 0000000..bb35e6c --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-Regular.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 41a9c7edaa3f0f94294ef6adca4d45fd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBold.woff2 new file mode 100644 index 0000000..cdc2ff6 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBold.woff2.meta new file mode 100644 index 0000000..7f1325f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8622e0d22a7de634083e833bbacd3e9c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBoldItalic.woff2 new file mode 100644 index 0000000..0f1cb3c Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBoldItalic.woff2.meta new file mode 100644 index 0000000..5a20df1 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiBoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 741f69a1dc9a43a489fbef4c28ef0ea5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLight.woff2 new file mode 100644 index 0000000..e228566 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLight.woff2.meta new file mode 100644 index 0000000..28c590f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 831a549e6b158404d8ad44c23b1c8c31 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLightItalic.woff2 new file mode 100644 index 0000000..a482441 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLightItalic.woff2.meta new file mode 100644 index 0000000..f19d04a --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMono-SemiLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 11c493194af848c48804eadcf0b2c68e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Bold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Bold.woff2 new file mode 100644 index 0000000..fafcf32 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Bold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Bold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Bold.woff2.meta new file mode 100644 index 0000000..3dfdc84 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Bold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b03bc95d8291d94ab657b590183d5d8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-BoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-BoldItalic.woff2 new file mode 100644 index 0000000..0f414f7 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-BoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-BoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-BoldItalic.woff2.meta new file mode 100644 index 0000000..f7c3d61 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-BoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 373e92a5d85948a418a3cc94691e07ff +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLight.woff2 new file mode 100644 index 0000000..845d776 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLight.woff2.meta new file mode 100644 index 0000000..1718113 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2e7a5f7cfe973ef4aa24b5539ad65265 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLightItalic.woff2 new file mode 100644 index 0000000..71d9269 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLightItalic.woff2.meta new file mode 100644 index 0000000..7cc2a7d --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-ExtraLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a37c70198a85efc4680525868ae9fa85 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Italic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Italic.woff2 new file mode 100644 index 0000000..af0d6fd Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Italic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Italic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Italic.woff2.meta new file mode 100644 index 0000000..4809a69 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Italic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2f45d81bab8924947b7ad48149ebd4a3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Light.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Light.woff2 new file mode 100644 index 0000000..a5bece3 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Light.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Light.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Light.woff2.meta new file mode 100644 index 0000000..955a978 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Light.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 33b291338b0953a4ba03d2d53d2f9fa4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-LightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-LightItalic.woff2 new file mode 100644 index 0000000..222a2d6 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-LightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-LightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-LightItalic.woff2.meta new file mode 100644 index 0000000..fca2220 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-LightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 854fbb54c15c2d14cad9fdfa8dad0f68 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Regular.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Regular.woff2 new file mode 100644 index 0000000..0376889 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Regular.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Regular.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Regular.woff2.meta new file mode 100644 index 0000000..5ae00fb --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-Regular.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 01086f03208357f4491c8fba503b806a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBold.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBold.woff2 new file mode 100644 index 0000000..1bb8c52 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBold.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBold.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBold.woff2.meta new file mode 100644 index 0000000..c5b3832 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBold.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3fd2ee36353c36745bf10fe3dae4afb7 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBoldItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBoldItalic.woff2 new file mode 100644 index 0000000..ab172aa Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBoldItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBoldItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBoldItalic.woff2.meta new file mode 100644 index 0000000..b9bb79f --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiBoldItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 04696b1e88ed4b54d80f13d18a56fd0d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLight.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLight.woff2 new file mode 100644 index 0000000..04d2387 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLight.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLight.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLight.woff2.meta new file mode 100644 index 0000000..5dd591e --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLight.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bfb3ce118b165ad46b8460f229de4f35 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLightItalic.woff2 b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLightItalic.woff2 new file mode 100644 index 0000000..0901874 Binary files /dev/null and b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLightItalic.woff2 differ diff --git a/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLightItalic.woff2.meta b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLightItalic.woff2.meta new file mode 100644 index 0000000..fcadb38 --- /dev/null +++ b/Assets/Font/CascadiaCode-2111.01/woff2/static/CascadiaMonoPL-SemiLightItalic.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b67829ace7471ab4f92169ae521ee608 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials.meta b/Assets/Gridbox Prototype Materials.meta new file mode 100644 index 0000000..ebf8e07 --- /dev/null +++ b/Assets/Gridbox Prototype Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a2861bb1fc2bf549863c6fc8bd13f3b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Demo.meta b/Assets/Gridbox Prototype Materials/Demo.meta new file mode 100644 index 0000000..847927b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eafbe44f5a9eb364491e4baa0077c944 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.meta b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.meta new file mode 100644 index 0000000..37b209d --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d252abe04c3e3543bf218f891408699 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.unity b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.unity new file mode 100644 index 0000000..a1fd386 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.unity @@ -0,0 +1,2051 @@ +%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.004 + 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: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: d2f24bfdb0a758e41813bbc7ae4f978f, type: 2} + m_HaloStrength: 1 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 512 + 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: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 4 + m_BakeResolution: 60 + m_AtlasSize: 2048 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 8 + m_LightmapParameters: {fileID: 111300000, guid: c833c6a9a24b72f40ae6e54d900acae3, type: 2} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 1 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + 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_LightingSettings: {fileID: 138207091} +--- !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 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &4026691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4026696} + - component: {fileID: 4026695} + - component: {fileID: 4026694} + - component: {fileID: 4026692} + m_Layer: 0 + m_Name: Facility + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 127 + m_IsActive: 1 +--- !u!64 &4026692 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4026691} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 811653078} +--- !u!33 &4026694 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4026691} + m_Mesh: {fileID: 811653078} +--- !u!23 &4026695 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4026691} + m_Enabled: 1 + m_CastShadows: 2 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: c181c23a6120fbe4aadd5bb53a58dd78, type: 2} + - {fileID: 2100000, guid: 652107f36a28e44479c0b827dee5852a, type: 2} + - {fileID: 2100000, guid: aeee7071bea0a4c478b4fea5933c5f79, type: 2} + - {fileID: 2100000, guid: 36bce9ab6cae8ce43962938466458044, type: 2} + - {fileID: 2100000, guid: 663834164c6a04740aaa1b778249ce7e, type: 2} + - {fileID: 2100000, guid: b0b4de3bd6e976e4f8b3adc6e72377ed, type: 2} + - {fileID: 2100000, guid: 17c44fb3e5be9644586a0728a5f5a386, type: 2} + - {fileID: 2100000, guid: b234e1586ac9f524f8162eb03da23c35, type: 2} + - {fileID: 2100000, guid: c852af001dae0064e9acaa832f1dadb7, 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: 0 + m_SelectedEditorRenderState: 2 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 111300000, guid: c833c6a9a24b72f40ae6e54d900acae3, type: 2} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &4026696 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4026691} + 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: 842084053} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &29538276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 29538277} + - component: {fileID: 29538278} + m_Layer: 0 + m_Name: Reflection Probe 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &29538277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29538276} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &29538278 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29538276} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!850595691 &138207091 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 3 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 2 + m_LightmapMaxSize: 2048 + m_BakeResolution: 60 + m_Padding: 8 + m_TextureCompression: 0 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 111300000, guid: c833c6a9a24b72f40ae6e54d900acae3, type: 2} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 4 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 1 + m_FinalGatherRayCount: 1024 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 +--- !u!1 &262890554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 262890555} + - component: {fileID: 262890556} + m_Layer: 0 + m_Name: Reflection Probe 9 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &262890555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 262890554} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: 1.5, z: -10.75} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &262890556 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 262890554} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &350966234 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 350966235} + - component: {fileID: 350966236} + m_Layer: 0 + m_Name: Reflection Probe 5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &350966235 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350966234} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.75, y: 1.5, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &350966236 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350966234} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &557578322 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 557578323} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &557578323 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557578322} + 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: + - {fileID: 1508763321} + - {fileID: 842084053} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &785032371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 785032372} + - component: {fileID: 785032373} + m_Layer: 0 + m_Name: Reflection Probe 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &785032372 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 785032371} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 8, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &785032373 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 785032371} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!43 &811653078 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh-89030 + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 9522 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 3862 + localAABB: + m_Center: {x: 2.75, y: 2.25, z: -5.875} + m_Extent: {x: 8, y: 2.25, z: 9.125} + - serializedVersion: 2 + firstByte: 19044 + indexCount: 336 + topology: 0 + baseVertex: 0 + firstVertex: 3862 + vertexCount: 80 + localAABB: + m_Center: {x: 4.625, y: 0, z: -3.125} + m_Extent: {x: 5.625, y: 0, z: 6.375} + - serializedVersion: 2 + firstByte: 19716 + indexCount: 264 + topology: 0 + baseVertex: 0 + firstVertex: 3942 + vertexCount: 79 + localAABB: + m_Center: {x: 1.25, y: 1.5, z: -5.25} + m_Extent: {x: 6.25, y: 1.5, z: 8.25} + - serializedVersion: 2 + firstByte: 20244 + indexCount: 18 + topology: 0 + baseVertex: 0 + firstVertex: 4021 + vertexCount: 8 + localAABB: + m_Center: {x: 2.75, y: 0, z: 2} + m_Extent: {x: 2.75, y: 0, z: 1} + - serializedVersion: 2 + firstByte: 20280 + indexCount: 174 + topology: 0 + baseVertex: 0 + firstVertex: 4029 + vertexCount: 66 + localAABB: + m_Center: {x: 2.75, y: 1.75, z: 2} + m_Extent: {x: 2.75, y: 1.75, z: 1} + - serializedVersion: 2 + firstByte: 20628 + indexCount: 420 + topology: 0 + baseVertex: 0 + firstVertex: 4095 + vertexCount: 91 + localAABB: + m_Center: {x: 4.75, y: 0, z: -10.75} + m_Extent: {x: 5.75, y: 0, z: 4.25} + - serializedVersion: 2 + firstByte: 21468 + indexCount: 204 + topology: 0 + baseVertex: 0 + firstVertex: 4186 + vertexCount: 104 + localAABB: + m_Center: {x: -3.5, y: 3.625, z: -5.25} + m_Extent: {x: 1.5, y: 0.125, z: 8.25} + - serializedVersion: 2 + firstByte: 21876 + indexCount: 30 + topology: 0 + baseVertex: 0 + firstVertex: 4290 + vertexCount: 18 + localAABB: + m_Center: {x: -3.5, y: 3.75, z: -5.25} + m_Extent: {x: 0.25, y: 0, z: 8.25} + - serializedVersion: 2 + firstByte: 21936 + indexCount: 138 + topology: 0 + baseVertex: 0 + firstVertex: 4308 + vertexCount: 68 + localAABB: + m_Center: {x: 5.375, y: 2, z: -12.5} + m_Extent: {x: 5.375, y: 2, z: 0.5} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 0 + m_KeepIndices: 0 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200000003000100040005000600040006000700080009000a0008000a000b000c000d000e000c000f000d00100011001200100013001100140015001600170014001600180019001a001b0018001a001c001d001e001c001f001d00200021002200200023002100240025002600270024002600280029002a002b0028002a002c001f001c002c002d001f002e00230020002e002f0023002500300031002600250031002900320033002a0029003300340035003600340037003500380039003a0038003b0039003c003d003e003f003c003e00400041004200430040004200440045004600440047004500480049004a0048004b0049004c004d004e004f004c004e00500051005200530050005200540055005600540057005500580059005a0058005b0059005c005d005e005c005f005d001e005f005c001e001d005f006000610062006000630061002200630060002200210063006400650066006700640066006500680069006600650069006a006b006c006d006a006c006b006e006f006c006b006f007000020071007000000002000a0071000b00720073007400750076007700750056007600780079007a0078007b00790077007c007d00770076007c007a007e007f007a0079007e008000470044008000810047003600810080003600350081008200830084008200850083003a00850082003a003900850086008700880089008600880087003c003f00880087003f008a008b008c008d008a008c008b00400043008c008b0043008e00560075008e00540056008f007b0078008f0090007b0091005a009000910058005a00920090008f0092009100900093009400950093009600940003009700010003009800970099009a009b0099009c009a009d00370034009d009e0037009f009e009d009f00a0009e00a1003b003800a100a2003b00a300a200a100a300a400a2003d00a500a6003e003d00a600a500a700a800a600a500a8004100a900aa0042004100aa00a900ab00ac00aa00a900ac00ad00ae00af00ad00b000ae005700b10055005700b200b100b300b000ad00b300b400b0005b00ad0059005b00b300ad009c00b5009a009c00b600b500b700b800b900b700ba00b8009a00bb00bc009a00b500bb00b900bd00be00b900b800bd00bf00c000c100c200bf00c100c000c300c400c100c000c400c500c600c700c800c500c700c600c900ca00c700c600ca00cb00cc00cd00cb00ce00cc00cf00ce00cb00cf00d000ce00d100d200d300d100d400d200d500d400d100d500d600d400d700d800d900d700da00d800db00dc00dd00db00de00dc00df00e000e100df00e200e0000e00e200df000e000d00e200e300e400e500e300e600e400e700e600e300e700e800e6003000e900ea0031003000ea00e900eb00ec00ea00e900ec003200ed00ee0033003200ee00ed00ef00f000ee00ed00f0007d00f100f2007d007c00f100f30073007200f300f40073007f00f500f6007f007e00f500f70096009300f700f8009600f900fa00fb00f900bc00fa00fc0098000300fc00fd009800f800fe009600f800ff00fe00bc000001fa00bc00bb000001ff000101fe00ff000201010103010201ff0003010401020105010601070105010701080109010a010b0109010b010c010d010e010f010d010f01100111011201130111011301140115011601170115011701180119011a011b0119011b011c011d011e011f011d011f0120011e01210122011e0122011f01230124012501230125012601270128012901270129012a012b012c0182002b01820084002d012e012f012d012f01300131013201330131013301340135013601e7003501e700e300370138013901370139013a013b013c013d013b013d013e013f01400141013f0141014201430144014501430145014601470148014901470149014a014b014c014d014b014d014e014f01500151014f0151015201530154015501530155015601570158015901570159015a015b015c015d015b015d015e0150015f01600150016001510161016201630161016301640165016601670168016501670169016a016601650169016601680167016b016c0168016b016d016e016f0170016d016f01710172016e016d0171016e0173017401720171017301720170016f0175017601700175017701780179017a01770179017a0179017b017c017a017b017d017e017f0180017d017f0181018201830184018101830184018301850186018401850186018501870188018601870189018a018b018c0189018b018c018b018d018e018c018d018f019001910192018f0191019201910193019401920193019501960197019801950197019801970199019a01980199019a0199019b019c019a019b019c019b019d019e019c019d019e019d019f01a0019e019f01a101a201a301a401a101a301a401a301a501a601a701a801a901aa01ab01ac01a901ab01ad01ae01af01b001b101b201b301b401b501b301b501b601b701b801b901ba01bb01bc01bb01bd01bc01ba01be01bb01bf01c001c101bf01c201c001bf01c301c201c401c501c601c701c801c901ca01cb01cc01cd01ce01cf01cd01cf01d001d101d201d301d101d301d401d501d601d701d501d701d801d901da01db01d901db01cf01dc01dd01d401dc01d401de01df01e001e101df01e101e201e301dc01de01e301de01e401e001e501e601e001e601e101e701e301e401e701e401e801e501e901ea01e501ea01e601eb01e701e801eb01e801ec01e901ed01ee01e901ee01ea01ef01eb01f001ef01f001f101f201f301f401f201f401ee01f301f501f601f301f601f701f801f901fa01f801fa01fb01f901fc01f101f901f101fa01f501fd01fe01f501fe01f601ff01f8010002ff010002010202020302040202020402fe01050206020702050207020802060209020a0206020a020b020c020d020e020c020e020f02090210021102090211020a02120213020f0212020f02140210021502160210021602110217021202140217021402180219021a021b0219021b0216021c02170218021c0218021d021a021e021f021a021f02200221021c0222022102220223021e02240225021e0225021f02260227022302260223022802240229022a0224022a0225022b02260228022b0228022c022d022e022f022d022f022a0230022b022c0230022c0231022e02320206002e0206003302340230023502340235023602320237020700320207000600380239023602380236023a0237023b023c0237023c0207003d0238023a023d023a023e023b023f0240023b0240023c0241023d023e0241023e0242024302440245024302450246024402410242024402420245023f02470248023f0248024002490243024602490246024a0247024b024c0247024c0248024d0249024a024d024a024e024b024f0250024b0250024c0251024d024e0251024e0252024f02530254024f0254025002530255025602530256025402570258025902570259025a02580251025202580252025b025c025d025e025c025e025602d6015f025a02d6015a02d7015d02cd01d0015d02d001600261026202630261026302640265026602670265026702680269026a026b0269026b026c0266026d026e0266026e02670262026f02700262027002630271026502680271026802720273027402750273027502760277027102720277027202780279027a027b0279027b027c027d027e027f027d027f02800281028202830281028302840285028602870285028702880289028a024c0289024c0250028b028c0260028b026002d0018d028e02e2018d02e201e1018f029002e6018f02e601ea01910292029302940291029302950296029702980295029702990297029a029b0299029a029c029d029e029d029f029e029c02a0029d02a102a202a302a402a502a102a402a102a302a602a702a802a702a902a802aa02ab02ac02aa02ad02ab02ae02af02b002ae02b102af02b202b302b402b502b202b402b602b702b302b602b302b202b802b902ba02b802b702b902bb02bc02bd02bc02ac02bd02be02bb02bf02be02bf02c002c102c202c302c102c402c202c502c602c702c502c802c602c902ca02cb02c902cb02cc02cd02ce02ca02cd02ca02c902cf02d002ce02cf02ce02cd02d102d202d002d102d002cf02d302d402d502d302d602d402d702d502d802d702d302d502d902da02db02d902d702da02dc02dd02de02dc02df02dd02e002e102e202e002d202e102e302e202e402e302e502e202e602e702e802e702e902e802ea02eb02ec02ea02ec02ed02ee02ef02f002ef02f102f002f202f302ee02f202ee02f002f402be02f502be02c002f502f602f702f802f602f402f702f902fa02fb02f902b802fa02fc02fd02f902fb02fc02f902fe02ff020003ff02fc0200030103020303030103fe0202030403f802050304030603f802070308030903070309030a030b030c030d030b030e030c030f03100311030f031203100313031403150313031603140317031803190317031a0318031b031c031d031b031e031c031f031d0320031f031b031d0321032203230321032403220325032303260325032103230327032803290327032a0328032b032c032d032b032e032c032f03300331032f033203300333033403350333033603340337033803390337033a0338033b0339033c033b03370339033d033e033f033d0340033e0341033f03420341033d033f0343034403450343034103440346034503470346034803450349034a034b0349033b034a034c034b034d034c034e034b034f034c0350034c034d035003510352034f0351034f0350035303460354034603470354035503560353035503530354035703580359035703250358035a0359035b035a035c0359035d035e035f035d031f035e0360035f036103600362035f0363036003640360036103640365036603630365036303640367035a0368035a035b03680369036a0367036903670368036b036c036d036b036d036e036b036e036f036b036f0370036b03700371037003720371037203730371037303740371037403750371037603770378037603780379037a037b037c037a037d037b037e037f0380037e03800381038203830384038203850383038603870388038603880389038a038b0387038a03870386038c038d038e038c038e038f03900391038d0390038d038c039203930394039203940395039603970398039603990397039a039b039c039a039c039d039e039f03a0039e03a1039f03a203a303a403a203a403a503a603a703a303a603a303a203a803a903aa03a803aa03ab03ac03ad03a903ac03a903a803ae03af03b003ae03ad03af03b103b203b303b103b403b203b503b603b703b503a703b603b803b903ba03b803bb03b903bc03bd03be03bd03ba03be03bf03c003bc03bf03bc03be03c103c203c303c203b303c303c403c503c103c403c103c303c603c703c803c6039103c703c903ca03cb03c903cc03ca03cd03ce03cf03cd038b03ce03d003d103d203d003d303d103d403d503d603d503d203d603d703d803d403d703d403d603d903da03db03da03cb03db03dc03dd03d903dc03d903db03de03df03e003e003e103de03e003e203e103e003e303e203e403e303e003e503e303e403e603e503e403e703e603e403e703e403e803e903ea03eb03eb03ea03ec03ec03ea03ed03ed03ea03ee03ea03e003ee03e003ef03ee03e003f003ef03e003f103f003e003df03f103f203ea03f303ea03f403f303ea03f503f403ea03f603f503ea03f703f603f303f803f203f803f903f203f903fa03f203fa03fb03f203f203fc03fd03fc03fe03fd03fe03ff03fd03ff030004fd0300040104fd03f2030204fc03f20303040204f20304040304f203fb03040405040604070407040804050407040904080407040a0409040b040a0407040c040a040b040d040c040b040e040d040b040e040b040f04100411049a02110412049a02120413049a02130414049a02140415049a0210041604110410041704160410041804170410040104180419041a041b041b041c0419041b041d041c041b041e041d041f041e041b0420041e041f04210420041f04220421041f0422041f049c03230424042504230425042604270428042904270429042a042b042c042d042b042d042e042c042f0430042c0430042d04310427042a0431042a0432043304310432043304320434042f04350436042f0436043004370433043404370434043804350439043a0435043a04360439043b043c0439043c043a043d04370438043d0438043e043f043d043e043f043e0440043b04410442043b0442043c0441044304440441044404420445043f044004450440044604430447044804430448044404490445044604490446044a044b044c044d044b044d044e044f04500451044f0451045204530454045504530455045604570458045904570459045a0458045b045c0458045c0459045d04530456045d0456045e045f045d045e045f045e0460045b04610462045b0462045c0463045f046004630460046404610465046604610466046204650467046804650468046604690463046404690464046a046b0469046a046b046a046c0467046d046e0467046e0468046d046f0470046d0470046e0471046b046c0471046c0472046f04730474046f0474047004750471047204750472047604770478047904770479047a047b047c047d047b047d047e047f04800481047f048104820483048404850483048504860484048704880484048804850489047f048204890482048a048b0489048a048b048a048c0487048d048e0487048e0488048f048b048c048f048c0490048d04910492048d0492048e0491049304940491049404920495048f049004950490049604970495049604970496049804930499049a0493049a04940499049b049c0499049c049a049d04970498049d0498049e049b049f04a0049b04a0049c04a1049d049e04a1049e04a204a304a404a504a304a504a604a704a804a904a704a904aa04ab04ac04ad04ab04ad04ae04af04b004b104af04b104b204b004b304b404b004b404b104b504ab04ae04b504ae04b604b704b504b604b704b604b804b304b904ba04b304ba04b404bb04b704b804bb04b804bc04b904bd04be04b904be04ba04bd04bf04c004bd04c004be04c104bb04bc04c104bc04c204c304c104c204c304c204c404bf04c504c604bf04c604c004c504c704c804c504c804c604c904c304c404c904c404ca04c704cb04cc04c704cc04c804cd04c904ca04cd04ca04ce04cf04d004d104cf04d104d204d304d404d504d304d504d604d704d804d904d704d904da04db04dc04dd04db04dd04de04d804df04e004d804e004d904e104db04de04e104de04e204df04e304e404df04e404e004e504e104e204e504e204e604e304e704e804e304e804e404e904e504e604e904e604ea04e704eb04ec04e704ec04e804ed04e904ea04ed04ea04ee04ef04ed04ee04ef04ee04f004eb04f104f204eb04f204ec04f104f304f404f104f404f204f504ef04f004f504f004f604f304f704f804f304f804f404f904f504f604f904f604fa04fb04fc04fd04fb04fd04fe04ff0400050105ff0401050205030504050505030505050605070508050905070509050a0504050b050c0504050c0505050d0507050a050d050a050e050b050f0510050b0510050c0511050d050e0511050e0512050f05130514050f0514051005150511051205150512051605130517051805130518051405190515051605190516051a051b0519051a051b051a051c0517051d051e0517051e0518051d051f0520051d0520051e0521051b051c0521051c0522051f05230524051f0524052005250521052205250522052605270528052905270529052a052b052c052d052b052d052e052f05300531052f0531053205330534053505330535053605300537053805300538053105390533053605390536053a0537053b053c0537053c0538053d0539053a053d053a053e053b053f0540053b0540053c0541053d053e0541053e0542053f05430544053f0544054005450541054205450542054605470545054605470546054805430549054a0543054a05440549054b054c0549054c054a054d05470548054d0548054e054b054f0550054b0550054c0551054d054e0551054e055205530554055505530555055605570558055905570559055a055b055c055d055b055d055e055f05600561055f05610562055c05630564055c0564055d0565055f056205650562056605630567056805630568056405690565056605690566056a0567056b056c0567056c0568056d0569056a056d056a056e056b056f0570056b0570056c0571056d056e0571056e0572057305710572057305720574056f05750576056f0576057005750577057805750578057605790573057405790574057a0577057b057c0577057c0578057d0579057a057d057a057e057f05800581057f0581058205830584058505830585058605870588058905870589058a058b058c058d058b058d058e0588058f05900588059005890591058b058e0591058e0592058f05930594058f0594059005950591059205950592059605930597059805930598059405990595059605990596059a0597059b059c0597059c0598059d0599059a059d059a059e059f059d059e059f059e05a0059b05a105a2059b05a2059c05a105a305a405a105a405a205a5059f05a005a505a005a605a305a705a805a305a805a405a905a505a605a905a605aa05ab05ac05ad05ab05ad05ae05af05b005b105af05b105b205b305b405b505b305b505b605b705b805b905b705b905ba05b805bb05bc05b805bc05b905bd05af05b205bd05b205be05bf05bd05be05bf05be05c005c105c205c305c105c305c405c205c505c605c205c605c305c705bf05c005c705c005c805c905ca05cb05c905cb05cc05cd05ce05cf05cd05cf05d005ce05d105d205ce05d205cf05d305c905cc05d305cc05d405d105d505d605d105d605d205d705d305d405d705d405d805d505d905da05d505da05d605db05d705d805db05d805dc05dd05de05df05dd05df05e005e105e205e305e105e305e405e505e605e705e505e705e805e905ea05eb05e905eb05ec05e605ed05ee05e605ee05e705ef05e905ec05ef05ec05f005ed05f105f205ed05f205ee05f305ef05f005f305f005f405f105f505f605f105f605f205f705f305f405f705f405f805f505f905fa05f505fa05f605fb05f705f805fb05f805fc05fd05fb05fc05fd05fc05fe05f905ff050006f9050006fa05ff0501060206ff05020600060306fd05fe050306fe05040601060506060601060606020607060306040607060406080609060a060b0609060b060c060d060e060f060d060f061006110612061306110613061406150616061706150617061806120619061a0612061a0613061b06150618061b0618061c0619061d061e0619061e061a061f061b061c061f061c0620061d06210622061d0622061e0623061f062006230620062406210625062606210626062206270623062406270624062806290627062806290628062a0625062b062c0625062c0626062b062d062e062b062e062c062f0629062a062f062a0630062d06310632062d0632062e0633062f06300633063006340635063606370635063706380639063a063b0639063b063c063a063d063e063d063f063e064006410642064006430641064406450646064406400645064706460648064706490646064a0648064b064a06470648064c063c064d064c064e063c064f064d0650064f064c064d0651065206530651065406520654065506520654065606550657065806590657065a0658065b065c065d065b0657065c065e065d065f065e0660065d0661065f06620661065e065f066306530664066306510653066506640666066506630664066706680669066706650668066a0669066b066a066c0669066d066e066f066d0661066e0670066f067106700672066f0673067106740673067006710675067406760675067306740677066b06780677066a066b06790678067a067906770678067b0650067c067b064f0650067d067c067e067d067f067c0680068106820680064a0681068306820684068306850682068606840687068606830684068806870689068806860687068a067e068b068a067d067e068c068b068d068c068a068b068e068d068f068e068c068d0690068f06910690068e068f069206890693069206880689069406930695069406920693069606950697069606940695069806970699069806960697069a0691069b069a06900691069c069b069d069c069a069b069e067a069f069e0679067a06a0069f06a106a0069e069f06a2067606a306a20675067606a406a306a506a406a206a306a606a506a706a606a406a506a806a706a906a806a606a706aa06a106ab06aa06a006a106ac06ab06ad06ac06aa06ab06ae06ad06af06ae06ac06ad06b006af06b106b006ae06af06b206b306b406b306b506b406b306a906b506b306a806a906b606b706b206b606b206b406b806b606b906b806b706b606ba06b106bb06ba06b006b106bc06bb06bd06bc06ba06bb06be069d06bf06be069c069d06c006bf06c106c006be06bf06c206c306c406c306c506c406c3069906c506c30698069906c606c706c206c606c206c406c806c606c906c806c706c606ca06c106cb06ca06c006c106cc06cb06cd06cc06ca06cb06ce06cf06d006d006d106ce06d006d206d106d006d306d206d406d306d006d506d306d406d606d506d406d706d606d406d806d706d406d906da06db06da06d906dc06dc06d906dd06dd06d906de06d906d006de06d006df06de06d006e006df06d006e106e006d006cf06e106e206e306e406e206e406e506e206e506e606e206e606e706e206e706d406e706e806d406e806e906d406e906ea06d406ea06d806d406eb06ec06ed06ed06ec06ee06ee06ec06ef06ef06ec06f006ec06d906f006d906f106f006d906f206f106d906f306f206d906db06f306f406f506f606f406f606f706f406f706f806f406f806f906f406f906e206f906fa06e206fa06fb06e206fb06fc06e206fc06e306e206f406ec06fd06ec06fe06fd06ec06ff06fe06ec060007ff06ec06eb060007fd060107f40601070207f40602070307f4060307f506f406040705070607040706070707080709070a0708070a070b070c070d070e070c070e070f070d07100711070d0711070e0712070407070712070707130710071407150710071507110716071207130716071307170718071607170718071707190714071a071b0714071b0715071a071c071d071a071d071b071e07180719071e0719071f0720071e071f0720071f0721071c07220723071c0723071d072207240725072207250723072607200721072607210727072407280729072407290725072a07260727072a0727072b0728072c072d0728072d0729072e072a072b072e072b072f072c07300731072c0731072d0732072e072f0732072f0733073007340735073007350731073607320733073607330737073407380739073407390735073a07360737073a0737073b0738073c073d0738073d0739073e073a073b073e073b073f073c07400741073c0741073d0742073e073f0742073f0743074007440745074007450741074607420743074607430747074407480749074407490745074a07460747074a0747074b074c074d074e074c074e074f07500751075207500752075307540755075607540756075707580759075a0758075a075b0755075c075d0755075d0756075e0758075b075e075b075f075c07600761075c0761075d0762075e075f0762075f0763076007640765076007650761076607620763076607630767076407680769076407690765076a07660767076a0767076b076c076a076b076c076b076d0768076e076f0768076f0769076e07700771076e0771076f0772076c076d0772076d0773077007740775077007750771077607720773077607730777077407780779077407790775077a07760777077a0777077b0778077c077d0778077d0779077e077a077b077e077b077f077c07800781077c0781077d0782077e077f0782077f0783078007840785078007850781078607820783078607830787078407880789078407890785078a07860787078a0787078b0788078c078d0788078d0789078e078a078b078e078b078f078c07900791078c0791078d0792078e078f0792078f079307940792079307940793079507900796079707900797079107980799079a0798079a079b079c079d079e079c079e079f07a007a107a207a007a207a307a407a507a607a407a607a707a107a807a907a107a907a207aa07a407a707aa07a707ab07a807ac07ad07a807ad07a907ae07aa07ab07ae07ab07af07b007ae07af07b007af07b107ac07b207b307ac07b307ad07b207b407b507b207b507b307b607b007b107b607b107b707b807b607b707b807b707b907b407ba07bb07b407bb07b507ba07bc07bd07ba07bd07bb07be07b807b907be07b907bf07bc07c007c107bc07c107bd07c207be07bf07c207bf07c307c007c407c507c007c507c107c607c207c307c607c307c707c407c807c907c407c907c507ca07c607c707ca07c707cb07c807cc07cd07c807cd07c907ce07ca07cb07ce07cb07cf07cc07d007d107cc07d107cd07d207ce07cf07d207cf07d307d007d407d507d007d507d107d607d207d307d607d307d707d407d807d907d407d907d507da07d607d707da07d707db07d807dc07dd07d807dd07d907de07da07db07de07db07df07dc07e007e107dc07e107dd07e207de07df07e207df07e307e407e507e607e407e607e707e807e907ea07e807ea07eb07ec07ed07ee07ec07ee07ef07f007f107f207f007f207f307ed07f407f507ed07f507ee07f607f007f307f607f307f707f407f807f907f407f907f507fa07f607f707fa07f707fb07f807fc07fd07f807fd07f907fe07fa07fb07fe07fb07ff07fc0700080108fc070108fd070208fe07ff070208ff0703080408020803080408030805080008060807080008070801080608080809080608090807080a08040805080a0805080b0808080c080d0808080d0809080e080a080b080e080b080f080c08100811080c0811080d0812080e080f0812080f0813081008140815081008150811081608120813081608130817081408180819081408190815081a08160817081a0817081b0818081c081d0818081d0819081e081a081b081e081b081f081c08200821081c0821081d0822081e081f0822081f0823082008240825082008250821082608220823082608230827082408280829082408290825082a08260827082a0827082b082c082a082b082c082b082d0828082e082f0828082f0829083008310832083008320833088a0289023408890235083408360837083808370839083808390837083a0837083b083a08360838083c0838083d083c083e083f0840083f084108400842083e0843083e08400843084408450846084508470846084808440849084408460849084a0848084b08480849084b083f084c0841084c084d0841084e084f0850084f08510850085208530854085308550854085608570858085708590858085a085b085c085a085d085b085e085f08600861085e0860086208630864086508620864086608670868086608690867086a086b086c086a086d086b086e086f08700871086e0870087208730874087208750873087608770878087908760878087a087b087c087a087d087b087e087f08800881087e088008820883088408820885088308860885088208860887088508880889088a088b0888088a0889088c088d088a0889088d088e088f0890088e0891088f0892089308940892089508930896089708980899089608980897089a089b08980897089b089c089d089e089c089f089d08a0089f089c08a008a1089f08a208a308a408a508a208a408a308a608a708a408a308a708a808a908aa08ab08a808aa08a908ac08ad08aa08a908ad08ae08af08b008ae08b108af08b208b108ae08b208b308b108b408b508b608b408b708b508b808b908ba08b808bb08b908bc08bd08be08bf08bc08be08c008c108c208c008c308c108c408c508c608c708c408c608c808c908ca08c808cb08c908cc08cd08ce08cf08cc08ce08d008d108d208d308d008d208d408d508d608d408d708d508d808d908da08db08d808da08dc08dd08de08dc08df08dd08e008c408c708e108e008c708c208e208e308c208c108e208e408e508e608e408e708e508e8086e087108e908e8087108ea08eb08ec08ea08ed08eb086f08ee08ef0870086f08ef08f008ed08ea08f008f108ed08ee08f208f308ef08ee08f308f408f508f608f408f708f508f808f908fa08fb08f808fa08fc08fd08fe08fc08ff08fd080009010902090309000902090409ff08fc0804090509ff08010906090709020901090709080909090a090b0908090a090c090d090e090c090f090d09100911091209100913091109140915091609170914091609180919091a091b0918091a091c091d091e091c091f091d0920095c08210920095a085c08220921092309220920092109610860082409250961082409250924092609270925092609650864082809290965082809290928092a092b0929092a092c0968082d092c09660868082e092d092f092e092c092d0930096c08310930096a086c08320931093309320930093109340935093609370934093609380939093a093b0938093a093c0974083d093c09720874083e093d093f093e093c093d0979087808400941097908400941094009420943094109420944097c08450944097a087c08460945094709460944094509810880084809490981084809490948094a094b0949094a094c0984084d094c09820884084e094d094f094e094c094d09500982084c0950098608820851094c094e09510950094c098b088a08520953098b0852095309520954095509530954098a088d08560952098a08560952095609570954095209570958099008590958098e0890085a0959095b095a09580959095c0994085d095c09920894085e095d095f095e095c095d0999089808600961099908600961096009620963096109620998089b08640960099808640960096409650962096009650966099e08670966099c089e086809670969096809660967096a099c0866096a09a0089c086b09660968096b096a096609a508a4086c096d09a5086c096d096c096e096f096d096e09a408a70870096c09a40870096c09700971096e096c097109ab08aa0872097309ab087209730972097409750973097409aa08ad0876097209aa0876097209760977097409720977097809b00879097809ae08b0087a0979097b097a09780979097c09ae0878097c09b208ae087d0978097a097d097c0978097e09b6087f097e09b408b60880097f09810980097e097f098209ba0883098209b808ba08840983098509840982098309bf08be0886098709bf0886098709860988098909870988098a09c2088b098a09c008c2088c098b098d098c098a098b09c708c6088e098f09c7088e098f098e09900991098f0990099209ca0893099209c808ca08940993099509940992099309cf08ce0896099709cf089609970996099809990997099809d308d2089a099b09d3089a099b099a099c099d099b099c099e09d6089f099e09d408d608a0099f09a109a0099e099f09db08da08a209a309db08a209a309a209a409a509a309a409a609de08a709a609dc08de08a809a709a909a809a609a709e108c7088f09aa09e1088f09aa098f099109ab09aa0991098b09e308ac098b09c208e3088d09ac09ad098d098b09ac09ae09af09b009ae09b109af09b209b309b409b209b509b309b60934093709b709b6093709b80938093b09b909b8093b09ba09bb09bc09ba09bd09bb09be09bf09c009be09c109bf093509c209c30936093509c3093909c409c5093a093909c509c609ea08c109c609f008ea08c709c109be09c709c609c109ef08f308c809c409ef08c809c409c809c909c509c409c909ca09f608cb09ca09f408f608cc09cb09cd09cc09ca09cb09fb08fa08ce09cf09fb08ce09cf09ce0953085208cf095308d009fe08d109d009fc08fe08d209d109d309d209d009d10903090209d409d5090309d409d509d409d609d709d509d609d809fc08d009d8090409fc08d909d009d209d909d809d00902090709da09d4090209da09d409da09db09d609d409db090b090a09dc09dd090b09dc09dd09dc09de09df09dd09de09e0090e09e109e0090c090e09e209e109e309e209e009e109e4091209e509e40910091209e609e509e709e609e409e50917091609e809e9091709e809e909e809ea09eb09e909ea091b091a09ec09ed091b09ec09ed09ec09ee09ef09ed09ee09f0091e09f109f0091c091e09f209f109f309f209f009f109f409f509f609f509f709f609f809f909fa09f909fb09fa09fc09fd09fe09fd09ff09fe09000a010a020a010a030a020a040af409050af409f609050a010a060a030a060a070a030a080a040a090a040a050a090a060a0a0a070a0a0a0b0a070a0c0a0d0a0e0a0d0a0f0a0e0a100a110a120a110a130a120a140a150a160a170a140a160a180a190a1a0a180a1b0a190a1c0a1b0a180a1c0a1d0a1b0a1e0a1f0a200a210a1e0a200a1f0a76087908200a1f0a7908220a230a240a220a250a230a7408250a220a74087308250a200a79084109260a200a4109270a260a280a290a270a280a260a41094309280a260a43093d09220a2a0a3d097408220a2b0a2c0a2d0a2b0a2a0a2c0a3f092a0a2b0a3f093d092a0a2e0a2f0a300a2f0a310a300a320a330a340a330a350a340a360a370a380a370a390a380a3a0a3b0a3c0a3b0a3d0a3c0a3e0a3f0a400a3f0a410a400a420a430a440a430a450a440a460a470a480a470a490a480a4a0a4b0a4c0a4b0a4d0a4c0a4e0a4f0a500a4f0a510a500a520a530a540a530a550a540a4f0a520a510a520a540a510a560a570a580a570a590a580a5a0a560a5b0a560a580a5b0a5c0a5a0a5d0a5a0a5b0a5d0a5e0a5f0a600a5f0a610a600a620a630a640a630a650a640a5f0a660a610a660a670a610a680a620a690a620a640a690a660a6a0a670a6a0a6b0a670a6c0a680a6d0a680a690a6d0a6e0a6f0a700a6f0a710a700a720a730a740a720a750a730a760a770a780a790a760a780a7a0a7b0a7c0a7a0a7d0a7b0a7e0a7f0a800a810a7e0a800a820a830a840a820a850a830a860a840a870a860a820a840a740a880a890a740a730a880a620a680a8a0a680a8b0a8a0a8c0a8d0a8e0a8c0a8f0a8d0a8e0a900a910a8e0a8d0a900a920a930a940a920a950a930a960a950a920a960a970a950a980a990a9a0a9b0a980a9a0a990a9c0a9d0a9a0a990a9d0a9e0a940a9f0a9e0a920a940aa00a920a9e0aa00a960a920aa10a9f0aa20aa10a9e0a9f0aa30a9e0aa10aa30aa00a9e0aa40aa50aa60aa70aa40aa60aa80aa90aaa0aab0aa80aaa0aac0aad0aae0aac0aaf0aad0ab00aaf0aac0ab00ab10aaf0ab20ab30ab40ab20ab50ab30ab40ab60ab70ab40ab30ab60ab80ab90aba0abb0ab80aba0ab90abc0abd0aba0ab90abd0ada090709be0a0709bf0abe0ac00ac10ac20ac30ac00ac20ac40ac50ac60ac70ac40ac60ac80ac90aca0ac80acb0ac90acc0acd0ace0acf0acc0ace0ad00ad10ad20ad00ad30ad10aef09ee09d40ad50aef09d40ad50ad40ad60ad70ad50ad60ad80af309d90ad80af209f309da0ad90adb0ada0ad80ad90adc0ae709dd0adc0ae609e709de0add0adf0ade0adc0add0ae00ae309e10ae00ae209e309e20ae10ae30ae20ae00ae10aeb09ea09e40ae50aeb09e40ae50ae40ae60ae70ae50ae60adf09de09e80ae90adf09e80ae90ae80aea0aeb0ae90aea0aec0aed0aee0aec0aef0aed0af00aee0af10af00aec0aee0af20af30af40af50af20af40a5c0a5d0af30af20a5c0af30af60af70af80af90af60af80a6c0a6d0af70af60a6c0af70afa0afb0afc0afa0afd0afb0afe0afc0aff0afe0afa0afc0a000b010b020b000b030b010b040b020b050b040b000b020b810a800a060b070b810a060b070b060b080b090b070b080b0a0ba10a0b0b0a0ba30aa10a0c0b0b0b0d0b0c0b0a0b0b0b0b0ba20a0e0b0b0ba10aa20a0d0b0e0b0f0b0d0b0b0b0e0bab0aaa0a100b110bab0a100b110b100b120b130b110b120b100b140b150b120b100b150b160b170b180b160b190b170b1a0b180b1b0b1a0b160b180b1c0b1d0b1e0b1f0b1c0b1e0b200b210b220b200b230b210b240b230b200b240b250b230bc10a260b270bc20ac10a270b260b280b290b270b260b290b2a0b220b2b0b2a0b200b220b2c0b200b2a0b2c0b240b200b2d0b2b0b190b2d0b2a0b2b0b2e0b2a0b2d0b2e0b2c0b2a0bc50a2f0b300bc60ac50a300b2f0b310b320b300b2f0b320b330b340b350b360b330b350b370b750a720a370b380b750aca0a380b370bca0ac90a380b390b3a0b3b0b3c0b390b3b0b3a0bcc0acf0a3b0b3a0bcf0a3d0b3e0b3f0b3d0b400b3e0bd20a400b3d0bd20ad10a400b410b190b160b410b2d0b190b420b2d0b410b420b2e0b2d0b430b160b1a0b430b410b160b440b410b430b440b420b410b360b350b450b460b360b450b1d0b460b470b1e0b1d0b470b460b450b480b470b460b480b490b4a0b4b0b490b4c0b4a0b4d0b4c0b490b4d0b4e0b4c0b9c0a4f0b500b9d0a9c0a500b4f0bc00ac30a500b4f0bc30a510b4b0b520b510b490b4b0b530b490b510b530b4d0b490b540b520b550b540b510b520b170b510b540b170b530b510ba50a560b570ba60aa50a570b560bc40ac70a570b560bc70a580b590b5a0b5b0b580b5a0b5c0bcb0ac80a5c0b5d0bcb0aae0a5d0b5c0bae0aad0a5d0bcd0a5e0b5f0bce0acd0a5f0b5e0bb80abb0a5f0b5e0bbb0a600bd30ad00a600b610bd30ab70a610b600bb70ab60a610b620b550b630b620b540b550b180b540b620b180b170b540b640b630b650b640b620b630b1b0b620b640b1b0b180b620b5b0b5a0b1c0b660b5b0b1c0b140b660b670b150b140b670b660b1c0b1f0b670b660b1f0b540a550a680b550a690b680b6a0b6b0b6c0b6b0b6d0b6c0b510a540a6e0b540a680b6e0b5d0a5b0a6f0b5b0a700b6f0b5b0a580a700b580a710b700b720b730b740b730b750b740b760b770b780b790b760b780b7a0b760b790b7b0b7a0b790b7c0b7d0b7e0b7f0b7c0b7e0b770b7c0b7f0b780b770b7f0b800b810b820b830b800b820b840b800b830b850b840b830b860b840b850b870b860b850b880b860b870b890b880b870b8a0b8b0b8c0b8d0b8a0b8c0b8e0b8a0b8d0b8f0b8e0b8d0b900b910b920b930b900b920b8b0b900b930b8c0b8b0b930b940b950b960b970b940b960b980b940b970b990b980b970b9a0b980b990b9b0b9a0b990b9c0b9a0b9b0b9d0b9c0b9b0b9e0b9f0ba00ba10b9e0ba00b7d0b9e0ba10b7e0b7d0ba10ba20ba30ba40ba50ba20ba40b9f0ba20ba50ba00b9f0ba50ba60ba70ba80ba90ba60ba80baa0ba60ba90bab0baa0ba90bac0baa0bab0bad0bac0bab0b810bac0bad0b820b810bad0bae0baf0bb00bb10bae0bb00b910bae0bb10b920b910bb10bb20bb30bb40bb50bb20bb40baf0bb20bb50bb00baf0bb50bb60bb70bb80bb90bb60bb80bba0bb60bb90bbb0bba0bb90bbc0bba0bbb0bbd0bbc0bbb0b950bbc0bbd0b960b950bbd0b3a0bbe0bbf0b3a0bbf0bc00bc10bc20bcc0ac00bc10bcc0ac00bcc0a3a0bc30bc40bc50bc40bc60bc50bc40bc70bc60bc50bc80bc30bc80bc90bc30bca0bcb0bcc0bca0bcc0bcd0bcd0bce0bca0bcd0bcf0bce0bcf0bd00bce0bc40bd10bd20bd10bd30bd20bd10bd40bd30bd20bd50bc40bd50bc70bc40bcc0ac20bd60bcc0ad60bd70bd80bd90bcd0ad70bd80bcd0ad70bcd0acc0ada0bdb0bdc0bda0bdc0bdd0bde0bda0bdd0bdd0bdf0bde0bdf0be00bde0be10be20be30be10be30be40be40bca0be10be40be50bca0be50bcb0bca0bde0be00be60bde0be60be70be80bde0be70be70be90be80be90bea0be80beb0bec0bed0bee0beb0bed0bef0beb0bee0bf00bef0bee0bf10bf20bf30bf40bf10bf30bec0bf10bf40bed0bec0bf40bf50bf60bf70bf80bf50bf70bf90bf50bf80bfa0bf90bf80bfb0bf90bfa0bfc0bfb0bfa0bfd0bfb0bfc0bfe0bfd0bfc0bff0b000c010c020cff0b010c030cff0b020c040c030c020c050c060c070c080c050c070c000c050c080c010c000c080c090c0a0c0b0c0c0c090c0b0c0d0c090c0c0c0e0c0d0c0c0c0f0c0d0c0e0c100c0f0c0e0c110c0f0c100c120c110c100c130c140c150c160c130c150cf20b130c160cf30bf20b160c170c180c190c1a0c170c190c140c170c1a0c150c140c1a0c1b0c1c0c1d0c1e0c1b0c1d0c1f0c1b0c1e0c200c1f0c1e0c210c1f0c200c220c210c200cf60b210c220cf70bf60b220c230c240c250c260c230c250c060c230c260c070c060c260c270c280c290c2a0c270c290c240c270c2a0c250c240c2a0c2b0c2c0c2d0c2e0c2b0c2d0c2f0c2b0c2e0c300c2f0c2e0c310c2f0c300c320c310c300c0a0c310c320c0b0c0a0c320cb80a330c340cb80a340c350c360c370cb90a350c360cb90a350cb90ab80a380c390c3a0c380c3a0c3b0c3c0c380c3b0c3b0c3d0c3c0c3d0c3e0c3c0c3f0c400c410c3f0c410c420c420c430c3f0c420c440c430c440c450c430c460c470c480c470c490c480c470c4a0c490c480c4b0c460c4b0c4c0c460c5e0b4d0c4e0c5e0b4e0c4f0c500c330cb80a4f0c500cb80a4f0cb80a5e0b3c0c3e0c510c3c0c510c520c530c3c0c520c520c540c530c540c550c530c430c450c560c430c560c570c570c580c430c570c590c580c590c5a0c580c5b0c460c5c0c460c5d0c5c0c460c4c0c5d0c5c0c5e0c5b0c5e0c5f0c5b0c600c610c620c610c630c620ce70be60b640ce60b650c640ce50be40b660ce40b670c660c680c690c6a0c690c6b0c6a0c6c0c600c6d0c600c620c6d0c690c6e0c6b0c6e0c6f0c6b0c700c6c0c710c6c0c6d0c710c6e0c720c6f0c720c730c6f0c740c700c750c700c710c750c720c760c730c760c770c730c780c740c790c740c750c790c760c7a0c770c7a0c7b0c770c7c0c780c7d0c780c790c7d0c7a0c7e0c7b0c7e0c7f0c7b0c800c7c0c810c7c0c7d0c810c7e0c820c7f0c820c830c7f0c840c800c850c800c810c850c820c860c830c860c870c830cbf0bbe0b880cbe0b890c880cea0be90b8a0ce90b8b0c8a0ce30be20b8c0ce20b8d0c8c0c8e0c8f0c900c8f0c910c900cc00bbf0b920cbf0b880c920c8f0c930c910c930c940c910cc10bc00b950cc00b920c950c930c960c940c960c970c940cc20bc10b980cc10b950c980c960c990c970c990c9a0c970cd60bc20b9b0cc20b980c9b0c990c9c0c9a0c9c0c9d0c9a0cd70bd60b9e0cd60b9b0c9e0c9c0c9f0c9d0c9f0ca00c9d0cd80bd70ba10cd70b9e0ca10c9f0ca20ca00ca20ca30ca00cd90bd80ba40cd80ba10ca40ca20ca50ca30ca50ca60ca30ca70ca80ca90ca80caa0ca90ce00bdf0bab0cdf0bac0cab0ccc0bcb0bad0ccb0bae0cad0caf0cb00cb10cb00cb20cb10cb30ca70cb40ca70ca90cb40cb00cb50cb20cb50cb60cb20cb70cb30cb80cb30cb40cb80cb50cb90cb60cb90cba0cb60cbb0cb70cbc0cb70cb80cbc0cb90cbd0cba0cbd0cbe0cba0cbf0cbb0cc00cbb0cbc0cc00cbd0cc10cbe0cc10cc20cbe0cc30cbf0cc40cbf0cc00cc40cc10cc50cc20cc50cc60cc20cc70cc30cc80cc30cc40cc80cc50cc90cc60cc90cca0cc60ccb0cc70ccc0cc70cc80ccc0cc90ccd0cca0ccd0cce0cca0ccf0cd00cd10cd00cd20cd10cdd0bdc0bd30cdc0bd40cd30ccf0bcd0bd50ccd0bd60cd50cd70cd80cd90cd80cda0cd90cdb0ccf0cdc0ccf0cd10cdc0cd80cdd0cda0cdd0cde0cda0cdf0cdb0ce00cdb0cdc0ce00cdd0ce10cde0ce10ce20cde0ce30cdf0ce40cdf0ce00ce40ce10ce50ce20ce50ce60ce20ce70ce30ce80ce30ce40ce80ce50ce90ce60ce90cea0ce60ceb0ce70cec0ce70ce80cec0ce90ced0cea0ced0cee0cea0cef0ceb0cf00ceb0cec0cf00ced0cf10cee0cf10cf20cee0cf30cef0cf40cef0cf00cf40cf10cf50cf20cf50cf60cf20c4e0c4d0cf70c4d0cf80cf70c550c540cf90c540cfa0cf90c410c400cfb0c400cfc0cfb0cfd0cfe0cff0cfe0c000dff0c4f0c4e0c010d4e0cf70c010dfe0c020d000d020d030d000d500c4f0c040d4f0c010d040d020d050d030d050d060d030d330c500c070d500c040d070d050d080d060d080d090d060d340c330c0a0d330c070d0a0d080d0b0d090d0b0d0c0d090d350c340c0d0d340c0a0d0d0d0b0d0e0d0c0d0e0d0f0d0c0d360c350c100d350c0d0d100d0e0d110d0f0d110d120d0f0d370c360c130d360c100d130d110d140d120d140d150d120d160d170d180d170d190d180d1a0d1b0d1c0d1b0d1d0d1c0d440c420c1e0d420c1f0d1e0d1b0d200d1d0d200d210d1d0d170d220d190d220d230d190d240d1a0d250d1a0d1c0d250d220d260d230d260d270d230d280d240d290d240d250d290d260d2a0d270d2a0d2b0d270d2c0d280d2d0d280d290d2d0d2a0d2e0d2b0d2e0d2f0d2b0d300d2c0d310d2c0d2d0d310d2e0d320d2f0d320d330d2f0d340d300d350d300d310d350d320d360d330d360d370d330d380d340d390d340d350d390d360d3a0d370d3a0d3b0d370d520c510c3c0d510c3d0d3c0d3e0d3f0d400d3f0d410d400d420d430d440d430d450d440d560c450c460d450c470d460d430d480d450d480d490d450d3f0d4a0d410d4a0d4b0d410d4c0d420d4d0d420d440d4d0d4a0d4e0d4b0d4e0d4f0d4b0d500d4c0d510d4c0d4d0d510d4e0d520d4f0d520d530d4f0d540d500d550d500d510d550d520d560d530d560d570d530d580d540d590d540d550d590d560d5a0d570d5a0d5b0d570d5c0d580d5d0d580d590d5d0d5a0d5e0d5b0d5e0d5f0d5b0d600d5c0d610d5c0d5d0d610d5e0d620d5f0d620d630d5f0d3e0c3d0c640d3d0c650d640d660d670d680d670d690d680d6a0d6b0d6c0d6b0d6d0d6c0d590c570c6e0d570c6f0d6e0d6b0d700d6d0d700d710d6d0d670d720d690d720d730d690d740d6a0d750d6a0d6c0d750d720d760d730d760d770d730d780d740d790d740d750d790d760d7a0d770d7a0d7b0d770d7c0d780d7d0d780d790d7d0d7a0d7e0d7b0d7e0d7f0d7b0d800d7c0d810d7c0d7d0d810d7e0d820d7f0d820d830d7f0d840d800d850d800d810d850d820d860d830d860d870d830d880d840d890d840d850d890d860d8a0d870d8a0d8b0d870d3b0c3a0c8c0d3a0c8d0d8c0d8e0d8f0d900d8e0d910d8f0dc909920d930d940dc909930d950d960d970d950d980d960d970d990d9a0d970d960d990d9b0d9c0d9d0d9b0d9e0d9c0d9f0da00da10d9f0da20da00df208a30da40df308f208a40da50da60da70da50da80da60da90da70daa0da90da50da70dab0dac0dad0dae0dab0dad0dc809af0d920dc909c809920db00db10db20db30db00db20db40db50db60db40db70db50d9d0db80db90d9d0d9c0db80d8f0aba0d8d0a8f0abb0dba0dbc0dbd0dbe0dbc0dbf0dbd0dde09c00dc10de80ade09c10de80ac10dc20dea0ae80ac20dc30dc40dc50dc30dc60dc40dc70dc50dc80dc70dc30dc50dc90d9e0d9b0dc90dca0d9e0dbe0dca0dc90dbe0dbd0dca0dcb0dbf0dbc0dcb0dcc0dbf0d900acc0dcb0d900acd0dcc0dce0dcf0dd00dce0dd10dcf0dd20dd30dd40dd50dd20dd40dd60d910d8e0dd60dd70d910dd80dd70dd60dd80dcd09d70d920dd90dda0d930d920dda0dd90d52085408da0dd90d5408db0ddc0ddd0ddb0dde0ddc0d980ddd0d960d980ddb0ddd0ddd0ddf0de00ddd0ddc0ddf0d960de00d990d960ddd0de00de10de20de30de10de40de20de50da20d9f0de50de60da20de70de60de50de70de80de60da30de90dea0da40da30dea0de90df808fb08ea0de90dfb08eb0da80da50deb0dec0da80ded0dec0deb0ded0dee0dec0def0da50da90def0deb0da50df00deb0def0df00ded0deb0dac0df10df20dad0dac0df20df10df30df40df20df10df40daf0df50dd90d920daf0dd90df50dcf095208d90df50d5208f60df70df80df90df60df80df90df80db10db00df90db10dfa0dfb0dfc0dfa0dfd0dfb0db70dfc0db50db70dfa0dfc0de30dfe0dff0de30de20dfe0d9c0dff0db80d9c0de30dff0d000e010e020e000e030e010ebb0d020eba0dbb0d000e020e020e040e050e020e010e040e060e070e080e060e090e070ec00d0a0e0b0ec10dc00d0b0e0a0e0c0e0d0e0b0e0a0e0d0ec10d0b0e0e0ec20dc10d0e0e0b0e0d0e0f0e0e0e0b0e0f0e100ec60dc30d100e110ec60d120e110e100e120e130e110e140ec30dc70d140e100ec30d150e100e140e150e120e100e080e160e170e080e070e160e180e090e060e180e190e090e1a0e1b0e1c0e1a0e1d0e1b0ed10d1c0ecf0dd10d1a0e1c0e1e0e1f0e200e210e1e0e200e210e200ed30dd20d210ed30d220e230e240e230e250e240e260e270e280e270e290e280e2a0e2b0e2c0e2b0e2d0e2c0e2e0e2f0e300e2f0e310e300e320e330e340e330e350e340e360e370e380e370e390e380e3a0e3b0e3c0e3b0e3d0e3c0e2f0e3e0e310e3e0e3f0e310e400e320e410e320e340e410e3e0e420e3f0e420e430e3f0e440e400e450e400e410e450e460e470e480e470e490e480e4a0e440e4b0e440e450e4b0e4c0e4d0e4e0e4d0e4f0e4e0e500e4a0e510e4a0e4b0e510e520e530e540e530e550e540e560e570e580e570e590e580e5a0e5b0e5c0e5b0e5d0e5c0e5e0e500e5f0e500e510e5f0e600e610e620e610e630e620e640e650e660e650e670e660e680e260e690e260e280e690e6a0e6b0e6c0e6c0e6b0e6d0e6e0e6f0e700e700e6f0e710e720e730e740e720e750e730e760e770e780e760e790e770e7a0e7b0e7c0e7d0e7a0e7c0e7e0e7f0e800e810e7e0e800e820e830e840e820e850e830e810e800e860e870e810e860e870e860e7b0e7a0e870e7b0e880e890e8a0e880e8b0e890e6b0e8c0e6d0e6b0e8d0e8c0e8e0e8f0e900e8e0e910e8f0e920e930e940e950e920e940e960e6b0e6a0e960e970e6b0e980e970e960e980e990e970e6f0e9a0e9b0e710e6f0e9b0e9a0e9c0e9d0e9b0e9a0e9d0e9e0e9f0ea00e9e0ea10e9f0e740ea10e9e0e740e730ea10ea20e790e760ea20ea30e790ea40ea30ea20ea40ea50ea30e7b0ea60ea70e7c0e7b0ea70ea60ea80ea90ea70ea60ea90e7f0eaa0eab0e800e7f0eab0eaa0eac0ead0eab0eaa0ead0eae0e850e820eae0eaf0e850eb00eaf0eae0eb00eb10eaf0e800eab0eb20e860e800eb20eab0ead0eb30eb20eab0eb30e860eb20ea60e7b0e860ea60eb20eb30ea80ea60eb20ea80eb40e8b0e880eb40eb50e8b0eb60eb50eb40eb60eb70eb50e970e8d0e6b0e970eb80e8d0e990eb80e970e990eb90eb80eba0ebb0ebc0eba0ebd0ebb0e900ebd0eba0e900e8f0ebd0ebe0ebf0ec00ec10ebe0ec00ebf0e920e950ec00ebf0e950ec20e740ac30ec20e720a740ac40e760a790ac50ec40e790a7c0ac60ec70e7c0a7b0ac60ec80ec90eca0ecb0ec80eca0ecc0e7e0a810acd0ecc0e810ace0ecf0ed00ece0ed10ecf0ed20ed00ed30ed20ece0ed00ec30e890ad40ec30e740a890ad50eae0ad60ed50eac0aae0ad70eac0ad50ed70eb00aac0ad80eb40ad90ed80eb20ab40aba0abd0ada0edb0eba0ada0edc0eca0add0edc0ec80aca0a020bde0edf0e020b010bde0e050bdf0ee00e050b020bdf0ecd0e810a070be10ecd0e070be10e070b090be20ee10e090be30e720ac20ee30e370b720add0e370be30edd0eca0a370be40ec80adc0ee40e5c0bc80ad60e5c0be40ed60eae0a5c0be50ee60ee70ee50ee80ee60e750b730be90eea0e750be90ee40deb0ee20de40dec0eeb0eed0eee0eef0ef00eed0eef0ef10ee80de70df10ef20ee80df30ef40ef50ef60ef30ef50ef70ef80ef90e0c0ef70ef90efa0eee0ded0dfa0efb0eee0dfc0eed0df00dfc0efa0eed0de20dfd0efe0de20deb0efd0e010efe0e040e010eff0efe0e030eff0e010e030e000fff0e010f020f030f010f040f020f050f060f070f080f050f070f090e090f070e090e0a0f090f0b0f130e120e0b0f0c0f130e0d0f120e150e0d0f0b0f120e0c0ef90e0e0f0d0e0c0e0e0f0d0e0e0f0f0f0f0e0d0e0f0f160eec0ee40d160e100fec0e070e100f160e070e090f100f190e0a0f090e190e110f0a0f040e110f190e040efe0e110f1d0e120f1b0e1d0e130f120f140f150f1f0e1e0e140f1f0e160f170f180f190f160f180f1a0f1b0f1c0f1d0f1a0f1c0f1e0f1a0f1d0f1f0f1e0f1d0f200f210f220f200f220f230f240f250f260f240f260f270f1b0f280f290f1c0f1b0f290f280f230f220f290f280f220f190f180f2a0f2b0f190f2a0f2b0f2a0f270f260f2b0f270f1d0f1c0f2c0f2d0f1d0f2c0f2d0f2c0f2e0f2f0f2d0f2e0f1f0f1d0f2d0f300f1f0f2d0f300f2d0f2f0f310f300f2f0f1c0f290f320f2c0f1c0f320f2c0f320f330f2e0f2c0f330f290f220f340f320f290f340f320f340f350f330f320f350f360f370f380f390f360f380f390f380f170f160f390f170f3a0f3b0f3c0f3d0f3a0f3c0f3d0f3c0f1b0f1a0f3d0f1b0f3e0f3a0f3d0f3f0f3e0f3d0f3f0f3d0f1a0f1e0f3f0f1a0f3b0f400f410f3c0f3b0f410f3c0f410f280f1b0f3c0f280f400f420f430f410f400f430f410f430f230f280f410f230f440f450f3b0f3a0f440f3b0f460f470f450f440f460f450f480f440f3a0f3e0f480f3a0f490f460f440f480f490f440f170f4a0f4b0f180f170f4b0f4a0f1e0f1f0f4b0f4a0f1f0f4c0f310f4d0f4e0f4c0f4d0f270f4c0f4e0f240f270f4e0f180f4b0f4f0f2a0f180f4f0f4b0f1f0f300f4f0f4b0f300f2a0f4f0f4c0f270f2a0f4c0f4f0f300f310f4c0f4f0f310f370f500f510f380f370f510f500f3e0f3f0f510f500f3f0f380f510f4a0f170f380f4a0f510f3f0f1e0f4a0f510f1e0f520f530f500f370f520f500f530f480f3e0f500f530f3e0f540f550f530f520f540f530f550f490f480f530f550f480f560f570f460f560f460f490f580f560f490f580f490f550f590f5a0f2f0f590f2f0f2e0f5b0f5c0f240f5b0f240f4e0f5d0f5e0f2b0f5d0f2b0f260f5f0f600f160f5f0f160f190f5a0f590f610f590f620f610f570f560f630f560f640f630f560f580f640f580f650f640f660f670f680f660f680f690f6a0f660f690f6a0f690f6b0f6c0f6d0f6e0f6c0f6f0f6d0f700f710f720f730f700f720f740f6e0f750f740f6c0f6e0f760f750f770f760f740f750f730f720f780f790f730f780f790f780f7a0f7b0f790f7a0f7c0f7d0f7e0f7f0f7c0f7e0f800f810f820f810f830f820f720f710f840f710f850f840f860f800f870f800f820f870f780f720f880f720f840f880f810f890f830f890f8a0f830f7a0f780f8b0f780f880f8b0f670f660f8c0f660f8d0f8c0f660f6a0f8d0f6a0f8e0f8d0f8f0f900f910f920f8f0f910f930f940f950f960f930f950f960f950f900f8f0f960f900f970f980f990f9a0f970f990f9a0f990f9b0f9c0f9a0f9b0f9d0f9e0f980f970f9d0f980f9f0fa00f9e0f9d0f9f0f9e0fa10fa20fa30fa40fa10fa30fa50fa60fa00f9f0fa50fa00fa40fa30fa70fa80fa40fa70fa80fa70fa60fa50fa80fa60f7d0fa90faa0f7e0f7d0faa0fa90f970f9a0faa0fa90f9a0f7e0faa0fab0fac0f7e0fab0faa0f9a0f9c0fab0faa0f9c0fad0fae0fa90f7d0fad0fa90fae0f9d0f970fa90fae0f970f910faf0fae0fad0f910fae0faf0f9f0f9d0fae0faf0f9d0fb00fb10fb20f940fb00fb20fb10fa10fa40fb20fb10fa40f900fb30faf0f910f900faf0fb30fa50f9f0faf0fb30f9f0f940fb20fb40f950f940fb40fb20fa40fa80fb40fb20fa80f950fb40fb30f900f950fb30fb40fa80fa50fb30fb40fa50fb50fb60fb70fb60fb80fb70fb50fb70fb90fb70fba0fb90fb80fb60fbb0fb60fbc0fbb0fbd0fbe0fbf0fbe0fc00fbf0fc10fbd0fc20fbd0fbf0fc20fc30fc40fc50fc40fc60fc50fc70fc80fc90fc80fca0fc90fcb0fc30fcc0fc30fc50fcc0fcd0fcb0fce0fcb0fcc0fce0fbe0fcf0fc00fcf0fd00fc00fd10fd20fd30fd20fd40fd30fd50fd60fd70fd50fd80fd60fd90fda0fdb0fdc0fd90fdb0fdd0fde0fdf0fdd0fe00fde0fe10fe20fe30fe40fe10fe30fe50fd80fd50fe50fe60fd80fe70fe80fe90fea0fe70fe90fd70feb0fec0fd70fd60feb0fed0fd70fee0fed0fd50fd70fef0fee0ff00fef0fed0fee0fdc0fdb0ff10ff20fdc0ff10ff20ff10fd20fd10ff20fd20ff30fdf0ff40ff30fdd0fdf0ff50ff40ff60ff50ff30ff40fe40fe30ff70ff80fe40ff70ff80ff70fc40fc30ff80fc40ff90fd50fed0ff90fe50fd50ffa0fed0fef0ffa0ff90fed0fea0fe90ffb0ffc0fea0ffb0ffc0ffb0fcb0fcd0ffc0fcb0fee0fec0ffd0fee0fd70fec0ff00ffd0ffe0ff00fee0ffd0fff0f001001100010021001100310041005100410061005100410031007100810041007100910041008100a10091008100b100c100d100e100b100d100c100f1010100d100c1010101110121013101410111013101210151016101310121016101710181019101a101710191003101b101c10071003101c101b1017101a101c101b101a1018101d101e10191018101e101d10111014101e101d1014101f10201021100f101f102110221023100010ff0f2210001024102210ff0f25102410ff0f26101f100f100c1026100f10271026100c100b1027100c10281029102a102b1028102a1023102c102d10001023102d102c1028102b102d102c102b1029102e102f102a1029102f102e1027100b102f102e100b103010311032103310301032103310321020101f10331020103410351036103710341036103710361023102210371023103810341037103910381037103910371022102410391022103a10301033103b103a1033103b1033101f1026103b101f103c103a103b103d103c103b103d103b10261027103d1026103e103f10401041103e104010411040102910281041102910351042104310361035104310361043102c10231036102c1042103e1041104310421041104310411028102c10431028103f104410451040103f104510401045102e10291040102e1044103c103d10451044103d1045103d1027102e10451027100810071046104710081046100a100810471048100a1047101410131049104a1014104910131016104b10491013104b101a1019104c104d101a104c1007101c104e10461007104e101c101a104d104e101c104d1019101e104f104c1019104f101e1014104a104f101e104a104710461050105110471050105110501035103410511035104810471051105210481051105210511034103810521034104a104910531054104a105310541053103a103c1054103a1049104b1055105310491055105310551030103a10531030104d104c10561057104d105610571056103f103e1057103f1046104e1058105010461058105010581042103510501042104e104d10571058104e105710581057103e10421058103e104c104f10591056104c1059105610591044103f10561044104f104a10541059104f105410591054103c10441059103c105a105b105c105a105d105b105e105c105f105e105a105c105d1060105b105d10611060106210631064106210651063106610671068106610691067106a1064106b106a106210641069106b10671069106a106b106c106d106e106c106f106d105c106f106c105c105b106f1070106e10711070106c106e106f1072106d106f1073107210741075107610741077107510781079107a1078107b1079107c1076107d107c10741076106b1074107c106b10641074107b107d1079107b107c107d107e107f1080107f10811080108210831084108310851084108610871088108710891088108a108b108c108b108d108c108e108f1090108f10911090109210931094109310951094109610971098109710991098109a109b109c109b109d109c109e109f10a0109f10a110a010a210a310a410a310a510a410a610a710a810a710a910a8109f10aa10a110aa10ab10a110ac10ad10ae10ad10af10ae10b010a210b110a210a410b110b210b310b410b310b510b410b610b710b810b710b910b810ba10bb10bc10bb10bd10bc10be10bf10c010bf10c110c010c210c310c410c210c510c310c610c710c810c610c910c710ca10cb10cc10ca10cd10cb10ce10cf10d010ce10d110cf10d110d210cf10d110d310d210d410d510d610d410d710d510d810d910da10db10d810da10dc10dd10de10dc10df10dd10e010e110e210e310e010e210e410e510e610e710e410e610e810e910ea10e810eb10e910ec10ea10ed10ec10e810ea10d610ee10ef10d610d510ee10f010f110f210f010f310f110f410f310f010f410f510f310f610f710f810f610f910f710fa10fb10fc10fd10fa10fc10fe10ff100011fe100111ff10021103110411021105110311061104110711061102110411e710e61008110911e7100811091108110a110b1109110a110c11d710d4100c110d11d71000110d110c110011ff100d110e110111fe100e110f110111f2100f110e11f210f1100f11101111111211101113111111141115111611171114111611 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 4376 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 40 + format: 2 + dimension: 4 + - stream: 0 + offset: 44 + format: 0 + dimension: 2 + - stream: 0 + offset: 52 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 262560 + _typelessdata: 0000004100009040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff00000041000000c06fd70a3ecb30543f1904184100009040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff19041841000080c020af333eadc95f3f1904184100009040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff19041841000000c08b46013ee0bc5f3f0000004100009040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff00000041000080c03d2d353ea366563f000080bf00004040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000803f000000c07a08fe3d2e03c73e000080bf00004040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000803f000080c085032f3e2e03c73e0000000000004040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00000000000080c085032f3eff02d33e0000000000004040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00000000000000c07b08fe3dff02d33e19041841000090406210204000000000000080bf000000000000803f00000000000000000000803fffffffff1904184162102040abb15f3cd9755f3f00000041000090406210204000000000000080bf000000000000803f00000000000000000000803fffffffff00000041621020404977653c20d8553f00000041000090400000000000000000000080bf000000000000803f00000000000000000000803fffffffff000000410000000014dd9c3d98fe553f19041841000090400000000000000000000080bf000000000000803f00000000000000000000803fffffffff190418410000000061249c3d509c5f3f7b141e4100006040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff7b141e4100006040cfc43f3f83c5123f0000004100004040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000004100004040520c4b3f8ec50f3f0000004100006040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000004100006040510c4b3f83c5123f7b141e4100004040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff7b141e4100004040cfc43f3f8ec50f3f0000204100008040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000204100008040f485dc3e464a6f3f0000004100006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff00000041000060409785f43e524a6c3f0000004100008040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff00000041000080409685f43e464a6f3f0000204100006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000204100006040f585dc3e524a6c3ff628fc4000004040f628bcc000000000000000000000803f000080bf0000000000000000000080bffffffffff628fcc000004040f3c4363fa698733f7b141e4100004040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff7b141ec100004040c5c4423fa698733f7b141e4100006040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff7b141ec100006040c5c4423f9a98763ff628fc4000006040f628bcc000000000000000000000803f000080bf0000000000000000000080bffffffffff628fcc000006040f3c4363f9a98763f00000041000060400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100006040ed88613fefca433f00002041000060400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100006040bf886d3fefca433f00002041000080400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100008040bf886d3fe4ca463f00000041000080400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100008040ed88613fe4ca463f00008040000060408fc2f5bd0000000000000000000080bf0000803f0000000000000000000080bfffffffff00008040000060409ff95d3f98479c3d00000040000040408fc2f5bd0000000000000000000080bf0000803f0000000000000000000080bfffffffff000000400000404071f9693ff247843d00000040000060408fc2f5bd0000000000000000000080bf0000803f0000000000000000000080bfffffffff000000400000604070f9693f96479c3d00008040000040408fc2f5bd0000000000000000000080bf0000803f0000000000000000000080bfffffffff0000804000004040a0f95d3ff347843d0000804000008040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000080c00000804050415d3fa83b823d0000004000006040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000060402241693f0378543d0000004000008040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000080402141693fa53b823d0000804000006040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000080c00000604051415d3f0878543d14ae074000004040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff14ae07c000004040d541393febbeb33e0000804000004040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000040405889443febbeb33e0000804000006040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000060405889443fd4beb93e14ae074000006040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff14ae07c000006040d541393fd4beb93e0000004000006040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000060407e41513fc0c1603c0000804000006040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c00000604050415d3fc5c1603c0000804000008040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c00000804050415d3f6e5fd03c0000004000008040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000080407e41513f6c5fd03c0ad7c340000060408ec2f5bd6b82713100000000000080bf0000803f000000006b827131000080bfffffffff0ad7c340000060407e41513f97479c3d0ad7c340000040408ec2f5bd6b82713100000000000080bf0000803f000000006b827131000080bfffffffff0ad7c340000040407f41513ff347843d0000c04000008040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000080407e41513fa73b823d0000c04000006040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000060407f41513f0678543d0000c04000004040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000c0c0000040402b89503febbeb33e0000c04000006040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000c0c0000060402b89503fd4beb93e0000c04000006040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000c0c0000060402341693fc5c1603c0000c04000008040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000c0c0000080402341693f6e5fd03c7b141e4100006040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000804000006040de91f23e51b0b13e7b141e4100004040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004000004040c048053f67b0ab3e7b141e4100006040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004000006040c048053f50b0b13e7b141e4100004040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000804000004040df91f23e68b0ab3e0000204100008040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000080407d02f43e4f2aab3e0000204100006040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c0000060400f01063f5e2aa53e0000204100008040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c0000080401001063f472aab3e0000204100006040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000060407c02f43e662aa53e8fc2f53d00004040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000004040dc92b03e79c75c3f8fc2f53d00004040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c0000040408092c83e79c75c3f8fc2f53d00006040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c0000060408092c83e6dc75f3f8fc2f53d00006040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000006040dc92b03e6dc75f3f0000000000006040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c00000604050415d3f9a90d83c0000000000006040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c0000060402341693f9a90d83c0000000000008040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c0000080402341693f93471c3d0000000000008040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c00000804050415d3f93471c3d7b141e410000604000000000000080bf00000000000000000000000000000000000080bf000080bfffffffff00000000000060409248113f52b0b13e7b141e4100004040ec513840000080bf00000000000000000000000000000000000080bf000080bfffffffffec5138c000004040fd8f223f67b0ab3e7b141e4100006040ec513840000080bf00000000000000000000000000000000000080bf000080bfffffffffec5138c000006040fc8f223f51b0b13e7b141e410000404000000000000080bf00000000000000000000000000000000000080bf000080bfffffffff00000000000040409248113f69b0ab3e000020410000804000000000000080bf00000000000000000000000000000000000080bf000080bfffffffff0000000000008040e100123f422aab3e000020410000604000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000060409c00243f4e2aa53e000020410000804000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000080409c00243f372aab3e000020410000604000000000000080bf00000000000000000000000000000000000080bf000080bfffffffff0000000000006040e100123f592aa53e0000c04000006040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000006040ae83243f41507c3f0000c04000006040000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000060406983363f41507c3f0000c04000008040000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000080406983363f36507f3f0000c04000008040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000008040ae83243f36507f3f0ad7c34000004040ec5138400000803f000000000000000000000000000000000000803f000080bfffffffffec5138400000404075420f3fce0e763f0ad7c340000040408ec2f5bd0000803f000000000000000000000000000000000000803f000080bfffffffff8ec2f5bd000040403042213fce0e763f0ad7c340000060408ec2f5bd0000803f000000000000000000000000000000000000803f000080bfffffffff8ec2f5bd000060403042213fc30e793f0ad7c34000006040ec5138400000803f000000000000000000000000000000000000803f000080bfffffffffec5138400000604075420f3fc30e793f77be7f3f00009040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff77be7f3f000000c07faf013ed5ea2d3f0000004000009040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff00000040000080c0f31a313edbcd313f0000004000009040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff00000040000000c0245e043e356e333f77be7f3f00009040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff77be7f3f000080c0b57d2d3ee43b2c3f0000000000008040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff00000000000000c01309233fef6a4e3e0000003f00008040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000080c02766293f74d7783e0000003f00008040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000000c00cea203f09e7563e0000000000008040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff00000000000080c02e852b3f5a5b703e0000003f000060408fc2f5bdca6ba8b200000000000080bf0000803f00000000ca6ba8b2000080bfffffffff0000003f000060404ef9723f96479c3d8ec2f53d000040408ec2f5bdca6ba8b200000000000080bf0000803f00000000ca6ba8b2000080bfffffffff8ec2f53d00004040f340753ff447843d8ec2f53d000060408ec2f5bdca6ba8b200000000000080bf0000803f00000000ca6ba8b2000080bfffffffff8ec2f53d00006040f340753f99479c3d0000003f000040408fc2f5bdca6ba8b200000000000080bf0000803f00000000ca6ba8b2000080bfffffffff0000003f000040404ef9723ff247843d0000003f00008040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf00008040fe40723fa53b823d0000000000006040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000006040f440753f0878543d0000000000008040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000008040f340753fa83b823d0000003f00006040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf00006040ff40723f0278543d8ec2f53d00004040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff8ec2f5bd000040403706493f6d0c473f0000003f00004040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00004040dc4d4b3f6d0c473f0000003f00006040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00006040dc4d4b3f610c4a3f8ec2f53d00006040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff8ec2f5bd000060403706493f610c4a3f14ae074000004040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff14ae07c0000040400906553f6d0c473f14ae074000006040f628bcc000000000000000000000803f000080bf0000000000000000000080bfffffffff14ae07c0000060400906553f610c4a3f00000000000060400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff00000000000060403706493fefca433f0000003f000060400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf000060402b064c3fefca433f0000003f000080400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf000080402b064c3fe4ca463f00000000000080400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff00000000000080403706493fe4ca463f00000040000060400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000060400906553fefca433f00000040000080400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000080400906553fe4ca463f0000004100009040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff00000041000000bf009fb63df902563f1904184100009040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff19041841000000bf8fc4b53d04a45f3f00000041000090400000000000000000000080bf000000000000803f00000000000000000000803fffffffff000000410000000012be083f233f223f0000004100009040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff00000041000000bf3a9f063fed1f203f1904184100009040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff19041841000000bfeffd0c3f4ec2193f000000400000904077be7fbf00000000000080bf000000000000803f00000000000000000000803fffffffff0000004077be7fbf5ccfdc3d84d9333f0000804000009040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff00008040000000c0f8aa063e0c5e3e3f000080400000904077be7fbf00000000000080bf000000000000803f00000000000000000000803fffffffff0000804077be7fbf3191e13daaa33e3f00000040000080400000000000000000000080bf000000000000803f00000000000000000000803fffffffff0000004000000000dd10123fed6a4e3e0000804000008040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff00008040000000bfc9b30b3f76d7783e00008040000080400000000000000000000080bf000000000000803f00000000000000000000803fffffffff0000804000000000c394093f595b703e0000004000008040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff00000040000000bfe42f143f0ae7563e0000c04000009040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000000c08cc2083e9d47493f0000c0400000904077be7fbf00000000000080bf000000000000803f00000000000000000000803fffffffff0000c04077be7fbff6d2e53d868a493f0000c04000008040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000000bfae37033ff1638d3e0000c040000080400000000000000000000080bf000000000000803f00000000000000000000803fffffffff0000c04000000000a818013fe225893e7b141e4100006040000000bf000080bf00000000000000000000000000000000000080bf000080bfffffffff0000003f000060409d480e3f50b0b13e7b141e4100004040000000bf000080bf00000000000000000000000000000000000080bf000080bfffffffff0000003f000040409d480e3f67b0ab3e0000204100008040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00008040ed000f3f422aab3e000020410000604000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000006040e100123f592aa53e000020410000804000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000008040e100123f422aab3e0000204100006040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00006040ec000f3f592aa53e8ec2f53d000040408ec2f5bd0000803f00000000ca6ba832ca6ba8b2000000000000803f000080bfffffffff8ec2f5bd00004040d6039a3e79c75c3f8fc2f53d00004040000000bf0000803f00000000ca6ba832ca6ba8b2000000000000803f000080bfffffffff000000bf0000404021939e3e79c75c3f8fc2f53d00006040000000bf0000803f00000000ca6ba832ca6ba8b2000000000000803f000080bfffffffff000000bf0000604021939e3e6dc75f3f8ec2f53d000060408ec2f5bd0000803f00000000ca6ba832ca6ba8b2000000000000803f000080bfffffffff8ec2f5bd00006040d6039a3e6dc75f3f0000000000006040000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000060407e41513f9990d83c0000000000006040000000bf0000803f000000000000000000000000000000000000803f000080bfffffffff000000bf000060407341543f9890d83c0000000000008040000000bf0000803f000000000000000000000000000000000000803f000080bfffffffff000000bf000080407341543f92471c3d0000000000008040000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000080407e41513f92471c3d77be7f3f0000904077be7fbf00000000000080bf000000000000803f00000000000000000000803fffffffff77be7f3f77be7fbfe29fdb3d2fbe2e3f0000003f000080400000000000000000000080bf000000000000803f00000000000000000000803fffffffff0000003f00000000f26d183f9cf6343e0000003f00008040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000000bff88c1a3fb9723d3e0000000000008040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff00000000000000bfffab1c3f9ef6343e00000000000080400000000000000000000080bf000000000000803f00000000000000000000803fffffffff0000000000000000f88c1a3f837a2c3e00000041000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000410000b0c0bc02e23ec244443f00002041000080400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff000020410000c0c05e02fa3ecb44413f00002041000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff000020410000b0c05e02fa3ec044443f00000041000080400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000410000c0c0bc02e23ecd44413f19041841000090403108a0c000000000000080bf000000000000803f00000000000000000000803fffffffff190418413108a0c07fbe4a3e71aa5f3f00000041000090403108a0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000413108a0c096004f3e42cf563f9eef1f40000090400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff9eef1f400000b0c0508b573e32bd333f00008040000090400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff000080400000c0c0d9d1643e7ae43c3f00008040000090400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff000080400000b0c07a0f593ee0fd3c3f9eef1f40000090400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff9eef1f400000c0c045dc633ef0d6333f7b141e41000060400000b0c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000b040000060402392e03e51b0b13e7b141e41000040400000b0c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000b040000040402492e03e68b0ab3e7b141e4100006040f628bcc0000080bf00000000000000000000000000000000000080bf000080bffffffffff628bc4000006040d902dc3e51b0b13e7b141e4100004040f628bcc0000080bf00000000000000000000000000000000000080bf000080bffffffffff628bc4000004040d902dc3e68b0ab3e00002041000080400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c000008040c302e23e542aab3e00002041000060400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c000006040c202e23e6b2aa53e00002041000080400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c000008040da02dc3e542aab3e00002041000060400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c000006040d902dc3e6c2aa53e8fc2f53d000040400000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c0000040403b92da3e79c75c3f8fc2f53d000060400000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c0000060403c92da3e6dc75f3f8ec2f53d00004040f628bcc00000803f00000000c76ba8b2c76ba832000000000000803f000080bffffffffff628bcc0000040408621df3e79c75c3f8ec2f53d00006040f628bcc00000803f00000000c76ba8b2c76ba832000000000000803f000080bffffffffff628bcc0000060408621df3e6dc75f3f00000000000060400000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c0000060400041723f9a90d83c00000000000080400000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c0000080400041723f93471c3d00000000000060400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c000006040f540753f9990d83c00000000000080400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c000008040f540753f92471c3d0000003f000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000003f0000b0c03bc32f3fe225893e00000040000080400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000400000c0c02e852b3f181e9a3e00000040000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000400000b0c02766293f0ae0953e0000003f000080400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000003f0000c0c042e2313ff0638d3e00000040000090403108a0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000403108a0c06b20493e0103313f77be7f3f000090403108a0c000000000000080bf000000000000803f00000000000000000000803fffffffff77be7f3f3108a0c0c519433e20782b3f00000000000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000000000b0c042e2313fd4e7843e00000000000080400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000000000c0c04901343fe125893e00008040000090403108e0c000000000000080bf000000000000803f00000000000000000000803fffffffff000080403108e0c0780b7d3ee49c3c3f9eef1f40000090403108e0c000000000000080bf000000000000803f00000000000000000000803fffffffff9eef1f403108e0c0fff17a3e9933343f00000040000080400000f0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c00000f0c0d6039a3eef44383f0000804000008040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000000c17a03b23efa44353f00008040000080400000f0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c00000f0c07903b23eef44383f0000004000008040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c0000000c1d7039a3efb44353f0000c040000090403108e0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c0403108e0c0b622803e62ae483f0000c040000090400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c0400000c0c04d98673e5b2d493f0000c04000008040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0000000c11c03ca3efa44353f0000c040000080400000f0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c00000f0c01b03ca3eee44383f14ae074000004040f628bcc00000803f000000000000000000000000000000000000803f000080bffffffffff628bcc0000040409247553fefca433f14ae0740000040400000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c000004040bfff5e3fefca433f14ae0740000060400000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c000006040bfff5e3fe4ca463f14ae074000006040f628bcc00000803f000000000000000000000000000000000000803f000080bffffffffff628bcc0000060409247553fe4ca463f14ae074000004040f628fcc00000803f000000000000000000000000000000000000803f000080bffffffffff628fcc0000040406447613fefca433f14ae074000006040f628fcc00000803f000000000000000000000000000000000000803f000080bffffffffff628fcc0000060406447613fe4ca463f00000040000060400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c000006040ed88613f6d0c473f00000040000060400000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c000006040cb886a3f6d0c473f00000040000080400000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c000008040cb886a3f610c4a3f00000040000080400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c000008040ed88613f610c4a3f0000004000006040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c100006040bf886d3f6d0c473f0000004000008040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c100008040bf886d3f610c4a3f00000041000080400000f0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000f0c0000080408647583f620c4a3f00000041000060400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0000060406447613f6d0c473f00000041000080400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0000080406347613f620c4a3f00000041000060400000f0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000f0c0000060408747583f6d0c473f0000004100008040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c1000080409247553f620c4a3f0000004100006040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c1000060409247553f6d0c473ff628fc40000060400000f0c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000f04000006040ee11703fe4ca463ff628fc4000004040f628bcc0000080bf00000000000000000000000000000000000080bf000080bffffffffff628bc40000040401bca793fefca433ff628fc4000006040f628bcc0000080bf00000000000000000000000000000000000080bf000080bffffffffff628bc40000060401aca793fe4ca463ff628fc40000040400000f0c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000f04000004040ef11703ff0ca433ff628fc4000006040f628fcc0000080bf00000000000000000000000000000000000080bf000080bffffffffff628fc400000604049ca6d3fe4ca463ff628fc4000004040f628fcc0000080bf00000000000000000000000000000000000080bf000080bffffffffff628fc400000404049ca6d3fefca433fcff7ff40000090406210204000000000000080bf000000000000803f00000000000000000000803fffffffffcff7ff4062102040000000000000000000000041000090400000000000000000000080bf000000000000803f00000000000000000000803fffffffff0000004100000000000000000000000000000041000090406210204000000000000080bf000000000000803f00000000000000000000803fffffffff00000041621020400000000000000000cff7ff40000090400000000000000000000080bf000000000000803f00000000000000000000803fffffffffcff7ff400000000000000000000000000000c040000080400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c00000404000bde83e25635f3e0000f040000080400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000000002877f53e0ae0953e0000f040000080400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c000004040d902dc3e74d7783e0000c040000080400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c000000000a818013fe225893e0000f04000006040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000f04000006040460c4e3f83c5123f0ad7c34000004040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff0ad7c34000004040d453563f8ec50f3f0ad7c34000006040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff0ad7c34000006040d453563f83c5123f0000f04000004040ec5138400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000f04000004040470c4e3f8fc50f3f0000f04000008040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000080407f85fa3e464a6f3f0000c04000006040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000060409c42063f524a6c3f0000c04000008040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000080409c42063f464a6f3f0000f04000006040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000060408085fa3e524a6c3f0000004100008040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000080409685f43e464a6f3f0000004100006040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000060409785f43e524a6c3f0000f04000004040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000040400889593febbeb33e0000f04000006040f628fcc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000060400889593fd4beb93ef628fc4000004040f628fcc000000000000000000000803f000080bf0000000000000000000080bffffffffff628fcc000004040aed05b3febbeb33ef628fc4000006040f628fcc000000000000000000000803f000080bf0000000000000000000080bffffffffff628fcc000006040aed05b3fd4beb93e0000f04000006040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000060400041723fc9c1603c0000f04000008040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000080400041723f715fd03c0000004100006040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100006040f540753fc7c1603c0000004100008040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100008040f540753f715fd03c0000f04000009040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000000c03c520a3e7876513f0000f0400000904077be7fbf00000000000080bf000000000000803f00000000000000000000803fffffffff0000f04077be7fbf15f4e83d22b9513fcff7ff40000090400000000000000000000080bf000000000000803f00000000000000000000803fffffffffcff7ff4000000000fcbc083f3940223fcff7ff4000009040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffffcff7ff40000000bf249e063f0321203f0000f04000008040000000bf00000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000000bf35b5f93e181e9a3e0000f040000080400000000000000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000000002877f53e0ae0953e0000f040000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f0400000b0c0d202dc3ec144443f0000f040000080400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f0400000c0c0d302dc3ecd44413f0000c040000090400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c0400000b0c04cf95a3e5e86493f3108e040000090400000c0c000000000000080bf000000000000803f00000000000000000000803fffffffff3108e0400000c0c096726a3ef07b4f3f3108e040000090400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff3108e0400000b0c0ffac5d3e5712503f0000f04000009040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000080c05500363eca35533f0000f040000090403108a0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f0403108a0c0936c503e768c533f00000041000080400000f0c000000000000080bf000000000000803f00000000000000000000803fffffffff000000410000f0c0be02e23eee44383f0000f040000080400000f0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f0400000f0c0d502dc3eee44383f3108e040000090403108e0c000000000000080bf000000000000803f00000000000000000000803fffffffff3108e0403108e0c09c91803e7f724e3f0000004100008040000000c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000000c1bf02e23efa44353f0000f04000008040000000c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000000c1d602dc3efa44353f0000c040000080400000f0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c0400000f0c01b03ca3eee44383f0000c04000008040000000c100000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000000c11c03ca3efa44353f0000003f31088040000080c00000803f00000000000000000000000000000000000080bf0000803fffffffff000080403108804000000000000000000000003f31088040000000c00000803f00000000000000000000000000000000000080bf0000803fffffffff000000403108804000000000000000000000003f00008040000000c00000803f00000000000000000000000000000000000080bf0000803fffffffff000000400000804000000000000000000000003f00008040000080c00000803f00000000000000000000000000000000000080bf0000803fffffffff000080400000804000000000000000000000003f31088040000000c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff000000403108804000000000000000000000003f31088040000000bfffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000003f3108804000000000000000000000003f00008040000000bfffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000003f0000804000000000000000000000003f00008040000000c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000004000008040000000000000000000000040310880400000b0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff000000403108804000000000000000000000003f310880400000b0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff0000003f3108804000000000000000000000003f000080400000b0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff0000003f00008040000000000000000000000040000080400000b0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff000000400000804000000000000000000000003f310880400000b0c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000b0403108804000000000000000000000003f31088040000080c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff000080403108804000000000000000000000003f00008040000080c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff000080400000804000000000000000000000003f000080400000b0c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000b0400000804000000000000000000000003f31088040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff000000bf3108804000000000000000000000004031088040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff000000c03108804000000000000000000000004000008040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff000000c00000804000000000000000000000003f00008040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff000000bf0000804000000000000000000000204131088040000000bfffff7fbf000000000000000000000000000000000000803f0000803fffffffff000000bf3108804000000000000000000000204131088040000000c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff000000c03108804000000000000000000000204100008040000000c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff000000c00000804000000000000000000000204100008040000000bfffff7fbf000000000000000000000000000000000000803f0000803fffffffff000000bf0000804000000000000000000000004031088040000000bf0000000000000000000080bf000080bf00000000000000000000803fffffffff000000c03108804000000000000000000000804031088040000000bf0000000000000000000080bf000080bf00000000000000000000803fffffffff000080c03108804000000000000000000000804000008040000000bf0000000000000000000080bf000080bf00000000000000000000803fffffffff000080c00000804000000000000000000000004000008040000000bf0000000000000000000080bf000080bf00000000000000000000803fffffffff000000c00000804000000000000000000000c04031088040000000bf0000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c03108804000000000000000000000c04000008040000000bf0000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c00000804000000000000000000000c04031088040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff0000c0c03108804000000000000000000000f04031088040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff0000f0c03108804000000000000000000000f04000008040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff0000f0c00000804000000000000000000000c04000008040000000bf0000000000000000ffff7fbf000080bf00000000000000000000803fffffffff0000c0c00000804000000000000000000000f04031088040000000bf0000803f00000000000000000000000000000000000080bf0000803fffffffff0000003f31088040b37e383f1a4c7b3e0000f04031088040000000000000803f00000000000000000000000000000000000080bf0000803fffffffff0000000031088040b37e383f484c6f3e0000f04000008040000000000000803f00000000000000000000000000000000000080bf0000803fffffffff00000000000080403c80383f484c6f3e0000f04000008040000000bf0000803f00000000000000000000000000000000000080bf0000803fffffffff0000003f000080403c80383f1a4c7b3e000020413108804000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000031088040e100123f532dab3e0000204131088040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf31088040ed000f3f552dab3e0000f0403108804000000000ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff000000003108804000000000000000000000f0403108804000004040ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff000040c03108804000000000000000000000f0400000804000004040ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff000040c00000804000000000000000000000f0400000804000000000ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff000000000000804000000000000000000000004131088040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c13108804000000000000000000000204131088040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000020c13108804000000000000000000000204100008040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000020c10000804000000000000000000000004100008040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c10000804000000000000000000000f04031088040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0310880407f85fa3ed04b6f3f0000004131088040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1310880409685f43ecf4b6f3f00002041310880400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000204131088040000000000000000000000041310880400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000004131088040000000000000000000000041000080400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000004100008040000000000000000000002041000080400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff00002041000080400000000000000000000020413108804000004040ffff7fbf000000000000000000000000000000000000803f0000803fffffffff00004040310880400000000000000000000020413108804000000000ffff7fbf000000000000000000000000000000000000803f0000803fffffffff00000000310880400000000000000000000020410000804000000000ffff7fbf000000000000000000000000000000000000803f0000803fffffffff00000000000080400000000000000000000020410000804000004040ffff7fbf000000000000000000000000000000000000803f0000803fffffffff0000404000008040000000000000000000000041310880400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff00000041310880407282783f1879083d0000f040310880400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000f040310880407e82753f1879083d0000f040000080400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000f040000080407e82753f8560083d00000041000080400000b0c000000000000000000000803f0000803f00000000000000000000803fffffffff00000041000080407282783f8560083d0000204131088040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c03108804000000000000000000000204131088040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c03108804000000000000000000000204100008040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c00000804000000000000000000000204100008040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c00000804000000000000000000000204131088040000080c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff000080c031088040000000000000000000002041310880400000b0c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff0000b0c031088040000000000000000000002041000080400000b0c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff0000b0c00000804000000000000000000000204100008040000080c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff000080c00000804000000000000000000000f040310880400000f0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff0000f0403108804000000000000000000000c040310880400000f0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff0000c0403108804000000000000000000000c040000080400000f0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff0000c0400000804000000000000000000000f040000080400000f0c00000000000000000ffff7f3f0000803f00000000000000000000803fffffffff0000f0400000804000000000000000000000c040310880400000f0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000c04031088040000000000000000000008040310880400000f0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000804031088040000000000000000000008040000080400000f0c000000000000000000000803f0000803f00000000000000000000803fffffffff000080400000804000000000000000000000c040000080400000f0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000c0400000804000000000000000000000f040310880400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c031088040c82f623e7b7f543f0000f040310880400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0310880403a676e3edace533f0000f040000080400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c000008040a3686e3e6ad0533f0000f040000080400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c0000080403131623e0b81543f0000f040310880400000c0c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff0000c0c03108804000000000000000000000f040310880400000f0c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff0000f0c03108804000000000000000000000f040000080400000f0c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff0000f0c00000804000000000000000000000f040000080400000c0c0ffff7fbf000000000000000000000000000000000000803f0000803fffffffff0000c0c000008040000000000000000000000040310880400000c0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000c040310880405022653e72b32f3f00000040310880400000b0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000b04031088040e378593e536f2f3f00000040000080400000b0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000b040000080406f79593ed56d2f3f00000040000080400000c0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000c04000008040dc22653ef4b12f3f00000040310880400000f0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000004031088040000000000000000000000040000080400000f0c000000000000000000000803f0000803f00000000000000000000803fffffffff0000004000008040000000000000000000000040310880400000f0c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000f04031088040000000000000000000000040310880400000c0c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000c04031088040000000000000000000000040000080400000c0c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000c04000008040000000000000000000000040000080400000f0c0ffff7f3f00000000000000000000000000000000000080bf0000803fffffffff0000f04000008040000000000000000077be7f3f00009040000000c0f404353ff20435bf0000000000000000000000000000803f000080bfffffffff000000c03bdb78407faf013ed5ea2d3f0000003f31088040000000c0f404353ff20435bf0000000000000000000000000000803f000080bfffffffff000000c029b14b407ba7fd3d8f0f2a3f0000003f31088040000080c0f404353ff20435bf0000000000000000000000000000803f000080bfffffffff000080c029b14b4026492b3e0454283f77be7f3f00009040000080c0f404353ff20435bf0000000000000000000000000000803f000080bfffffffff000080c03bdb7840b57d2d3ee43b2c3f77be7f3f0000904077be7fbff304353ff20435bf0000000000000000000000000000803f000080bfffffffff77be7fbf3bdb7840e29fdb3d2fbe2e3f0000003f31088040000000bff304353ff20435bf0000000000000000000000000000803f000080bfffffffff000000bf29b14b40584ebe3d88112c3f0000003f310880400000b0c0f404353ff20435bf0000000000000000000000000000803f000080bfffffffff0000b0c029b14b4093b04c3e1c42273f77be7f3f000090403108a0c0f404353ff20435bf0000000000000000000000000000803f000080bfffffffff3108a0c03bdb7840c519433e20782b3f000080400000904077be7fbf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff000080403bdb78403191e13daaa33e3f0000804031088040000000bf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff0000804029b14b405ee2c23d94d23e3f0000004031088040000000bf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff0000004029b14b406be4be3daef9333f000000400000904077be7fbf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff000000403bdb78405ccfdc3d84d9333f0000c0400000904077be7fbf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff0000c0403bdb7840f6d2e53d868a493f0000c04031088040000000bf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff0000c04029b14b40680ac73d97b9493f0000f0400000904077be7fbf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff0000f0403bdb784015f4e83d22b9513f0000f04031088040000000bf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff0000f04029b14b40fe28ca3d19e8513f0000003f31088040000000bf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff0000003f29b14b40584ebe3d88112c3f77be7f3f0000904077be7fbf00000000f20435bff40435bf0000803f0000000000000000000080bfffffffff77be7f3f3bdb7840e29fdb3d2fbe2e3f9eef1f40000090400000b0c0f404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff8b5e9ec00000b0c0508b573e32bd333f00000040310880400000b0c0f404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff82c987c00000b0c0e378593e536f2f3f00000040310880400000c0c0f404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff82c987c00000c0c05022653e72b32f3f9eef1f40000090400000c0c0f404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff8b5e9ec00000c0c045dc633ef0d6333f00000040310880400000f0c0f304353ff30435bf00000000f30435bff30435bf00000000000080bfffffffff82c987c00000f0c0a041843e6a72303f9eef1f40000090403108e0c0f304353ff30435bf00000000f30435bff30435bf00000000000080bfffffffff8b5e9ec03108e0c0fff17a3e9933343f77be7f3f000090403108a0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff77be7fbfa161b5bec519433e20782b3f0000003f310880400000b0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff000000bf8cac87bf93b04c3e1c42273f00000040310880400000b0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff000000c08cac87bfe378593e536f2f3f00000040000090403108a0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff000000c0a161b5be6b20493e0103313f9eef1f40000090403108e0c000000000f20435bff204353f000080bf0000000000000000000080bfffffffff9eef1fc05c5de2bffff17a3e9933343f00000040310880400000f0c000000000f40435bff404353f000080bf0000000000000000000080bfffffffff000000c0c0581ec0a041843e6a72303f00008040310880400000f0c000000000f20435bff204353f000080bf0000000000000000000080bfffffffff000080c0c0581ec03c2b873e41473c3f00008040000090403108e0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff000080c05c5de2bf780b7d3ee49c3c3f0000c040310880400000f0c000000000f40435bff404353f000080bf0000000000000000000080bfffffffff0000c0c0c0581ec00291883ecc7f483f0000c040000090403108e0c000000000f40435bff404353f000080bf0000000000000000000080bfffffffff0000c0c05c5de2bfb622803e62ae483f0000f040310880400000f0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff0000f0c0c0581ec0b7e5883ed568513f3108e040000090403108e0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff3108e0c05c5de2bf9c91803e7f724e3f3108e040000090403108e0c0f30435bff30435bf00000000f30435bff304353f00000000000080bfffffffff5c5de2bf3108e0c09c91803e7f724e3f0000f040310880400000f0c0f30435bff30435bf00000000f30435bff304353f00000000000080bfffffffffc0581ec00000f0c0b7e5883ed568513f0000f040310880400000c0c0f30435bff30435bf00000000f30435bff304353f00000000000080bfffffffffc0581ec00000c0c03a676e3edace533f3108e040000090400000c0c0f30435bff30435bf00000000f30435bff304353f00000000000080bfffffffff5c5de2bf0000c0c096726a3ef07b4f3f0000f040310880400000b0c0f40435bff40435bf00000000f30435bff304353f00000000000080bfffffffffc0581ec00000b0c0c82f623e7b7f543f3108e040000090400000b0c0f40435bff40435bf00000000f30435bff304353f00000000000080bfffffffff5c5de2bf0000b0c0ffac5d3e5712503f0000f040000090403108a0c000000000f40435bff404353f000080bf0000000000000000000080bfffffffff0000f0c0a161b5be936c503e768c533f0000f040310880400000b0c000000000f40435bff404353f000080bf0000000000000000000080bfffffffff0000f0c08cac87bfc82f623e7b7f543f00000041310880400000b0c000000000f40435bff404353f000080bf0000000000000000000080bfffffffff000000c18cac87bf6804603e7975573f00000041000090403108a0c000000000f40435bff404353f000080bf0000000000000000000080bfffffffff000000c1a161b5be96004f3e42cf563f00002041310880400000b0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff000020c18cac87bfa379593e0657633f19041841000090403108a0c000000000f30435bff304353f000080bf0000000000000000000080bfffffffff190418c1a161b5be7fbe4a3e71aa5f3f19041841000090403108a0c0f80435bfed0435bf000000000000000000000000000080bf000080bfffffffff3108a040b45162c07fbe4a3e71aa5f3f00002041310880400000b0c0f80435bfed0435bf000000000000000000000000000080bf000080bfffffffff0000b040e2bd87c0a379593e0657633f0000204131088040000080c0f80435bfed0435bf000000000000000000000000000080bf000080bfffffffff00008040e2bd87c0a049343e6f3f643f1904184100009040000080c0f90435bfed0435bf000000000000000000000000000080bf000080bfffffffff00008040b45162c020af333eadc95f3f0000204131088040000000c0f90435bfed0435bf000000000000000000000000000080bf000080bfffffffff00000040e2bd87c03228013e6f3f643f1904184100009040000000c0f90435bfed0435bf000000000000000000000000000080bf000080bfffffffff00000040b35162c08b46013ee0bc5f3f0000204131088040000000bff80435bfed0435bf000000000000000000000000000080bf000080bfffffffff0000003fe2bd87c0ac6db53d5429643f1904184100009040000000bff80435bfed0435bf000000000000000000000000000080bf000080bfffffffff0000003fb45162c08fc4b53d04a45f3f000020413108804000000000f90435bfed0435bf000000000000000000000000000080bf000080bfffffffff00000000e2bd87c091cd9b3dae21643f190418410000904000000000f90435bfed0435bf000000000000000000000000000080bf000080bfffffffff00000000b35162c061249c3d509c5f3f000020413108804000004040f90435bfee0435bf000000000000000000000000000080bf000080bfffffffff000040c0e2bd87c06f12833a8cf3633f190418410000904062102040f80435bfed0435bf000000000000000000000000000080bf000080bfffffffff621020c0b45162c0abb15f3cd9755f3f19041841000090406210204000000000f30435bff30435bf0000803f0000000000000000000080bfffffffff19041841c9edb43fc782e23eb087733f00002041310880400000404000000000f40435bff40435bf0000803f0000000000000000000080bfffffffff000020414a33353ff085dc3ece4b6f3f00000041310880400000404000000000f30435bff30435bf0000803f0000000000000000000080bfffffffff000000414a33353f9685f43ecf4b6f3f00000041000090406210204000000000f30435bff30435bf0000803f0000000000000000000080bfffffffff00000041c9edb43f9485f43eb187733f0000f040310880400000404000000000f30435bff30435bf0000803f0000000000000000000080bfffffffff0000f0404a33353f7f85fa3ed04b6f3fcff7ff40000090406210204000000000f40435bff40435bf0000803f0000000000000000000080bfffffffffcff7ff40c9edb43f000000000000000000000041000090406210204000000000f30435bff30435bf0000803f0000000000000000000080bfffffffff00000041c9edb43f00000000000000000000f040310880400000404000000000f30435bff30435bf0000803f0000000000000000000080bfffffffff0000f0404a33353f0000000000000000cff7ff400000904062102040f404353ff40435bf00000000f30435bff30435bf00000000000080bffffffffff9680dc1621020405ec3393f15485a3f0000f0403108804000004040f304353ff30435bf00000000f30435bff30435bf00000000000080bfffffffff751e02c100004040f3c4363f330c563f0000f0403108804000000000f404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff751e02c100000000adc4483f330c563fcff7ff400000904000000000f304353ff30435bf00000000f30435bff30435bf00000000000080bffffffffff9680dc100000000adc4483f15485a3fcff7ff400000904000000000f404353ff40435bf00000000f30435bff30435bf00000000000080bffffffffff9680dc100000000d242343f484c6f3e0000f0403108804000000000f404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff751e02c100000000b37e383f484c6f3e0000f04031088040000000bff404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff751e02c1000000bfb37e383f1a4c7b3ecff7ff4000009040000000bff404353ff40435bf00000000f30435bff30435bf00000000000080bffffffffff9680dc1000000bfb37e383f0829843ecff7ff400000904000000000f404353ff40435bf00000000f30435bff30435bf00000000000080bffffffffff9680dc100000000b37e383f3f527c3e0000f04031088040000000bff404353ff40435bf00000000f30435bff30435bf00000000000080bfffffffff751e02c1000000bfd242343f0929843e0000004100009040000000bf00000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000000bf3a9f063fed1f203fcff7ff4000009040000000bf00000000000080bf00000000000080bf0000000000000000000080bfffffffffcff7ffc0000000bf249e063f0321203f0000f0400000904077be7fbf00000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c077be7fbf4362023fa720203f0000004100009040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000000c0b142003f4ec2193f0000f0400000904077be7fbf00000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c077be7fbf15f4e83d22b9513f0000f04000009040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000000c03c520a3e7876513f0000004100009040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000000c06fd70a3ecb30543f0000004000009040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c0000080c0f31a313edbcd313f9eef1f40000090400000b0c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff9eef1fc00000b0c0508b573e32bd333f0000804000009040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000080c02e9c353ec1a53d3f00008040000090400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c00000b0c07a0f593ee0fd3c3f00000040000090403108a0c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff000000c03108a0c06b20493e0103313f0000c04000009040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0000080c0edad353ecae0493f0000f040000090403108a0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c03108a0c0936c503e768c533f0000f04000009040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000080c05500363eca35533f3108e040000090400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff3108e0c00000b0c0ffac5d3e5712503f0000c040000090400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c00000b0c04cf95a3e5e86493fcff7ff4000009040000000bf3acd133f3acd13bf3bcd13bff404353f00000000f304353f000080bfffffffffdaaea940229be440e5d3da3dfc25553f0000f04031088040000000bf3acd133f3acd13bf3bcd13bff404353f00000000f304353f000080bfffffffff56649e409c0cd140fe28ca3d19e8513f0000f0400000904077be7fbf3acd133f3acd13bf3bcd13bff404353f00000000f304353f000080bfffffffffd1199340229be44015f4e83d22b9513f00000040000090403108a0c03acd133f3acd13bf3acd133ff30435bf00000000f304353f000080bfffffffff1f6a9ec0c1bd1c406b20493e0103313f00000040310880400000b0c03acd133f3acd13bf3acd133ff30435bf00000000f304353f000080bfffffffffa4b4a9c06a41eb3fe378593e536f2f3f9eef1f40000090400000b0c03acd133f3acd13bf3acd133ff30435bf00000000f304353f000080bfffffffff28ffb4c0c1bd1c40508b573e32bd333f3108e040000090400000b0c03acd13bf3acd13bf3acd133ff30435bf00000000f30435bf000080bfffffffffe1da87bf8ff2b6bfffac5d3e5712503f0000f040310880400000b0c03acd13bf3acd13bf3acd133ff30435bf00000000f30435bf000080bffffffffff304b5bf539602c0c82f623e7b7f543f0000f040000090403108a0c03acd13bf3acd13bf3acd133ff30435bf00000000f30435bf000080bfffffffff052fe2bf8ff2b6bf936c503e768c533f0000004100004040ec51384000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1ec513840af741e3cc680193f7b141e4100004040ec51384000000000000080bf00000000000080bf0000000000000000000080bfffffffff7b141ec1ec513840b8741e3c49c8243f00002041000040400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c10000404094c1e03b9880253f00000041000040400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c100004040c3c1e03bc680193f7b141e41000060400000000000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff7b141e41000000006002fa3e75c8183f7b141e4100006040ec51384000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff7b141e41ec5138409c480e3f75c8183f00002041000060400000404000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff0000204100004040ec000f3fc480193f000020410000604000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000000006002fa3ec480193f7b141e4100006040ec513840000000000000803f000000000000803f0000000000000000000080bfffffffff7b141e41ec5138409c480e3f75c8183f0000004100006040ec513840000000000000803f000000000000803f0000000000000000000080bfffffffff00000041ec5138409a480e3ff3800d3f000000410000604000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000004100004040ea000f3ff3800d3f000020410000604000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000204100004040ec000f3fc480193f7b141e4100004040ec51384000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff7b141ec1ec513840b8741e3c49c8243f7b141e41000040400000000000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff7b141ec100000000ec099e3d49c8243f00002041000040400000000000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff000020c100000000ec099e3d9880253f7b141e4100006040000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff7b141e41000000bf7702f43e75c8183f7b141e410000604000000000000000000000803f000000000000803f0000000000000000000080bfffffffff7b141e41000000006002fa3e75c8183f0000204100006040000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000000bf7702f43ec480193f7b141e41000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff7b141ec100000000ec099e3d49c8243f7b141e4100004040000000bf00000000000080bf00000000000080bf0000000000000000000080bfffffffff7b141ec1000000bf9109b63d49c8243f0000204100004040000000bf00000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c1000000bf9109b63d9880253f00002041000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c100000000ec099e3d9880253f7b141e4100006040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff7b141e41000000c0be02e23e75c8183f0000204100006040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000000c0be02e23ec480193f7b141e4100004040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff7b141ec1000000c07b08fe3d49c8243f0000204100004040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c1000000c07b08fe3d9880253f7b141e4100006040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff7b141e41000080c01b03ca3e75c8183f0000204100006040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000080c01b03ca3ec480193f7b141e4100004040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff7b141ec1000080c084032f3e49c8243f0000204100004040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c1000080c084032f3e9880253f7b141e41000060400000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff7b141e410000b0c06103b83e76c8183f00002041000060400000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000020410000b0c06103b83ec580193f7b141e41000040400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff7b141ec10000b0c0f902533e49c8243f00002041000040400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c10000b0c0f902533e9880253f7b141e4100006040f628bcc000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff7b141e41f628bcc01674b33e76c8183f00002041000060400000b0c000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff000020410000b0c06103b83ec580193f00002041000060400000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000020410000c0c07803b23ec580193f7b141e41000040400000b0c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff7b141ec10000b0c0f902533e49c8243f7b141e4100004040f628bcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff7b141ec1f628bcc08f215c3e49c8243f00002041000040400000c0c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff000020c10000c0c0cc025f3e9880253ff628fc4000004040f628bcc000000000000080bf00000000000080bf0000000000000000000080bffffffffff628fcc0f628bcc08e215c3e77c8183f00000041000040400000c0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c10000c0c0ca025f3ec780193f00002041000040400000c0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c10000c0c0cc025f3e9880253ff628fc40000060400000f0c0000000000000803f000000000000803f0000000000000000000080bffffffffff628fc400000f0c0c003a03ea5c80c3ff628fc4000006040f628bcc0000000000000803f000000000000803f0000000000000000000080bffffffffff628fc40f628bcc01774b33ea3c80c3f00000041000060400000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000410000c0c07803b23ef2800d3f00000041000060400000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000410000f0c0c103a03ef4800d3f7b141e4100006040f628bcc0000000000000803f000000000000803f0000000000000000000080bfffffffff7b141e41f628bcc01674b33e76c8183ff628fc40000040400000f0c000000000000080bf00000000000080bf0000000000000000000080bffffffffff628fcc00000f0c02081813e78c8183f00000041000040400000f0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c10000f0c02081813ec780193ff628fc4000006040f628fcc000000000ffff7f3f000000000000803f0000000000000000000080bffffffffff628fc40f628fcc076749b3ea5c80c3f00000041000060400000f0c000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff000000410000f0c0c103a03ef4800d3f0000004100006040000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000000c1d8039a3ef4800d3ff628fc40000040400000f0c000000000ffff7fbf00000000000080bf0000000000000000000080bffffffffff628fcc00000f0c02081813e78c8183ff628fc4000004040f628fcc000000000000080bf00000000000080bf0000000000000000000080bffffffffff628fcc0f628fcc06b10863e78c8183f0000004100004040000000c100000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff000000c1000000c10981873ec780193ff628fc4000004040f628fcc000000000ffff7fbf00000000000080bf0000000000000000000080bffffffffff628fcc0f628fcc06b10863e78c8183f0000f04000004040f628fcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0f628fcc06b10863ed280163f0000f04000004040000000c100000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000f0c0000000c10981873ed280163f0000004100004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000000c10981873ec780193f0000c04000004040f628fcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0f628fcc06a10863ef5800d3f0000c04000004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0000000c10881873ef5800d3f0000f04000004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000000c10981873ed280163f0000f04000006040f628fcc000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff0000f040f628fcc076749b3eff800a3ff628fc4000006040f628fcc0000000000000803f000000000000803f0000000000000000000080bffffffffff628fc40f628fcc076749b3ea5c80c3f0000004100006040000000c100000000ffff7f3f000000000000803f0000000000000000000080bfffffffff00000041000000c1d8039a3ef4800d3f0000f04000006040000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000000c1d7039a3eff800a3f0000804000004040f628fcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0f628fcc06a10863e2381013f0000804000004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000000c10881873e2381013f0000c04000006040f628fcc0000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040f628fcc075749b3e2281013f0000f04000006040f628fcc0000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040f628fcc076749b3eff800a3f0000c04000006040000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000000c1d7039a3e2281013f14ae074000004040f628fcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff14ae07c0f628fcc06a10863e4173ec3e0000004000004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c0000000c10881873ea302eb3e0000804000006040f628fcc0000000000000803f000000000000803f0000000000000000000080bfffffffff00008040f628fcc075749b3ea102eb3e0000804000006040000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000000c1d7039a3ea102eb3e14ae074000004040f628fcc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff14ae07c0f628fcc06a10863e4173ec3e14ae0740000040400000f0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff14ae07c00000f0c02081813e4173ec3e00000040000040400000f0c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff000000c00000f0c02081813ea302eb3e14ae074000006040f628fcc0000000000000803f000000000000803f0000000000000000000080bfffffffff14ae0740f628fcc075749b3e9e73d43e0000004000006040000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000040000000c1d6039a3eff02d33e14ae074000004040f628bcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff14ae07c0f628bcc08e215c3e4273ec3e00000040000040400000c0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c00000c0c0cb025f3ea402eb3e00000040000040400000f0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c00000f0c02081813ea302eb3e14ae0740000060400000f0c000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff14ae07400000f0c0c003a03e9f73d43e0000004000006040000000c100000000ffff7f3f000000000000803f0000000000000000000080bfffffffff00000040000000c1d6039a3eff02d33e00000040000060400000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000f0c0c003a03e0003d33e0000003f00004040f628bcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bff628bcc08f215c3ee802d93e0000003f000040400000c0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf0000c0c0cb025f3ee802d93e14ae074000006040f628bcc0000000000000803f000000000000803f0000000000000000000080bfffffffff14ae0740f628bcc01a74b33e9e73d43e14ae0740000060400000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff14ae07400000f0c0c003a03e9f73d43e00000040000060400000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000c0c07c03b23e0003d33e8ec2f53d00004040f628bcc000000000000080bf00000000000080bf0000000000000000000080bfffffffff8ec2f5bdf628bcc08f215c3e9e73d43e00000000000040400000c0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000000000c0c0cb025f3e0003d33e0000003f00006040f628bcc0000000000000803f000000000000803f0000000000000000000080bfffffffff0000003ff628bcc01674b33e4603c13e0000003f000060400000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f0000c0c07803b23e4703c13e8ec2f53d00004040f628bcc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff8ec2f5bdf628bcc08f215c3e9e73d43e8fc2f53d000040400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff8fc2f5bd0000b0c0f902533e9e73d43e00000000000040400000b0c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff000000000000b0c0f902533e0003d33e8ec2f53d00006040f628bcc0000000000000803f000000000000803f0000000000000000000080bfffffffff8ec2f53df628bcc01574b33efc73bc3e00000000000060400000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000000000c0c07703b23e5e03bb3e8fc2f53d00004040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff8fc2f5bd000080c085032f3e9e73d43e00000000000040400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000000000b0c0f902533e0003d33e8fc2f53d000060400000b0c000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff8fc2f53d0000b0c06103b83efc73bc3e00000000000060400000c0c000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff000000000000c0c07703b23e5e03bb3e00000000000060400000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000000000b0c06103b83e5d03bb3e8fc2f53d00004040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff8fc2f5bd000000c07b08fe3d9e73d43e8fc2f53d00006040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff8fc2f53d000080c01c03ca3efb73bc3e8fc2f53d000060400000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff8fc2f53d0000b0c06103b83efc73bc3e0000000000006040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000080c01c03ca3e5d03bb3e8fc2f53d00004040000000bf00000000000080bf00000000000080bf0000000000000000000080bfffffffff8fc2f5bd000000bf9109b63d9e73d43e0000000000004040000000bf00000000000080bf00000000000080bf0000000000000000000080bfffffffff00000000000000bf9109b63d0003d33e8fc2f53d00006040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff8fc2f53d000000c0be02e23efb73bc3e0000000000006040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000000c0be02e23e5d03bb3e8ec2f53d000040408ec2f5bd00000000000080bf00000000000080bf0000000000000000000080bfffffffff8ec2f5bd8ec2f5bd68cca33d9e73d43e00000000000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000000000000000ed099e3d0003d33e8fc2f53d00006040000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff8fc2f53d000000bf7802f43efb73bc3e0000000000006040000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000000bf7802f43e5d03bb3e0000003f000060408fc2f5bd000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f8fc2f5bdc291f83e4603c13e8ec2f53d000060408ec2f5bd000000000000803f000000000000803f0000000000000000000080bfffffffff8ec2f53d8ec2f5bdc291f83efb73bc3e000000000000604000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000000006002fa3e5d03bb3e0000003f0000604000000000000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000000006002fa3e4603c13e0000003f000040408fc2f5bd00000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf8fc2f5bd68cca33de902d93e0000003f000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf00000000ed099e3de902d93e00000040000060408fc2f5bd000000000000803f000000000000803f0000000000000000000080bfffffffff000000408fc2f5bdc391f83efe02d33e000000400000604000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00000040000000006102fa3efe02d33e00000040000040408fc2f5bd00000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c08fc2f5bd67cca33da302eb3e00000040000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c000000000ec099e3da302eb3e00008040000060408fc2f5bd000000000000803f000000000000803f0000000000000000000080bfffffffff000080408fc2f5bdc691f83e9e02eb3e000080400000604000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000000006502fa3e9e02eb3e00008040000040408fc2f5bd00000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c08fc2f5bd68cca33d2381013f00008040000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c000000000ed099e3d2381013f0ad7c340000060408ec2f5bd000000000000803f000000000000803f0000000000000000000080bfffffffff0ad7c3408ec2f5bdc391f83e7639023f0000c0400000604000000000000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000000006202fa3e2681013f0ad7c340000040408ec2f5bd00000000000080bf00000000000080bf0000000000000000000080bfffffffff0ad7c3c08ec2f5bd69cca33d44390e3f0000c040000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c000000000ee099e3df5800d3f0ad7c34000004040ec51384000000000000080bf00000000000080bf0000000000000000000080bfffffffff0ad7c3c0ec513840a4741e3c44390e3f0000c040000040400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c000004040afc1e03bf5800d3f0000f04000006040ec51384000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff0000f040ec5138409a480e3ffe800a3f0ad7c34000006040ec513840000000000000803f000000000000803f0000000000000000000080bfffffffff0ad7c340ec51384099480e3f6c39023f0000c040000060400000404000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff0000c04000004040e9000f3f1d81013f0000f0400000604000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000f04000004040e9000f3ffe800a3f0000c0400000604000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000c04000004040e9000f3f1d81013f0ad7c34000004040ec51384000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0ad7c3c0ec513840a4741e3c44390e3f0000f04000004040ec51384000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0ec513840ac741e3cd280163f0000f040000040400000404000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000f0c000004040c3c1e03bd280163f0000f04000006040ec513840000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040ec5138409a480e3ffe800a3f0000f040000040400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c000004040c3c1e03bd280163f0000004100008040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff000000c19a99814048ca6d3f6d0c473f0000f04000008040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c09a9981403cca703f6d0c473f0000f04000009040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000090403cca703f610c4a3f0000004100009040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff000000c10000904048ca6d3f620c4a3f0000c04000008040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff0000c0409a9981402341693f2760203d0000f04000008040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff0000f0409a9981400041723f2760203d0000f04000009040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff0000f040000090400041723f6f5f503d0000c04000009040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff0000c040000090402341693f6e5f503d0000004100008040000000c00000803f00000000000000000000000000000000000080bf0000803fffffffff000000409a9981407185fa3e73093f3f0000004100008040000080c00000803f00000000000000000000000000000000000080bf0000803fffffffff000080409a9981408a42093f73093f3f0000004100009040000080c00000803f00000000000000000000000000000000000080bf0000803fffffffff00008040000090408a42093f6709423f0000004100009040000000c00000803f00000000000000000000000000000000000080bf0000803fffffffff00000040000090407185fa3e6709423f0000004100008040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff000000419a998140f540753f2760203d0000004100009040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff0000004100009040f540753f6e5f503d0000c04000008040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c09a9981401aca793f6d0c473f0000c04000009040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000090401aca793f620c4a3f0000804000008040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff000080409a99814050415d3f2860203d0000804000009040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff000080400000904050415d3f6e5f503d0000c040000080400000c0c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c069918140f3c4363f24da763f00008040000080400000c0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000080c069918140c5c4423f24da763f00008040000090400000c0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000080c000009040c5c4423f18da793f0000c040000090400000c0c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c000009040f3c4363f18da793f0000004000008040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff000000409a9981407e41513f2960203d0000004000009040000000c000000000000000000000803f0000803f00000000000000000000803fffffffff00000040000090407e41513f6e5f503d0000804000008040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff000080c09a998140f3c4363fa11b7a3f0000004000008040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff000000c09a998140c5c4423fa11b7a3f0000004000009040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff000000c000009040c5c4423f961b7d3f0000804000009040000080c00000000000000000000080bf000080bf00000000000000000000803fffffffff000080c000009040f3c4363f961b7d3f00008040000080400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0699181403706493feb4d4a3f00008040000080400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c0699181402b064c3feb4d4a3f00008040000090400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c0000090402b064c3fe04d4d3f00008040000090400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0000090403706493fdf4d4d3f0000c040000080400000b0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000b040699181408e42093f0bc5303f0000c040000080400000c0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000c0406991814082420c3f0bc5303f0000c040000090400000c0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000c0400000904083420c3fffc4333f0000c040000090400000b0c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000b040000090408e42093fffc4333f0000004000008040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c09a9981402ec76e3fd886203f0000004000008040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c09a99814000c77a3fd886203f0000004000009040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c00000904000c77a3fcc86233f0000004000009040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000090402ec76e3fcc86233f00008040000040400000003f00000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c00000003f4b0a863d2381013f00000040000040400000003f00000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c00000003f4b0a863da402eb3e00000041000040400000504000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000050406f12833ac780193f0000f040000040400000504000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000050408712833ad280163f0000244100004040000000bf00000000000080bf00000000000080bf0000000000000000000080bfffffffff000024c1000000bf9109b63d9200273f00002441000040400000000000000000000080bf00000000000080bf0000000000000000000080bfffffffff000024c100000000ec099e3d9200273f0000244100004040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000024c1000080c084032f3e9200273f0000244100004040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000024c1000000c07b08fe3d9200273f0000f04000008040cdcc7cc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000f0c0cdcc7cc0d902dc3ee8d2503f0000f04000008040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000080c0da02dc3e1c86503f0000004100008040000080c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff000000c1000080c0c202e23e1c86503f6666fe4000008040cdcc7cc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff6666fec0cdcc7cc02b69e13ee8d2503f6666fe4000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff6666fec0cdcc7cc02b69e13ee8d2503f0000004100008040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000080c0c202e23e1c86503f0000004100008040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000000c0c202e23eef855c3f6666fe4000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff6666fec0333303c02a69e13e23395c3f6666fe4000008040333303c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff6666fec0333303c02a69e13e23395c3f0000f04000008040000000c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000f0c0000000c0d902dc3eee855c3f0000f04000008040333303c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000f0c0333303c0d902dc3e22395c3f00008040000090400000b0c0000080bf0000000000000000000000005b6a943c3ef57f3f0000803fffffffff0000b0c0000090402b064c3fe04d4d3f0000804000008040310880c0000080bf000000000000000000000000c3e7453c38fb7f3f0000803fffffffff310880c0000080407f04553feb4d4a3f0000804000009040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000090400806553fdf4d4d3f0000804000008040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000080400806553feb4d4a3f00008040000080400000b0c0000080bf000000000000000000000000aa57143d01d57f3f0000803fffffffff0000b0c0699181402b064c3feb4d4a3f0000c04000008040310880c00000803f000000000000000000000000c3e745bc38fb7fbf0000803fffffffff31088040000080403a44003f0bc5303f0000c040000080400000b0c00000803f000000000000000000000000aa5714bd01d57fbf0000803fffffffff0000b040699181408e42093f0bc5303f0000c040000090400000b0c00000803f0000000000000000000000005b6a94bc3ef57fbf0000803fffffffff0000b040000090408e42093fffc4333f0000c04000009040000080c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000804000009040b142003fffc4333f0000c04000008040000080c00000803f00000000000000000000000000000000000080bf0000803fffffffff0000804000008040b042003f0cc5303fcccc6040000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc60409a996dc0fa29ac3eaf3f523fcdcc604000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcdcc6040cdcc7cc0fa29ac3ee8d2503f66667040000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff666670409a996dc0bc16af3eaf3f523f6666704000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff66667040cdcc7cc0bd16af3ee8d2503fcccc60400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffffcccc604066665ec0fa29ac3e77ac533f66667040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff666670409a996dc0bc16af3eaf3f523f666670400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff6666704066665ec0bc16af3e77ac533fcccc6040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffffcccc60409a996dc0fa29ac3eaf3f523f9a994140000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff9a9941409a996dc07650a63eaf3f523f3433514000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff34335140cdcc7cc0373da93ee8d2503f34335140000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff343351409a996dc0373da93eaf3f523f9a99414000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff9a994140cdcc7cc07650a63ee8d2503f333351400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff3333514066665ec0373da93e76ac533f9a9941400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff9a99414066665ec07650a63e76ac533f9a994140000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff9a9941409a996dc07650a63eaf3f523f34335140000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff343351409a996dc0373da93eaf3f523f333351400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff3333514033334fc0373da93e3e19553f9a9941400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff9a99414033334fc07650a63e3e19553f9a99414000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff9a994140000040c07650a63e0586563f333351400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff3333514033334fc0373da93e3e19553f3433514000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff34335140000040c0383da93e0586563fcccc60400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc604033334fc0fa29ac3e3f19553fcccc60400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc604066665ec0fa29ac3e77ac533f666670400000804034334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff6666704034334fc0bc16af3e3f19553fcdcc604000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffffcdcc6040000040c0fa29ac3e0686563f666670400000804034334fc000000000000080bf000000000000803f00000000000000000000803fffffffff6666704034334fc0bc16af3e3f19553f6666704000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff66667040000040c0bb16af3e0686563f66662240000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff666622409a996dc0f076a03eaf3f523f0000324000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00003240cdcc7cc0b163a33ee8d2503f00003240000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000032409a996dc0b263a33eaf3f523f6666224000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff66662240cdcc7cc0ef76a03ee8d2503f666622400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff6666224066665ec0f076a03e77ac533f00003240000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff000032409a996dc0b263a33eaf3f523f000032400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000324066665ec0b263a33e76ac533f66662240000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff666622409a996dc0f076a03eaf3f523fcccc1240000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffffcccc12409a996dc02f8a9d3eaf3f523f33330340000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff333303409a996dc06e9d9a3eb03f523f3333034000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff33330340cdcc7cc06d9d9a3ee8d2503fcccc124000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffffcccc1240cdcc7cc02f8a9d3ee8d2503fcccc12400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffffcccc124066665ec0308a9d3e77ac533f333303400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff3333034066665ec06e9d9a3e77ac533fcccc12400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffffcccc124033334fc0308a9d3e3e19553f333303400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff3333034033334fc06e9d9a3e3f19553fcccc124000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffffcccc1240000040c0308a9d3e0686563f3333034000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff33330340000040c06e9d9a3e0686563f666622400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff6666224033334fc0f176a03e3e19553f000032400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000324066665ec0b263a33e76ac533f000032400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000324033334fc0b363a33e3e19553f666622400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff6666224066665ec0f076a03e77ac533f6666224000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff66662240000040c0f176a03e0586563f0000324000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00003240000040c0b363a33e0586563f6666224000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff66662240cdcc30c0f276a03ecdf2573f0000324000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff00003240000040c0b363a33e0586563f0000324000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff00003240cccc30c0b463a33eccf2573f66662240000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff666622409a9921c0f276a03e945f593f0000324000008040cccc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00003240cccc30c0b463a33eccf2573f00003240000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff000032409a9921c0b463a33e945f593f6666224000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff66662240cdcc30c0f276a03ecdf2573f3333034000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff33330340cdcc30c06e9d9a3ecdf2573fcccc124000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc1240000040c0308a9d3e0686563fcccc124000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffffcccc1240cccc30c0308a9d3ecdf2573f33330340000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff333303409a9921c06f9d9a3e955f593fcccc1240000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc12409a9921c0308a9d3e945f593f3333034000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff33330340cdcc30c06e9d9a3ecdf2573f3333034000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff33330340666612c06f9d9a3e5ccc5a3f33330340000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff333303409a9921c06f9d9a3e955f593fcccc124000008040676612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc1240676612c0308a9d3e5bcc5a3fcccc1240000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffffcccc12409a9921c0308a9d3e945f593fcccc124000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc1240333303c0318a9d3e23395c3f3333034000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff33330340333303c06f9d9a3e23395c3f3333034000008040666612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff33330340666612c06f9d9a3e5ccc5a3fcccc124000008040676612c000000000000080bf000000000000803f00000000000000000000803fffffffffcccc1240676612c0308a9d3e5bcc5a3f6666224000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff66662240666612c0f376a03e5bcc5a3f66662240000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff666622409a9921c0f276a03e945f593f0000324000008040676612c000000000000080bf000000000000803f00000000000000000000803fffffffff00003240676612c0b463a33e5bcc5a3f00003240000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000032409a9921c0b463a33e945f593f0000324000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff00003240333303c0b563a33e22395c3f6666224000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff66662240333303c0f376a03e23395c3fcccc604000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc6040cdcc30c0f929ac3ecdf2573f6666704000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff66667040cccc30c0bb16af3ecdf2573fcccc6040000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc60409a9921c0f929ac3e945f593f6666704000008040cccc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff66667040cccc30c0bb16af3ecdf2573f66667040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff666670409a9921c0bb16af3e955f593f9a99414000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff9a994140cdcc30c07650a63eccf2573f3433514000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff34335140000040c0383da93e0586563f3433514000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff34335140cccc30c0383da93eccf2573f33335140000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff333351409a9921c0383da93e935f593f9a994140000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff9a9941409a9921c07650a63e935f593f9a99414000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff9a994140666612c07650a63e5bcc5a3f9a994140000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff9a9941409a9921c07650a63e935f593f3333514000008040676612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff33335140676612c0383da93e5bcc5a3f9a99414000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff9a994140333303c07650a63e23395c3f3333514000008040676612c000000000000080bf000000000000803f00000000000000000000803fffffffff33335140676612c0383da93e5bcc5a3f3433514000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff34335140333303c0383da93e23395c3fcccc604000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffffcccc6040666612c0f929ac3e5ccc5a3f6666704000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff66667040666612c0ba16af3e5ccc5a3fcccc6040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffffcccc60409a9921c0f929ac3e945f593fcdcc604000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcdcc6040333303c0f929ac3e23395c3fcccc604000008040666612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffcccc6040666612c0f929ac3e5ccc5a3f6666704000008040666612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff66667040666612c0ba16af3e5ccc5a3f6666704000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff66667040333303c0ba16af3e23395c3f0000b040000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b0409a996dc03603c43eaf3f523f0000b84000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b840cdcc7cc02b03c73ee8d2503f0000b840000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b8409a996dc02b03c73eaf3f523f0000b04000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b040cdcc7cc03603c43ee8d2503f0000b0400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000b04066665ec03603c43e77ac533f0000b840000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000b8409a996dc02b03c73eaf3f523f0000b8400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000b84066665ec02b03c73e77ac533f0000b040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000b0409a996dc03603c43eaf3f523f0000a040000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a0409a996dc04d03be3eaf3f523f0000a84000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a840cdcc7cc04103c13ee8d2503f0000a840000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a8409a996dc04103c13eaf3f523f0000a04000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a040cdcc7cc04d03be3ee8d2503f0000a0400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000a04066665ec04d03be3e76ac533f0000a840000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000a8409a996dc04103c13eaf3f523f0000a8400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000a84066665ec04103c13e76ac533f0000a040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0409a996dc04d03be3eaf3f523f0000a0400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a04033334fc04d03be3e3d19553f0000a8400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a84066665ec04103c13e76ac533f0000a8400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a84033334fc04203c13e3d19553f0000a0400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a04066665ec04d03be3e76ac533f0000a04000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a040000040c04d03be3e0586563f0000a84000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a840000040c04203c13e0586563f0000b0400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b04033334fc03603c43e3e19553f0000b8400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b84066665ec02b03c73e77ac533f0000b8400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b84033334fc02b03c73e3e19553f0000b0400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b04066665ec03603c43e77ac533f0000b04000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b040000040c03603c43e0686563f0000b84000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b840000040c02b03c73e0686563f00009040000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000090409a996dc06203b83eb03f523f0000984000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00009840cdcc7cc05603bb3ee8d2503f00009840000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000098409a996dc05703bb3eaf3f523f0000904000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00009040cdcc7cc06203b83ee8d2503f000090400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000904066665ec06203b83e77ac533f00009840000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff000098409a996dc05703bb3eaf3f523f000098400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000984066665ec05703bb3e77ac533f00009040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff000090409a996dc06203b83eb03f523f00008040000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000080409a996dc07b03b23eb03f523f0000884000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00008840cdcc7cc06f03b53ee9d2503f00008840000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000088409a996dc06f03b53eb03f523f0000804000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00008040cdcc7cc07b03b23ee9d2503f000080400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000804066665ec07b03b23e77ac533f00008840000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff000088409a996dc06f03b53eb03f523f000088400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000884066665ec06f03b53e77ac533f00008040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff000080409a996dc07b03b23eb03f523f000080400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000804033334fc07a03b23e3e19553f000088400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000884066665ec06f03b53e77ac533f000088400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000884033334fc06f03b53e3e19553f000080400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000804066665ec07b03b23e77ac533f0000804000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00008040000040c07a03b23e0586563f0000884000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00008840000040c06f03b53e0586563f000090400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000904033334fc06303b83e3e19553f000098400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000984066665ec05703bb3e77ac533f000098400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000984033334fc05703bb3e3e19553f000090400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000904066665ec06203b83e77ac533f0000904000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00009040000040c06303b83e0586563f0000984000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00009840000040c05803bb3e0586563f0000904000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff00009040cdcc30c06303b83ecdf2573f0000984000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff00009840000040c05803bb3e0586563f0000984000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff00009840cccc30c05803bb3eccf2573f00009040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff000090409a9921c06403b83e945f593f00009840000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000098409a9921c05803bb3e945f593f0000904000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00009040cdcc30c06303b83ecdf2573f0000804000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff00008040cdcc30c07a03b23eccf2573f0000884000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff00008840000040c06f03b53e0586563f0000884000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff00008840cccc30c06f03b53eccf2573f00008040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff000080409a9921c07a03b23e945f593f00008840000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000088409a9921c06f03b53e945f593f0000804000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00008040cdcc30c07a03b23eccf2573f0000804000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff00008040666612c07a03b23e5bcc5a3f0000884000008040676612c000000000000080bf000000000000803f00000000000000000000803fffffffff00008840676612c06f03b53e5bcc5a3f0000884000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff00008840333303c06f03b53e23395c3f0000804000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00008040333303c07a03b23e23395c3f0000904000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff00009040666612c06403b83e5bcc5a3f0000984000008040676612c000000000000080bf000000000000803f00000000000000000000803fffffffff00009840676612c05903bb3e5bcc5a3f0000984000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff00009840333303c05903bb3e22395c3f0000904000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff00009040333303c06403b83e23395c3f0000b04000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000b040cdcc30c03603c43ecdf2573f0000b84000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000b840000040c02b03c73e0686563f0000b84000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000b840cccc30c02b03c73ecdf2573f0000b040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000b0409a9921c03703c43e945f593f0000b840000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b8409a9921c02b03c73e945f593f0000b04000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b040cdcc30c03603c43ecdf2573f0000a04000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040cdcc30c04d03be3eccf2573f0000a84000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a840000040c04203c13e0586563f0000a84000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a840cccc30c04203c13eccf2573f0000a040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0409a9921c04d03be3e935f593f0000a840000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a8409a9921c04203c13e935f593f0000a04000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a040cdcc30c04d03be3eccf2573f0000a04000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040666612c04d03be3e5bcc5a3f0000a84000008040676612c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a840676612c04203c13e5bcc5a3f0000a84000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a840333303c04303c13e22395c3f0000a04000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a040333303c04d03be3e22395c3f0000b04000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff0000b040666612c03703c43e5bcc5a3f0000b84000008040676612c000000000000080bf000000000000803f00000000000000000000803fffffffff0000b840676612c02b03c73e5bcc5a3f0000b84000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff0000b840333303c02b03c73e22395c3f0000b04000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000b040333303c03703c43e22395c3f6666fe4000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff6666fe40333303c02a69e13e23395c3f0000f04000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000f040333303c0d902dc3e22395c3f0000f04000008040666612c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f040666612c0d902dc3e5bcc5a3f0000f040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f0409a9921c0d902dc3e945f593f0000f04000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f040cdcc30c0d902dc3ecdf2573f0000f04000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000040c0d902dc3e0586563f6666fe4000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff6666fe40cdcc7cc02b69e13ee8d2503f0000f0400000804033334fc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000f04033334fc0d902dc3e3e19553f0000f0400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000f04066665ec0d902dc3e77ac533f0000f040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000f0409a996dc0d902dc3eaf3f523f0000f04000008040cdcc7cc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000f040cdcc7cc0d902dc3ee8d2503f0000ea40000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000ea409a996dc0e2c2d93eaf3f523f0000e440000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000e4409a996dc0eb82d73eaf3f523f0000e44000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000e440cdcc7cc0eb82d73ee8d2503f0000ea4000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000ea40cdcc7cc0e2c2d93ee8d2503f0000e4400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000e44066665ec0eb82d73e77ac533f0000ea40000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000ea409a996dc0e2c2d93eaf3f523f0000ea400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000ea4066665ec0e2c2d93e77ac533f0000e440000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000e4409a996dc0eb82d73eaf3f523f0000de40000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000de409a996dc0f342d53eaf3f523f0000d840000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000d8409a996dc0fc02d33eaf3f523f0000d84000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000d840cdcc7cc0fc02d33ee8d2503f0000de4000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000de40cdcc7cc0f342d53ee8d2503f0000d8400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d84066665ec0fc02d33e77ac533f0000de40000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000de409a996dc0f342d53eaf3f523f0000de400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000de4066665ec0f342d53e76ac533f0000d840000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d8409a996dc0fc02d33eaf3f523f0000de400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000de4033334fc0f342d53e3e19553f0000d8400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000d84033334fc0fc02d33e3e19553f0000d8400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000d84066665ec0fc02d33e77ac533f0000de400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000de4066665ec0f342d53e76ac533f0000de4000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000de40000040c0f342d53e0586563f0000d84000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000d840000040c0fc02d33e0586563f0000ea400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000ea4033334fc0e2c2d93e3e19553f0000e4400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000e44033334fc0eb82d73e3e19553f0000e4400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000e44066665ec0eb82d73e77ac533f0000ea400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000ea4066665ec0e2c2d93e77ac533f0000ea4000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000ea40000040c0e2c2d93e0586563f0000e44000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000e440000040c0eb82d73e0586563f0000d240000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000d2409a996dc004c3d03eaf3f523f0000cc40000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc409a996dc00d83ce3eaf3f523f0000cc4000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc40cdcc7cc00d83ce3ee8d2503f0000d24000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000d240cdcc7cc004c3d03ee8d2503f0000cc400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000cc4066665ec00d83ce3e77ac533f0000d240000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d2409a996dc004c3d03eaf3f523f0000d2400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d24066665ec004c3d03e77ac533f0000cc40000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000cc409a996dc00d83ce3eaf3f523f0000c640000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000c6409a996dc01643cc3eaf3f523f0000c040000080409a996dc000000000000080bf000000000000803f00000000000000000000803fffffffff0000c0409a996dc01f03ca3eaf3f523f0000c04000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000c040cdcc7cc02003ca3ee8d2503f0000c64000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000c640cdcc7cc01643cc3ee8d2503f0000c0400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c04066665ec01f03ca3e77ac533f0000c640000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c6409a996dc01643cc3eaf3f523f0000c6400000804066665ec000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c64066665ec01643cc3e77ac533f0000c040000080409a996dc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c0409a996dc01f03ca3eaf3f523f0000c6400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000c64033334fc01643cc3e3e19553f0000c0400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000c04033334fc01f03ca3e3e19553f0000c0400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000c04066665ec01f03ca3e77ac533f0000c6400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000c64066665ec01643cc3e77ac533f0000c64000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c640000040c01643cc3e0586563f0000c04000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000040c01e03ca3e0586563f0000d2400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000d24033334fc004c3d03e3e19553f0000cc400000804033334fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc4033334fc00d83ce3e3e19553f0000cc400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc4066665ec00d83ce3e77ac533f0000d2400000804066665ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000d24066665ec004c3d03e77ac533f0000d24000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000d240000040c004c3d03e0586563f0000cc4000008040000040c000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc40000040c00d83ce3e0586563f0000cc4000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000cc40cdcc30c00d83ce3eccf2573f0000d24000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d240000040c004c3d03e0586563f0000d24000008040cccc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d240cccc30c004c3d03eccf2573f0000cc40000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc409a9921c00d83ce3e945f593f0000d24000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000d240cccc30c004c3d03eccf2573f0000d240000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000d2409a9921c004c3d03e945f593f0000cc4000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc40cdcc30c00d83ce3eccf2573f0000c04000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c040cdcc30c01e03ca3eccf2573f0000c64000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c640000040c01643cc3e0586563f0000c64000008040cccc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c640cccc30c01643cc3ecdf2573f0000c040000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c0409a9921c01e03ca3e945f593f0000c64000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c640cccc30c01643cc3ecdf2573f0000c640000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c6409a9921c01543cc3e945f593f0000c04000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c040cdcc30c01e03ca3eccf2573f0000c04000008040666612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c040666612c01e03ca3e5bcc5a3f0000c040000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c0409a9921c01e03ca3e945f593f0000c64000008040676612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c640676612c01543cc3e5bcc5a3f0000c64000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c640333303c01543cc3e22395c3f0000c04000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c040333303c01e03ca3e22395c3f0000cc4000008040666612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000cc40666612c00d83ce3e5bcc5a3f0000cc40000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000cc409a9921c00d83ce3e945f593f0000d24000008040676612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d240676612c004c3d03e5bcc5a3f0000d24000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d240333303c004c3d03e22395c3f0000cc4000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff0000cc40333303c00d83ce3e22395c3f0000e44000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000e440cdcc30c0eb82d73ecdf2573f0000ea4000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000ea40000040c0e2c2d93e0586563f0000ea4000008040cccc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000ea40cccc30c0e2c2d93ecdf2573f0000e440000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000e4409a9921c0eb82d73e945f593f0000ea4000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000ea40cccc30c0e2c2d93ecdf2573f0000ea40000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000ea409a9921c0e2c2d93e945f593f0000e44000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000e440cdcc30c0eb82d73ecdf2573f0000d84000008040cdcc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d840cdcc30c0fc02d33eccf2573f0000de4000008040000040c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000de40000040c0f342d53e0586563f0000de4000008040cccc30c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000de40cccc30c0f342d53eccf2573f0000d840000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000d8409a9921c0fc02d33e935f593f0000de4000008040cccc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000de40cccc30c0f342d53eccf2573f0000de40000080409a9921c000000000000080bf000000000000803f00000000000000000000803fffffffff0000de409a9921c0f342d53e935f593f0000d84000008040cdcc30c000000000000080bf000000000000803f00000000000000000000803fffffffff0000d840cdcc30c0fc02d33eccf2573f0000d84000008040666612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d840666612c0fc02d33e5bcc5a3f0000d840000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000d8409a9921c0fc02d33e935f593f0000de4000008040676612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000de40676612c0f342d53e5bcc5a3f0000de4000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000de40333303c0f342d53e22395c3f0000d84000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff0000d840333303c0fc02d33e22395c3f0000e44000008040666612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000e440666612c0eb82d73e5bcc5a3f0000e440000080409a9921c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000e4409a9921c0eb82d73e945f593f0000ea4000008040676612c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000ea40676612c0e2c2d93e5bcc5a3f0000ea4000008040333303c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000ea40333303c0e2c2d93e22395c3f0000e44000008040333303c000000000000080bf000000000000803f00000000000000000000803fffffffff0000e440333303c0eb82d73e22395c3fcccc124000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffffcccc12c0cdcc7cc02f8a9d3ee8d2503f3333034000008040cdcc7cc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff333303c0cdcc7cc06d9d9a3ee8d2503f0000004000008040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c0000080c0d6039a3e1c86503f6666224000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff666622c0cdcc7cc0ef76a03ee8d2503f0000324000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff000032c0cdcc7cc0b163a33ee8d2503f9a99414000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff9a9941c0cdcc7cc07650a63ee8d2503f0000804000008040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000080c08003b23e1c86503f3433514000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff343351c0cdcc7cc0373da93ee8d2503fcdcc604000008040cdcc7cc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffffcdcc60c0cdcc7cc0fa29ac3ee8d2503f6666704000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff666670c0cdcc7cc0bd16af3ee8d2503f0000804000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0cdcc7cc07b03b23ee9d2503f3333034000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff333303c0333303c06f9d9a3e23395c3f0000004000008040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c0000000c0d8039a3eee855c3f3333034000008040666612c000000000000080bf00000000000080bf0000000000000000000080bfffffffff333303c0666612c06f9d9a3e5ccc5a3f33330340000080409a9921c000000000000080bf00000000000080bf0000000000000000000080bfffffffff333303c09a9921c06f9d9a3e955f593f3333034000008040cdcc30c000000000000080bf00000000000080bf0000000000000000000080bfffffffff333303c0cdcc30c06e9d9a3ecdf2573f3333034000008040000040c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff333303c0000040c06e9d9a3e0686563f333303400000804033334fc000000000000080bf00000000000080bf0000000000000000000080bfffffffff333303c033334fc06e9d9a3e3f19553f333303400000804066665ec000000000000080bf00000000000080bf0000000000000000000080bfffffffff333303c066665ec06e9d9a3e77ac533f33330340000080409a996dc000000000000080bf00000000000080bf0000000000000000000080bfffffffff333303c09a996dc06e9d9a3eb03f523f0000804000008040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000000c07a03b23eee855c3f9a99414000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff9a9941c0333303c07650a63e23395c3f0000324000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000032c0333303c0b563a33e22395c3f6666224000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff666622c0333303c0f376a03e23395c3fcccc124000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffffcccc12c0333303c0318a9d3e23395c3f3333034000008040333303c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff333303c0333303c06f9d9a3e23395c3f3433514000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff343351c0333303c0383da93e23395c3fcdcc604000008040333303c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffffcdcc60c0333303c0f929ac3e23395c3f6666704000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff666670c0333303c0ba16af3e23395c3f0000804000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0333303c07a03b23e23395c3f0000a04000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a0c0333303c04d03be3e22395c3f0000c04000008040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0000000c01e03ca3eee855c3f0000a84000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a8c0333303c04303c13e22395c3f0000b04000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b0c0333303c03703c43e22395c3f0000b84000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0333303c02b03c73e22395c3f0000c04000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0333303c01e03ca3e22395c3f0000984000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000098c0333303c05903bb3e22395c3f0000904000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000090c0333303c06403b83e23395c3f0000884000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000088c0333303c06f03b53e23395c3f0000c64000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c6c0cdcc7cc01643cc3ee8d2503f0000c04000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0cdcc7cc02003ca3ee8d2503f0000c04000008040000080c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000c0c0000080c01f03ca3e1d86503f0000cc4000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000ccc0cdcc7cc00d83ce3ee8d2503f0000d24000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d2c0cdcc7cc004c3d03ee8d2503f0000d84000008040cdcc7cc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000d8c0cdcc7cc0fc02d33ee8d2503f0000f04000008040000080c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000f0c0000080c0da02dc3e1c86503f0000de4000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000dec0cdcc7cc0f342d53ee8d2503f0000e44000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e4c0cdcc7cc0eb82d73ee8d2503f0000ea4000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000eac0cdcc7cc0e2c2d93ee8d2503f0000f04000008040cdcc7cc000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0cdcc7cc0d902dc3ee8d2503f0000c04000008040000000c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000c0c0000000c01e03ca3eee855c3f0000d84000008040333303c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000d8c0333303c0fc02d33e22395c3f0000de4000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000dec0333303c0f342d53e22395c3f0000e44000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e4c0333303c0eb82d73e22395c3f0000ea4000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000eac0333303c0e2c2d93e22395c3f0000f04000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0333303c0d902dc3e22395c3f0000d24000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d2c0333303c004c3d03e22395c3f0000cc4000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000ccc0333303c00d83ce3e22395c3f0000c64000008040333303c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c6c0333303c01543cc3e22395c3f0000884000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff00008840cdcc7cc06f03b53ee9d2503f0000804000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff00008040cdcc7cc07b03b23ee9d2503f0000804000008040310880c000000000000080bf000000000000803f00000000000000000000803fffffffff00008040310880c07b03b23e9484503f0000904000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff00009040cdcc7cc06203b83ee8d2503f0000984000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff00009840cdcc7cc05603bb3ee8d2503f0000a04000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040cdcc7cc04d03be3ee8d2503f0000c04000008040310880c000000000000080bf000000000000803f00000000000000000000803fffffffff0000c040310880c02103ca3e9384503f0000a84000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000a840cdcc7cc04103c13ee8d2503f0000b04000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000b040cdcc7cc03603c43ee8d2503f0000b84000008040cdcc7cc000000000000080bf000000000000803f00000000000000000000803fffffffff0000b840cdcc7cc02b03c73ee8d2503ffebdf34000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdf3c00000884057a5383f1b74ae3efebded4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdedc000008840522b383fd07db03e0000ea4000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000eac0000080406983363fd17db03e0000f04000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000080406efd363f1b74ae3efebdf340000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40b776e240fe724a3fa8f3543ffebdf34000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40b776e2403706493fa8f3543f0000f04000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40bba1d9403706493fbf4b533f0000f040000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40bba1d940fe724a3fbf4b533ffebded4000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0e7ebdf4053fd773fd4f54b3ffebded40000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0e7ebdf408c90763fd4f54b3f0000ea40000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0eb16d7408c90763feb4d4a3f0000ea4000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0eb16d74053fd773feb4d4a3ffebded400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0e7ebdf40c523753fd4f54b3f0000ea400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0eb16d740c523753feb4d4a3ffebdf3400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40b776e240c5df4b3fa8f3543f0000f0400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40bba1d940c5df4b3fbf4b533ffebdf3400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40b776e2408d4c4d3fa8f3543f0000f0400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40bba1d9408d4c4d3fbf4b533ffebded400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0e7ebdf40fdb6733fd4f54b3f0000ea400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0eb16d740fdb6733feb4d4a3ffebdf34000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040b776e24054b94e3fa8f3543f0000f04000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040bba1d94054b94e3fbf4b533ffebded4000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0e7ebdf40364a723fd4f54b3f0000ea4000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0eb16d740364a723feb4d4a3ffebded4000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0e7ebdf406fdd703fd4f54b3f0000ea4000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0eb16d7406fdd703feb4d4a3ffebdf34000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040b776e2401b26503fa8f3543f0000f04000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040bba1d9401b26503fbf4b533ffebdf340000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140b776e240e292513fa8f3543f0000f040000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140bba1d940e292513fbf4b533ffebded40000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0e7ebdf40a8706f3fd4f54b3f0000ea40000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0eb16d740a8706f3feb4d4a3ffebded4000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0e7ebdf40e0036e3fd4f54b3f0000ea4000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0eb16d740e0036e3feb4d4a3ffebdf34000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240b776e240aaff523fa8f3543f0000f04000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240bba1d940aaff523fbf4b533ffebded4000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0e7ebdf4019976c3fd4f54b3f0000ea4000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0eb16d74019976c3feb4d4a3ffebdf34000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340b776e240716c543fa8f3543f0000f04000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340bba1d940716c543fbf4b533ffebded4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebded40000088406efd363f2924b83efebdf34000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdf340000088406983363f741ab63e0000f04000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000f04000008040522b383f741ab63e0000ea4000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000ea400000804057a5383f2a24b83efebde74000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebde7c00000884057a5383fe300b13efebde14000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebde1c000008840522b383f990ab33e0000de4000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000dec0000080406983363f990ab33e0000e44000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000e4c0000080406efd363fe300b13efebde740000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d401761dd40fe724a3f1bdd563ffebde74000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c401761dd403706493f1bdd563f0000e44000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c401b8cd4403706493f3235553f0000e440000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d401b8cd440fe724a3f3235553ffebde14000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc047d6da40716c543f52374f3ffebde140000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc047d6da40aaff523f52374f3f0000de40000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc04b01d240aaff523f698f4d3f0000de4000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc04b01d240716c543f698f4d3ffebde1400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec047d6da40e292513f52374f3f0000de400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec04b01d240e292513f698f4d3ffebde7400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e401761dd40c5df4b3f1bdd563f0000e4400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e401b8cd440c5df4b3f3235553ffebde7400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f401761dd408d4c4d3f1bdd563f0000e4400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f401b8cd4408d4c4d3f3235553ffebde1400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc047d6da401b26503f52374f3f0000de400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc04b01d2401b26503f698f4d3ffebde74000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040401761dd4054b94e3f1bdd563f0000e44000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040401b8cd44054b94e3f3235553ffebde14000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c047d6da4054b94e3f52374f3f0000de4000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c04b01d24054b94e3f698f4d3ffebde14000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c047d6da408c4c4d3f52374f3f0000de4000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c04b01d2408c4c4d3f698f4d3ffebde74000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30401761dd401b26503f1bdd563f0000e44000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30401b8cd4401b26503f3235553ffebde740000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921401761dd40e292513f1bdd563f0000e440000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921401b8cd440e292513f3235553ffebde140000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c047d6da40c5df4b3f52374f3f0000de40000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c04b01d240c5df4b3f698f4d3ffebde14000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c047d6da40fe724a3f52374f3f0000de4000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c04b01d240fe724a3f698f4d3ffebde74000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612401761dd40aaff523f1bdd563f0000e44000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612401b8cd440aaff523f3235553ffebde14000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c047d6da403706493f52374f3f0000de4000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c04b01d2403706493f698f4d3ffebde74000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303401761dd40716c543f1bdd563f0000e44000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303401b8cd440716c543f3235553ffebde14000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebde1400000884075fc783f2e8e1e3efebde74000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebde740000088407082783fc27a1a3e0000e44000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000e44000008040582a7a3fc27a1a3e0000de4000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000de40000080405ea47a3f2e8e1e3efebddb4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebddbc00000884056e8223f9864b83efebdd54000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdd5c000008840506e223f4e6eba3e0000d24000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000d2c00000804068c6203f4e6eba3e0000d84000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000d8c0000080406d40213f9864b83efebddb40000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40784bd840fe724a3f8dc6583ffebddb4000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40784bd8403706493f8dc6583f0000d84000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c407b76cf403706493fa41e573f0000d840000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d407b76cf40fe724a3fa41e573ffebdd54000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0a8c0d540716c543fe3825e3ffebdd540000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0a8c0d540aaff523fe3825e3f0000d240000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0acebcc40aaff523ffada5c3f0000d24000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0acebcc40716c543ffada5c3ffebdd5400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0a8c0d540e292513fe3825e3f0000d2400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0acebcc40e292513ffada5c3ffebddb400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40784bd840c5df4b3f8dc6583f0000d8400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e407b76cf40c5df4b3fa41e573ffebddb400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40784bd8408d4c4d3f8dc6583f0000d8400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f407b76cf408d4c4d3fa41e573ffebdd5400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0a8c0d5401b26503fe3825e3f0000d2400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0acebcc401b26503ffada5c3ffebddb4000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040784bd84054b94e3f8dc6583f0000d84000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040407b76cf4054b94e3fa41e573ffebdd54000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0a8c0d54054b94e3fe3825e3f0000d24000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0acebcc4054b94e3ffada5c3ffebdd54000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0a8c0d5408c4c4d3fe3825e3f0000d24000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0acebcc408c4c4d3ffada5c3ffebddb4000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040784bd8401b26503f8dc6583f0000d84000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30407b76cf401b26503fa41e573ffebddb40000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140784bd840e292513f8dc6583f0000d840000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921407b76cf40e292513fa41e573ffebdd540000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0a8c0d540c5df4b3fe3825e3f0000d240000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0acebcc40c5df4b3ffada5c3ffebdd54000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0a8c0d540fe724a3fe3825e3f0000d24000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0acebcc40fe724a3ffada5c3ffebddb4000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240784bd840aaff523f8dc6583f0000d84000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612407b76cf40aaff523fa41e573ffebdd54000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0a8c0d5403706493fe3825e3f0000d24000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0acebcc403706493ffada5c3ffebddb4000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340784bd840716c543f8dc6583f0000d84000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303407b76cf40716c543fa41e573ffebdd54000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdd540000088406efd363f6197b53efebddb4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebddb40000088406983363fab8db33e0000d84000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000d84000008040522b383fab8db33e0000d24000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000d2400000804057a5383f6197b53efebdcf4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdcfc000008840eae57a3f8560083dfebdc94000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdc9c000008840e56b7a3f33ae183d0000c64000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000c6c000008040fcc3783f33ae183d0000cc4000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000ccc000008040013e793f8560083dfebdcf40000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40d835d340496a6d3f52374f3ffebdcf4000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40d835d34081fd6b3f52374f3f0000cc4000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40dc60ca4081fd6b3f698f4d3f0000cc40000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40dc60ca40496a6d3f698f4d3ffebdc94000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc008abd0403514603f52374f3ffebdc940000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc008abd0406da75e3f52374f3f0000c640000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc00cd6c7406da75e3f698f4d3f0000c64000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc00cd6c7403514603f698f4d3ffebdc9400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec008abd040a63a5d3f52374f3f0000c6400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec00cd6c740a63a5d3f698f4d3ffebdcf400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40d835d34010d76e3f52374f3f0000cc400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40dc60ca4010d76e3f698f4d3ffebdcf400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40d835d340d743703f52374f3f0000cc400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40dc60ca40d743703f698f4d3ffebdc9400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc008abd040dfcd5b3f52374f3f0000c6400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc00cd6c740dfcd5b3f698f4d3ffebdcf4000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040d835d3409fb0713f52374f3f0000cc4000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040dc60ca409fb0713f698f4d3ffebdc94000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c008abd04017615a3f52374f3f0000c64000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c00cd6c74017615a3f698f4d3ffebdc94000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c008abd04050f4583f52374f3f0000c64000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c00cd6c74050f4583f698f4d3ffebdcf4000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040d835d340661d733f52374f3f0000cc4000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040dc60ca40661d733f698f4d3ffebdcf40000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140d835d3402d8a743f52374f3f0000cc40000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140dc60ca402d8a743f698f4d3ffebdc940000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c008abd0408987573f52374f3f0000c640000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c00cd6c7408987573f698f4d3ffebdc94000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c008abd040c21a563f52374f3f0000c64000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c00cd6c740c21a563f698f4d3ffebdcf4000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240d835d340f5f6753f52374f3f0000cc4000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240dc60ca40f5f6753f698f4d3ffebdc94000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c008abd040faad543f52374f3f0000c64000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c00cd6c740faad543f698f4d3ffebdcf4000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340d835d340bc63773f52374f3f0000cc4000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340dc60ca40bc63773f698f4d3ffebdc94000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdc9400000884042bc1e3f4d6eba3efebdcf4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdcf40000088403d421e3f9864b83e0000cc4000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000cc400000804026ea1f3f9864b83e0000c64000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000c640000080402b64203f4d6eba3efebdc34000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdc3c000008840858e7f3f9226833dfebdbb4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdbbc000008840d3eb7e3f06058e3d0000b84000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c000008040ea437d3f06058e3d0000c04000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000c0c0000080409ce67d3f9226833dfebdbb4000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc078bcca40716c543f556c603ffebdbb40000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc078bcca40aaff523f556c603f0000b840000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc07ce7c140aaff523f6cc45e3f0000b84000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc07ce7c140716c543f6cc45e3ffebdc340000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d403820ce40fe724a3fffaf5a3ffebdc34000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c403820ce403706493fffaf5a3f0000c04000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c403c4bc5403706493f1608593f0000c040000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d403c4bc540fe724a3f1608593ffebdbb400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec078bcca40e292513f556c603f0000b8400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec07ce7c140e292513f6cc45e3ffebdc3400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e403820ce40c5df4b3fffaf5a3f0000c0400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e403c4bc540c5df4b3f1608593ffebdbb400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc078bcca401b26503f556c603f0000b8400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc07ce7c1401b26503f6cc45e3ffebdc3400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f403820ce408d4c4d3fffaf5a3f0000c0400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f403c4bc5408d4c4d3f1608593ffebdbb4000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c078bcca4054b94e3f556c603f0000b84000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c07ce7c14054b94e3f6cc45e3ffebdc34000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040403820ce4054b94e3fffaf5a3f0000c04000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040403c4bc54054b94e3f1608593ffebdbb4000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c078bcca408c4c4d3f556c603f0000b84000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c07ce7c1408c4c4d3f6cc45e3ffebdc34000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30403820ce401b26503fffaf5a3f0000c04000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30403c4bc5401b26503f1608593ffebdc340000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921403820ce40e292513fffaf5a3f0000c040000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921403c4bc540e292513f1608593ffebdbb40000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c078bcca40c5df4b3f556c603f0000b840000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c07ce7c140c5df4b3f6cc45e3ffebdbb4000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c078bcca40fe724a3f556c603f0000b84000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c07ce7c140fe724a3f6cc45e3ffebdc34000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612403820ce40aaff523fffaf5a3f0000c04000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612403c4bc540aaff523f1608593ffebdbb4000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c078bcca403706493f556c603f0000b84000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c07ce7c1403706493f6cc45e3ffebdc34000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303403820ce40716c543fffaf5a3f0000c04000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303403c4bc540716c543f1608593ffebdbb4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdbb40000088409ce67d3f8bf24f3dfebdc34000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdc34000008840ea437d3fa3353a3d0000c04000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000c04000008040d3eb7e3fa3353a3d0000b84000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000b84000008040858e7f3f8bf24f3dfebdb34000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdb3c000008840858e7f3f5011903dfebdab4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebdabc000008840d3eb7e3fc4ef9a3d0000a84000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000a8c000008040ea437d3fc4ef9a3d0000b04000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000b0c0000080409ce67d3f5011903dfebdab4000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0f9f4c340716c543fc755623ffebdab40000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0f9f4c340aaff523fc755623f0000a840000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0fd1fbb40aaff523fdead603f0000a84000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0fd1fbb40716c543fdead603ffebdb340000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40b958c740fe724a3f71995c3ffebdb34000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40b958c7403706493f71995c3f0000b04000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40bc83be403706493f88f15a3f0000b040000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40bc83be40fe724a3f88f15a3ffebdab400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0f9f4c340e292513fc755623f0000a8400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0fd1fbb40e292513fdead603ffebdb3400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40b958c740c5df4b3f71995c3f0000b0400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40bc83be40c5df4b3f88f15a3ffebdab400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0f9f4c3401b26503fc755623f0000a8400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0fd1fbb401b26503fdead603ffebdb3400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40b958c7408d4c4d3f71995c3f0000b0400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40bc83be408d4c4d3f88f15a3ffebdab4000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0f9f4c34054b94e3fc755623f0000a84000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0fd1fbb4054b94e3fdead603ffebdb34000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040b958c74054b94e3f71995c3f0000b04000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040bc83be4054b94e3f88f15a3ffebdab4000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0f9f4c3408c4c4d3fc755623f0000a84000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0fd1fbb408c4c4d3fdead603ffebdb34000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040b958c7401b26503f71995c3f0000b04000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040bc83be401b26503f88f15a3ffebdb340000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140b958c740e292513f71995c3f0000b040000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140bc83be40e292513f88f15a3ffebdab40000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0f9f4c340c5df4b3fc755623f0000a840000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0fd1fbb40c5df4b3fdead603ffebdab4000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0f9f4c340fe724a3fc755623f0000a84000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0fd1fbb40fe724a3fdead603ffebdb34000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240b958c740aaff523f71995c3f0000b04000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240bc83be40aaff523f88f15a3ffebdab4000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0f9f4c3403706493fc755623f0000a84000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0fd1fbb403706493fdead603ffebdb34000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340b958c740716c543f71995c3f0000b04000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340bc83be40716c543f88f15a3ffebdab4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdab40000088409ce67d3f481a813dfebdb34000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebdb34000008840ea437d3fa8776c3d0000b04000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000b04000008040d3eb7e3fa8776c3d0000a84000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a84000008040858e7f3f481a813dfebda34000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebda3c000008840858e7f3f2760203dfebd9b4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebd9bc000008840d3eb7e3f0f1d363d0000984000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff000098c000008040ea437d3f0f1d363d0000a04000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff0000a0c0000080409ce67d3f2760203dfebd9b4000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0792dbd403514603f360a533ffebd9b40000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0792dbd406da75e3f360a533f00009840000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc07d58b4406da75e3f4d62513f0000984000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc07d58b4403514603f4d62513ffebda340000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d403991c04085c2613f360a533ffebda34000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c403991c040be55603f360a533f0000a04000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c403dbcb740be55603f4d62513f0000a040000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d403dbcb74085c2613f4d62513ffebd9b400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0792dbd40a63a5d3f360a533f000098400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec07d58b440a63a5d3f4d62513ffebda3400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e403991c0404d2f633f360a533f0000a0400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e403dbcb7404d2f633f4d62513ffebd9b400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0792dbd40dfcd5b3f360a533f000098400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc07d58b440dfcd5b3f4d62513ffebda3400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f403991c040149c643f360a533f0000a0400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f403dbcb740149c643f4d62513ffebd9b4000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0792dbd4017615a3f360a533f0000984000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c07d58b44017615a3f4d62513ffebda34000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040403991c040db08663f360a533f0000a04000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040403dbcb740db08663f4d62513ffebd9b4000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0792dbd4050f4583f360a533f0000984000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c07d58b44050f4583f4d62513ffebda34000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30403991c040a275673f360a533f0000a04000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30403dbcb740a275673f4d62513ffebda340000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921403991c0406ae2683f360a533f0000a040000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921403dbcb7406ae2683f4d62513ffebd9b40000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0792dbd408987573f360a533f00009840000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c07d58b4408987573f4d62513ffebd9b4000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0792dbd40c21a563f360a533f0000984000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c07d58b440c21a563f4d62513ffebda34000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612403991c040314f6a3f360a533f0000a04000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612403dbcb740314f6a3f4d62513ffebd9b4000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0792dbd40faad543f360a533f0000984000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c07d58b440faad543f4d62513ffebda34000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303403991c040f8bb6b3f360a533f0000a04000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303403dbcb740f8bb6b3f4d62513ffebd9b4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebd9b4000008840c466733f5732a93dfebda34000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebda3400000884013c4723fe2539e3d0000a04000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a04000008040fc6b743fe2539e3d0000984000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000984000008040ad0e753f5732a93dfebd934000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebd93c000008840858e7f3fc71d063dfebd8b4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebd8bc000008840d3eb7e3fb0da1b3d0000884000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff000088c000008040ea437d3fb0da1b3d0000904000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff000090c0000080409ce67d3fc71d063dfebd8b4000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0f965b640f8bb6b3fc420513ffebd8b40000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0f965b640314f6a3fc420513f00008840000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0fd90ad40314f6a3fdb784f3f0000884000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0fd90ad40f8bb6b3fdb784f3ffebd9340000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40b9c9b940496a6d3fc420513ffebd934000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40b9c9b94081fd6b3fc420513f0000904000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40bdf4b04081fd6b3fdb784f3f00009040000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40bdf4b040496a6d3fdb784f3ffebd8b400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0f965b6406ae2683fc420513f000088400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0fd90ad406ae2683fdb784f3ffebd93400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40b9c9b94010d76e3fc420513f000090400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40bdf4b04010d76e3fdb784f3ffebd8b400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0f965b640a275673fc420513f000088400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0fd90ad40a275673fdb784f3ffebd93400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40b9c9b940d743703fc420513f000090400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40bdf4b040d743703fdb784f3ffebd8b4000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0f965b640db08663fc420513f0000884000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0fd90ad40db08663fdb784f3ffebd934000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040b9c9b9409fb0713fc420513f0000904000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040bdf4b0409fb0713fdb784f3ffebd8b4000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0f965b640149c643fc420513f0000884000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0fd90ad40149c643fdb784f3ffebd934000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040b9c9b940661d733fc420513f0000904000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040bdf4b040661d733fdb784f3ffebd9340000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140b9c9b9402d8a743fc420513f00009040000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140bdf4b0402d8a743fdb784f3ffebd8b40000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0f965b6404c2f633fc420513f00008840000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0fd90ad404c2f633fdb784f3ffebd8b4000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0f965b64085c2613fc420513f0000884000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0fd90ad4085c2613fdb784f3ffebd934000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240b9c9b940f5f6753fc420513f0000904000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240bdf4b040f5f6753fdb784f3ffebd8b4000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0f965b640be55603fc420513f0000884000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0fd90ad40be55603fdb784f3ffebd934000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340b9c9b940bc63773fc420513f0000904000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340bdf4b040bc63773fdb784f3ffebd8b4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebd8b40000088409ce67d3f3405023dfebd934000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebd934000008840ea437d3f9890d83c0000904000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000904000008040d3eb7e3f9890d83c0000884000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000884000008040858e7f3f3405023dfebd834000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffebd83c0000088408810383f39249e3e62e2774000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff62e277c000008840e771373f72caa03e6666704000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff666670c000008040fec9353f72caa03e0000804000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000080409f68363f39249e3e62e2774000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc02bb4af403514603fc420513f62e27740000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc02bb4af406da75e3fc420513f66667040000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc02fdfa6406da75e3fdb784f3f6666704000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc02fdfa6403514603fdb784f3ffebd8340000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d403a02b340fe724a3f360a533ffebd834000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c403a02b3403706493f360a533f0000804000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c403e2daa403706493f4d62513f00008040000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d403e2daa40fe724a3f4d62513f62e277400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec02bb4af40a63a5d3fc420513f666670400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec02fdfa640a63a5d3fdb784f3ffebd83400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e403a02b340c5df4b3f360a533f000080400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e403e2daa40c5df4b3f4d62513f62e277400000884034334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff34334fc02bb4af40dfcd5b3fc420513f666670400000804034334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff34334fc02fdfa640dfcd5b3fdb784f3ffebd83400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f403a02b3408d4c4d3f360a533f000080400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f403e2daa408d4c4d3f4d62513f62e2774000008840000040c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff000040c02bb4af4017615a3fc420513f6666704000008040000040c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff000040c02fdfa64017615a3fdb784f3ffebd834000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040403a02b34054b94e3f360a533f0000804000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff000040403e2daa4054b94e3f4d62513f62e2774000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c02bb4af4050f4583fc420513f6666704000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c02fdfa64050f4583fdb784f3ffebd834000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30403a02b3401b26503f360a533f0000804000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc30403e2daa401b26503f4d62513ffebd8340000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921403a02b340e292513f360a533f00008040000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921403e2daa40e292513f4d62513f62e27740000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c02bb4af408987573fc420513f66667040000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c02fdfa6408987573fdb784f3f62e2774000008840666612c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff666612c02bb4af40c11a563fc420513f6666704000008040666612c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff666612c02fdfa640c11a563fdb784f3ffebd834000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612403a02b340aaff523f360a533f0000804000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612403e2daa40aaff523f4d62513f62e2774000008840333303c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff333303c02bb4af40faad543fc420513f6666704000008040333303c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff333303c02fdfa640faad543fdb784f3ffebd834000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303403a02b340716c543f360a533f0000804000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff333303403e2daa40716c543f4d62513f62e2774000008840333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff62e27740000088408ce0333f72caa03efebd834000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebd834000008840ec41333f39249e3e0000804000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000804000008040d5e9343f39249e3e6666704000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff66667040000080407588353f72caa03ec8486840000088409a996dc081e267bff4efd83edc1674b5a4bc8635f4efd828000080bf000080bfffffffffa9996d401a66ac401d5c623fd4f54b3fc948684000008840cdcc7cc081e267bff3efd83edc1674b5a4bc8635f3efd828000080bf000080bfffffffffdccc7c401a66ac4055ef603fd4f54b3fcdcc604000008040cdcc7cc081e267bff4efd83edc1674b5a4bc8635f4efd828000080bf000080bfffffffffdccc7c401e91a34055ef603feb4d4a3fcccc6040000080409a996dc081e267bff4efd83edc1674b5a4bc8635f4efd828000080bf000080bfffffffffa9996d401e91a3401d5c623feb4d4a3fc948684000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffffc94868c0000088407a521d3f6bb6b53e30af584000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff30af58c000008840d9b31c3fa45cb83e3433514000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff343351c000008040f00b1b3fa45cb83ecdcc604000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffffcdcc60c00000804091aa1b3f6bb6b53e30af584000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc00f18a940ccad603fd4f54b3f30af5840000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc00f18a94005415f3fd4f54b3f34335140000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc01343a04005415f3feb4d4a3f3433514000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc01343a040ccad603feb4d4a3f2faf58400000884066665ec080e2673ff3efd8becb1674359bbc86b5f4efd8a80000803f000080bfffffffff74665ec00c18a9403dd45d3fd4f54b3f333351400000804066665ec080e2673ff3efd8becb1674359bbc86b5f4efd8a80000803f000080bfffffffff74665ec01043a0403dd45d3feb4d4a3fc84868400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e401d66ac40e4c8633fd4f54b3fcccc60400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e402191a340e4c8633feb4d4a3fc84868400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f401d66ac40ab35653fd4f54b3fcccc60400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f402191a340ab35653feb4d4a3f2faf58400000884066665ec081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff66665ec00f18a9403dd45d3fd4f54b3f2faf58400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc00f18a94076675c3fd4f54b3f333351400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc01343a04076675c3feb4d4a3f333351400000804066665ec081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff66665ec01343a0403dd45d3feb4d4a3f30af584000008840000040c081e2673ff3efd8bedc1674b5a4bc8635f3efd8280000803f000080bffffffffff2ff3fc01218a940affa5a3fd4f54b3f3433514000008040000040c081e2673ff4efd8bedc1674b5a4bc8635f4efd8280000803f000080bffffffffff2ff3fc01643a040affa5a3feb4d4a3fc948684000008840000040c081e267bff4efd83edc167435a4bc86b5f4efd8a8000080bf000080bffffffffff1ff3f402066ac4073a2663fd4f54b3fcdcc604000008040000040c081e267bff4efd83edc167435a4bc86b5f4efd8a8000080bf000080bffffffffff1ff3f402491a34073a2663feb4d4a3fc848684000008840cdcc30c081e267bff4efd83edc1674b5a3bc8635f4efd8a8000080bf000080bfffffffffdccc30401b66ac403a0f683fd4f54b3fc948684000008840000040c081e267bff3efd83edc1674b5a3bc8635f3efd8a8000080bf000080bfffffffff0f0040401b66ac4073a2663fd4f54b3fcdcc604000008040000040c081e267bff4efd83edc1674b5a3bc8635f4efd8a8000080bf000080bfffffffff0f0040401e91a34073a2663feb4d4a3fcccc604000008040cdcc30c081e267bff4efd83edc1674b5a3bc8635f4efd8a8000080bf000080bfffffffffdccc30401e91a3403a0f683feb4d4a3f30af584000008840000040c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff000040c00f18a940affa5a3fd4f54b3f30af584000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c00f18a940e88d593fd4f54b3f3433514000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c01343a040e88d593feb4d4a3f3433514000008040000040c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff000040c01343a040affa5a3feb4d4a3f2faf5840000088409a9921c081e2673ff4efd8beec167435acbc86b5f4efd8280000803f000080bfffffffffa89921c00d18a9402021583fd4f54b3f33335140000080409a9921c081e2673ff4efd8beec167435acbc86b5f4efd8280000803f000080bfffffffffa89921c01143a0402021583feb4d4a3fc8486840000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921401d66ac40017c693fd4f54b3fcccc6040000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a9921402191a340017c693feb4d4a3f2faf584000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c00f18a94059b4563fd4f54b3f3333514000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c01343a04059b4563feb4d4a3fc848684000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612401d66ac40c9e86a3fd4f54b3fcccc604000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff666612402191a340c9e86a3feb4d4a3f30af584000008840333303c080e2673ff2efd8becb1674b59bbc8635f4efd8280000803f000080bfffffffff253303c01118a9409247553fd4f54b3f3433514000008040333303c080e2673ff2efd8becb1674b59bbc8635f4efd8280000803f000080bfffffffff253303c01543a0409247553feb4d4a3fc948684000008840333303c081e267bff4efd83edc167435a4bc86b5f4efd8a8000080bf000080bfffffffff243303401f66ac4090556c3fd4f54b3fcdcc604000008040333303c081e267bff4efd83edc167435a4bc86b5f4efd8a8000080bf000080bfffffffff243303402391a34090556c3feb4d4a3f30af584000008840333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff30af5840000088407e22193fa45cb83ec948684000008840333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffffc948684000008840de83183f6bb6b53ecdcc604000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffffcdcc604000008040c72b1a3f6bb6b53e3433514000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff343351400000804067ca1a3fa45cb83e9615494000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff961549c0000088408710383f47a7a13efc7b394000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bffffffffffc7b39c000008840e771373f804da43e0000324000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff000032c000008040fec9353f804da43e9a99414000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff9a9941c0000080409e68363f47a7a13efc7b394000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0f37ba240716c543f393f643ffc7b3940000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0f37ba240aaff523f393f643f00003240000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0f6a69940aaff523f5197623f0000324000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0f6a69940716c543f5197623f96154940000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d4001caa540496a6d3f360a533f9615494000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c4001caa54081fd6b3f360a533f9a99414000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c4005f59c4081fd6b3f4d62513f9a994140000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d4005f59c40496a6d3f4d62513ffc7b39400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0f37ba240e292513f393f643f000032400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0f6a69940e292513f5197623f961549400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e4001caa54010d76e3f360a533f9a9941400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e4005f59c4010d76e3f4d62513ffc7b39400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0f37ba2401b26503f393f643f000032400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0f6a699401b26503f5197623f961549400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f4001caa540d743703f360a533f9a9941400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f4005f59c40d743703f4d62513ffc7b394000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0f37ba24054b94e3f393f643f0000324000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0f6a6994054b94e3f5197623f9615494000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff0000404001caa5409fb0713f360a533f9a99414000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff0000404005f59c409fb0713f4d62513ffc7b394000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0f37ba2408c4c4d3f393f643f0000324000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0f6a699408c4c4d3f5197623f9615494000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc304001caa540661d733f360a533f9a99414000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc304005f59c40661d733f4d62513f96154940000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a99214001caa5402d8a743f360a533f9a994140000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a99214005f59c402d8a743f4d62513ffc7b3940000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0f37ba240c5df4b3f393f643f00003240000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0f6a69940c5df4b3f5197623ffc7b394000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0f37ba240fe724a3f393f643f0000324000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0f6a69940fe724a3f5197623f9615494000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6666124001caa540f5f6753f360a533f9a99414000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6666124005f59c40f5f6753f4d62513ffc7b394000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0f37ba2403706493f393f643f0000324000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0f6a699403706493f5197623f9615494000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff3333034001caa540bc63773f360a533f9a99414000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff3333034005f59c40bc63773f4d62513ffc7b394000008840333303c00000000000000000000080bf0000803f0000000000000000000080bffffffffffc7b3940000088408ce0333f804da43e9615494000008840333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff9615494000008840ec41333f47a7a13e9a99414000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff9a99414000008040d5e9343f47a7a13e0000324000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff00003240000080407588353f804da43e62e2294000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff62e229c000008840f3c9383f2ba19a3ec8481a4000008840cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffffc8481ac000008840532b383f64479d3ecccc124000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffffcccc12c0000080406a83363f64479d3e6666224000008040cdcc7cc000000000000000000000803f000080bf0000000000000000000080bfffffffff666622c0000080400a22373f2ba19a3ec8481a4000008840cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0d6df9b40f8bb6b3f52374f3fc8481a40000088409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0d6df9b40314f6a3f52374f3fcccc1240000080409a996dc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a996dc0da0a9340314f6a3f698f4d3fcccc124000008040cdcc7cc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffffcdcc7cc0da0a9340f8bb6b3f698f4d3f62e22940000088409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40e42d9f40fe724a3fc420513f62e2294000008840cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40e42d9f403706493fc420513f6666224000008040cdcc7cc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc7c40e85896403706493fdb784f3f66662240000080409a996dc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a996d40e8589640fe724a3fdb784f3fc8481a400000884066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0d6df9b406ae2683f52374f3fcccc12400000804066665ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff66665ec0da0a93406ae2683f698f4d3f62e229400000884066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40e42d9f40c5df4b3fc420513f666622400000804066665ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66665e40e8589640c5df4b3fdb784f3fc8481a400000884033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0d6df9b40a275673f52374f3fcccc12400000804033334fc081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff33334fc0da0a9340a275673f698f4d3f62e229400000884033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40e42d9f408d4c4d3fc420513f666622400000804033334fc081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33334f40e85896408d4c4d3fdb784f3fc8481a4000008840000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0d6df9b40db08663f52374f3fcccc124000008040000040c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff000040c0da0a9340db08663f698f4d3f62e2294000008840000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040e42d9f4054b94e3fc420513f6666224000008040000040c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff00004040e858964054b94e3fdb784f3fc8481a4000008840cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0d6df9b40149c643f52374f3fcccc124000008040cccc30c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffcccc30c0da0a9340149c643f698f4d3f62e2294000008840cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040e42d9f401b26503fc420513f6666224000008040cdcc30c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffcdcc3040e85896401b26503fdb784f3f62e22940000088409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140e42d9f40e292513fc420513f66662240000080409a9921c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff9a992140e8589640e292513fdb784f3fc8481a40000088409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0d6df9b404c2f633f52374f3fcccc1240000080409a9921c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff9a9921c0da0a93404c2f633f698f4d3fc8481a4000008840676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0d6df9b4085c2613f52374f3fcccc124000008040676612c081e2673ff4efd8be0000000000000000000000000000803f000080bfffffffff676612c0da0a934085c2613f698f4d3f62e2294000008840666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240e42d9f40aaff523fc420513f6666224000008040666612c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff66661240e8589640aaff523fdb784f3fc8481a4000008840333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0d6df9b40be55603f52374f3fcccc124000008040333303c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff333303c0da0a9340be55603f698f4d3f62e2294000008840333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340e42d9f40716c543fc420513f6666224000008040333303c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffff33330340e8589640716c543fdb784f3fc8481a4000008840333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffffc8481a40000088408be27d3ff394a73d62e2294000008840333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff62e2294000008840ea437d3f0efc9c3d6666224000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffff6666224000008040d3eb7e3f0efc9c3dcccc124000008040333303c00000000000000000000080bf0000803f0000000000000000000080bfffffffffcccc124000008040748a7f3ff394a73df2d2b64000008040f2d2bac000000000ffff7fbf000000000000803f00000000000000000000803ffffffffff2d2b640f2d2bac04792c63eba7e453ff1d2b64000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803ffffffffff1d2b640c4a0bcc04792c63e2428453f976ebe4000008040c4a0bcc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff976ebe40c4a0bcc09a6cc93e2428453f976ebe4000008040f2d2bac000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40f2d2bac09a6cc93eba7e453ff2d2b64000008040976ebec000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640976ebec04792c63e8dd1443f976ebe4000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40c4a0bcc09a6cc93e2428453f976ebe4000008040976ebec000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40976ebec09a6cc93e8dd1443fa69ba74000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740c4a0bcc0a0ddc03e2428453f4c37af4000008040976ebec000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40976ebec0f3b7c33e8dd1443f4c37af4000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40c4a0bcc0f3b7c33e2428453fa69ba74000008040976ebec000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740976ebec0a0ddc03e8dd1443fa69ba74000008040f2d2bac000000000ffff7fbf000000000000803f00000000000000000000803fffffffffa69ba740f2d2bac0a0ddc03eba7e453f4c37af4000008040c4a0bcc000000000ffff7fbf000000000000803f00000000000000000000803fffffffff4c37af40c4a0bcc0f3b7c33e2428453f4c37af4000008040f1d2bac000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40f1d2bac0f3b7c33eba7e453fa69ba740000080401f05b9c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba7401f05b9c0a0ddc03e50d5453f4c37af40000080401e05b9c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af401e05b9c0f3b7c33e50d5453fa69ba74000008040f2d2bac000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740f2d2bac0a0ddc03eba7e453fa69ba740000080404c37b7c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba7404c37b7c0a0ddc03ee62b463f4c37af40000080404c37b7c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af404c37b7c0f3b7c33ee62b463ff2d2b640000080401f05b9c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b6401f05b9c04792c63e50d5453f976ebe40000080401f05b9c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe401f05b9c09a6cc93e50d5453ff2d2b64000008040f2d2bac000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640f2d2bac04792c63eba7e453ff2d2b640000080404c37b7c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b6404c37b7c04792c63ee62b463f976ebe40000080404c37b7c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe404c37b7c09a6cc93ee62b463f5a64984000008040f2d2bac000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840f2d2bac0f928bb3eba7e453f0000a04000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040c4a0bcc04e03be3e2428453f0000a04000008040f2d2bac000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040f2d2bac04d03be3eba7e453f5a64984000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840c4a0bcc0f928bb3e2428453f0000a04000008040976ebec000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040976ebec04e03be3e8dd1443f5a64984000008040976ebec000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840976ebec0f928bb3e8dd1443f0e2d894000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940c4a0bcc05574b53e2328453fb4c8904000008040976ebec000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040976ebec0a74eb83e8dd1443fb4c8904000008040c4a0bcc000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040c4a0bcc0a74eb83e2328453f0e2d894000008040976ebec000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940976ebec05574b53e8dd1443f0e2d894000008040f2d2bac000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0e2d8940f2d2bac05474b53eb97e453fb4c8904000008040c4a0bcc000000000ffff7fbf000000000000803f00000000000000000000803fffffffffb4c89040c4a0bcc0a74eb83e2328453fb4c8904000008040f1d2bac000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040f1d2bac0a74eb83eba7e453f0e2d8940000080401f05b9c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d89401f05b9c05474b53e50d5453fb4c89040000080401e05b9c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c890401e05b9c0a74eb83e50d5453f0e2d894000008040f2d2bac000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940f2d2bac05474b53eb97e453f0e2d8940000080404c37b7c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d89404c37b7c05474b53ee62b463fb4c89040000080404c37b7c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c890404c37b7c0a74eb83ee62b463f5a649840000080401f05b9c000000000000080bf000000000000803f00000000000000000000803fffffffff5a6498401f05b9c0f928bb3e50d5453f0000a040000080401f05b9c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0401f05b9c04d03be3e50d5453f5a649840000080404c37b7c000000000000080bf000000000000803f00000000000000000000803fffffffff5a6498404c37b7c0f928bb3ee72b463f0000a040000080404c37b7c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0404c37b7c04d03be3ee72b463f5a649840000080407a69b5c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff5a6498407a69b5c0f928bb3e7d82463f0000a040000080404c37b7c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000a0404c37b7c04d03be3ee72b463f0000a040000080407969b5c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0407969b5c04d03be3e7d82463f5a64984000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840a69bb3c0f928bb3e13d9463f0000a04000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040a69bb3c04c03be3e13d9463f5a649840000080407a69b5c000000000000080bf000000000000803f00000000000000000000803fffffffff5a6498407a69b5c0f928bb3e7d82463f0e2d8940000080407a69b5c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0e2d89407a69b5c05474b53e7c82463fb4c89040000080404c37b7c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffb4c890404c37b7c0a74eb83ee62b463fb4c89040000080407969b5c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c890407969b5c0a64eb83e7c82463f0e2d894000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940a69bb3c05374b53e12d9463fb4c8904000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040a69bb3c0a64eb83e12d9463f0e2d8940000080407a69b5c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d89407a69b5c05474b53e7c82463f0e2d894000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940d3cdb1c05374b53ea82f473fb4c8904000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040d3cdb1c0a64eb83ea82f473f0e2d8940000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d89400000b0c05374b53e3f86473fb4c89040000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c890400000b0c0a64eb83e3f86473f5a64984000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840d3cdb1c0f928bb3eaa2f473f0000a04000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040d3cdb1c04c03be3eaa2f473f5a649840000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff5a6498400000b0c0f928bb3e4086473f0000a040000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0400000b0c04c03be3e4086473ff2d2b640000080407a69b5c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b6407a69b5c04792c63e7c82463f976ebe40000080407969b5c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe407969b5c0996cc93e7c82463ff2d2b64000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640a69bb3c04792c63e13d9463f976ebe4000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40a69bb3c0996cc93e13d9463ff2d2b640000080407a69b5c000000000ffff7fbf000000000000803f00000000000000000000803ffffffffff2d2b6407a69b5c04792c63e7c82463fa69ba740000080407a69b5c000000000ffff7fbf000000000000803f00000000000000000000803fffffffffa69ba7407a69b5c0a0ddc03e7c82463f4c37af40000080404c37b7c000000000ffff7fbf000000000000803f00000000000000000000803fffffffff4c37af404c37b7c0f3b7c33ee62b463f4c37af40000080407969b5c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af407969b5c0f3b7c33e7c82463fa69ba74000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740a69bb3c0a0ddc03e13d9463f4c37af4000008040a69bb3c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40a69bb3c0f3b7c33e13d9463fa69ba740000080407a69b5c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba7407a69b5c0a0ddc03e7c82463fa69ba74000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740d3cdb1c0a0ddc03ea92f473f4c37af4000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40d3cdb1c0f3b7c33ea92f473fa69ba740000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba7400000b0c09fddc03e3f86473f4c37af40000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af400000b0c0f3b7c33e3f86473ff2d2b64000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640d3cdb1c04792c63ea92f473f976ebe4000008040d3cdb1c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40d3cdb1c0996cc93ea92f473ff2d2b640000080400000b0c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b6400000b0c04792c63e3f86473f976ebe40000080400000b0c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe400000b0c0996cc93e3f86473ff2d2b640000080406065aac000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b6406065aac04792c63e3993483f976ebe40000080406065aac000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe406065aac0996cc93e3993483ff2d2b64000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640c1caa4c04792c63e33a0493f976ebe4000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40c1caa4c09a6cc93e32a0493fa69ba740000080406065aac000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba7406065aac0a0ddc03e3993483f4c37af40000080406065aac000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af406065aac0f3b7c33e3993483fa69ba74000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740c1caa4c0a0ddc03e33a0493f4c37af4000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40c1caa4c0f3b7c33e33a0493fa69ba7400000804022309fc000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba74022309fc0a0ddc03e2dad4a3f4c37af400000804022309fc000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af4022309fc0f4b7c33e2cad4a3fa69ba74000008040829599c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740829599c0a1ddc03e27ba4b3f4c37af4000008040829599c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40829599c0f4b7c33e26ba4b3ff2d2b6400000804022309fc000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b64022309fc04792c63e2cad4a3f976ebe400000804022309fc000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe4022309fc09a6cc93e2cad4a3ff2d2b64000008040829599c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640829599c04792c63e26ba4b3f976ebe4000008040829599c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40829599c09a6cc93e26ba4b3f5a649840000080406065aac000000000000080bf000000000000803f00000000000000000000803fffffffff5a6498406065aac0f928bb3e3a93483f0000a040000080406065aac000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0406065aac04c03be3e3a93483f5a64984000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840c1caa4c0f928bb3e34a0493f0000a04000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040c1caa4c04c03be3e33a0493f0e2d8940000080406065aac000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d89406065aac05374b53e3993483fb4c89040000080406065aac000000000000080bf000000000000803f00000000000000000000803fffffffffb4c890406065aac0a64eb83e3993483f0e2d894000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940c1caa4c05374b53e33a0493fb4c8904000008040c1caa4c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040c1caa4c0a64eb83e32a0493f0e2d89400000804022309fc000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d894022309fc05374b53e2cad4a3fb4c890400000804022309fc000000000000080bf000000000000803f00000000000000000000803fffffffffb4c8904022309fc0a64eb83e2cad4a3f0e2d894000008040829599c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940829599c05374b53e26ba4b3fb4c8904000008040829599c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040829599c0a74eb83e26ba4b3f5a6498400000804022309fc000000000000080bf000000000000803f00000000000000000000803fffffffff5a64984022309fc0fa28bb3e2dad4a3f0000a0400000804022309fc000000000000080bf000000000000803f00000000000000000000803fffffffff0000a04022309fc04d03be3e2dad4a3f5a64984000008040829599c000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840829599c0fa28bb3e27ba4b3f0000a04000008040829599c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040829599c04d03be3e27ba4b3f5a64984000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840e2fa93c0fa28bb3e21c74c3f0000a04000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040e2fa93c04d03be3e21c74c3f5a6498400000804042608ec000000000000080bf000000000000803f00000000000000000000803fffffffff5a64984042608ec0fa28bb3e1bd44d3f0000a0400000804042608ec000000000000080bf000000000000803f00000000000000000000803fffffffff0000a04042608ec04d03be3e1bd44d3f0e2d89400000804042608ec000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d894042608ec05374b53e1bd44d3f0e2d894000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940e2fa93c05374b53e21c74c3fb4c890400000804043608ec000000000000080bf000000000000803f00000000000000000000803fffffffffb4c8904043608ec0a74eb83e1ad44d3fb4c8904000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040e2fa93c0a74eb83e20c74c3fb4c8904000008040a3c588c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040a3c588c0a74eb83e14e14e3f0e2d894000008040a3c588c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940a3c588c05374b53e14e14e3f0e2d894000008040032b83c000000000000080bf000000000000803f00000000000000000000803fffffffff0e2d8940032b83c05374b53e0fee4f3fb4c8904000008040032b83c000000000000080bf000000000000803f00000000000000000000803fffffffffb4c89040032b83c0a74eb83e0eee4f3f5a64984000008040a3c588c000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840a3c588c0fb28bb3e14e14e3f0000a04000008040a2c588c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040a2c588c04e03be3e14e14e3f5a64984000008040032b83c000000000000080bf000000000000803f00000000000000000000803fffffffff5a649840032b83c0fb28bb3e0eee4f3f0000a04000008040032b83c000000000000080bf000000000000803f00000000000000000000803fffffffff0000a040032b83c04e03be3e0eee4f3ff2d2b64000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640e2fa93c04892c63e20c74c3f976ebe4000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40e2fa93c09a6cc93e20c74c3ff2d2b6400000804042608ec000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b64042608ec04892c63e1ad44d3f976ebe400000804042608ec000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe4042608ec09b6cc93e1ad44d3fa69ba7400000804042608ec000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba74042608ec0a1ddc03e1ad44d3fa69ba74000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740e2fa93c0a1ddc03e21c74c3f4c37af400000804043608ec000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af4043608ec0f4b7c33e1ad44d3f4c37af4000008040e2fa93c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40e2fa93c0f4b7c33e20c74c3f4c37af4000008040a3c588c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40a3c588c0f5b7c33e14e14e3fa69ba74000008040a3c588c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740a3c588c0a1ddc03e14e14e3fa69ba74000008040032b83c000000000000080bf000000000000803f00000000000000000000803fffffffffa69ba740032b83c0a2ddc03e0eee4f3f4c37af4000008040032b83c000000000000080bf000000000000803f00000000000000000000803fffffffff4c37af40032b83c0f5b7c33e0eee4f3ff2d2b64000008040a3c588c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640a3c588c04892c63e14e14e3f976ebe4000008040a2c588c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40a2c588c09b6cc93e14e14e3ff2d2b64000008040032b83c000000000000080bf000000000000803f00000000000000000000803ffffffffff2d2b640032b83c04892c63e0eee4f3f976ebe4000008040032b83c000000000000080bf000000000000803f00000000000000000000803fffffffff976ebe40032b83c09b6cc93e0eee4f3f0e2d894000008040976ebec000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0e2d89c0976ebec05574b53e8dd1443f6991814000008040976ebec000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0976ebec0049ab23e8dd1443f00008040000080400000c0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c00000c0c07f03b23e4b86443fb4c8904000008040976ebec000000000000080bf00000000000080bf0000000000000000000080bfffffffffb4c890c0976ebec0a74eb83e8dd1443f5a64984000008040976ebec000000000000080bf00000000000080bf0000000000000000000080bfffffffff5a6498c0976ebec0f928bb3e8dd1443f0000a04000008040976ebec000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000a0c0976ebec04e03be3e8dd1443f0000c040000080400000c0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c00000c0c01f03ca3e4b86443fa69ba74000008040976ebec000000000000080bf00000000000080bf0000000000000000000080bfffffffffa69ba7c0976ebec0a0ddc03e8dd1443f4c37af4000008040976ebec000000000000080bf00000000000080bf0000000000000000000080bfffffffff4c37afc0976ebec0f3b7c33e8dd1443ff2d2b64000008040976ebec000000000000080bf00000000000080bf0000000000000000000080bffffffffff2d2b6c0976ebec04792c63e8dd1443f976ebe4000008040976ebec000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0976ebec09a6cc93e8dd1443f00008040000080400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c00000b0c07c03b23e3e86473f6991814000008040d3cdb1c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0d3cdb1c0019ab23ea82f473f69918140000080400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c00000b0c0019ab23e3e86473f6991814000008040a69bb3c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0a69bb3c0029ab23e12d9463f69918140000080407969b5c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c07969b5c0029ab23e7c82463f69918140000080404c37b7c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c04c37b7c0029ab23ee62b463f69918140000080401f05b9c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c01f05b9c0039ab23e50d5453f6991814000008040f2d2bac000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff699181c0f2d2bac0039ab23eb97e453f6991814000008040c4a0bcc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff699181c0c4a0bcc0049ab23e2428453f0000c040000080400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c00000b0c01e03ca3e3f86473f976ebe40000080400000b0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec00000b0c0996cc93e3f86473f976ebe4000008040d3cdb1c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0d3cdb1c0996cc93ea92f473f976ebe4000008040a69bb3c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0a69bb3c0996cc93e13d9463f976ebe40000080407969b5c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec07969b5c0996cc93e7c82463f976ebe40000080404c37b7c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec04c37b7c09a6cc93ee62b463f976ebe40000080401f05b9c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec01f05b9c09a6cc93e50d5453f976ebe4000008040f2d2bac000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff976ebec0f2d2bac09a6cc93eba7e453f976ebe4000008040c4a0bcc000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff976ebec0c4a0bcc09a6cc93e2428453f6991814000008040032b83c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0032b83c0009ab23e0fee4f3f0000804000008040310880c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0310880c07b03b23e9484503f6991814000008040a2c588c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0a2c588c0009ab23e15e14e3f699181400000804042608ec000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c042608ec0009ab23e1bd44d3f6991814000008040e2fa93c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0e2fa93c0019ab23e21c74c3f6991814000008040829599c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0829599c0019ab23e26ba4b3f699181400000804022309fc000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c022309fc0019ab23e2cad4a3f6991814000008040c1caa4c000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c0c1caa4c0019ab23e32a0493f69918140000080406065aac000000000000080bf00000000000080bf0000000000000000000080bfffffffff699181c06065aac0019ab23e3893483f0000c04000008040310880c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0310880c02103ca3e9384503f976ebe4000008040032b83c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0032b83c09b6cc93e0eee4f3f976ebe4000008040a2c588c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0a2c588c09b6cc93e14e14e3f976ebe400000804042608ec000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec042608ec09b6cc93e1ad44d3f976ebe4000008040e2fa93c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0e2fa93c09a6cc93e20c74c3f976ebe4000008040829599c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0829599c09a6cc93e26ba4b3f976ebe400000804022309fc000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec022309fc09a6cc93e2cad4a3f976ebe4000008040c1caa4c000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec0c1caa4c09a6cc93e32a0493f976ebe40000080406065aac000000000000080bf00000000000080bf0000000000000000000080bfffffffff976ebec06065aac0996cc93e3993483f0000a04000008040032b83c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0000a0c0032b83c04e03be3e0eee4f3f5a64984000008040032b83c000000000000080bf00000000000080bf0000000000000000000080bfffffffff5a6498c0032b83c0fb28bb3e0eee4f3fb4c8904000008040032b83c000000000000080bf00000000000080bf0000000000000000000080bfffffffffb4c890c0032b83c0a74eb83e0eee4f3f0e2d894000008040032b83c000000000ffff7fbf00000000000080bf0000000000000000000080bfffffffff0e2d89c0032b83c05374b53e0fee4f3fa69ba74000008040032b83c000000000000080bf00000000000080bf0000000000000000000080bfffffffffa69ba7c0032b83c0a2ddc03e0eee4f3f4c37af4000008040032b83c000000000000080bf00000000000080bf0000000000000000000080bfffffffff4c37afc0032b83c0f5b7c33e0eee4f3ff2d2b64000008040032b83c000000000000080bf00000000000080bf0000000000000000000080bffffffffff2d2b6c0032b83c04892c63e0eee4f3fef90ba4000008840c4a0bcc080e267bff3efd83e078a00b725e80d3700000000000080bf000080bfffffffff2ba1bc40bd3cca40cd5c493fce8a733ff090ba4000008840976ebec080e267bff3efd83e078a00b725e80d3700000000000080bf000080bffffffffffe6ebe40bd3cca403706493fce8a733ff2d2b64000008040976ebec080e267bff3efd83e078a00b725e80d3700000000000080bf000080bffffffffffc6ebe40c067c1403706493fe5e2713ff1d2b64000008040c4a0bcc080e267bff3efd83e078a00b725e80d3700000000000080bf000080bfffffffff29a1bc40c067c140cd5c493fe5e2713ff090ba4000008840976ebec000000000000000000000803f000080bf0000000000000000000080bffffffffff090bac0000088408c867f3f1f0b543d4af5b24000008840976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffff4af5b2c000008840d3eb7e3f5ab7683d4c37af4000008040976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffff4c37afc000008040ea437d3f59b7683df2d2b64000008040976ebec000000000000000000000803f000080bf0000000000000000000080bffffffffff2d2b6c000008040a3de7d3f1f0b543d4af5b24000008840976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec0af03c740b822543f04e56b3f4af5b24000008840c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc0af03c74022cc533f04e56b3f4c37af4000008040c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc0b22ebe4022cc533f1b3d6a3f4c37af4000008040976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec0b22ebe40b822543f1b3d6a3f4af5b24000008840f1d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff1d2bac0af03c7408b75533f04e56b3f4c37af4000008040f1d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff1d2bac0b22ebe408b75533f1b3d6a3ff090ba4000008840f2d2bac080e267bff3efd83e4e8a003774e80db7f4efd82a000080bf000080bfffffffff8bd2ba40153dca4063b3493fce8a733ff2d2b64000008040f2d2bac080e267bff3efd83e4e8a003774e80db7f4efd82a000080bf000080bfffffffff8dd2ba401968c14063b3493fe5e2713f4af5b240000088401e05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1e05b9c0af03c740f51e533f04e56b3f4c37af40000080401e05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1e05b9c0b22ebe40f51e533f1b3d6a3ff090ba40000088401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b940e93cca40f9094a3fce8a733ff2d2b640000080401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b940ed67c140f9094a3fe5e2713ff090ba40000088404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b740e93cca4090604a3fce8a733ff2d2b640000080404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b740ed67c14090604a3fe5e2713f4af5b240000088404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c0af03c7405fc8523f04e56b3f4c37af40000080404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c0b22ebe405fc8523f1b3d6a3f4af5b240000088407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c0af03c740c971523f03e56b3f4c37af40000080407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c0b22ebe40c971523f1b3d6a3ff090ba40000088407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b540e93cca4026b74a3fce8a733ff2d2b640000080407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b540ed67c14026b74a3fe5e2713ff090ba4000008840a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb340e93cca40bc0d4b3fce8a733ff2d2b64000008040a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb340ed67c140bc0d4b3fe5e2713f4af5b24000008840a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c0af03c740321b523f03e56b3f4c37af4000008040a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c0b22ebe40321b523f1b3d6a3f4af5b24000008840d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c0af03c7409cc4513f03e56b3f4c37af4000008040d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c0b22ebe409cc4513f1a3d6a3ff090ba4000008840d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb140e93cca4052644b3fce8a733ff2d2b64000008040d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb140ed67c14052644b3fe5e2713f4af5b240000088400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c0af03c740066e513f03e56b3f4c37af40000080400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c0b22ebe40066e513f1a3d6a3ff090ba40000088400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b040e93cca40e9ba4b3fce8a733ff2d2b640000080400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b040ed67c140e9ba4b3fe5e2713f4af5b240000088406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac0ae03c7400c61503f03e56b3f4c37af40000080406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac0b22ebe400c61503f1a3d6a3ff090ba40000088406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa40e93cca40e3c74c3fce8a733ff2d2b640000080406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa40ed67c140e3c74c3fe5e2713f4af5b24000008840c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c0ae03c74012544f3f03e56b3f4c37af4000008040c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c0b22ebe4012544f3f1b3d6a3ff090ba4000008840c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa440e93cca40dcd44d3fce8a733ff2d2b64000008040c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa440ed67c140dcd44d3fe5e2713f4af5b2400000884022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc0ae03c74018474e3f03e56b3f4c37af400000804022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc0b22ebe4018474e3f1b3d6a3ff090ba400000884022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f40e93cca40d6e14e3fce8a733ff2d2b6400000804022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f40ed67c140d6e14e3fe5e2713f4af5b24000008840829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c0ae03c7401e3a4d3f04e56b3f4c37af4000008040829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c0b22ebe401e3a4d3f1b3d6a3ff090ba4000008840829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff82959940e93cca40d0ee4f3fce8a733ff2d2b64000008040829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff82959940ed67c140d0ee4f3fe5e2713f4af5b24000008840e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c0ae03c740242d4c3f04e56b3f4c37af4000008040e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c0b22ebe40242d4c3f1b3d6a3ff090ba4000008840e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa9340e93cca40cafb503fce8a733ff2d2b64000008040e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa9340ed67c140cafb503fe5e2713f4af5b2400000884043608ec081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff43608ec0ae03c7402b204b3f04e56b3f4c37af400000804043608ec081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff43608ec0b22ebe402b204b3f1b3d6a3ff090ba400000884042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e40e93cca40c408523fce8a733ff2d2b6400000804042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e40ed67c140c408523fe5e2713f4af5b24000008840a3c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa3c588c0ae03c74031134a3f04e56b3f4c37af4000008040a3c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa3c588c0b22ebe4031134a3f1b3d6a3ff090ba4000008840a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c58840e93cca40be15533fce8a733ff2d2b64000008040a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c58840ed67c140be15533fe5e2713f4af5b24000008840032b83c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c0ae03c7403706493f04e56b3f4c37af4000008040032b83c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c0b22ebe403706493f1b3d6a3ff090ba4000008840032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b8340e93cca40b822543fce8a733ff2d2b64000008040032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b8340ed67c140b822543fe5e2713f4af5b24000008840032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffff4af5b24000008840f5dc1e3febc8b43ef090ba4000008840032b83c00000000000000000000080bf0000803f0000000000000000000080bffffffffff090ba40000088403d421e3f6433b23ef2d2b64000008040032b83c00000000000000000000080bf0000803f0000000000000000000080bffffffffff2d2b6400000804026ea1f3f6433b23e4c37af4000008040032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffff4c37af4000008040de84203febc8b43ea459ab4000008840976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffffa459abc0000088400909233ffe4bb53efebda34000008840976ebec000000000000000000000803f000080bf0000000000000000000080bffffffffffebda3c000008840516e223f85e1b73e0000a04000008040976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffff0000a0c00000804068c6203f85e1b73ea69ba74000008040976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffffa69ba7c0000080402061213ffe4bb53efebda34000008840976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec03991c040b822543f91fb693ffebda34000008840c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc03991c04022cc533f91fb693f0000a04000008040c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc03dbcb74022cc533fa853683f0000a04000008040976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec03dbcb740b822543fa853683fa459ab4000008840c4a0bcc080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc4a0bc4074cac340cd5c493f5ba1713fa459ab4000008840976ebec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff976ebe4074cac3403706493f5ba1713fa69ba74000008040976ebec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff976ebe4078f5ba403706493f72f96f3fa69ba74000008040c4a0bcc080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc4a0bc4078f5ba40cd5c493f72f96f3ffebda34000008840f2d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff2d2bac03991c0408c75533f91fb693f0000a04000008040f2d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff2d2bac03dbcb7408b75533fa853683fa459ab4000008840f2d2bac080e267bff3efd83e000000000000000000000000000080bf000080bffffffffff2d2ba4074cac34063b3493f5ba1713fa69ba74000008040f2d2bac080e267bff3efd83e000000000000000000000000000080bf000080bffffffffff2d2ba4078f5ba4063b3493f72f96f3ffebda340000088401f05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1f05b9c03991c040f51e533f91fb693f0000a040000080401f05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1f05b9c03dbcb740f51e533fa853683fa459ab40000088401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b94074cac340f9094a3f5ba1713fa69ba740000080401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b94078f5ba40f9094a3f72f96f3ffebda340000088404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c03991c0405fc8523f91fb693f0000a040000080404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c03dbcb7405fc8523fa853683fa459ab40000088404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b74074cac34090604a3f5ba1713fa69ba740000080404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b74078f5ba4090604a3f72f96f3ffebda340000088407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c03991c040c971523f91fb693f0000a040000080407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c03dbcb740c971523fa853683fa459ab40000088407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b54074cac34026b74a3f5ba1713fa69ba740000080407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b54078f5ba4026b74a3f72f96f3fa459ab4000008840a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb34074cac340bc0d4b3f5ba1713fa69ba74000008040a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb34078f5ba40bc0d4b3f72f96f3ffebda34000008840a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c03991c040321b523f91fb693f0000a04000008040a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c03dbcb740321b523fa853683ffebda34000008840d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c03991c0409cc4513f91fb693f0000a04000008040d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c03dbcb7409cc4513fa853683fa459ab4000008840d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb14074cac34053644b3f5ba1713fa69ba74000008040d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb14078f5ba4052644b3f73f96f3ffebda340000088400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c03991c040066e513f91fb693f0000a040000080400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c03dbcb740066e513fa853683fa459ab40000088400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b04074cac340e9ba4b3f5ba1713fa69ba740000080400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b04078f5ba40e9ba4b3f73f96f3ffebda340000088406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac03991c0400c61503f91fb693f0000a040000080406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac03cbcb7400c61503fa853683fa459ab40000088406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa4073cac340e3c74c3f5ba1713fa69ba740000080406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa4077f5ba40e3c74c3f73f96f3ffebda34000008840c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c03991c04012544f3f91fb693f0000a04000008040c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c03cbcb74012544f3fa853683fa459ab4000008840c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa44073cac340dcd44d3f5ba1713fa69ba74000008040c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa44077f5ba40dcd44d3f72f96f3ffebda3400000884022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc03991c04018474e3f91fb693f0000a0400000804022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc03cbcb74018474e3fa853683fa459ab400000884022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f4073cac340d6e14e3f5ba1713fa69ba7400000804022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f4077f5ba40d6e14e3f72f96f3ffebda34000008840829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c03991c0401e3a4d3f91fb693f0000a04000008040829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c03cbcb7401e3a4d3fa853683fa459ab4000008840829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff8295994073cac340d0ee4f3f5ba1713fa69ba74000008040829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff8295994077f5ba40d0ee4f3f72f96f3ffebda34000008840e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c03991c040242d4c3f91fb693f0000a04000008040e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c03cbcb740242d4c3fa853683fa459ab4000008840e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa934073cac340cafb503f5ba1713fa69ba74000008040e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa934077f5ba40cafb503f72f96f3ffebda3400000884042608ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff42608ec03991c0402b204b3f91fb693f0000a0400000804042608ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff42608ec03cbcb7402a204b3fa853683fa459ab400000884042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e4073cac340c408523f5ba1713fa69ba7400000804042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e4077f5ba40c408523f72f96f3ffebda34000008840a2c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa2c588c03991c04031134a3f91fb693f0000a04000008040a2c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa2c588c03cbcb74030134a3fa853683fa459ab4000008840a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c5884073cac340be15533f5ba1713fa69ba74000008040a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c5884077f5ba40be15533f72f96f3fa459ab4000008840032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b834073cac340b822543f5ba1713fa69ba74000008040032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b834077f5ba40b822543f72f96f3ffebda34000008840032b83c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c03991c0403706493f91fb693f0000a04000008040032b83c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c03cbcb7403706493fa853683ffebda34000008840032b83c00000000000000000000080bf0000803f0000000000000000000080bffffffffffebda34000008840221e373fd5bfa73ea459ab4000008840032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffffa459ab40000088406983363f4e2aa53ea69ba74000008040032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffffa69ba74000008040522b383f4e2aa53e0000a04000008040032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a040000080400bc6383fd5bfa73e58229c4000008840976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffff58229cc000008840de84203ffe4bb53eb286944000008840976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffffb28694c00000884026ea1f3f85e1b73eb4c8904000008040976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffffb4c890c0000080403d421e3f85e1b73e5a64984000008040976ebec000000000000000000000803f000080bf0000000000000000000080bfffffffff5a6498c000008040f5dc1e3ffe4bb53eb286944000008840976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec0c31eba40b822543fac28663fb286944000008840c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc0c31eba4022cc533fac28663fb4c8904000008040c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc0c749b14022cc533fc380643fb4c8904000008040976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec0c749b140b822543fc380643f58229c4000008840c4a0bcc080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc4a0bc40fe57bd40cd5c493fe8b76f3f58229c4000008840976ebec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff976ebe40fe57bd403706493fe8b76f3f5a64984000008040976ebec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff976ebe400283b4403706493f00106e3f5a64984000008040c4a0bcc080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc4a0bc400283b440cd5c493f00106e3fb286944000008840f1d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff1d2bac0c31eba408b75533fac28663fb4c8904000008040f1d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff1d2bac0c749b1408b75533fc380643f58229c4000008840f2d2bac080e267bff3efd83e000000000000000000000000000080bf000080bffffffffff2d2ba40fe57bd4063b3493fe9b76f3f5a64984000008040f2d2bac080e267bff3efd83e000000000000000000000000000080bf000080bffffffffff2d2ba400283b44063b3493f00106e3fb2869440000088401e05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1e05b9c0c31eba40f51e533fac28663fb4c89040000080401e05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1e05b9c0c749b140f51e533fc380643f58229c40000088401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b940fe57bd40f9094a3fe9b76f3f5a649840000080401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b9400283b440f9094a3f00106e3f58229c40000088404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b740fe57bd4090604a3fe9b76f3f5a649840000080404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b7400283b44090604a3f00106e3fb2869440000088404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c0c31eba405fc8523fac28663fb4c89040000080404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c0c749b1405fc8523fc380643fb2869440000088407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c0c31eba40c971523fac28663fb4c89040000080407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c0c749b140c971523fc380643f58229c40000088407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b540fe57bd4026b74a3fe9b76f3f5a649840000080407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b5400283b44026b74a3f00106e3f58229c4000008840a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb340fe57bd40bc0d4b3fe9b76f3f5a64984000008040a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb3400283b440bc0d4b3f00106e3fb286944000008840a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c0c31eba40321b523fac28663fb4c8904000008040a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c0c749b140321b523fc380643fb286944000008840d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c0c31eba409cc4513fac28663fb4c8904000008040d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c0c749b1409cc4513fc380643f58229c4000008840d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb140fe57bd4053644b3fe9b76f3f5a64984000008040d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb1400283b44052644b3f00106e3fb2869440000088400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c0c31eba40066e513fac28663fb4c89040000080400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c0c749b140066e513fc380643f58229c40000088400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b040fe57bd40e9ba4b3fe9b76f3f5a649840000080400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b0400283b440e9ba4b3f00106e3fb2869440000088406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac0c31eba400c61503fac28663fb4c89040000080406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac0c749b1400c61503fc380643f58229c40000088406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa40fe57bd40e3c74c3fe9b76f3f5a649840000080406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa400283b440e3c74c3f00106e3fb286944000008840c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c0c31eba4012544f3fac28663fb4c8904000008040c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c0c749b14012544f3fc380643f58229c4000008840c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa440fe57bd40dcd44d3fe9b76f3f5a64984000008040c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa4400283b440dcd44d3f00106e3fb28694400000884022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc0c31eba4018474e3fac28663fb4c890400000804022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc0c749b14018474e3fc380643f58229c400000884022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f40fe57bd40d6e14e3fe9b76f3f5a6498400000804022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f400283b440d6e14e3f00106e3fb286944000008840829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c0c31eba401e3a4d3fac28663fb4c8904000008040829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c0c749b1401e3a4d3fc380643f58229c4000008840829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff82959940fe57bd40d0ee4f3fe9b76f3f5a64984000008040829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff829599400283b440d0ee4f3f00106e3fb286944000008840e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c0c31eba40242d4c3fac28663fb4c8904000008040e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c0c749b140242d4c3fc380643f58229c4000008840e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa9340fe57bd40cafb503fe9b76f3f5a64984000008040e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa93400283b440cafb503f00106e3fb28694400000884043608ec081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff43608ec0c31eba402b204b3fac28663fb4c890400000804043608ec081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff43608ec0c749b1402b204b3fc380643f58229c400000884042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e40fe57bd40c408523fe9b76f3f5a6498400000804042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e400283b440c408523f00106e3fb286944000008840a3c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa3c588c0c31eba4031134a3fac28663fb4c8904000008040a3c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa3c588c0c749b14031134a3fc380643f58229c4000008840a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c58840fe57bd40be15533fe8b76f3f5a64984000008040a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c588400283b440be15533f00106e3fb286944000008840032b83c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c0c31eba403706493fac28663fb4c8904000008040032b83c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c0c749b1403706493fc380643f58229c4000008840032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b8340fe57bd40b822543fe8b76f3f5a64984000008040032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b83400283b440b822543f00106e3fb286944000008840032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffffb2869440000088402061213febc8b43e58229c4000008840032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffff58229c400000884068c6203f6433b23e5a64984000008040032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffff5a64984000008040516e223f6433b23eb4c8904000008040032b83c00000000000000000000080bf0000803f0000000000000000000080bfffffffffb4c89040000080400909233febc8b43e0ceb8c4000008840976ebec00000000000000000ffff7f3f000080bf0000000000000000000080bfffffffff0ceb8cc0000088400bc6383fe842a83e674f854000008840976ebec00000000000000000ffff7f3f000080bf0000000000000000000080bfffffffff674f85c000008840522b383f6fd8aa3e6991814000008040976ebec00000000000000000ffff7f3f000080bf0000000000000000000080bfffffffff699181c0000080406983363f6fd8aa3e0e2d894000008040976ebec00000000000000000ffff7f3f000080bf0000000000000000000080bfffffffff0e2d89c000008040221e373fe842a83e674f854000008840976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec04eacb340b822543f1f12683f674f854000008840c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc04eacb34022cc533f1f12683f6991814000008040c4a0bcc080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc4a0bcc052d7aa4022cc533f366a663f6991814000008040976ebec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff976ebec052d7aa40b822543f366a663f0ceb8c4000008840c4a0bcc080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc4a0bc4088e5b640cd5c493f76ce6d3f0ceb8c4000008840976ebec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff976ebe4088e5b6403706493f76ce6d3f0e2d894000008040976ebec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff976ebe408c10ae403706493f8d266c3f0e2d894000008040c4a0bcc080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc4a0bc408c10ae40cd5c493f8d266c3f674f854000008840f2d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff2d2bac04eacb3408c75533f1f12683f6991814000008040f2d2bac080e2673ff3efd8be0000000000000000000000000000803f000080bffffffffff2d2bac052d7aa408b75533f366a663f0ceb8c4000008840f2d2bac080e267bff3efd83e000000000000000000000000000080bf000080bffffffffff2d2ba4088e5b64063b3493f76ce6d3f0e2d894000008040f2d2bac080e267bff3efd83e000000000000000000000000000080bf000080bffffffffff2d2ba408c10ae4063b3493f8d266c3f674f8540000088401f05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1f05b9c04eacb340f51e533f1e12683f69918140000080401f05b9c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff1f05b9c052d7aa40f51e533f366a663f0ceb8c40000088401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b94088e5b640f9094a3f76ce6d3f0e2d8940000080401f05b9c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff1f05b9408c10ae40f9094a3f8d266c3f674f8540000088404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c04eacb3405fc8523f1e12683f69918140000080404c37b7c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff4c37b7c052d7aa405fc8523f366a663f0ceb8c40000088404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b74088e5b64090604a3f76ce6d3f0e2d8940000080404c37b7c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff4c37b7408c10ae4090604a3f8d266c3f674f8540000088407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c04eacb340c971523f1e12683f69918140000080407969b5c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff7969b5c052d7aa40c971523f356a663f0ceb8c40000088407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b54088e5b64026b74a3f76ce6d3f0e2d8940000080407a69b5c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff7a69b5408c10ae4026b74a3f8d266c3f0ceb8c4000008840a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb34088e5b640bc0d4b3f76ce6d3f0e2d894000008040a69bb3c081e267bff4efd83e000000000000000000000000000080bf000080bfffffffffa69bb3408c10ae40bc0d4b3f8d266c3f674f854000008840a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c04eacb340321b523f1e12683f6991814000008040a69bb3c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa69bb3c052d7aa40321b523f356a663f674f854000008840d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c04eacb3409cc4513f1e12683f6991814000008040d3cdb1c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffd3cdb1c052d7aa409cc4513f356a663f0ceb8c4000008840d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb14088e5b64053644b3f76ce6d3f0e2d894000008040d3cdb1c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffd3cdb1408c10ae4052644b3f8d266c3f674f8540000088400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c04eacb340066e513f1e12683f69918140000080400000b0c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff0000b0c052d7aa40066e513f356a663f0ceb8c40000088400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b04088e5b640e9ba4b3f76ce6d3f0e2d8940000080400000b0c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff0000b0408c10ae40e9ba4b3f8d266c3f674f8540000088406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac04eacb3400c61503f1e12683f69918140000080406065aac080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff6065aac052d7aa400c61503f356a663f0ceb8c40000088406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa4088e5b640e3c74c3f76ce6d3f0e2d8940000080406065aac080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff6065aa408c10ae40e3c74c3f8d266c3f674f854000008840c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c04eacb34012544f3f1e12683f6991814000008040c1caa4c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffc1caa4c052d7aa4012544f3f356a663f0ceb8c4000008840c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa44088e5b640dcd44d3f76ce6d3f0e2d894000008040c1caa4c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffc1caa4408c10ae40dcd44d3f8d266c3f674f85400000884022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc04eacb34018474e3f1e12683f699181400000804022309fc081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff22309fc052d7aa4018474e3f356a663f0ceb8c400000884022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f4088e5b640d6e14e3f76ce6d3f0e2d89400000804022309fc081e267bff3efd83e000000000000000000000000000080bf000080bfffffffff22309f408c10ae40d6e14e3f8d266c3f674f854000008840829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c04eacb3401e3a4d3f1e12683f6991814000008040829599c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff829599c052d7aa401e3a4d3f366a663f0ceb8c4000008840829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff8295994088e5b640d0ee4f3f76ce6d3f0e2d894000008040829599c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff829599408c10ae40d0ee4f3f8d266c3f674f854000008840e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c04eacb340242d4c3f1e12683f6991814000008040e2fa93c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffe2fa93c052d7aa40242d4c3f366a663f0ceb8c4000008840e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa934088e5b640cafb503f76ce6d3f0e2d894000008040e2fa93c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffffe2fa93408c10ae40cafb503f8d266c3f674f85400000884042608ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff42608ec04eacb3402b204b3f1f12683f699181400000804042608ec080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff42608ec052d7aa402a204b3f366a663f0ceb8c400000884042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e4088e5b640c408523f76ce6d3f0e2d89400000804042608ec080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff42608e408c10ae40c408523f8d266c3f674f854000008840a2c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa2c588c04eacb34031134a3f1f12683f6991814000008040a2c588c080e2673ff3efd8be0000000000000000000000000000803f000080bfffffffffa2c588c052d7aa4030134a3f366a663f0ceb8c4000008840a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c5884088e5b640be15533f76ce6d3f0e2d894000008040a3c588c081e267bff3efd83e000000000000000000000000000080bf000080bfffffffffa3c588408c10ae40be15533f8d266c3f0ceb8c4000008840032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b834088e5b640b822543f76ce6d3f0e2d894000008040032b83c080e267bff3efd83e000000000000000000000000000080bf000080bfffffffff032b83408c10ae40b822543f8d266c3f674f854000008840032b83c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c04eacb3403706493f1f12683f6991814000008040032b83c081e2673ff3efd8be0000000000000000000000000000803f000080bfffffffff032b83c052d7aa403706493f366a663f674f854000008840032b83c00000000000000000ffff7fbf0000803f0000000000000000000080bfffffffff674f854000008840221e373f08f1ad3e0ceb8c4000008840032b83c00000000000000000ffff7fbf0000803f0000000000000000000080bfffffffff0ceb8c40000088406983363f815bab3e0e2d894000008040032b83c00000000000000000ffff7fbf0000803f0000000000000000000080bfffffffff0e2d894000008040522b383f815bab3e6991814000008040032b83c00000000000000000ffff7fbf0000803f0000000000000000000080bfffffffff69918140000080400bc6383f08f1ad3e00000040000040400000803f00000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c00000803f4a155c3da202eb3e00008040000040400000803f00000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c00000803f4c155c3d2381013f00000040000060400000803f00000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c00000803f52833c3f5d03bb3e00008040000060400000803f00000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c00000803f2583483f5d03bb3e00000040000060400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c00000404052833c3fff02d33e00008040000060400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000040402583483f0003d33e0000b040000060400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b0c0000040400283513f0003d33e0000b040000060400000803f00000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b0c00000803f0283513f5d03bb3e00000000000060400000803f00000000000080bf00000000000080bf0000000000000000000080bfffffffff000000000000803f8083303f5d03bb3e00000000000060400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff00000000000040408083303fff02d33e0000a0c000004040000000c02ef9643f2ef9e4be0000000000000000000000000000803f000080bfffffffff000000c02ef9e43efb000c3f120a923d0000a0c000004040000080c02ef9643f2ef9e4be0000000000000000000000000000803f000080bfffffffff000080c02ef9e43ece00183f130a923d000098c000006040000000c02ef9643f2ef9e4be0000000000000000000000000000803f000080bfffffffff000000c02acc803ffa000c3fe1deac3d000098c000006040000080c02ef9643f2ef9e4be0000000000000000000000000000803f000080bfffffffff000080c02acc803fce00183fe3deac3d0000a0c000004040000040402ff9643f2ff9e4be0000000000000000000000000000803f000080bfffffffff000040402ef9e43ed902dc3e1e0a923d000098c000006040000040402ff9643f2ff9e4be0000000000000000000000000000803f000080bfffffffff000040402acc803fda02dc3eecdeac3d000000c000004040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004000004040bf001b3f89741f3e000000c00000404000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000040404b00393f86741f3e000000c000006040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004000006040be001b3f5b742b3e000000c00000604000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000060404a00393f58742b3e000000c000004040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000804000004040ee000f3f82741f3e000000c000006040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000804000006040ed000f3f55742b3e000000c000004040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000084100004040ab02e83e8c741f3e000000c000006040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000084100006040a902e83e5e742b3e0000a0c000004040000008c12ff9643f2ff9e4be0000000000000000000000000000803f000080bfffffffff000008c12ff9e43e6900333f1c0a923d000098c000006040000008c12ff9643f2ff9e4be0000000000000000000000000000803f000080bfffffffff000008c12acc803f6700333febdeac3d000000c000004040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000040408cc4513fd202df3e000000c000004040000038c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00003841000040405ec45d3fd102df3e000000c000006040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000060408bc4513fbb02e53e000000c000006040000038c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00003841000060405dc45d3fba02e53e0000a0c000004040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000040402400453f200a923d0000a0c000004040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100004040f5ff503f1e0a923d0000a0c000006040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000060402400453fc309aa3d0000a0c000006040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100006040f5ff503fc109aa3d0000084100008040000018c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000008c1000018c112416c3f643c8f3e0000204100008040000018c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c1000018c1ef40753f623c8f3e00000841000080400000d0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000008c10000d0c014416c3fd93bb33e00002041000080400000d0c000000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c10000d0c0f040753fd73bb33e0000204100000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100000040c5c4423f9286323f0000004100000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c100000000f3c4363fc186263f0000004100000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c100000040c5c4423fc186263f0000204100000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100000000f4c4363f9386323f00000041000000000000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000000006a83363fc186263f00002041000000000000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000000006a83363f9286323f00002041000000400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c10000004097832a3f9386323f00000041000000400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c10000004097832a3fc186263f0000004000000000000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c00000000035476d3f9489373f0000804000000000000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c00000000035476d3f6689433f0000804000000040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000000406347613f6689433f0000004000000040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000000406347613f9489373f0000c04000000040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000000409288793f9386323f0000804000000000000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000080c000000000c0886d3fc286263f0000804000000040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000000409188793fc186263f0000c04000000000000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c000000000c1886d3f9486323f0000244100000040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000000406547613fc286263f0000244100000000000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c00000000037476d3f9386323f0000244100000040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c0000000406647613f9486323f0000244100000000000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c00000000036476d3fc186263f0000a0c000000000000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000000000ff000c3fee15833a0000a0c000000000000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000000000d000183f8014833a0000a0c000000040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000000040d100183fb715443d0000a0c000000040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000000040ff000c3fc215443d0000000000000040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000000400a06553f9386323f000080bf00000000000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f000000003806493faa862c3f000080bf00000040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f000000400a06553faa862c3f0000000000000000000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000000003806493f9386323f000080bf00000000000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f000000003042213f008c633f0000000000000000000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff00000000000000003042213fe98b693f0000000000000040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff00000000000000405e42153fea8b693f000080bf00000040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f000000405f42153f018c633f000020410000004000000000000080bf000000000000000000000000000000000000803f0000803fffffffff000000000000004077420f3feec73e3f000020410000000000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000000003142213f1cc8323f000020410000004000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000000403142213feec73e3f000020410000000000000000000080bf000000000000000000000000000000000000803f0000803fffffffff000000000000000077420f3f1cc8323f0000c04000000000000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000000000f3c4363fefca433f0000c04000000000000000000000803f000000000000000000000000000000000000803f000080bfffffffff0000000000000000adc4483fefca433f0000c04000000040000000000000803f000000000000000000000000000000000000803f000080bfffffffff0000000000000040adc4483fc1ca4f3f0000c04000000040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000000040f3c4363fc1ca4f3f0000003f00000040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf000000408083303fda0e733f0000000000000000000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000000000ae83243fe60e703f0000000000000040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000000408083303fe50e703f0000003f00000000000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf00000000ae83243fda0e733f0000004000000040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000000408083303fb70e7c3f0000004000000000000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000c000000000af83243fb70e7c3f00000000000000000000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000000000adc4483f9489373f0000003f000000000000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00000000adc4483f89893a3f0000003f000000400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00000040dcc43c3f89893a3f00000000000000400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000000040dcc43c3f9489373f00000040000000000000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c000000000adc4483f6689433f00000040000000400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c000000040dbc43c3f6689433f0000244100000040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00000040a205703f1486d33e000024410000000000000000000080bf000000000000000000000000000000000000803f0000803fffffffff000000000000000074057c3ffd85d93e000024410000004000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000000040a205703ffd85d93e0000244100000000000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf0000000074057c3f1486d33e0000204100000040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000000040e4055e3f16040b3f0000204100000000000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00000000b6056a3ff303143f0000204100000040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00000040e5055e3ff303143f0000204100000000000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000000000b6056a3f16040b3f0000000000000000000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000000003706493f6689433f0000000000000000000000bf0000803f000000000000000000000000000000000000803f000080bfffffffff000000bf000000003706493f7189403f0000000000000040000000bf0000803f000000000000000000000000000000000000803f000080bfffffffff000000bf000000400906553f7189403f0000000000000040000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000000400906553f6689433f0000000000000000000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c0000000003706493f9489373f0000000000000040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c0000000400906553f9489373f00002041000000400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c0000000405e42153fb14a543f0000204100000000000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000000003042213f8e4a5d3f0000204100000040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000000405e42153f8e4a5d3f00002041000000000000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c0000000003042213fb04a543f00002041000000400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0000000405e42153fbc4a513f00002041000000000000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0000000003042213fbc4a513f0000000000000000000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000000000af83243ff58b663f00000000000000000000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c000000000ae83243f188c5d3f00000000000000400000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c0000000408083303f178c5d3f0000000000000040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c0000000408083303ff58b663f00000000000000000000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c000000000af83243f238c5a3f00000000000000400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c0000000408083303f238c5a3f00000040000000000000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c000000000ae83243f994a5a3f00000040000000000000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c000000000ae83243fbc4a513f00000040000000400000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c0000000408083303fbc4a513f00000040000000400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c0000000408083303f994a5a3f0000004000000000000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c100000000af83243fc74a4e3f0000004000000040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000000408083303fc74a4e3f00000041000000400000f0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000f0c0000000405e42153f5509483f00000041000000000000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0000000003142213f3209513f00000041000000400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c0000000405f42153f3309513f00000041000000000000f0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000f0c0000000003042213f5509483f0000004100000040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c1000000405e42153f6109453f0000004100000000000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c1000000003042213f6009453f0000f04000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c000000040f741303f092ab73e0000c04000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000000002542243f4f2aa53e0000c04000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c000000040f641303f4e2aa53e0000f04000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000000002542243f0a2ab73e0000004100000040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000000408b05763ff908e03e0000f04000000000000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c000000000b9056a3f1009da3e0000f04000000040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000000408b05763f1009da3e0000004100000000000050400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c100000000b9056a3ff908e03e0000f04000000000000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c00000000036476d3f1cc8323f0000004100000000000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c10000000035476d3f11c8353f0000004100000040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000000406447613f11c8353f0000f04000000040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000000406447613f1dc8323f000080400000004000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000000040b8c4453fde061f3f00008040000000000000003f000080bf000000000000000000000000000000000000803f0000803fffffffff0000003f000000008ac4513fd206223f00008040000000400000003f000080bf000000000000000000000000000000000000803f0000803fffffffff0000003f00000040b8c4453fd206223f000080400000000000000000000080bf000000000000000000000000000000000000803f0000803fffffffff00000000000000008ac4513fde061f3f00000040000000000000003f0000803f000000000000000000000000000000000000803f000080bfffffffff0000003f0000000075420f3f41507c3f0000004000000000000000000000803f000000000000000000000000000000000000803f000080bfffffffff000000000000000075420f3f4d50793f0000004000000040000000000000803f000000000000000000000000000000000000803f000080bfffffffff000000000000004047421b3f4c50793f00000040000000400000003f0000803f000000000000000000000000000000000000803f000080bfffffffff0000003f0000004047421b3f40507c3f000000410000004000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000000408b832d3f5c48223f000000410000000000005040000080bf000000000000000000000000000000000000803f0000803fffffffff00005040000000005d83393f56c8233f000000410000004000005040000080bf000000000000000000000000000000000000803f0000803fffffffff00005040000000408b832d3f56c8233f000000410000000000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000000005d83393f5c48223f0000f04000000000000050400000803f000000000000000000000000000000000000803f000080bfffffffff0000504000000000bf886d3f9a09363f0000f04000000000000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000000000bf886d3fa089343f0000f04000000040000040400000803f000000000000000000000000000000000000803f000080bfffffffff00004040000000409188793fa089343f0000f04000000040000050400000803f000000000000000000000000000000000000803f000080bfffffffff00005040000000409088793f9a09363f0000204100000000000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000000005d83393fe009243f0000244100000000000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000024c1000000005c83393fda89253f0000244100000040000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000024c1000000408b832d3fda89253f0000204100000040000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000000408b832d3fe009243f0000244100000040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000024c1000000407483333fd306223f0000204100000000000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100000000a283273fd886203f0000204100000040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000000407483333fd886203f0000244100000000000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000024c100000000a283273fd306223f0000204100000000000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c10000000079887f3f1cc8323f0000244100000000000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000024c10000000079887f3f1648343f0000244100000040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000024c100000040a788733f1748343f0000204100000040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100000040a888733f1cc8323f0000244100000040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000024c1000000408b05763f008ce33e0000204100000000000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100000000b9056a3f0c8ce03e0000204100000040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000000408b05763f0b8ce03e0000244100000000000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000024c100000000b9056a3f008ce33e00000040000000000000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f0000000075420f3f36507f3f00000040000000400000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f0000004046421b3f35507f3f00008040000000000000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f000000008ac4513fc706253f00008040000000400000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f00000040b8c4453fc706253f000000c000000040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000000040f085dc3ec8086c3f000000c00000000000004040000080bf000000000000000000000000000000000000803f0000803fffffffff000040400000000085420c3ff608603f000000c00000004000004040000080bf000000000000000000000000000000000000803f0000803fffffffff000040400000004083420c3fc8086c3f000000c000000000000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000000000f485dc3ef608603f0000a0c000000000000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000000000e502dc3e5518833a0000a0c000000040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000000040e702dc3ed515443d000000c000000040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100000040ad02e83ee574073e000000c000000000000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c000000000ee000f3f36ebae3d000000c000000040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c000000040ed000f3fe274073e000000c000000000000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100000000af02e83e3cebae3d0000a0c000000000000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000000006800333f6f12833a0000a0c000000040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000000406900333fa615443d000000c000000040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100000040dc02dc3ee374073e000000c000000000000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100000000de02dc3e38ebae3d0000a0c000000000000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000000005100393fed12833a0000a0c000000040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000000405200393faa15443d000000c000000040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000000408cc4513fff02d33e000000c000000000000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000000005ec45d3f5d03bb3e000000c000000040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000000405fc45d3ffe02d33e000000c000000000000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000000008cc4513f5e03bb3e0000a0c000000000000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000000002300453f6b15833a0000a0c000000000000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100000000f4ff503f5014833a0000a0c000000040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100000040f5ff503fb415443d0000a0c000000040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000000402400453fbd15443d000080bf00000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f0000004047421b3f5ccd6f3f000000c000000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000400000000075420f3f73cd693f000000c000000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000400000004047421b3f73cd693f000080bf00000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f0000000075420f3f5ccd6f3f000000c000000000000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff00000040000000006983363f1cc8323f000080bf00000000000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f000000006983363f05c8383f000080bf00000040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f0000004098832a3f05c8383f000000c000000040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000400000004098832a3f1cc8323f0000000000000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000000000004048421b3f45cd753f0000000000000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000000000000075420f3f45cd753f0000000000000000000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff00000000000000006983363feec73e3f0000000000000040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000004097832a3feec73e3f0000000000000000000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000000007f83303fce85e53e0000000000000000000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000000006883363fcf85e53e0000000000000040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000000406983363f7285fd3e0000000000000040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000000408083303f7185fd3e0000404000000040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c1000000409485f43e3ac9733f0000404000000000000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c1000000009c42063f23c9793f0000404000000040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c1000000409585f43e23c9793f0000404000000000000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c1000000009c42063f3ac9733f00002041000000400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000000407985fa3e378f593f00000841000000000000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000008c100000000d585e23e5b8f503f00000841000000400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000008c1000000407885fa3e5a8f503f00002041000000000000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100000000d685e23e388f593f0000084100000000000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c10000000046833f3f16040b3f0000204100000000000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c10000000046833f3ff303143f0000204100000040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000000407483333ff303143f0000084100000040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000000407483333f16040b3f00000841000000000000d0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000d0c00000000075420f3f3845263f0000084100000000000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c10000000075420f3f7d45143f0000084100000040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c10000004047421b3f7d45143f00000841000000400000d0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000d0c00000004047421b3f3845263f0000204100000040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c10000004088087e3efa80643f00002041000000000000d0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000d0c000000000ea03973eb480763f00002041000000400000d0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000d0c0000000408d087e3eb480763f0000204100000000000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100000000e703973ef980643f0000204100001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100001040c044443f9386323f0000004100001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c100001040bf44443fc186263f0000204100004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100004040aec4483f9386323f0000004100004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c100004040aec4483fc286263f00002041000010400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000010409d03293f9386323f00000041000010400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000010409d03293fc186263f00002041000040400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100004040af83243f9386323f00000041000040400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100004040ae83243fc186263f0000804000001040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c00000104069c75f3f6689433f0000004000001040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c00000104069c75f3f9489373f0000804000004040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000040407b475b3f6689433f0000004000004040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000040407b475b3f9489373f0000c04000001040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000010408c087b3f9386323f0000804000001040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000010408c087b3fc186263f0000c04000004040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c0000040407b887f3f9486323f0000804000004040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000040407b887f3fc286263f0000244100001040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000010406bc75f3fc186263f0000244100001040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c0000010406cc75f3f9386323f0000244100004040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c0000040407c475b3fc186263f0000244100004040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c0000040407d475b3f9386323f0000a8c000000040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000000040f8000c3f47a7a13e0000a8c000000040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000000040ca00183f47a7a13e0000a8c000001040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000001040ca00183f3ba7a43e0000a8c000001040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000001040f8000c3f3ca7a43e0000a0c000001040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000001040fb000c3f33155c3d0000a0c000001040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000001040ce00183f39155c3d0000a0c000004040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000004040ce00183f130a923d0000a0c000004040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000004040fb000c3f120a923d0000000000001040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000010400486563f9386323f000080bf00001040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f000010400486563faa862c3f0000000000004040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000004040f3055b3f9386323f000080bf00004040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f00004040f3055b3faa862c3f0000000000001040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000104064c2133fea8b693f000080bf00001040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f0000104064c2133f018c633f0000000000004040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000404075420f3fe98b693f000080bf00004040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f0000404075420f3f008c633f000020410000104000000000000080bf000000000000000000000000000000000000803f0000803fffffffff000000000000104076420f3fe847403f000020410000104000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000010403042213fe847403f000020410000404000000000000080bf000000000000000000000000000000000000803f0000803fffffffff000000000000404075420f3fd7c7443f000020410000404000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000040402f42213fd7c7443f0000c04000001040000000000000803f000000000000000000000000000000000000803f000080bfffffffff0000000000001040adc4483fbc4a513f0000c04000001040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000001040f3c4363fbc4a513f0000c04000004040000000000000803f000000000000000000000000000000000000803f000080bfffffffff0000000000004040adc4483faaca553f0000c04000004040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000004040f3c4363faaca553f0000003f00001040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf000010407a03323fda0e733f0000000000001040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000010407a03323fe60e703f0000003f00004040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf000040406983363fda0e733f0000000000004040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000040406983363fe60e703f0000004000001040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000010407a03323fb80e7c3f0000004000004040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000040406983363fb80e7c3f0000003f000010400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00001040e1443b3f89893a3f00000000000010400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000001040e1443b3f9489373f0000003f000040400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00004040f3c4363f89893a3f00000000000040400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000004040f3c4363f9489373f00000040000010400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c000001040e1443b3f6689433f00000040000040400000c0c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c000004040f3c4363f6689433f0000244100001040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00001040a8856e3f1486d33e000024410000104000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000001040a8856e3ffd85d93e0000244100004040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00004040b9056a3f1486d33e000024410000404000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000004040b9056a3ffd85d93e0000204100001040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000001040ea855c3f16040b3f0000204100001040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00001040eb855c3ff303143f0000204100004040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000004040fb05583f16040b3f0000204100004040000000bf000080bf000000000000000000000000000000000000803f0000803fffffffff000000bf00004040fc05583ff303143f0000000000001040000000bf0000803f000000000000000000000000000000000000803f000080bfffffffff000000bf000010400386563f7189403f0000000000001040000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000010400386563f6689433f0000000000004040000000bf0000803f000000000000000000000000000000000000803f000080bfffffffff000000bf00004040f1055b3f7189403f0000000000004040000000000000803f000000000000000000000000000000000000803f000080bfffffffff0000000000004040f1055b3f6689433f0000000000001040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c0000010400386563f9489373f0000000000004040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000004040f1055b3f9489373f00002041000010400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c00000104064c2133fb14a543f0000204100001040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c00000104064c2133f8e4a5d3f00002041000040400000b0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000b0c00000404075420f3fb14a543f0000204100004040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c00000404076420f3f8d4a5d3f00002041000010400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c00000104064c2133fbc4a513f00002041000040400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c00000404075420f3fbd4a513f00000000000010400000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c0000010407a03323f178c5d3f0000000000001040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c0000010407a03323ff58b663f00000000000040400000b0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000b0c0000040406983363f188c5d3f0000000000004040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c0000040406983363ff58b663f00000000000010400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c0000010407a03323f238c5a3f00000000000040400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c0000040406983363f238c5a3f00000040000010400000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c0000010407a03323fbc4a513f00000040000010400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c0000010407a03323f994a5a3f00000040000040400000f0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000f0c0000040406983363fbc4a513f00000040000040400000c0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000c0c0000040406883363f9a4a5a3f0000004000001040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000010407b03323fc74a4e3f0000004000004040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000040406983363fc74a4e3f00000041000010400000f0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000f0c00000104064c2133f5609483f00000041000010400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c00000104064c2133f3209513f00000041000040400000f0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000f0c00000404075420f3f5609483f00000041000040400000c0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000c0c00000404076420f3f3209513f0000004100001040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c10000104064c2133f6109453f0000004100004040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c10000404075420f3f6109453f0000f04000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c000001040f1c1313f092ab73e0000c04000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c000001040f1c1313f4f2aa53e0000f04000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c000004040e041363f0a2ab73e0000c04000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000c0c000004040e041363f4f2aa53e0000004100001040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000010408585773ff908e03e0000f04000001040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000010408585773f1009da3e0000004100004040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c10000404074057c3ff908e03e0000f04000004040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c00000404074057c3f1009da3e0000004100001040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000010406ac75f3f11c8353f0000f04000001040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000010406ac75f3f1dc8323f0000004100004040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000040407b475b3f11c8353f0000f04000004040000000c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000040407b475b3f1cc8323f000080400000104000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000001040bd44443fde061f3f00008040000010400000003f000080bf000000000000000000000000000000000000803f0000803fffffffff0000003f00001040bd44443fd206223f000080400000404000000000000080bf000000000000000000000000000000000000803f0000803fffffffff0000000000004040cfc43f3fde061f3f00008040000040400000003f000080bf000000000000000000000000000000000000803f0000803fffffffff0000003f00004040cfc43f3fd206223f0000004000001040000000000000803f000000000000000000000000000000000000803f000080bfffffffff000000000000104041c21c3f4c50793f00000040000010400000003f0000803f000000000000000000000000000000000000803f000080bfffffffff0000003f0000104041c21c3f41507c3f0000004000004040000000000000803f000000000000000000000000000000000000803f000080bfffffffff00000000000040403042213f4d50793f00000040000040400000003f0000803f000000000000000000000000000000000000803f000080bfffffffff0000003f000040403042213f41507c3f000000410000104000004040000080bf000000000000000000000000000000000000803f0000803fffffffff000040400000104091032c3f5c48223f000000410000104000005040000080bf000000000000000000000000000000000000803f0000803fffffffff000050400000104091032c3f56c8233f000000410000404000004040000080bf000000000000000000000000000000000000803f0000803fffffffff0000404000004040a283273f5c48223f000000410000404000005040000080bf000000000000000000000000000000000000803f0000803fffffffff0000504000004040a283273f56c8233f0000f04000001040000040400000803f000000000000000000000000000000000000803f000080bfffffffff00004040000010408b087b3fa089343f0000f04000001040000050400000803f000000000000000000000000000000000000803f000080bfffffffff00005040000010408b087b3f9b09363f0000f04000004040000040400000803f000000000000000000000000000000000000803f000080bfffffffff000040400000404079887f3fa089343f0000f04000004040000050400000803f000000000000000000000000000000000000803f000080bfffffffff000050400000404079887f3f9a09363f0000244100001040000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000024c10000104090032c3fda89253f0000204100001040000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000020c10000104091032c3fdf09243f0000244100004040000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000024c100004040a283273fda89253f0000204100004040000000bf00000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100004040a283273fe009243f0000244100001040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000024c1000010406e03353fd306223f0000204100001040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000010406e03353fd886203f0000244100004040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000024c1000040405d83393fd306223f0000204100004040000000000000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000040405d83393fd886203f0000244100001040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000024c100001040ad08723f1648343f0000204100001040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100001040ae08723f1cc8323f0000244100004040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000024c100004040bf886d3f1748343f0000204100004040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100004040bf886d3f1cc8323f0000244100001040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000024c1000010408585773f008ce33e0000204100001040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000010408585773f0b8ce03e0000244100004040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000024c10000404074057c3f008ce33e0000204100004040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c10000404074057c3f0b8ce03e00000040000010400000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f0000104040c21c3f35507f3f00000040000040400000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f000040402f42213f36507f3f00008040000010400000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f00001040bd44443fc706253f00008040000040400000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f00004040cfc43f3fc706253f0000e0bf00001040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004000001040e313833aaa837e3f0000e0bf0000004000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c000000040ae08f23db0037d3f0000e0bf0000104000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c000001040b408f23daa837e3f0000e0bf00000040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff00000040000000406f12833ab0037d3f000000c000004040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000004040bf001b3f89741f3e000000c00000104000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000010404c00393fcb740d3e000000c00000404000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000040404b00393f86741f3e000000c000001040000000c0000080bf000000000000000000000000000000000000803f0000803fffffffff000000c000001040c1001b3fce740d3e0000a8c000000040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000000040d902dc3e47a7a13e0000a8c000001040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000001040d902dc3e3ca7a43e0000a0c000001040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000001040d902dc3e4e155c3d0000a0c000004040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000004040d902dc3e1e0a923d0000e0bf00001040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000084100001040d585e23ecaca4c3f0000e0bf00000040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff000080400000004083420c3fd04a4b3f0000e0bf00001040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff000080400000104082420c3fcaca4c3f0000e0bf00000040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000084100000040d685e23ed04a4b3f000000c000004040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100004040ab02e83e8c741f3e000000c000001040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c000001040ef000f3fc6740d3e000000c000004040000080c0000080bf000000000000000000000000000000000000803f0000803fffffffff000080c000004040ee000f3f82741f3e000000c000001040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100001040ad02e83ed0740d3e0000a8c000000040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000000406300333f47a7a13e0000a8c000001040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000010406300333f3ba7a43e0000a0c000001040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000010406900333f4a155c3d0000a0c000004040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000040406900333f1c0a923d000000c000001040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100001040db02dc3ecc740d3e000000c000004040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100004040d902dc3e87741f3e0000a0c000001040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000010405200393f4d155c3d0000a0c000004040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000040405200393f1e0a923d000000c000001040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000010408cc4513ff402d63e000000c000001040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000010405ec45d3ff302d63e000000c000004040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000040408cc4513fd202df3e000000c000004040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000040405ec45d3fd102df3e0000a0c000001040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100001040f5ff503f57155c3d0000a0c000001040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000010402300453f5d155c3d000080bf00001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f0000104042c21c3f5ccd6f3f000000c000001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000400000104041c21c3f73cd693f000080bf00004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000803f000040403042213f5ccd6f3f000000c000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff00000040000040403042213f73cd693f000080bf00001040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f000010409e03293f05c8383f000000c000001040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff00000040000010409e03293f1cc8323f000080bf00004040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000803f00004040af83243f05c8383f000000c000004040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000004040af83243f1cc8323f0000000000001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000000000104042c21c3f45cd753f0000000000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000040403042213f45cd753f0000000000001040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff00000000000010409d03293feec73e3f0000000000004040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000004040ae83243feec73e3f0000000000001040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000010406883363fb342003f0000000000001040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000010407f83303fb242003f0000000000004040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000040406883363fa1c2043f0000000000004040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000040407f83303fa1c2043f0000404000001040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100001040a085f13e3ac9733f0000404000001040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100001040a085f13e23c9793f0000404000004040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100004040c385e83e3ac9733f0000404000004040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100004040c385e83e23c9793f00002041000010400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000010406e85fd3e378f593f00000841000010400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000008c1000010406c85fd3e5a8f503f00002041000040400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c100004040a542033f388f593f00000841000040400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000008c100004040a542033f5a8f503f0000204100001040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000010407903323ff303143f0000084100001040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000010407a03323f16040b3f0000204100004040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000040408b832d3ff303143f0000084100004040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000040408b832d3f16040b3f0000084100001040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c10000104042c21c3f7d45143f00000841000010400000d0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000d0c00000104041c21c3f3845263f0000084100004040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000040403042213f7d45143f00000841000040400000d0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000d0c0000040403042213f3845263f0000204100001040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100001040a008783efa80643f00002041000010400000d0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000d0c000001040a408783eb580763f0000204100004040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100004040e408663ef980643f00002041000040400000d0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000d0c000004040e808663eb480763f0000a0c000000040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000080c00401093f3524a13e0000a0c000000040000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000008c1d902dc3e3224a13e0000a8c000000040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c0000080c00501093f40249e3e0000a8c000000040000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c0000008c1db02dc3e3d249e3e0000a0c000000040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000000040f4467f3f3c94253e0000a0c000001040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000001040fac67d3f3c94253e0000a8c000000040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a84000000040f4467f3f53941f3e0000a8c000001040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a84000001040fac67d3f53941f3e0000a0c000001040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a0c000001040edc37b3f4a9a2c3e0000a0c000000040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a0c000000040f3437a3f4a9a2c3e0000a8c000001040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a8c000001040edc37b3f619a263e0000a8c000000040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a8c000000040f3437a3f619a263e0000a0c000001040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a040000008c16200333f22a19d3e0000a0c000001040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a040000080c0ca00183f1fa19d3e0000a8c000001040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a840000008c16300333f2da19a3e0000a8c000001040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a840000080c0cb00183f2ba19a3e0000a0c000000040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000000c0d600153f2d24a13e0000a8c000000040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c0000000c0d600153f39249e3e0000a0c000001040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a040000000c0f9000c3f26a19d3e0000a8c000001040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a840000000c0f9000c3f32a19a3e0000a0c00000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000040406300333f3224a13e0000a8c00000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c0000040406200333f3d249e3e0000a0c0000010400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a04000004040da02dc3e22a19d3e0000a8c0000010400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000a84000004040d902dc3e2da19a3e0000a0c000000040000040400000803f000000000000000000000000000000000000803f000080bfffffffff00004040000000404a04393f495d913e0000a0c000001040000040400000803f000000000000000000000000000000000000803f000080bfffffffff00004040000010404a04393f3e5d943e0000a0c000000040000050400000803f000000000000000000000000000000000000803f000080bfffffffff00005040000000405084373f495d913e0000a0c000001040000050400000803f000000000000000000000000000000000000803f000080bfffffffff00005040000010405084373f3e5d943e000000c00000104000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000010405084373f45e0973e000000c00000004000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000000405084373f50e0943e000000c00000104000005040000080bf00000000000000000000000000000000000080bf000080bfffffffff000050c0000010404a04393f45e0973e000000c00000004000005040000080bf00000000000000000000000000000000000080bf000080bfffffffff000050c0000000404a04393f50e0943e000080bf00000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000080c01381843e6d09c23d0000e0bf00000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf000080c01481843ef5099e3d0000e0bf00000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf000000c0b9809c3ef4099e3d000080bf00000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000000c0b8809c3e6b09c23d0000e0bf00004040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff0000e0bf000000c07908fe3d5103be3e000080bf00004040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff000080bf000080c085032f3e2e03c73e000080bf00004040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff000080bf000000c07a08fe3d2e03c73e0000e0bf00004040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff0000e0bf000080c084032f3e5103be3e000000c000004040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000000c07908fe3d5d03bb3e000000c000004040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000080c084032f3e5d03bb3e000000c000000000000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff00000040000000003042213f178c5d3f0000e0bf00000000000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000e03f000000003042213f120c5f3f0000e0bf00000040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000e03f000000405f42153f120c5f3f000000c000000040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff00000040000000405f42153f188c5d3f0000e0bf00000040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000e03f000000400a06553fbb06283f000000c000000000000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff00000040000000003806493fc186263f000000c000000040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff00000040000000400a06553fc186263f0000e0bf00000000000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000e03f000000003806493fbb06283f0000e0bf00001040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000e03f0000104065c2133f120c5f3f000000c000001040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000400000104065c2133f188c5d3f0000e0bf00004040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff0000e03f0000404076420f3f120c5f3f000000c000004040000080c000000000000000000000803f000080bf0000000000000000000080bfffffffff000000400000404076420f3f178c5d3f0000e0bf00001040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000e03f000010400486563fbb06283f0000e0bf00004040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000e03f00004040f3055b3fbb06283f000000c000001040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff00000040000010400486563fc186263f000000c000004040000000c00000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000004040f3055b3fc186263f000000c000000040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff000000c00000004076057c3f53941f3e000000c000001040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff000000c00000104071857d3f53941f3e0000e0bf00000040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000e0bf0000004076057c3f3c94253e0000e0bf00001040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000e0bf0000104071857d3f3c94253e000000c0000010400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff000000400000404099a4df3e79c75c3f000000c000001040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00000040000000c0d9d10d3f79c75c3f0000e0bf000010400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e03f000040409aa4df3e73475e3f0000e0bf00001040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e03f000000c0d9d10d3f73475e3f000000c000000040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000000c0d6039a3e304a753f000000c00000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff000000c000004040f002d63e304a753f0000e0bf00000040000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf000000c0d8039a3e2aca763f0000e0bf0000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf00004040f102d63e2aca763f000000c000001040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00000040000080c0d685e23ec8c7473f000000c000001040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00000040000008c183420c3fc8c7473f0000e0bf00001040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e03f000080c0d585e23ec347493f0000e0bf00001040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e03f000008c182420c3fc347493f000000c000001040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff00000040000010407082783f619a263e000000c000000040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff00000040000000406a027a3f619a263e0000e0bf00001040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e03f000010407082783f4a9a2c3e0000e0bf00000040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e03f000000406a027a3f4a9a2c3e000000c000000040000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000008c1d685e23e4c89493f000000c000000040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000080c083420c3f4c89493f0000e0bf00000040000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf000008c1d585e23e46094b3f0000e0bf00000040000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf000080c082420c3f46094b3f0000a0c000000040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000000040edc37b3f3c94253e0000a0c000001040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000001040f3437a3f3c94253e0000a8c000000040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a84000000040edc37b3f53941f3e0000a8c000001040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a84000001040f3437a3f53941f3e0000a0c000001040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a0c0000010406a027a3f3c94253e0000a0c000000040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a0c0000000407082783f3c94253e0000a8c000001040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a8c0000010406a027a3f53941f3e0000a8c000000040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a8c0000000407082783f53941f3e0000204100000000000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000204100000000cfc43f3f16040b3f0000204100000040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000204100000040a1c44b3f16040b3f0000284100000000000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000284100000000cfc43f3f0b040e3f0000284100000040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000284100000040a0c44b3f0a040e3f0000204100001040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00002041000010409b444d3f16040b3f0000204100004040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00002041000040408ac4513f16040b3f0000284100001040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00002841000010409b444d3f0a040e3f0000284100004040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000028410000404089c4513f0b040e3f0000204100000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000000409585f43ead0a7a3f0000204100000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000000009c42063fac0a7a3f0000284100000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000028c1000000409485f43ea10a7d3f0000284100000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000028c1000000009b42063fa10a7d3f0000204100001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100001040a085f13eac0a7a3f0000284100001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000028c1000010409f85f13ea10a7d3f0000204100004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100004040c285e83eac0a7a3f0000284100004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000028c100004040c285e83ea10a7d3f0000204100000000000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000000001942273ff303143f0000204100000040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000058410000004047421b3ff303143f0000204100000000000070c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00007041000000001942273f16040b3f0000204100000040000070c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000070410000004047421b3f16040b3f0000084100000040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100000040a1c44b3f5a451d3f0000084100000000000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100000000cfc43f3f5a451d3f0000084100000040000070c10000803f000000000000000000000000000000000000803f000080bfffffffff000070c100000040a1c44b3f7d45143f0000084100000000000070c10000803f000000000000000000000000000000000000803f000080bfffffffff000070c100000000cfc43f3f7d45143f0000204100001040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000010404dc2193ff303143f0000204100001040000070c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00007041000010404dc2193f16040b3f0000084100001040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000010409b444d3f5a451d3f0000084100001040000070c10000803f000000000000000000000000000000000000803f000080bfffffffff000070c1000010409b444d3f7d45143f0000204100004040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000040405e42153ff303143f0000204100004040000070c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00007041000040405e42153f16040b3f0000084100004040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c10000404089c4513f5a451d3f0000084100004040000070c10000803f000000000000000000000000000000000000803f000080bfffffffff000070c10000404089c4513f7d45143f0000204100008040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c1000058c1f240753f357a3e3e0000084100008040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000008c1000058c115416c3f317a3e3e0000204100008040000070c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000020c1000070c1f340753fc67a1a3e0000084100008040000070c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000008c1000070c116416c3fc27a1a3e0000084100008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000054c115416c3f1a7a443e0000204100008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000058c1f240753f357a3e3e0000204100008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000054c1f240753f1e7a443e0000084100008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000058c115416c3f317a3e3e0000000000000000000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c10000000088c20a3fb083243f0000000000000000000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c10000000082420c3fb083243f0000000000000040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c10000004085420c3f8283303f0000000000000040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c1000000408bc20a3f8183303f0000284100000040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c100000040a283273f4f45203f0000284100000000000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000000009d03293f7d45143f0000284100000040000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000000409c03293f4f45203f0000284100000000000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c100000000a283273f7d45143f0000000000001040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c10000104011034d3fb342003f0000000000001040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000010400c834e3fb342003f0000000000004040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000040400c834e3fa1c2043f0000000000004040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c10000404012034d3fa1c2043f00002c4100001040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000058410000104040094e3e3942783f00002c4100000040000054c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005441000000402909543e3fc2763f00002c4100001040000054c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005441000010402909543e3942783f00002c4100000040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000058410000004040094e3e3fc2763f00002c4100004040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000058410000404042094e3e27c27c3f00002c4100004040000054c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005441000040402a09543e27c27c3f0000284100008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000058c1e640783f357a3e3e0000284100008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000054c1e640783f1f7a443e0000084100000040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c100000040a1c44b3f54c51e3f0000084100001040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c1000010409b444d3f54c51e3f0000000000008040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000008c1d741393f353c9b3e0000003f00008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000018c1cc413c3f653c8f3e0000003f00008040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000008c1cb413c3f363c9b3e0000000000008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000018c1d841393f643c8f3e0000404000008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000018c193414b3f653c8f3e0000404000008040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000008c190414b3f363c9b3e0000003f00000040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf000000409405733fb785eb3e0000000000000000000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000000000c305673fcf85e53e0000000000000040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000000409405733fcf85e53e0000003f00000000000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf00000000c305673fb785eb3e0000404000000040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c0000000409405733fa1c2043f0000404000000000000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c000000000c305673fa1c2043f0000000000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff00000000000000006f12833af880643f0000003f00000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00000000715f503cf980643f0000003f00000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf000000409b5f503cca80703f0000000000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000000040bf13833aca80703f0000404000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000000001d0a923df880643f0000404000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c000000040220a923dc980703f0000003f00001040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf000010408e85743fb785eb3e0000000000001040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000010408e85743fce85e53e0000404000001040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c0000010408e85743fa2c2043f0000003f00004040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf000040407d05793fb885eb3e0000000000004040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff00000000000040407d05793fce85e53e0000404000004040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c0000040407d05793fa2c2043f0000003f00000040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00000040d902dc3e6433b23e0000404000000040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000000406502fa3e6433b23e0000404000001040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000010406502fa3e5933b53e0000003f00001040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00001040d902dc3e5933b53e0000000000001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000001040d6039a3e4ec2193f0000003f00001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00001040bf03a03e4ec2193f0000003f00004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00004040bf03a03e3d421e3f0000000000004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000004040d6039a3e3d421e3f0000003f00008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000054c1ca413c3f227a443e0000404000008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000058c193414b3f2f7a3e3e0000404000008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000054c192414b3f197a443e0000003f00008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000058c1ca413c3f387a3e3e0000000000008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000054c1d541393f237a443e0000000000008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000058c1d541393f397a3e3e0000000000000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000054c1fb13833a5042723f0000003f00000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000058c1ae5f503c56c2703f0000003f00000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000054c1935f503c5042723f0000000000000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000058c19514833a55c2703f0000404000000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000058c1250a923d54c2703f0000404000000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000054c1220a923d4e42723f0000404000001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000058c1d902dc3e9f03293f0000003f00001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000058c16502fa3e9f03293f0000003f00001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000054c16502fa3e99832a3f0000404000001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000054c1d902dc3e99832a3f0000000000001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000058c12701003f9f03293f0000000000001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000054c12701003f99832a3f0000003f00001040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf000010409d03293fe3c7413f0000003f00000040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf0000004097832a3fe3c7413f0000804000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000000006609c23df980643f0000f04000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000000007403353ef880643f0000f04000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000000407603353ec980703f0000804000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000000406b09c23dca80703f0000804000000040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000000401b01033f6433b23e0000f04000000040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c000000040cb00183f6433b23e0000f04000001040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c000001040cb00183f5933b53e0000804000001040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000010401b01033f5933b53e0000804000008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000054c17b41513f197a443e0000f04000008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000058c12d41663f2c7a3e3e0000f04000008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000054c12c41663f167a443e0000804000008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000058c17b41513f2f7a3e3e0000f04000001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000058c1a803a63e9f03293f0000804000001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000058c10703d03e9e03293f0000804000001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000054c10703d03e99832a3f0000f04000001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000054c1a803a63e99832a3f0000804000000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000054c16b09c23d4e42723f0000f04000000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000058c17603353e57c2703f0000f04000000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000054c17603353e5142723f0000804000000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000058c16a09c23d54c2703f0000084100006040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000060402442243f7d45143f00000841000060400000d0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000d0c0000060402442243f3845263f0000084100008040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000080401942273f7d45143f00000841000080400000d0c00000803f000000000000000000000000000000000000803f000080bfffffffff0000d0c0000080401842273f3845263f0000204100006040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c10000604012095a3ef980643f00002041000060400000d0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000d0c00000604016095a3eb380763f0000204100008040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c10000804040094e3ef880643f00002041000080400000d0c0000080bf000000000000000000000000000000000000803f0000803fffffffff0000d0c00000804044094e3eb280763f00002041000060400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000060409a42063f388f593f00000841000060400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000008c1000060409942063f5b8f503f00002041000080400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000080408f42093f388f593f00000841000080400000d0c00000000000000000000080bf000080bf00000000000000000000803fffffffff000008c1000080408e42093f5b8f503f0000404000006040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100006040d985e23e3ac9733f0000404000006040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100006040da85e23e23c9793f0000404000008040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100008040f085dc3e3ac9733f0000404000008040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100008040f185dc3e23c9793f0000204100006040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c10000604096832a3ff303143f0000084100006040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c10000604097832a3f16040b3f0000204100008040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100008040a283273ff303143f0000084100008040000070c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c100008040a283273f16040b3f0000000000006040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000060406883363f96c2073f0000000000006040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000060407f83303f96c2073f0000000000008040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000080406883363f8ac20a3f0000000000008040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000080407f83303f8ac20a3f0000284100006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000028c1000060407ec4543f0b040e3f0000204100004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000040408ac4513f16040b3f0000204100006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000020c1000060407ec4543f16040b3f0000284100004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000028c10000404089c4513f0b040e3f0000284100008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000028c10000804072c4573f0b040e3f0000204100008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000020c10000804072c4573f16040b3f0000204100006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100006040d985e23eac0a7a3f0000284100006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000028c100006040d985e23ea10a7d3f0000284100008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000028c100008040f185dc3ea10a7d3f0000204100008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c100008040f085dc3eac0a7a3f0000084100006040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000060407ec4543f5a451d3f0000084100006040000070c10000803f000000000000000000000000000000000000803f000080bfffffffff000070c1000060407ec4543f7d45143f0000084100008040000070c10000803f000000000000000000000000000000000000803f000080bfffffffff000070c10000804072c4573f7d45143f0000084100008040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c10000804072c4573f5a451d3f0000204100006040000070c1000080bf000000000000000000000000000000000000803f0000803fffffffff000070c1000060406a42123f16040b3f0000204100004040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000040405e42153ff303143f0000204100006040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000060406a42123ff303143f0000204100004040000070c1000080bf000000000000000000000000000000000000803f0000803fffffffff000070c1000040405e42153f16040b3f0000204100008040000070c1000080bf000000000000000000000000000000000000803f0000803fffffffff000070c10000804075420f3f16040b3f0000204100008040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c10000804075420f3ff303143f0000284100006040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000060408083303ffc85d93e0000284100004040000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000040407a03323f1386d33e0000284100006040000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000060407a03323ffc85d93e0000284100004040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000040408083303f1386d33e0000284100008040000058c1000080bf000000000000000000000000000000000000803f0000803fffffffff000058c1000080408083303fe585df3e0000284100008040000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000080407b03323fe585df3e0000000000006040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000060400c834e3f96c2073f0000000000006040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c10000604012034d3f96c2073f0000000000008040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000080400c834e3f8ac20a3f0000000000008040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c10000804012034d3f8ac20a3f0000404000006040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c00000604072057c3fa3c2043f0000003f00006040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf0000604072057c3fb885eb3e0000404000008040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c00000804066057f3fa4c2043f0000003f00008040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000bf0000804066057f3fb985eb3e0000000000006040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000000000604072057c3fce85e53e0000000000008040000008c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000000000804067057f3fcf85e53e0000003f00006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00006040bf03a03e3242213f0000000000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000006040d6039a3e3242213f0000003f00008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00008040bf03a03e2642243f0000000000008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000000000008040d6039a3e2642243f0000404000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000060404e03be3e3242213f0000404000008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000080404e03be3e2642243f0000f04000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000060405e42153f98c2073f0000804000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000040400b422a3fa3c2043f0000804000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000060400b422a3f97c2073f0000f04000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000040405f42153fa4c2043f0000f04000008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000080405e42153f8cc20a3f0000804000008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000080400a422a3f8cc20a3f0000804000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000060401e03ca3e3242213f0000f04000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000060407e02f43e3242213f0000f04000008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000080407e02f43e2642243f0000804000008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000080401e03ca3e2642243f0000004100000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000000406b42123f7485fd3e0000f04000000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000000006142153fcf85e53e0000f04000000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000000406042153f7585fd3e0000004100000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000000006d42123fcf85e53e0000084100000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000008c10000004077420f3f7485fd3e0000084100000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000008c10000000078420f3fce85e53e0000004100000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000000004603413ef880643f0000004100000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000000404803413eca80703f0000084100000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c10000000018034d3ef980643f0000084100000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000000401b034d3eca80703f0000004100001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000010406b42123fb442003f0000f04000001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000f0c0000010406042153fb542003f0000084100001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000008c10000104076420f3fb442003f0000004100004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000040406a42123fa3c2043f0000084100004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000008c10000404076420f3fa3c2043f0000004100000040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100000040bf001b3f6433b23e0000004100001040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100001040bf001b3f5933b53e0000084100000040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c100000040b3001e3f6433b23e0000084100001040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c100001040b4001e3f5833b53e0000004100001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000010406702fa3e4ec2193f0000084100001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000010402801003f4ec2193f0000084100004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000040402801003f3d421e3f0000004100004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000040406702fa3e3d421e3f0000004100008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000054c12041693f197a443e0000004100008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000058c12141693f307a3e3e0000084100001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000058c1d6039a3e9f03293f0000004100001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000058c1bf03a03e9e03293f0000004100001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000054c1bf03a03e99832a3f0000084100001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000054c1d6039a3e99832a3f0000004100000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000054c14803413e5042723f0000084100000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000058c119034d3e55c2703f0000084100000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000054c11a034d3e4f42723f0000004100000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000058c14703413e56c2703f0000004100006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000060406a42123f98c2073f0000084100006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000008c10000604075420f3f97c2073f0000004100008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000000c1000080406a42123f8cc20a3f0000084100008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000008c10000804075420f3f8cc20a3f0000084100006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000060402801003f3242213f0000004100006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000060406702fa3e3242213f0000004100008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000080406702fa3e2642243f0000084100008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000080402801003f2642243f0000604000000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000060c00000004000422d3f7585fd3e0000404000000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c000000000f641303fd085e53e0000404000000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c000000040f541303f7585fd3e0000604000000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000060c00000000001422d3fcf85e53e0000804000000040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000000400c422a3f7485fd3e0000804000000000000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000000000d422a3fcf85e53e0000604000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c000000000c109aa3df880643f0000604000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c000000040c709aa3dca80703f0000604000001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000060c00000104000422d3fb542003f0000404000001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c000001040f541303fb542003f0000804000001040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000010400b422a3fb442003f0000604000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000060c00000404000422d3fa3c2043f0000404000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c000004040f441303fa3c2043f0000604000000040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c0000000402701003f6433b23e0000604000001040000054c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c0000010402701003f5933b53e0000604000001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c0000010403603c43e4fc2193f0000804000001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000010401e03ca3e4fc2193f0000804000004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000040401e03ca3e3d421e3f0000604000004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c0000040403603c43e3d421e3f0000604000008040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000054c187414e3f197a443e0000604000008040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000058c187414e3f307a3e3e0000604000001040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000058c1f002d63e9f03293f0000604000001040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000054c1f002d63e99832a3f0000604000000040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000054c1c609aa3d4e42723f0000604000000040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000058c1c709aa3d54c2703f0000604000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000060c00000604000422d3f98c2073f0000404000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c000006040f441303f98c2073f0000604000008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000060c000008040ff412d3f8cc20a3f0000404000008040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff000040c000008040f441303f8cc20a3f0000604000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c0000060403603c43e3242213f0000604000008040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c0000080403603c43e2642243f00002c4100001040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00002c41000010409b444d3f05840f3f00002c4100004040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00002c410000404089c4513f05840f3f0000284100004040000054c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000028c1000054c1f303943eb1037d3f0000284100004040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000028c1000058c1e803973eb1037d3f00002c4100004040000054c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00002cc1000054c1f303943eac837e3f00002c4100004040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00002cc1000058c1e803973eac837e3f00002c4100000040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00002c4100000040a0c44b3f05840f3f00002c4100004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff00002cc100004040c285e83e9b8a7e3f00002c4100001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff00002cc1000010409f85f13e9b8a7e3f00002c4100000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff00002cc1000000409485f43e9b8a7e3f0000284100000040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000058c1d7039a3eaf8e7d3f0000284100000040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000054c1cc039d3eaf8e7d3f00002c4100000040000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000058c1d6039a3ea90e7f3f00002c4100000040000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000054c1cb039d3ea90e7f3f00009c4000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000001c40ef08633e35c57e3f0000b84000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c000001c409f08783e35c57e3f0000b84000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c0000028409f08783e31e57f3f00009c4000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000002840ef08633e31e57f3f0000804000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c000001c4040094e3e35c57e3f0000804000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c00000284040094e3e31e57f3f0000d44000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c000001c402784863e35c57e3f0000f04000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c000001c40ff03913e35c57e3f0000f04000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c000002840ff03913e31e57f3f0000d44000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c0000028402784863e31e57f3f0000d44000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c000003440670a803d34c57e3f0000f04000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c000003440c709aa3d34c57e3f0000f04000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c000004040c709aa3d2fe57f3f0000d44000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c000004040680a803d2fe57f3f0000b84000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c00000344011162c3d34c57e3f0000b84000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c00000404011162c3d2fe57f3f00009c4000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000003440a42eb03c34c57e3f00009c4000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000004040a42eb03c2fe57f3f0000804000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000034406f12833a34c57e3f0000804000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000040407212833a2fe57f3f00009c4000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000004840ac05ed3ec1d0593f0000b84000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c0000048408485f73ec1d0593f0000b84000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c0000050408485f73ebe905a3f00009c4000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000005040ac05ed3ebe905a3f0000804000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c000004840d585e23ec1d0593f0000804000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c000005040d585e23ebe905a3f0000d44000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c000004840ae02013fc1d0593f0000f04000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000048409a42063fc1d0593f0000f04000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000050409a42063fbe905a3f0000d44000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c000005040ae02013fbe905a3f0000d44000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c000005840ae02013f48d25a3f0000f04000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000058409a42063f48d25a3f0000f04000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c0000060409a42063f45925b3f0000d44000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000d4c000006040ae02013f45925b3f0000b84000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c0000058408485f73e48d25a3f0000b84000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000b8c0000060408485f73e45925b3f00009c4000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000005840ac05ed3e48d25a3f00009c4000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff00009cc000006040ac05ed3e45925b3f0000804000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c000005840d585e23e48d25a3f0000804000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c000006040d585e23e45925b3f0000f44000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c000001c40f983923e35c57e3f0000f84000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c000001c40f403943e35c57e3f0000f84000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c000002840f403943e31e57f3f0000f44000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c000002840f983923e31e57f3f0000fc4000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc000001c40ee83953e35c57e3f0000004100001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100001c40e803973e35c57e3f0000004100002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100002840e803973e31e57f3f0000fc4000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc000002840ee83953e31e57f3f0000fc4000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc0000034408209bc3d34c57e3f0000004100003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000034406b09c23d34c57e3f0000004100004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000040406b09c23d2fe57f3f0000fc4000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc0000040408209bc3d2fe57f3f0000f84000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c0000034409909b63d34c57e3f0000f84000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c0000040409909b63d2fe57f3f0000f44000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c000003440b009b03d34c57e3f0000f44000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c000004040b009b03d2fe57f3f0000f44000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c0000048409702073fc1d0593f0000f84000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c00000484094c2073fc1d0593f0000f84000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c00000504094c2073fbe905a3f0000f44000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c0000050409702073fbe905a3f0000fc4000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc0000048409182083fc1d0593f0000004100004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000048408e42093fc1d0593f0000004100005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000050408e42093fbe905a3f0000fc4000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc0000050409182083fbe905a3f0000fc4000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc0000058409182083f48d25a3f0000004100005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000058408e42093f48d25a3f0000004100006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000060408e42093f45925b3f0000fc4000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000fcc0000060409182083f45925b3f0000f84000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c00000584094c2073f48d25a3f0000f84000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f8c00000604094c2073f45925b3f0000f44000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c0000058409702073f48d25a3f0000f44000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f4c0000060409702073f45925b3f0000004100001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000060c1bf03a03eaa03263f0000fc4000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000060c1ba83a13eaa03263f0000f84000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000060c1b403a33eaa03263f0000f44000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000060c1ae83a43eaa03263f0000f04000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000060c1a903a63eaa03263f0000004100006040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000058c11e03ca3e264d7d3f0000f04000006040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000058c13503c43e264d7d3f0000f84000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000060c12a03c73e314d7a3f0000f44000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000060c12f83c53e314d7a3f0000f04000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000060c13503c43e314d7a3f0000fc4000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000060c12483c83e314d7a3f0000004100006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000060c11e03ca3e314d7a3f0000804000004040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100004040a768923e0ac22b3f0000804000004040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100004040a768923e16c2283f0000804000004840000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100004840a2e8933e16c2283f0000804000005040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c1000050409c68953e16c2283f0000804000006040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000060409068983e0ac22b3f0000804000005840000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c10000584096e8963e16c2283f0000804000006040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c1000060409068983e16c2283f0000804000006040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000058c1d6039a3e264d7d3f0000b84000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000060c18603af3e314d7a3f00009c4000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000060c1ae83a43e314d7a3f0000804000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000060c1d7039a3e314d7a3f0000d44000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000060c15d83b93e314d7a3f0000d44000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000060c18083b03eaa03263f0000b84000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000060c15703bb3eaa03263f00009c4000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000060c12f83c53eaa03263f0000804000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000060c10703d03eaa03263f0000004100006040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000060407e82753f145f683d0000004100006040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000060407e82753fce5f383d0000004100005840000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000058407b42763fce5f383d0000004100005040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000050407802773fce5f383d0000004100004040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000040407282783f145f683d0000004100004840000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000060410000484075c2773fce5f383d0000004100004040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000040407282783fd05f383d0000804000001040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100001040ca68893e0ac22b3f0000804000001040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100001040ca68893e16c2283f0000804000001c40000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100001c40c1a88b3e16c2283f0000804000002840000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100002840b9e88d3e16c2283f0000804000003440000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100003440b028903e16c2283f0000004100003440000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000034406ea2793fcf5f383d0000004100002840000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000028406ac27a3fcf5f383d0000004100001040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000058410000104061027d3f145f683d0000004100001c40000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000604100001c4065e27b3fcf5f383d0000004100001040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000060410000104061027d3fd15f383d0000903f00001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf00001c40450a093eb0037d3f0000e03f00001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf00001c400c0a183eb0037d3f0000e03f00002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf000028400c0a183eac237e3f0000903f00002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf00002840450a093eac237e3f0000003f00001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00001c40fe14f43db0037d3f0000003f00002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00002840fe14f43dac237e3f0000184000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c000001c40d309273eb0037d3f0000404000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c000001c409909363eb0037d3f0000404000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000028409909363eac237e3f0000184000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c000002840d309273eac237e3f0000184000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c000003440fa812f3f1cadb73e0000404000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c000003440eb41333f1cadb73e0000404000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c000004040eb41333f14edb93e0000184000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c000004040fa812f3f14edb93e0000e03f00003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf0000344008c22b3f1cadb73e0000e03f00004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf0000404008c22b3f14edb93e0000903f00003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf000034401602283f1cadb73e0000903f00004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf000040401602283f14edb93e0000003f00003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf000034402542243f1cadb73e0000003f00004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf000040402542243f14edb93e0000903f00004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf00004840d405e43e25cc7e3f0000e03f00004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf00004840b785eb3e25cc7e3f0000e03f00005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf00005040b785eb3e228c7f3f0000903f00005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf00005040d405e43e228c7f3f0000003f00004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00004840f085dc3e25cc7e3f0000003f00005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf00005040f085dc3e228c7f3f0000184000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c0000048409a05f33e25cc7e3f0000404000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000048407d85fa3e25cc7e3f0000404000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000050407e85fa3e228c7f3f0000184000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c0000050409a05f33e228c7f3f0000184000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c0000058404224f63efc885e3f0000404000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c00000584026a4fd3efc885e3f0000404000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c00000604026a4fd3ef9485f3f0000184000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000018c0000060404224f63ef9485f3f0000e03f00005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf000058405fa4ee3efc885e3f0000e03f00006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000e0bf000060405fa4ee3ef9485f3f0000903f00005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf000058407c24e73efc885e3f0000903f00006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000090bf000060407c24e73ef9485f3f0000003f00005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf0000584099a4df3efc885e3f0000003f00006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf0000604099a4df3ef9485f3f0000484000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c000001c408e09393eb0037d3f0000504000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c000001c4082093c3eb0037d3f0000504000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c00000284082093c3eac237e3f0000484000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c0000028408e09393eac237e3f0000584000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c000001c4077093f3eb0037d3f0000604000001c40000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c000001c406b09423eb0037d3f0000604000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c0000028406b09423eac237e3f0000584000002840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c00000284077093f3eac237e3f0000584000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c000003440e381353f1cadb73e0000604000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c000003440e041363f1cadb73e0000604000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c000004040e041363f14edb93e0000584000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c000004040e381353f14edb93e0000504000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c000003440e6c1343f1cadb73e0000504000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c000004040e6c1343f14edb93e0000484000003440000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c000003440e901343f1cadb73e0000484000004040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c000004040e901343f14edb93e0000484000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c0000048407805fc3e25cc7e3f0000504000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c0000048407285fd3e25cc7e3f0000504000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c0000050407285fd3e228c7f3f0000484000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c0000050407805fc3e228c7f3f0000584000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c0000048406c05ff3e25cc7e3f0000604000004840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c000004840b342003f25cc7e3f0000604000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c000005040b342003f228c7f3f0000584000005040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c0000050406c05ff3e228c7f3f0000584000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c0000058400a12013ffc885e3f0000604000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c00000584007d2013ffc885e3f0000604000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c00000604007d2013ff9485f3f0000584000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000058c0000060400a12013ff9485f3f0000504000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c0000058400d52003ffc885e3f0000504000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000050c0000060400d52003ff9485f3f0000484000005840000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c0000058402024ff3efc885e3f0000484000006040000060c100000000000000000000803f000080bf0000000000000000000080bfffffffff000048c0000060402024ff3ef9485f3f0000404000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000060c1d902dc3eaa03263f0000184000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000060c1bc82e33eaa03263f0000e03f00001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000060c19f02eb3eaa03263f0000903f00001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000060c18282f23eaa03263f0000003f00001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000060c16502fa3eaa03263f0000604000006040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000060407e82753f4a3b9a3d0000604000006040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000060407e82753fa73b823d0000604000005840000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000058407b42763fa73b823d0000604000005040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000050407802773fa73b823d0000604000004040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000040407282783f4b3b9a3d0000604000004840000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000060410000484075c2773fa73b823d0000604000004040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000040407282783fa83b823d0000003f00001040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100001040ca68893e8283303f0000003f00001040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100001040ca68893e8e832d3f0000003f00001c40000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100001c40c1a88b3e8e832d3f0000003f00002840000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100002840b9e88d3e8e832d3f0000003f00004040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c100004040a768923e8283303f0000003f00003440000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100003440b028903e8e832d3f0000003f00004040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100004040a768923e8e832d3f0000404000006040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000058c1fd05583f10c8353f0000003f00006040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000058c13706493f10c8353f0000e03f00006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000060c11a86503f1cc8323f0000903f00006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000060c128c64c3f1cc8323f0000003f00006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000060c13706493f1cc8323f0000184000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000060c10c46543f1cc8323f0000404000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000060c1fd05583f1cc8323f0000604000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000060c1f002d63eaa03263f0000584000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000060c1ea82d73eaa03263f0000504000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000060c1e402d93eaa03263f0000484000001040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000060c1de82da3eaa03263f0000604000003440000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000034406ea2793fa83b823d0000604000002840000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006041000028406ac27a3fa83b823d0000604000001040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000058410000104061027d3f4a3b9a3d0000604000001c40000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000604100001c4065e27b3fa83b823d0000604000001040000060c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000060410000104061027d3fa93b823d0000003f00004840000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c100004840a2e8933e8e832d3f0000003f00005040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c1000050409c68953e8e832d3f0000003f00006040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c1000060409068983e8283303f0000003f00005840000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c10000584096e8963e8e832d3f0000003f00006040000060c10000803f000000000000000000000000000000000000803f000080bfffffffff000060c1000060409068983e8e832d3f0000604000006040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000058c1f2055b3f10c8353f0000504000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000060c1f785593f1cc8323f0000484000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000060c1fac5583f1cc8323f0000584000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000060c1f4455a3f1cc8323f0000604000006040000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000060c1f2055b3f1cc8323f0000fc4000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000060c1c0c5673fab45083f0000004100002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000060c1c305673fab45083f0000fc4000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000064c1c0c5673fb1c5063f0000004100002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000064c1c305673fb1c5063f0000004100002840000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000028406ac27a3f2a60203d0000004100003440000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000034406ea2793f2a60203d0000804000003440000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100003440b028903e1c42273f0000804000002840000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100002840b9e88d3e1c42273f0000004100003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000060c139c4663f2684063f0000fc4000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000060c13b04663f2684063f0000004100003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000064c139c4663f2b04053f0000fc4000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000064c13b04663f2b04053f0000f84000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000060c1bd85683fab45083f0000f84000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000064c1bd85683fb1c5063f0000f84000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000060c13e44653f2684063f0000f84000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000064c13e44653f2b04053f0000f44000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000060c1ba45693fab45083f0000f44000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000064c1ba45693fb1c5063f0000f44000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000060c14184643f2684063f0000f44000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000064c14184643f2b04053f0000f04000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000060c1b7056a3fab45083f0000f04000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000064c1b7056a3fb1c5063f0000f04000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000060c144c4633f2684063f0000f04000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000064c144c4633f2b04053f0000d44000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000060c1a3456f3fab45083f0000d44000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000064c1a3456f3fb1c5063f0000d44000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000060c158845e3f2684063f0000d44000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000064c159845e3f2b04053f0000b84000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000060c18e85743fab45083f0000b84000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000064c18e85743fb1c5063f0000b84000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000060c16d44593f2684063f0000b84000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000064c16d44593f2b04053f00009c4000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000060c17ac5793fab45083f00009c4000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000064c17ac5793fb1c5063f00009c4000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000060c18104543f2684063f00009c4000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000064c18104543f2b04053f0000804000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000060c166057f3fab45083f0000804000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000064c166057f3fb1c5063f0000804000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000060c195c44e3f2684063f0000804000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000064c196c44e3f2b04053f0000fc4000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000064c1ba83a13eb083243f0000004100001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000064c1c003a03eb083243f0000004100001040000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000064410000104061027d3f2d60203d0000004100001c40000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000644100001c4065e27b3f2b60203d0000804000001c40000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100001c40c1a88b3e1c42273f0000804000001040000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100001040ca68893e1c42273f0000004100001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000060c139c4663f2d070a3f0000fc4000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000060c13b04663f2d070a3f0000004100001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000064c139c4663f3387083f0000fc4000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000064c13b04663f3387083f0000f84000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000064c1b403a33eb083243f0000f84000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000060c13e44653f2d070a3f0000f84000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000064c13e44653f3387083f0000f44000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000064c1af83a43eb083243f0000f44000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000060c14184643f2d070a3f0000f44000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000064c14184643f3387083f0000f04000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000064c1a903a63eb083243f0000f04000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000060c144c4633f2d070a3f0000f04000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000064c144c4633f3387083f0000d44000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000064c18083b03eb083243f0000d44000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000060c158845e3f2d070a3f0000d44000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000064c159845e3f3387083f0000b84000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000064c15803bb3eb083243f0000b84000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000060c16d44593f2d070a3f0000b84000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000064c16d44593f3387083f00009c4000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000064c12f83c53eb083243f00009c4000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000060c18104543f2d070a3f00009c4000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000064c18104543f3387083f0000804000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000064c10703d03eb083243f0000804000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000060c195c44e3f2d070a3f0000804000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000064c196c44e3f3387083f0000fc4000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000060c1c0c5673f2f070a3f0000004100004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000060c1c305673f2f070a3f0000fc4000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000064c1c0c5673f3587083f0000004100004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000064c1c305673f3587083f0000004100004040000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000040407382783f2960203d0000004100004840000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000064410000484075c2773f2760203d0000804000004840000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100004840a1e8933e1c42273f0000804000004040000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100004040a768923e1c42273f0000004100004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000060c139c4663fa945083f0000fc4000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000060c13b04663fa945083f0000004100004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000064c139c4663fafc5063f0000fc4000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000064c13b04663fafc5063f0000f84000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000060c1bd85683f2f070a3f0000f84000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000064c1bd85683f3587083f0000f84000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000060c13e44653fa945083f0000f84000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000064c13e44653fafc5063f0000f44000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000060c1ba45693f2f070a3f0000f44000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000064c1ba45693f3587083f0000f44000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000060c14184643fa945083f0000f44000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000064c14184643fafc5063f0000f04000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000060c1b7056a3f2f070a3f0000f04000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000064c1b7056a3f3587083f0000f04000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000060c144c4633fa945083f0000f04000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000064c144c4633fafc5063f0000d44000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000060c1a3456f3f2f070a3f0000d44000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000064c1a3456f3f3587083f0000d44000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000060c158845e3fa945083f0000d44000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000064c159845e3fafc5063f0000b84000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000060c18e85743f2f070a3f0000b84000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000064c18e85743f3587083f0000b84000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000060c16d44593fa945083f0000b84000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000064c16d44593fafc5063f00009c4000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000060c17ac5793f2f070a3f00009c4000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000064c17ac5793f3587083f00009c4000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000060c18104543fa945083f00009c4000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000064c18104543fafc5063f0000804000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000060c166057f3f2f070a3f0000804000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000064c166057f3f3587083f0000804000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000060c195c44e3fa945083f0000804000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000064c196c44e3fafc5063f0000fc4000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000060c1c0c5673f2784063f0000004100005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000060c1c305673f2884063f0000fc4000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000fc40000064c1c0c5673f2d04053f0000004100005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000064c1c305673f2d04053f0000004100005040000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000050407802773f2860203d0000004100005840000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000058407b42763f2860203d0000804000005840000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c10000584096e8963e1c42273f0000804000005040000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c1000050409c68953e1c42273f0000004100005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000060c12383483fec08e33e0000fc4000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000060c126c3473fed08e33e0000004100005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000c1000064c12383483ff808e03e0000fc4000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000fcc0000064c126c3473ff808e03e0000f84000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000060c1bd85683f2884063f0000f84000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f840000064c1bd85683f2d04053f0000f84000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000060c12903473fed08e33e0000f84000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f8c0000064c12903473ff808e03e0000f44000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000060c1ba45693f2884063f0000f44000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f440000064c1ba45693f2d04053f0000f44000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000060c12c43463fed08e33e0000f44000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f4c0000064c12c43463ff808e03e0000f04000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000060c1b7056a3f2884063f0000f04000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000064c1b7056a3f2d04053f0000f04000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000060c12f83453fec08e33e0000f04000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000064c12f83453ff808e03e0000d44000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000060c1a3456f3f2884063f0000d44000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000d440000064c1a3456f3f2d04053f0000d44000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000060c14343403fed08e33e0000d44000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000d4c0000064c14343403ff808e03e0000b84000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000060c18e85743f2884063f0000b84000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000b840000064c18e85743f2d04053f0000b84000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000060c157033b3fed08e33e0000b84000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000b8c0000064c158033b3ff808e03e00009c4000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000060c17ac5793f2884063f00009c4000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00009c40000064c17ac5793f2d04053f00009c4000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000060c16cc3353fec08e33e00009c4000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00009cc0000064c16cc3353ff808e03e0000804000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000060c166057f3f2884063f0000804000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000064c166057f3f2d04053f0000804000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000060c18083303fec08e33e0000804000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000064c18083303ff808e03e0000584000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000064c1ea82d73eb083243f0000604000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000064c1f002d63eb083243f0000604000001040000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000064410000104061027d3fae776c3d0000604000001c40000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000644100001c4065e27b3fac776c3d0000003f00001c40000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100001c40c1a88b3e94032c3f0000003f00001040000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100001040ca68893e94032c3f0000604000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000060c1adc4483f07ce683f0000584000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000060c1b004483f07ce683f0000604000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000064c1adc4483f0d4e673f0000584000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000064c1b004483f0d4e673f0000504000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000064c1e402d93eb083243f0000504000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000060c1b344473f07ce683f0000504000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000064c1b344473f0d4e673f0000484000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000064c1df82da3eb083243f0000484000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000060c1b684463f07ce683f0000484000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000064c1b684463f0d4e673f0000404000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000064c1d902dc3eb083243f0000404000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000060c1b9c4453f07ce683f0000404000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000064c1b9c4453f0c4e673f0000184000001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000064c1bc82e33eb083243f0000184000001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000060c1c704423f07ce683f0000184000001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000064c1c704423f0d4e673f0000e03f00001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000064c19f02eb3eb083243f0000e03f00001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000060c1d6443e3f07ce683f0000e03f00001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000064c1d6443e3f0d4e673f0000903f00001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000064c18282f23eb083243f0000903f00001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000060c1e4843a3f07ce683f0000903f00001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000064c1e4843a3f0d4e673f0000003f00001040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000064c16502fa3eb083243f0000003f00001c40000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000060c1f3c4363f07ce683f0000003f00001c40000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000064c1f3c4363f0d4e673f0000003f00002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000060c1adc4483f9995713f0000903f00002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000060c1bb04453f9995713f0000003f00002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000064c1adc4483f9f15703f0000903f00002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000064c1bc04453f9f15703f0000e03f00003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000060c1d6443e3f0e516c3f0000903f00003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000060c1e4843a3f0e516c3f0000e03f00003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000064c1d6443e3f14d16a3f0000903f00003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000064c1e4843a3f14d16a3f0000003f00003440000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100003440b028903e94032c3f0000003f00002840000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100002840b9e88d3e94032c3f0000003f00003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000060c1f3c4363f0e516c3f0000003f00003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000064c1f3c4363f14d16a3f0000e03f00002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000060c1ca44413f9995713f0000e03f00002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000064c1ca44413f9f15703f0000184000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000060c1c704423f0e516c3f0000184000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000064c1c704423f14d16a3f0000184000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000060c1d8843d3f9995713f0000184000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000064c1d9843d3f9f15703f0000404000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000060c1b9c4453f0e516c3f0000404000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000064c1b9c4453f14d16a3f0000404000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000060c1e7c4393f9995713f0000404000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000064c1e7c4393f9f15703f0000484000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000060c1b684463f0e516c3f0000484000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000064c1b684463f14d16a3f0000484000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000060c1ea04393f9995713f0000484000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000064c1ea04393f9f15703f0000504000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000060c1b344473f0e516c3f0000504000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000064c1b344473f14d16a3f0000504000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000060c1ed44383f9995713f0000504000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000064c1ed44383f9f15703f0000584000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000060c1b004483f0e516c3f0000584000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000064c1b004483f14d16a3f0000584000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000060c1f084373f9995713f0000584000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000064c1f084373f9f15703f0000604000003440000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000060c1adc4483f0e516c3f0000604000003440000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000064c1adc4483f14d16a3f0000604000002840000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000060c1f3c4363f9995713f0000604000002840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000064c1f3c4363f9f15703f0000604000002840000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000028406ac27a3fab776c3d0000604000003440000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000034406ea2793fab776c3d0000003f00004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000060c1adc4483f1d57733f0000903f00004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000060c1bb04453f1d57733f0000003f00004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000064c1adc4483f22d7713f0000903f00004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000064c1bc04453f22d7713f0000e03f00004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000060c1d6443e3f92126e3f0000903f00004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000060c1e4843a3f92126e3f0000e03f00004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000064c1d6443e3f97926c3f0000903f00004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000064c1e4843a3f97926c3f0000003f00004840000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100004840a1e8933e94032c3f0000003f00004040000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c100004040a768923e94032c3f0000003f00004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000060c1f3c4363f92126e3f0000003f00004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000064c1f3c4363f97926c3f0000e03f00004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000060c1ca44413f1d57733f0000e03f00004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000064c1ca44413f22d7713f0000184000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000060c1c704423f92126e3f0000184000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000064c1c704423f97926c3f0000184000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000060c1d8843d3f1d57733f0000184000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000064c1d9843d3f22d7713f0000404000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000060c1b9c4453f92126e3f0000404000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000064c1b9c4453f97926c3f0000404000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000060c1e7c4393f1d57733f0000404000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000064c1e7c4393f22d7713f0000484000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000060c1b684463f92126e3f0000484000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000064c1b684463f97926c3f0000484000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000060c1ea04393f1d57733f0000484000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000064c1ea04393f22d7713f0000504000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000060c1b344473f92126e3f0000504000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000064c1b344473f97926c3f0000504000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000060c1ed44383f1d57733f0000504000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000064c1ed44383f22d7713f0000584000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000060c1b004483f92126e3f0000584000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000064c1b004483f97926c3f0000584000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000060c1f084373f1d57733f0000584000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000064c1f084373f22d7713f0000604000004840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000060c1adc4483f92126e3f0000604000004840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000064c1adc4483f97926c3f0000604000004040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000060c1f3c4363f1d57733f0000604000004040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000064c1f3c4363f22d7713f0000604000004040000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000040407382783faa776c3d0000604000004840000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000064410000484075c2773fa8776c3d0000003f00005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000060c1adc4483f15d46f3f0000903f00005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000060c1bb04453f15d46f3f0000003f00005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000064c1adc4483f1b546e3f0000903f00005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000903f000064c1bc04453f1b546e3f0000e03f00005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000060c1d6443e3f8a8f6a3f0000903f00005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000060c1e4843a3f8a8f6a3f0000e03f00005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000e0bf000064c1d6443e3f900f693f0000903f00005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000090bf000064c1e4843a3f900f693f0000003f00005840000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c10000584096e8963e94032c3f0000003f00005040000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c1000050409c68953e94032c3f0000003f00005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000060c1f3c4363f8a8f6a3f0000003f00005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000000bf000064c1f3c4363f900f693f0000e03f00005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000060c1ca44413f15d46f3f0000e03f00005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000e03f000064c1ca44413f1b546e3f0000184000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000060c1c704423f8a8f6a3f0000184000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000018c0000064c1c704423f900f693f0000184000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000060c1d8843d3f15d46f3f0000184000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00001840000064c1d9843d3f1b546e3f0000404000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000060c1b9c4453f8a8f6a3f0000404000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000040c0000064c1b9c4453f900f693f0000404000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000060c1e7c4393f15d46f3f0000404000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000064c1e7c4393f1b546e3f0000484000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000060c1b684463f8a8f6a3f0000484000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000048c0000064c1b684463f900f693f0000484000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000060c1ea04393f15d46f3f0000484000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004840000064c1ea04393f1b546e3f0000504000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000060c1b344473f8b8f6a3f0000504000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000050c0000064c1b344473f900f693f0000504000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000060c1ed44383f15d46f3f0000504000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005040000064c1ed44383f1b546e3f0000584000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000060c1b004483f8a8f6a3f0000584000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000058c0000064c1b004483f900f693f0000584000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000060c1f084373f15d46f3f0000584000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00005840000064c1f084373f1b546e3f0000604000005840000060c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000060c1adc4483f8a8f6a3f0000604000005840000064c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000060c0000064c1adc4483f900f693f0000604000005040000060c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000060c1f3c4363f15d46f3f0000604000005040000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000064c1f3c4363f1b546e3f0000604000005040000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000050407802773fa9776c3d0000604000005840000064c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00006441000058407b42763fa9776c3d000000c000006040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c1000060403bc4663fbb02e53e000000c000004040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c10000404030c4693fd202df3e000000c000006040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c10000604030c4693fbb02e53e000000c000004040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c1000040403bc4663fd202df3e0000a0c000004040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c10000404046003c3f1f0a923d0000a0c000006040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c10000604046003c3fc309aa3d0000a0c000006040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000060405200393fc409aa3d000000c000004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000018c12ec76e3f7d45143f000080bf00004040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff000080bf000020c123c7713f66451a3f000080bf00004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000080bf000018c12ec76e3f66451a3f000000c000004040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000020c123c7713f7d45143f0000000000004040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000020c123c7713f4f45203f0000000000004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000018c12fc76e3f4f45203f0000084100008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000018c112416c3f643c8f3e0000204100008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000020c1ef40753f7a3c893e0000204100008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000018c1ef40753f623c8f3e0000084100008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000020c113416c3f7b3c893e0000284100000040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c10000004051833c3f4f45203f0000284100000000000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c10000000046833f3f7d45143f0000284100000040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c10000004045833f3f4f45203f0000284100000000000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c10000000051833c3f7d45143f0000a0c000000000000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c10000000046003c3fd813833a0000a0c000000040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c10000004046003c3fb115443d00002c4100001040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c100001040ff03913e3942783f00002c4100000040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100000040e903973e3fc2763f00002c4100001040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100001040e803973e3942783f00002c4100000040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c100000040ff03913e3ec2763f00002c4100004040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c100004040fd03913e28c27c3f00002c4100004040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c100004040e603973e28c27c3f0000a8c000000040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c10000004083420c3f6bb6b53e0000a8c000000040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c10000004077420f3f6bb6b53e0000a8c000001040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c10000104077420f3f60b6b83e0000a8c000001040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c10000104083420c3f60b6b83e0000a0c000001040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c10000104047003c3f50155c3d0000a0c000000040000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000020c1d0c43f3f19dd7e3f0000a8c000000040000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c0000020c1d0c43f3f1f5d7d3f0000a8c000000040000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c0000018c1c4c4423f1f5d7d3f0000a0c000000040000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000018c1c4c4423f19dd7e3f0000a8c000001040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a8c0000018c1b142003fc281223f0000a0c000001040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000020c1a642033fbc01243f0000a0c000001040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000018c1b142003fbc01243f0000a8c000001040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a8c0000020c1a642033fc281223f0000284100008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000020c1e440783f7a3c893e0000284100008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000018c1e440783f633c8f3e0000003f00008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000020c1cc413c3f7c3c893e0000000000008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000020c1d841393f7d3c893e0000804000008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000018c17c41513f683c8f3e0000f04000008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000020c12a41663f7a3c893e0000f04000008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000018c12941663f623c8f3e0000804000008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000020c17c41513f7f3c893e0000000000004040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c1000040405d83393fa1c2043f0000000000006040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c1000060405d83393f96c2073f0000000000008040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c1000080405d83393f8ac20a3f0000284100006040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c1000060402f83453ffc85d93e0000284100004040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c1000040402483483f1386d33e0000284100006040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c1000060402483483ffc85d93e0000284100004040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c1000040402f83453f1386d33e0000284100008040000020c1000080bf000000000000000000000000000000000000803f0000803fffffffff000020c1000080402f83453fe585df3e0000284100008040000018c1000080bf000000000000000000000000000000000000803f0000803fffffffff000018c1000080402483483fe585df3e0000004100008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000018c11e41693f633c8f3e0000004100008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000020c11e41693f7b3c893e0000604000008040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000018c187414e3f663c8f3e0000604000008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000020c188414e3f7e3c893e0000404000008040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000020c194414b3f7d3c893e0000284100004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000018c140094e3eb1037d3f00002c4100004040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000020c112095a3eac837e3f00002c4100004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000018c140094e3eac837e3f0000284100004040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000020c112095a3eb1037d3f00002c4100000040000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000020c13403c43ea90e7f3f0000284100000040000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000020c13503c43eaf8e7d3f0000284100000040000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000018c11e03ca3eaf8e7d3f00002c4100000040000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000018c11d03ca3ea90e7f3f000000c00000604000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000060404c44623fbb02e53e000000c00000404000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000040404c44623fd102df3e000000c000006040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000060405dc45d3fba02e53e0000a0c00000404000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000040403580403f200a923d0000a0c00000604000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000060403580403fc409aa3d000000c00000404000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff000000c000002cc11147763f7d45143f000080bf00004040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff000080bf000038c100c77a3f65451a3f000080bf0000404000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff000080bf00002cc11247763f66451a3f000000c000004040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000038c100c77a3f7d45143f0000000000004040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000038c101c77a3f4e45203f000000000000404000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000000000002cc11247763f4e45203f000008410000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000084100002cc112416c3f9a3c803e0000204100008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000038c1f040753f7d796e3e000020410000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000204100002cc1f040753f9c3c803e0000084100008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000038c113416c3f79796e3e000028410000004000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000000406203383f4f45203f000028410000000000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000000006303383f7d45143f0000284100000040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000000407483333f4f45203f0000284100000000000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000000007483333f7d45143f0000a0c00000000000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000000003480403f9e14833a0000a0c00000004000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000000403580403fb715443d00002c410000104000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000010402004883e3842783f00002c410000004000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000000402004883e3ec2763f00002c4100001040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c10000104084087e3e3842783f00002c4100000040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c10000004085087e3e3ec2763f00002c410000404000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000040401f04883e27c27c3f00002c4100004040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c10000404084087e3e27c27c3f0000a8c00000004000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc10000004066c2133f6bb6b53e0000a8c00000104000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc10000104066c2133f5fb6b83e0000a8c000000040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000000405542183f6bb6b53e0000a8c000001040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000010405542183f5fb6b83e0000a0c00000104000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000010403580403f57155c3d0000a0c000000040000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000038c1f3c4363f19dd7e3f0000a8c000000040000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c0000038c1f3c4363f1f5d7d3f0000a8c00000004000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a8c000002cc1e2443b3f1f5d7d3f0000a0c00000004000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c000002cc1e1443b3f19dd7e3f0000a8c00000104000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000a8c000002cc194c2073fc281223f0000a0c000001040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000038c183420c3fbc01243f0000a0c00000104000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c000002cc194c2073fbc01243f0000a8c000001040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a8c0000038c183420c3fc281223f0000284100008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000038c1e540783f7e796e3e000028410000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000284100002cc1e440783f9d3c803e000000000000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000000000002cc1d741393fa03c803e0000003f00008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000038c1cb413c3f83796e3e0000003f0000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f00002cc1cc413c3f9f3c803e0000000000008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000038c1d741393f85796e3e0000404000008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000038c192414b3f7a796e3e000040400000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000404000002cc192414b3f9a3c803e000080400000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000804000002cc17b41513f9a3c803e0000f04000008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000038c12a41663f77796e3e0000f0400000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000f04000002cc12a41663f983c803e0000804000008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000038c17b41513f79796e3e000000000000404000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000040404b033e3fa1c2043f000000000000604000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000060404b033e3f96c2073f0000000000004040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000040403a83423fa1c2043f0000000000006040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000060403a83423f96c2073f000000000000804000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc1000080404b033e3f8ac20a3f0000000000008040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000080403a83423f8ac20a3f000028410000604000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000060404003413ffc85d93e000028410000404000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000040404103413f1386d33e0000284100006040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c10000604052833c3ffb85d93e0000284100004040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c10000404052833c3f1286d33e000028410000804000002cc1000080bf000000000000000000000000000000000000803f0000803fffffffff00002cc1000080404003413fe585df3e0000284100008040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c10000804052833c3fe485df3e0000004100008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000038c11e41693f77796e3e000000410000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000004100002cc11e41693f993c803e000060400000804000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000604000002cc187414e3f9a3c803e0000604000008040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000038c187414e3f7a796e3e000028410000404000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000284100002cc1cd086c3eb1037d3f00002c4100004040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000038c188087e3eac837e3f00002c410000404000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff00002c4100002cc1cd086c3eac837e3f0000284100004040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000038c188087e3eb1037d3f00002c4100000040000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000038c17a03b23ea90e7f3f0000284100000040000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000038c17a03b23eaf8e7d3f000028410000004000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000284100002cc15803bb3eaf8e7d3f00002c410000004000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c4100002cc15703bb3ea90e7f3f000040400000804000002cc126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff00002cc1bddd9240d242343fd134473e0000404000008040000038c126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff000038c1bddd9240c1c2383fd134473ea4ad47400000904000002cc126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff00002cc10052a340d242343fd48b533ea4ad474000009040000038c126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff000038c10052a340c1c2383fd48b533e0000003f00008040000020c126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff000020c145338040b3688f3e0cc5303f0000003f0000804000002cc126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff00002cc1453380409068983e0cc5303f90b61e3f00009040000020c126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff000020c188a79040b3688f3eccda333f90b61e3f0000904000002cc126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff00002cc188a790409068983eccda333f0000003f0000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff000000bf000080407185fa3e7786383f000040400000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c0000080407e420c3f7786383f90b61e3f0000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff90b61ebf00009040faf5fb3e6c863b3fa4ad47400000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffffa4ad47c000009040c3fa0c3f6c863b3f000060400000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c00000804037125c3febbeb33e000080400000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000080402b125f3febbeb33ea4ad67400000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffffa4ad67c0000090407bca5c3fd4beb93ed2d683400000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffffd2d683c00000904070ca5f3fd4beb93e0000604000008040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00006040000080402cf9783fa012833a0000404000008040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000040400000804021f97b3f9c12833aa4ad674000009040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffffa4ad674000009040e840783f705f503ca4ad474000009040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffffa4ad474000009040dc407b3f6e5f503c0000604000008040000038c126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff000038416f999640d242343ff991543e000060400000804000002cc126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff00002c416f999640c1c2383ff991543ea4ad674000009040000038c126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff00003841b20da740d242343ffce8603ea4ad67400000904000002cc126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff00002c41b20da740c1c2383ffce8603e0000404000008040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000040c000008040d242343f9f818a3e0000604000008040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000060c00000804001f6343f1bac843ea4ad474000009040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffffa4ad47c0000090409358373fa0818a3ea4ad674000009040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffffa4ad67c000009040c10b383f1bac843e0000f0400000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff0000f0c000008040da11743febbeb33ed2d6f3400000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffffd2d6f3c0000090401fca743fd4beb93e0000804000008040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000080400000804038f9753fa012833ad2d6834000009040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffffd2d6834000009040f340753f715f503c000000410000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100008040cf11773febbeb33e67eb01410000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff67eb01c10000904013ca773fd4beb93e0000f04000008040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000f0400000804088f9603fa812833ad2d6f34000009040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffffd2d6f340000090404441603f725f503c000000410000804000002cc135ef783f79eb6ebe0000000000000000000000000000803f000080bfffffffff00002cc17932b840d242343f837a2c3e0000004100008040000038c135ef783f79eb6ebe0000000000000000000000000000803f000080bfffffffff000038c17932b840c1c2383f837a2c3e67eb01410000904000002cc135ef783f79eb6ebe0000000000000000000000000000803f000080bfffffffff00002cc1bba6c840d242343f85d1383e67eb014100009040000038c135ef783f79eb6ebe0000000000000000000000000000803f000080bfffffffff000038c1bba6c840c1c2383f85d1383e0000004100008040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000000410000804094f95d3f9412833a67eb014100009040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff67eb01410000904050415d3f715f503c000008410000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c1000080407e82753fc0c1603c000020410000804000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff000020c1000080405b827e3fc1c1603c67eb09410000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff67eb09c100009040c23a763f6e5fd03c67eb21410000904000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff67eb21c1000090409f3a7f3f6f5fd03c0000084100008040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00000841000080409ff95a3f6f12833a67eb094100009040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff67eb0941000090405b415a3f6c5f503c0000084100008040000038c135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff0000384127eebb40d242343faad7393e000008410000804000002cc135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff00002c4127eebb40c1c2383faad7393e67eb094100009040000038c135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff000038416962cc40d242343fac2e463e67eb09410000904000002cc135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff00002c416962cc40c1c2383fac2e463e0000004100008040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100008040d242343f37da903e0000084100008040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff000008c10000804000f6343fb2048b3e67eb014100009040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff67eb01c1000090409258373f37da903e67eb094100009040000038c100000000000000000000803f000080bf0000000000000000000080bfffffffff67eb09c100009040c00b383fb2048b3e000020410000804000002cc135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff00002c413121c740d242343f21ef613e0000204100008040000020c135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff000020413121c740c1c2383f21ef613e67eb21410000904000002cc135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff00002c417395d740d242343f23466e3e67eb214100009040000020c135ef78bf79eb6e3e000000000000000000000000000080bf000080bfffffffff000020417395d740c1c2383f23466e3e0000204100008040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000204100008040c2f9513f9712833a67eb214100009040000020c10000000000000000000080bf0000803f0000000000000000000080bfffffffff67eb2141000090407e41513f715f503c0000404000008040000020c126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff00002041bddd9240aa3a7c3f7112833a0000404000008040000018c126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff00001841bddd9240aa3a7c3f6c5f503ca4ad474000009040000020c126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff000020410052a3406a507f3f6f12833aa4ad474000009040000018c126ef78bf64ec6e3e000000000000000000000000000080bf000080bfffffffff000018410052a3406a507f3f6b5f503c0000404000008040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000404000008040faf5fb3efa44353f0000003f00008040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000003f00008040c3fa0c3ffa44353fa4ad474000009040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffffa4ad4740000090407185fa3eee44383f90b61e3f00009040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff90b61e3f000090407e420c3fee44383f0000003f00008040000018c126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff000018c145338040ca68893e0cc5303f90b61e3f00009040000018c126ef783f64ec6ebe0000000000000000000000000000803f000080bfffffffff000018c188a79040ca68893eccda333f000070c000006040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff00007040000060409608783f77093f3f000070c000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff00007040000040409608783f83093c3f000098c000006040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff00009840000060407f087e3f77093f3f0000a0c000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000a0400000404079887f3f83093c3f0000a0c000004040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000004040f3c4363f1dc8323f000070c000004040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000004040d6443e3f1cc8323f000098c000006040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000984000006040ed44383f11c8353f000070c000006040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000006040d6443e3f10c8353f0000a0c000004040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000008c1f3c4363f8789603f000070c000004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000018c1d6443e3f9e895a3f000070c000004040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000008c1d6443e3f8789603f0000a0c000004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000018c1f3c4363f9e895a3f000070c000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000704000006040ca44413f05cb633f0000a0c000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000a04000004040adc4483f10cb603f0000a0c000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000a04000006040adc4483f05cb633f000070c000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000704000004040cb44413f10cb603f0000a0c000004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000004040ea855c3f7d45143f000070c000004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000004040ea855c3f60c51b3f000070c000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000006040f685593f60c51b3f0000a0c000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000006040f685593f7d45143f0000a0c000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000000000a5856e3f7d45143f000070c000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000000000a5856e3f60c51b3f000070c000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000000040d385623f60c51b3f0000a0c000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000000040d385623f7d45143f000070c000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000070400000004086032f3f3e094e3f0000a0c000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000a040000000006983363f6c09423f0000a0c000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000a040000000406983363f3e094e3f000070c000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000070400000000086032f3f6c09423f000070c000001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000001040d905613f60c51b3f0000a0c000001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000a04000001040d905613f7d45143f000070c000001040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff00007040000010409608783ff64a423f0000a0c000000040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000a0400000004079887f3ffbca403f0000a0c000001040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000a0400000104079887f3ff54a423f000070c000000040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff00007040000000409608783ffbca403f0000a0c000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000a0400000104079887f3f9489373f000070c000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff00007040000010409608783f9489373f0000a0c0000010400000504000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c000005040f3c4363f830c673f000070c0000010400000404000000000000080bf000000000000803f00000000000000000000803fffffffff000070c000004040d6443e3f898c653f000070c0000010400000504000000000000080bf000000000000803f00000000000000000000803fffffffff000070c000005040d6443e3f830c673f0000a0c0000010400000404000000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c000004040f3c4363f898c653f000070c00000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff000070c000004040de09243e35657e3f0000a0c00000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000040406b09423e35657e3f0000a0c00000004000005040000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000050406b09423e2fe57f3f000070c00000004000005040000000000000803f000000000000803f0000000000000000000080bfffffffff000070c000005040de09243e2fe57f3f000050c000006040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000504000006040a108753f77093f3f000050c000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000504000004040a108753f83093c3f000000c000006040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000006040bf886d3f77093f3f000000c000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000004040bf886d3f83093c3f000050c000004040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000004040ca44413f1cc8323f000050c000006040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000006040ca44413f11c8353f000000c000004040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000004040aec4483f1dc8323f000000c000006040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000006040adc4483f11c8353f000050c000004040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000008c1ca44413f8789603f000000c000004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000018c1adc4483f9e895a3f000000c000004040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000008c1adc4483f8789603f000050c000004040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000018c1ca44413f9e895a3f000050c000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000504000006040d5443e3f05cb633f000050c000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000504000004040d6443e3f10cb603f000000c000006040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000006040f3c4363f05cb633f000000c000004040000018c10000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000004040f3c4363f10cb603f000050c000004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000004040ea855c3f55c51e3f000050c000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000006040f685593f55c51e3f000000c000004040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000004040ea855c3f3845263f000000c000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000006040f685593f3845263f000050c000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000000000a5856e3f54c51e3f000050c000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000000040d385623f55c51e3f000000c000000000000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000000000a5856e3f3745263f000000c000000040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000000040d385623f3745263f000050c000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000050400000004092032c3f3e094e3f000050c000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000050400000000092032c3f6c09423f000000c000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000000040ae83243f3e094e3f000000c000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000000000af83243f6c09423f000050c000001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000001040d905613f55c51e3f000000c000001040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000004000001040d905613f3845263f000050c000001040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000504000001040a108753ff54a423f000050c000000040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000504000000040a208753ffbca403f000000c000001040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000001040bf886d3ff54a423f000000c000000040000050400000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000000040bf886d3ffbca403f000050c000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000504000001040a208753f9489373f000000c000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000004000001040bf886d3f9489373f000050c0000010400000504000000000000080bf000000000000803f00000000000000000000803fffffffff000050c000005040ca44413f830c673f000000c0000010400000404000000000000080bf000000000000803f00000000000000000000803fffffffff000000c000004040adc4483f898c653f000000c0000010400000504000000000000080bf000000000000803f00000000000000000000803fffffffff000000c000005040adc4483f830c673f000050c0000010400000404000000000000080bf000000000000803f00000000000000000000803fffffffff000050c000004040cb44413f898c653f000000c00000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff000000c000004040fe14f43d35657e3f000050c00000004000004040000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000040400b0a183e35657e3f000050c00000004000005040000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000050400b0a183e2fe57f3f000000c00000004000005040000000000000803f000000000000803f0000000000000000000080bfffffffff000000c000005040fe14f43d2fe57f3f0000084100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000050c114416c3f047a4a3e0000204100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000050c1f240753f077a4a3e0000000000000000000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000000008e42093fb083243f0000000000000040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000000409042093f8183303f0000284100000000000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000000097832a3f7d45143f0000284100000040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000004097832a3f4f45203f0000003f00000040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000000401406523f57cc733f0000003f00000040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c1000000400e86533f57cc733f0000003f00001040000054c10000803f000000000000000000000000000000000000803f000080bfffffffff000054c1000010400e86533f514c753f0000003f00001040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000010401406523f514c753f0000000000001040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000104017834b3fb242003f0000000000004040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000404017834b3fa1c2043f00002c4100001040000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000010402909543e3942783f00002c4100000040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000004012095a3e3fc2763f00002c4100001040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000104011095a3e3942783f00002c4100000040000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000000402909543e3fc2763f00002c4100004040000054c1000080bf000000000000000000000000000000000000803f0000803fffffffff000054c1000040402a09543e27c27c3f00002c4100004040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000404013095a3e27c27c3f0000284100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000050c1e640783f087a4a3e0000003f00008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000050c1ca413c3f0b7a4a3e0000404000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000050c192414b3f037a4a3e0000000000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000050c1d641393f0d7a4a3e0000000000000040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000050c17d13833a4ac2733f0000003f00000040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000050c1835f503c4ac2733f0000000000001040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000050c12701003f93032c3f0000003f00001040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000050c16502fa3e93032c3f0000804000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000050c17b41513f027a4a3e0000f04000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000050c12b41663f007a4a3e0000284100004040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c1000040407583333f1386d33e0000284100006040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c1000060407583333ffc85d93e0000284100008040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c1000080407583333fe585df3e0000000000006040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000604017834b3f96c2073f0000000000008040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000804017834b3f8ac20a3f0000004100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000050c12041693f027a4a3e0000604000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000050c186414e3f037a4a3e0000284100004040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000050c1ff03913eb1037d3f00002c4100004040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000054c1f303943eac837e3f00002c4100004040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000050c1ff03913eac837e3f0000284100004040000054c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000054c1f303943eb1037d3f0000284100000040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000050c1c103a03eaf8e7d3f00002c4100000040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000050c1c003a03eaa0e7f3f0000204100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000040c1f140753fab79623e0000084100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000040c113416c3fa879623e0000000000000000000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c100000000b042003fb083243f0000000000000000000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c100000000a542033fb083243f0000000000000040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c100000040a742033f8283303f0000000000000040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c100000040b342003f8283303f0000284100000040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000000407f83303f4f45203f0000284100000000000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000000008083303f7d45143f0000003f00000040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000000403706493f57cc733f0000003f00000040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000000402b064c3f57cc733f0000003f00001040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000010402b064c3f514c753f0000003f00001040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000010403706493f514c753f0000000000001040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000010403a83423fb242003f0000000000001040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000010402e83453fb242003f0000000000004040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000040402e83453fa1c2043f00002c4100001040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c100001040b408723e3842783f00002c4100000040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c100000040b308723e3ec2763f00002c4100004040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c100004040b308723e27c27c3f0000284100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000040c1e640783fad79623e0000404000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000040c192414b3fa879623e0000003f00008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000040c1cb413c3fb179623e0000000000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000040c1d641393fb379623e0000000000000040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000038c16f12833a27c27c3f0000003f00000040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000040c1695f503c33c2793f0000003f00000040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000038c1615f503c27c27c3f0000000000000040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000040c1ac12833a33c2793f0000003f00001040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000040c16602fa3e7c03323f0000000000001040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000040c12701003f7c03323f0000000000001040000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000038c12701003f7003353f0000003f00001040000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000038c16502fa3e7003353f0000f04000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000040c12a41663fa579623e0000804000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000040c17b41513fa879623e0000284100006040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000060405d83393ffb85d93e0000284100004040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000040405e83393f1286d33e0000284100008040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000080405d83393fe485df3e0000000000006040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000060402e83453f96c2073f0000000000008040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000080402e83453f8ac20a3f0000004100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000040c11f41693fa779623e0000604000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000040c187414e3fa879623e00002c4100004040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000040c12d04853eac837e3f0000284100004040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000040c12d04853eb1037d3f00002c4100000040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000040c19103ac3ea90e7f3f0000284100000040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000040c19203ac3eaf8e7d3f0000204100000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000080c01381843e5f80b43e0000004100000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000080c01381843ebc809c3e0000004100000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000000c0b8809c3ebc809c3e0000204100000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000000c0b6809c3e6080b43e0000804000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000080c01481843eea02593e0000004000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000040000080c01481843ea303293e0000004000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000040000000c0b8809c3ea103293e0000804000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000000c0b8809c3ee902593e0000c04000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000080c01481843e1981843e0000c04000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000000c0b8809c3e1881843e000080bf00000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000080c01381843e6d09c23d000080bf00000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000000c0b8809c3e6b09c23d0000000000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000000c0b8809c3eb108f23d0000000000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000080c01481843eb408f23d000000410000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000004100004040d27fd83ebc809c3e000020410000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000204100004040d17fd83e6180b43e000020410000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000000005b80b43e6180b43e000000410000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000000005b80b43ebc809c3e0000003f00000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000080c01481843e2c04053e0000003f00000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000000c0b8809c3e2a04053e0000004100000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000000bf7380ae3ebc809c3e0000204100000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000000bf7180ae3e6180b43e0000004000000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00000040000000bf7380ae3ea003293e0000804000000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000000bf7380ae3ee802593e000000400000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00000040000000005c80b43ea003293e000080400000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000000005c80b43ee802593e0000c04000000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000000bf7480ae3e1881843e0000c0400000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000000005d80b43e1881843e0000003f00000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000000bf7480ae3e2a04053e0000003f0000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000000005d80b43e2a04053e0000000000000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000000bf7480ae3eae08f23d000000000000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000000005e80b43eaf08f23d00002041000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000020410000c0c0e102593e6080b43e00000041000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000410000c0c0df02593ebd809c3e00000041000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000410000b0c0b102653ebd809c3e00002041000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000020410000b0c0b202653e6080b43e00008040000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080400000c0c0e102593eea02593e00000040000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000c0c0e202593ea303293e00000040000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000b0c0b402653ea303293e00008040000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080400000b0c0b302653eea02593e0000c040000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000c0400000c0c0e102593e1981843e0000c040000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000c0400000b0c0b202653e1981843e0000003f000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f0000c0c0e102593e2e04053e0000003f000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f0000b0c0b302653e2e04053e00000000000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000000000c0c0e002593ebb08f23d00000000000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000000000b0c0b202653eb808f23d00008040000000000000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080400000f0c06b03353eea02593e00000040000000000000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000f0c06c03353ea203293e0000804000000000000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000000c19903293eeb02593e0000004000000000000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000040000000c19a03293ea203293e0000c040000000000000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000c0400000f0c06b03353e1a81843e0000c04000000000000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000000c19a03293e1981843e0000f04000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000080c01481843ed380963e0000f04000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000000c0b8809c3ed380963e0000f0400000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000000005c80b43ed380963e0000c0400000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000c04000004040d17fd83e1781843e0000f0400000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000f04000004040d27fd83ed280963e0000f04000000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000000bf7480ae3ed380963e0000f040000000000000c0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000f0400000c0c0e002593ed380963e0000f040000000000000b0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000f0400000b0c0b202653ed380963e00000041000000000000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000410000f0c06c03353ebc809c3e0000f040000000000000f0c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000f0400000f0c06c03353ed380963e0000004100000000000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000000c19a03293ebd809c3e0000f04000000000000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000000c19a03293ed480963e0000c04000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000008c1c9031d3e1981843e0000804000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000008c1c7031d3eeb02593e0000f04000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000008c1c8031d3ed480963e00000040000000000000003f000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000003f4480ba3ea003293e00008040000000000000003f000000000000803f000000000000803f0000000000000000000080bfffffffff000080400000003f4480ba3ee802593e0000f0400000000000005040000000000000803f000000000000803f0000000000000000000080bfffffffff0000f04000005040c67fdb3ed380963e000000410000000000005040000000000000803f000000000000803f0000000000000000000080bfffffffff0000004100005040c67fdb3ebc809c3e000024410000000000000000000000000000803f000000000000803f0000000000000000000080bfffffffff00002441000000005b80b43e5580b73e0000244100000000000000bf000000000000803f000000000000803f0000000000000000000080bfffffffff00002441000000bf7180ae3e5580b73e0000244100000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff00002441000000c0b6809c3e5480b73e0000244100000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff00002441000080c01381843e5480b73e00008040000000000000803f000000000000803f000000000000803f0000000000000000000080bfffffffff000080400000803f2e80c03eea02593e00000040000000000000803f000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000803f2e80c03ea303293e0000804000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000018c12304053eee02593e0000c04000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000018c12504053e1981843e0000f04000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000018c12304053ed380963e0000c04000004040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0000008c1f1808d3ef5800d3f0000f04000004040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000008c1f2808d3ed280163f0000f04000004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000000c10981873ed280163f0000c04000004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0000000c10881873ef5800d3f0000804000004040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000008c1f1808d3e2381013f0000804000004040000000c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000000c10881873e2381013f0000f04000000040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c1000000402947703fff03113f0000f04000000000000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c100000000fa467c3ff303143f0000f04000000040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c1000000402947703ff303143f0000f04000000000000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c100000000fa467c3fff03113f0000804000000000000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c100000000af83243f5ccd6f3f0000804000000000000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c100000000ae83243f68cd6c3f0000804000000040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000000408083303f67cd6c3f0000804000000040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000000408083303f5ccd6f3f0000f04000001040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c1000010402ec76e3fff03113f0000f04000001040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c1000010402ec76e3ff303143f0000f04000004040000008c1000080bf000000000000000000000000000000000000803f0000803fffffffff000008c10000404040476a3fff03113f0000f04000004040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c10000404040476a3ff303143f0000804000001040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000010407a03323f67cd6c3f0000804000001040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000010407a03323f5ccd6f3f0000804000004040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c1000040406983363f68cd6c3f0000804000004040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000040406983363f5ccd6f3f0000e0bf00000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf000080c01481843ef5099e3d000000c000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000080c01681843e1f0a923d000000c000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000000c0ba809c3e230a923d0000e0bf00000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000e0bf000000c0b9809c3ef4099e3d0000f04000000040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00000841000000402947703fff03113f0000f04000001040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00000841000010402ec76e3fff03113f0000f04000000040000018c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00001841000000402947703f16040b3f0000f04000001040000018c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00001841000010402ec76e3f16040b3f0000804000000040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000000408083303f7ecd663f0000804000000000000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c100000000af83243f7fcd663f0000f04000000000000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000084100000000fa467c3fff03113f0000f04000000000000018c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000184100000000fb467c3f16040b3f0000804000001040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000010407b03323f7ecd663f0000f04000004040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000008410000404040476a3fff03113f0000f04000004040000018c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000018410000404040476a3f16040b3f0000804000004040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000040406983363f7fcd663f0000f04000004040000018c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000f0c0000018c1c480993ed280163f0000c04000004040000018c100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000c0c0000018c1c480993ef5800d3f0000804000004040000018c100000000000080bf00000000000080bf0000000000000000000080bfffffffff000080c0000018c1c380993e2381013f000080bf00000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000020c1b308f23d7909c23d000000c000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000020c1b508f23d2e0a923d000000c000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000018c12d04053e2e0a923d000080bf00000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000018c12c04053e7a09c23d000080bf00000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000038c1c409aa3d7709c23d000000c000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000038c1c609aa3d2d0a923d000000c00000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c000002cc13d09ce3d2d0a923d000080bf0000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf00002cc13c09ce3d7809c23d000070c000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff000070c0000080c01981843e8b2df83c0000a0c000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000080c01881843eca12833a0000a0c000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000000c0bc809c3e6f12833a000070c000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff000070c0000000c0bc809c3e902df83c0000a0c00000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c000004040d77fd83e9813833a000070c00000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff000070c000004040d77fd83ea12df83c000070c000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff000070c0000008c1d3031d3ec52df83c0000a0c000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000008c1d6031d3edd15833a000070c000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff000070c0000018c12e04053ebb2df83c0000a0c000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000018c13204053ec614833a000070c000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff000070c0000058c16a16143db22df83c0000a0c000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000058c16f16143de713833a0000a0c000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000038c1cb09aa3d1814833a000070c000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff000070c0000038c1ca09aa3db02df83c000070c000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff000070c0000020c1b908f23db52df83c0000a0c000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c0000020c1be08f23d7514833a0000a0c00000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000a0c000002cc14509ce3d2e14833a000070c00000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff000070c000002cc14209ce3db02df83c000050c000000000000080c0000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000080c01781843e0d162c3d000050c000000000000000c0000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000000c0ba809c3e14162c3d000050c00000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff000050c000004040d47fd83e1d162c3d000000c00000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff000000c000004040d07fd83e280a923d000000c000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000008c1d1031d3e2c0a923d000050c000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000008c1cf031d3e2c162c3d000050c000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000018c12c04053e2c162c3d000000c000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c0000058c16816143d2e0a923d000050c000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000058c16a16143d26162c3d000050c000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000038c1c709aa3d25162c3d000050c000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff000050c0000020c1b708f23d28162c3d000050c00000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff000050c000002cc13f09ce3d26162c3d00008040000000000000803f000000000000803f000000000000803f0000000000000000000080bfffffffff000080400000803f2e80c03eea02593e00000040000000000000803f000000000000803f000000000000803f0000000000000000000080bfffffffff000000400000803f2e80c03ea303293e000080400000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000804000004040ce7fd83eea02593e000000400000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000004000004040ce7fd83ea303293e0000b040000000000000803f000000000000803f000000000000803f0000000000000000000080bfffffffff0000b0400000803f2e80c03e5b027d3e0000b0400000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000b04000004040ce7fd83e5b027d3e000000000000000000004040000000000000803f000000000000803f0000000000000000000080bfffffffff0000000000004040ce7fd83ec208f23d00000000000000000000803f000000000000803f000000000000803f0000000000000000000080bfffffffff000000000000803f2e80c03ec208f23d0000804000004040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff00008040000040409403ac3eb208723f0000004000004040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff00000040000040403903c43eb208723f0000804000006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff00008040000060409303ac3ea708753f0000004000006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff00000040000060403903c43ea708753f0000b04000004040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000b04000004040d8039a3eb108723f0000b04000006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000b04000006040d6039a3ea608753f00008040000040400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000040401942273fd202df3e0000b040000040400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff0000b0c000004040f741303fd202df3e00008040000060400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000060401942273fbb02e53e0000b040000060400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff0000b0c000006040f641303fbc02e53e0000b040000040400000803f000080bf00000000000000000000000000000000000080bf000080bfffffffff000080bf00004040ae056d3f5d03bb3e0000b0400000404000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c000004040af056d3f0003d33e0000b040000060400000803f000080bf00000000000000000000000000000000000080bf000080bfffffffff000080bf00006040b9056a3f5d03bb3e0000b0400000604000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c000006040ba056a3fff02d33e00000040000040400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000c00000404047421b3fd202df3e00000040000060400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000c00000604047421b3fbc02e53e00000000000040400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000404076420f3fd202df3e00000000000060400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000604075420f3fbc02e53e0000000000004040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000000000004040dc02dc3eb108723f0000000000006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff0000000000006040dc02dc3ea608753f0000000000004040000040400000803f000000000000000000000000000000000000803f000080bfffffffff00004040000040403142213f9286323f00000000000040400000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f000040403042213fc186263f0000000000006040000040400000803f000000000000000000000000000000000000803f000080bfffffffff00004040000060402542243f9286323f00000000000060400000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f000060402542243fc186263f0000804000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000000409503ac3ec9086c3f0000004000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000000003a03c43ef808603f0000004000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000000403a03c43ec9086c3f0000804000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000000009803ac3ef708603f0000000000000000000040400000803f000000000000000000000000000000000000803f000080bfffffffff000040400000000075420f3f9386323f00000000000000000000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f0000000075420f3fc286263f00000000000000400000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f0000004048421b3fc186263f0000000000000040000040400000803f000000000000000000000000000000000000803f000080bfffffffff000040400000004048421b3f9286323f0000b040000000400000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f000000409705733f5f03bb3e0000b0400000000000004040000080bf000000000000000000000000000000000000803f0000803fffffffff000040400000000069057f3f0003d33e0000b0400000004000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000000409805733f0203d33e0000b040000000000000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f0000000068057f3f5d03bb3e00008040000000000000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000000001942273f5d03bb3e0000b040000000000000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff0000b0c000000000f741303f5d03bb3e0000b040000000400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff0000b0c000000040f741303f0103d33e00008040000000400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000000401942273f0103d33e0000b04000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000b0c000000040da039a3ec8086c3f0000b04000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000b0c000000000dd039a3ef608603f00000000000000000000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000000075420f3f5e03bb3e00000040000000000000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000c00000000047421b3f5e03bb3e00000040000000400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000c00000004047421b3f0103d33e00000000000000400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000004075420f3f0103d33e0000000000000000000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000000000dd02dc3ef708603f0000000000000040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000000040de02dc3ec8086c3f0000804000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000010409503ac3ec3886d3f0000004000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000010403903c43ec3886d3f0000804000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000080c0000040409403ac3eb208723f0000004000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff000000c0000040403903c43eb208723f00000000000010400000803f0000803f000000000000000000000000000000000000803f000080bfffffffff0000803f0000104042c21c3fc186263f0000000000001040000040400000803f000000000000000000000000000000000000803f000080bfffffffff000040400000104042c21c3f9286323f0000b040000010400000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f000010409d85713f5e03bb3e0000b0400000104000004040000080bf000000000000000000000000000000000000803f0000803fffffffff00004040000010409d85713f0103d33e0000b040000040400000803f000080bf000000000000000000000000000000000000803f0000803fffffffff0000803f00004040ae056d3f5d03bb3e0000b0400000404000004040000080bf000000000000000000000000000000000000803f0000803fffffffff0000404000004040af056d3f0003d33e0000b040000010400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff0000b0c000001040f741303ff502d63e00008040000010400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000080c0000010401942273ff502d63e0000b04000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000b0c000001040da039a3ec2886d3f0000b04000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000b0c000004040d8039a3eb108723f00000040000010400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000c00000104047421b3ff602d63e00000000000010400000803f00000000000000000000803f000080bf0000000000000000000080bfffffffff000000000000104075420f3ff602d63e0000000000001040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000001040dd02dc3ec2886d3f0000000000004040000040400000000000000000000080bf000080bf00000000000000000000803fffffffff0000000000004040dc02dc3eb108723f0000204100000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000018c12704053e5e80b43e0000084100000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000018c12304053ea380a23e00002041000000000000d0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000020410000d0c015034d3e5b80b43e00000841000000000000d0c0000000000000803f000000000000803f0000000000000000000080bfffffffff000008410000d0c011034d3ea180a23e0000084100000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000058c15f16143da580a23e0000204100000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000058c15d16143d6080b43e0000084100000000000070c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000070c1c112833aa580a23e0000204100000000000070c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000070c16f12833a6080b43e0000084100000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000054c104162c3da580a23e0000204100000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000054c103162c3d6080b43e0000284100000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000058c16016143d4a80ba3e0000284100000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000054c105162c3d4a80ba3e0000404000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000018c12504053e4d03413e0000003f00000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000018c12804053e3404053e0000003f00000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000008c1cc031d3e3504053e0000404000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000008c1c7031d3e4f03413e0000000000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000018c12a04053ec408f23d0000000000000000000008c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000008c1ce031d3ec608f23d0000404000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000058c17216143d4c03413e0000003f00000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000058c16b16143d3404053e0000003f00000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000054c10e162c3d3404053e0000404000000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000054c115162c3d4c03413e0000000000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000058c16c16143dc308f23d0000000000000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000054c111162c3dc308f23d0000f04000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000058c16b16143dd380963e0000804000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000058c16b16143dee02593e0000804000000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000054c10d162c3dee02593e0000f04000000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000054c10e162c3dd380963e0000004100000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000058c16616143dbc809c3e0000004100000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000054c109162c3dbc809c3e0000604000000000000058c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000058c16f16143d1c034d3e0000604000000000000054c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000054c112162c3d1d034d3e0000000000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000020c1b008f23dc308f23d000080bf00000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000020c1b308f23d7909c23d000080bf00000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000018c12c04053e7a09c23d0000204100000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000020c1ac08f23d5e80b43e0000084100000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000020c1a608f23da480a23e0000284100000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000020c1ae08f23d4780ba3e0000284100000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000018c12804053e4780ba3e0000003f00000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000020c1ae08f23d3304053e0000404000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000020c1a708f23d4d03413e0000f04000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000020c1a408f23dd380963e0000804000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000020c1a508f23dee02593e0000804000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000018c12304053eee02593e0000f04000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000018c12304053ed380963e0000004100000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000020c1a408f23dbc809c3e0000004100000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000018c12304053ebb809c3e0000604000000000000020c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000020c1a608f23d1d034d3e0000604000000000000018c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000018c12404053e1e034d3e0000000000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000038c1c309aa3dc108f23d000080bf00000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf000038c1c409aa3d7709c23d000080bf0000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff000080bf00002cc13c09ce3d7809c23d000000000000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000000000002cc13a09ce3dc108f23d0000204100000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000038c1c109aa3d6080b43e0000084100000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000038c1be09aa3da580a23e000008410000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000084100002cc13309ce3da580a23e000020410000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000204100002cc13709ce3d5f80b43e0000284100000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000038c1c109aa3d4980ba3e000028410000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000284100002cc13909ce3d4980ba3e0000003f00000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000038c1c209aa3d3304053e0000003f0000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f00002cc13909ce3d3304053e0000404000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000038c1c009aa3d4b03413e000040400000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000404000002cc13409ce3d4c03413e0000f04000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000038c1be09aa3dd380963e0000804000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000038c1bf09aa3dee02593e000080400000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000804000002cc13409ce3dee02593e0000f0400000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f04000002cc13209ce3dd380963e0000004100000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000038c1be09aa3dbc809c3e000000410000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000004100002cc13209ce3dbc809c3e0000604000000000000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000038c1c009aa3d1d034d3e000060400000000000002cc1000000000000803f000000000000803f0000000000000000000080bfffffffff0000604000002cc13409ce3d1d034d3e0000084100000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000050c1a815443da580a23e0000204100000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000050c1a915443d6080b43e0000284100000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000050c1aa15443d4a80ba3e0000003f00000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000050c1b215443d3404053e0000404000000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000050c1b815443d4c03413e0000000000000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000050c1b515443dc408f23d0000804000000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000050c1b015443dee02593e0000f04000000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000050c1b115443dd380963e0000004100000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000050c1ac15443dbc809c3e0000604000000000000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000050c1b415443d1d034d3e0000084100000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000841000040c11c0a923da580a23e0000204100000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002041000040c11d0a923d6080b43e0000284100000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000040c11c0a923d4980ba3e0000003f00000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000040c11f0a923d3304053e0000404000000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00004040000040c11f0a923d4b03413e0000000000000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000040c11f0a923dc308f23d0000804000000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00008040000040c11e0a923dee02593e0000f04000000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000f040000040c11d0a923dd380963e0000004100000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000041000040c11c0a923dbc809c3e0000604000000000000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00006040000040c11e0a923d1d034d3e000098c000006040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff000098c0000000c06341573f39ebae3d000070c000006040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000080c03541633f7eeade3d000070c000006040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000000c06341573f7deade3d000098c000006040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff000098c0000080c03441633f3aebae3d000098c0000060400000404000000000000080bf000000000000803f00000000000000000000803fffffffff000098c000004040d641393f36ebae3d000070c0000060400000404000000000000080bf000000000000803f00000000000000000000803fffffffff000070c000004040d641393f7aeade3d000070c000006040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000008c1cd407e3f7ceade3d000098c000006040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff000098c0000008c1cd407e3f37ebae3d0000a0c000006040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000038c168c45a3fcf85e53e000070c000006040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000058c139c4663f9585f43e000070c000006040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000038c168c45a3f9585f43e0000a0c000006040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000058c139c4663fcf85e53e0000a0c000006040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000018c195c44e3fce85e53e000070c000006040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000020c18ac4513f9585f43e000070c000006040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000070c0000018c196c44e3f9485f43e0000a0c000006040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c0000020c18ac4513fcf85e53e0000a0c00000604000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff0000a0c000002cc17944563fcf85e53e000070c00000604000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff000070c000002cc17944563f9585f43e000050c000006040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000000c06341573f20eaf63d000000c000006040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000080c03441633f9c74193e000000c000006040000000c000000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000000c06341573f9c74193e000050c000006040000080c000000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000080c03441633f22eaf63d000050c0000060400000404000000000000080bf000000000000803f00000000000000000000803fffffffff000050c000004040d541393f23eaf63d000000c0000060400000404000000000000080bf000000000000803f00000000000000000000803fffffffff000000c000004040d641393f9d74193e000000c000006040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000008c1cd407e3f9d74193e000050c000006040000008c100000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000008c1cd407e3f24eaf63d000050c000006040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000038c168c45a3f7e85fa3e000000c000006040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000058c139c4663fa2c2043f000000c000006040000038c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000038c168c45a3fa2c2043f000050c000006040000058c100000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000058c139c4663f7e85fa3e000050c000006040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000018c195c44e3f7e85fa3e000000c000006040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000020c18ac4513fa2c2043f000000c000006040000018c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c0000018c196c44e3fa2c2043f000050c000006040000020c100000000000080bf000000000000803f00000000000000000000803fffffffff000050c0000020c18ac4513f7e85fa3e000050c00000604000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff000050c000002cc17944563f7e85fa3e000000c00000604000002cc100000000000080bf000000000000803f00000000000000000000803fffffffff000000c000002cc17944563fa2c2043f000050c000006040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff00000040000060407e41513fe2539e3d000050c00000604000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000060400b416f3fe2539e3d000050c000007040000000c0000080bf00000000000000000000000000000000000080bf000080bfffffffff00000040000070407f41513fb453aa3d000050c00000704000004040000080bf00000000000000000000000000000000000080bf000080bfffffffff000040c0000070400c416f3fb453aa3d000050c000006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000006040a108753f77093f3f000070c000006040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c0000060409608783f77093f3f000050c000007040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000007040a108753f7289403f000070c000007040000040400000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c0000070409608783f7289403f000070c000006040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000006040d902dc3e6bb6b53e000070c000006040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000006040f9000c3f6bb6b53e000070c000007040000040400000803f000000000000000000000000000000000000803f000080bfffffffff0000404000007040da02dc3e5fb6b83e000070c000007040000000c00000803f000000000000000000000000000000000000803f000080bfffffffff000000c000007040f9000c3f5fb6b83e000070c000006040000000c000000000000000000000803f000080bf0000000000000000000080bfffffffff000070400000604095826f3fe2539e3d000050c000006040000000c000000000000000000000803f000080bf0000000000000000000080bfffffffff00005040000060408a82723fe2539e3d000070c000007040000000c000000000000000000000803f000080bf0000000000000000000080bfffffffff000070400000704095826f3fb453aa3d000050c000007040000000c000000000000000000000803f000080bf0000000000000000000080bfffffffff00005040000070408982723fb453aa3d000050c000006040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000084100006040d685e23e530c4d3f000050c000006040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff000080400000604083420c3f530c4d3f000050c000007040000008c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000084100007040d585e23e4d8c4e3f000050c000007040000080c0000080bf00000000000000000000000000000000000080bf000080bfffffffff000080400000704082420c3f4d8c4e3f000050c000006040000080c00000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000006040d242343f495d913e000070c000006040000080c00000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c000006040c742373f495d913e000050c000007040000080c00000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000007040d242343f3e5d943e000070c000007040000080c00000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c000007040c642373f3e5d943e000070c000006040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000006040d685e23ed6cd4e3f000070c000006040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c10000604083420c3fd6cd4e3f000070c000007040000080c00000803f000000000000000000000000000000000000803f000080bfffffffff000080c000007040d585e23ed14d503f000070c000007040000008c10000803f000000000000000000000000000000000000803f000080bfffffffff000008c10000704082420c3fd14d503f000070c000006040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000006040d6443e3f10c8353f000050c000006040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000006040ca44413f11c8353f000070c000007040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000007040d5443e3f0b48373f000050c000007040000008c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000007040ca44413f0b48373f000050c00000604000002cc1000080bf00000000000000000000000000000000000080bf000080bfffffffff00002c41000060407e82753f95479c3d000050c000006040000020c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00002041000060406d027a3f94479c3d000050c00000704000002cc1000080bf00000000000000000000000000000000000080bf000080bfffffffff00002c41000070407e82753f6747a83d000050c000007040000020c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00002041000070406c027a3f6647a83d000070c000006040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c1000060407382783f9b90d83c000070c00000604000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc10000604061027d3f9890d83c000070c000007040000020c10000803f000000000000000000000000000000000000803f000080bfffffffff000020c1000070407282783ff247043d000070c00000704000002cc10000803f000000000000000000000000000000000000803f000080bfffffffff00002cc10000704061027d3ff047043d000070c00000604000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000006040d242343f50e0943e000050c00000604000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000006040c742373f50e0943e000070c00000704000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000007040d242343f45e0973e000050c00000704000002cc100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000007040c642373f45e0973e000050c000006040000018c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000018410000604061027d3f95479c3d000050c000007040000018c1000080bf00000000000000000000000000000000000080bf000080bfffffffff000018410000704061027d3f6747a83d000050c000006040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000006040d5443e3f05cb633f000070c000006040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c000006040ca44413f05cb633f000050c000007040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000007040d5443e3fff4a653f000070c000007040000018c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c000007040ca44413fff4a653f000070c000006040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000060407e82753f9890d83c000070c000007040000018c10000803f000000000000000000000000000000000000803f000080bfffffffff000018c1000070407e82753ff047043d000050c000006040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000060407285fa3ef04a423f000050c000006040000038c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00003841000060408a42093ff04a423f000050c000007040000058c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00005841000070407185fa3eebca433f000050c000007040000038c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00003841000070408a42093febca433f000050c000006040000038c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000006040ec41333f2ba19a3e000070c000006040000038c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c000006040e141363f2ba19a3e000050c000007040000038c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000050c000007040ec41333f1fa19d3e000070c000007040000038c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000070c000007040e141363f1fa19d3e000070c000006040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000060402fc76e3f56c8233f000070c000006040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c10000604000c77a3f56c8233f000070c000007040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000070402ec76e3f5048253f000070c000007040000058c10000803f000000000000000000000000000000000000803f000080bfffffffff000058c10000704000c77a3f5048253f000070c000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000006040f685593f60c51b3f000050c000006040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000006040f685593f55c51e3f000070c000007040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000704000007040fb05583f60c51b3f000050c000007040000058c100000000000000000000803f000080bf0000000000000000000080bfffffffff0000504000007040fc05583f54c51e3f000070c0000070400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000704000004040d6039a3eb40b773f000050c000007040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00005040000000c0f002d63ea80b7a3f000050c0000070400000404000000000000080bf00000000000080bf0000000000000000000080bfffffffff0000504000004040d7039a3ea80b7a3f000070c000007040000000c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00007040000000c0f002d63eb40b773f000070c000007040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00007040000080c0d585e23e4b86443f000050c000007040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00005040000008c183420c3f3f86473f000050c000007040000080c000000000000080bf00000000000080bf0000000000000000000080bfffffffff00005040000080c0d585e23e3f86473f000070c000007040000008c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00007040000008c183420c3f4b86443f000070c000007040000038c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00007040000038c17185fa3ef5c73b3f000050c000007040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00005040000058c18a42093fe9c73e3f000050c000007040000038c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00005040000038c17185fa3ee9c73e3f000070c000007040000058c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00007040000058c18a42093ff5c73b3f000070c000007040000018c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00007040000018c1ca68893e561c343f000050c000007040000020c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00005040000020c1b2688f3e4a1c373f000050c000007040000018c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00005040000018c1ca68893e4a1c373f000070c000007040000020c100000000000080bf00000000000080bf0000000000000000000080bfffffffff00007040000020c1b2688f3e561c343f000050c00000704000002cc100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000504000002cc19068983e4a1c373f000070c00000704000002cc100000000000080bf00000000000080bf0000000000000000000080bfffffffff0000704000002cc19068983e561c343f0000084100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000040c113416c3fa879623e0000204100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000050c1f240753f077a4a3e0000204100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002041000040c1f140753fab79623e0000084100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000841000050c114416c3f047a4a3e0000000000000000000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c100000000a542033fb083243f0000000000000000000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000000008e42093fb083243f0000000000000040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000000409042093f8183303f0000000000000040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c100000040a742033f8283303f0000284100000040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000004097832a3f4f45203f0000284100000000000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000000008083303f7d45143f0000284100000040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000000407f83303f4f45203f0000284100000000000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000000097832a3f7d45143f0000003f00000040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000000402b064c3f57cc733f0000003f00000040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000000401406523f57cc733f0000003f00001040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c1000010401406523f514c753f0000003f00001040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000010402b064c3f514c753f0000000000001040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000010402e83453fb242003f0000000000001040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000104017834b3fb242003f0000000000004040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000404017834b3fa1c2043f0000000000004040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000040402e83453fa1c2043f00002c4100001040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000104011095a3e3942783f00002c4100000040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c100000040b308723e3ec2763f00002c4100001040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c100001040b408723e3842783f00002c4100000040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000004012095a3e3fc2763f00002c4100004040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c10000404013095a3e27c27c3f00002c4100004040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c100004040b308723e27c27c3f0000284100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000050c1e640783f087a4a3e0000284100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000040c1e640783fad79623e0000003f00008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000040c1cb413c3fb179623e0000404000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000050c192414b3f037a4a3e0000404000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00004040000040c192414b3fa879623e0000003f00008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000050c1ca413c3f0b7a4a3e0000000000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000040c1d641393fb379623e0000000000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000050c1d641393f0d7a4a3e0000000000000040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000040c1ac12833a33c2793f0000003f00000040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000050c1835f503c4ac2733f0000003f00000040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff0000003f000040c1695f503c33c2793f0000000000000040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000000000050c17d13833a4ac2733f0000003f00001040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000050c16502fa3e93032c3f0000000000001040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000050c12701003f93032c3f0000000000001040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000000000040c12701003f7c03323f0000003f00001040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000003f000040c16602fa3e7c03323f0000804000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000040c17b41513fa879623e0000f04000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000050c12b41663f007a4a3e0000f04000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff0000f040000040c12a41663fa579623e0000804000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00008040000050c17b41513f027a4a3e0000284100006040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c1000060407583333ffc85d93e0000284100004040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000040405e83393f1286d33e0000284100006040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000060405d83393ffb85d93e0000284100004040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c1000040407583333f1386d33e0000284100008040000050c1000080bf000000000000000000000000000000000000803f0000803fffffffff000050c1000080407583333fe585df3e0000284100008040000040c1000080bf000000000000000000000000000000000000803f0000803fffffffff000040c1000080405d83393fe485df3e0000000000006040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000604017834b3f96c2073f0000000000006040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000060402e83453f96c2073f0000000000008040000050c10000803f000000000000000000000000000000000000803f000080bfffffffff000050c10000804017834b3f8ac20a3f0000000000008040000040c10000803f000000000000000000000000000000000000803f000080bfffffffff000040c1000080402e83453f8ac20a3f0000004100008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000040c11f41693fa779623e0000004100008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00000041000050c12041693f027a4a3e0000604000008040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000040c187414e3fa879623e0000604000008040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00006040000050c186414e3f037a4a3e0000284100004040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000040c12d04853eb1037d3f00002c4100004040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000050c1ff03913eac837e3f00002c4100004040000040c100000000000080bf000000000000803f00000000000000000000803fffffffff00002c41000040c12d04853eac837e3f0000284100004040000050c100000000000080bf000000000000803f00000000000000000000803fffffffff00002841000050c1ff03913eb1037d3f00002c4100000040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000050c1c003a03eaa0e7f3f0000284100000040000050c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000050c1c103a03eaf8e7d3f0000284100000040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002841000040c19203ac3eaf8e7d3f00002c4100000040000040c1000000000000803f000000000000803f0000000000000000000080bfffffffff00002c41000040c19103ac3ea90e7f3f + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 2.75, y: 2.25, z: -5.875} + m_Extent: {x: 8, y: 2.25, z: 9.125} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: -1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &842084052 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 842084053} + m_Layer: 0 + m_Name: Structure + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &842084053 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 842084052} + 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: + - {fileID: 1227201757} + - {fileID: 4026696} + m_Father: {fileID: 557578323} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &924410671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 924410672} + - component: {fileID: 924410673} + m_Layer: 0 + m_Name: Reflection Probe 8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &924410672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924410671} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: 1.5, z: -7.25} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &924410673 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924410671} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &963033190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963033191} + - component: {fileID: 963033192} + m_Layer: 0 + m_Name: Point Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &963033191 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963033190} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.75, y: 2.5, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1770544745} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &963033192 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963033190} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 0.84705883, a: 1} + m_Intensity: 0.7 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 0.7 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &1059525400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1059525401} + - component: {fileID: 1059525402} + m_Layer: 0 + m_Name: Reflection Probe 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1059525401 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1059525400} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1059525402 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1059525400} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1077245778 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1077245779} + - component: {fileID: 1077245780} + m_Layer: 0 + m_Name: Reflection Probe 6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1077245779 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077245778} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: 1.5, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1077245780 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077245778} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1134885618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1134885619} + - component: {fileID: 1134885620} + m_Layer: 0 + m_Name: Reflection Probe 13 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1134885619 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1134885618} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5.75, y: 1.5, z: -8.75} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1134885620 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1134885618} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1208425695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1208425696} + - component: {fileID: 1208425697} + m_Layer: 0 + m_Name: Reflection Probe 7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1208425696 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1208425695} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1208425697 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1208425695} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1227201752 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1227201757} + - component: {fileID: 1227201756} + - component: {fileID: 1227201755} + m_Layer: 0 + m_Name: GI Blocking + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 127 + m_IsActive: 1 +--- !u!33 &1227201755 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227201752} + m_Mesh: {fileID: 2070156965} +--- !u!23 &1227201756 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227201752} + m_Enabled: 1 + m_CastShadows: 2 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f9a5ce4748e5abd4288cab387226ef27, 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: 0 + m_SelectedEditorRenderState: 2 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &1227201757 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227201752} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.5, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 842084053} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1291775222 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1291775223} + m_Layer: 0 + m_Name: Reflection Probes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1291775223 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1291775222} + 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: + - {fileID: 1059525401} + - {fileID: 29538277} + - {fileID: 785032372} + - {fileID: 1635780791} + - {fileID: 350966235} + - {fileID: 1077245779} + - {fileID: 1208425696} + - {fileID: 924410672} + - {fileID: 262890555} + - {fileID: 1799119046} + - {fileID: 1910624284} + - {fileID: 1399680237} + - {fileID: 1134885619} + m_Father: {fileID: 1508763321} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1399680236 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399680237} + - component: {fileID: 1399680238} + m_Layer: 0 + m_Name: Reflection Probe 12 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1399680237 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399680236} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 9.25, y: 1.5, z: -11.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1399680238 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399680236} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1508763320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1508763321} + m_Layer: 0 + m_Name: Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1508763321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508763320} + 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: + - {fileID: 1770544745} + - {fileID: 1291775223} + m_Father: {fileID: 557578323} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1632422755 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1632422757} + - component: {fileID: 1632422756} + m_Layer: 0 + m_Name: Sun Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1632422756 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1632422755} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1.5 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: 2 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0 + m_NormalBias: 0 + m_NearPlane: 0.1 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1.5 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1632422757 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1632422755} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1770544745} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1635780790 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1635780791} + - component: {fileID: 1635780792} + m_Layer: 0 + m_Name: Reflection Probe 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1635780791 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635780790} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 8, y: 1.5, z: 0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1635780792 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635780790} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1770544744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1770544745} + m_Layer: 0 + m_Name: Lights + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1770544745 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1770544744} + 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: + - {fileID: 1632422757} + - {fileID: 963033191} + m_Father: {fileID: 1508763321} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1799119045 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1799119046} + - component: {fileID: 1799119047} + m_Layer: 0 + m_Name: Reflection Probe 10 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1799119046 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1799119045} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.75, y: 1.5, z: -10.75} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1799119047 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1799119045} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1855087691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1855087694} + - component: {fileID: 1855087693} + - component: {fileID: 1855087692} + 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 &1855087692 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1855087691} + m_Enabled: 1 +--- !u!20 &1855087693 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1855087691} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, 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.01 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: 3 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1855087694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1855087691} + m_LocalRotation: {x: 0, y: -0.35836798, z: 0, w: 0.93358046} + m_LocalPosition: {x: 8, y: 2, z: -5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: -42, z: 0} +--- !u!1 &1910624283 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1910624284} + - component: {fileID: 1910624285} + m_Layer: 0 + m_Name: Reflection Probe 11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1910624284 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1910624283} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 1.5, z: -11.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1291775223} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1910624285 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1910624283} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 0 + m_TimeSlicingMode: 0 + m_Resolution: 256 + m_UpdateFrequency: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.1 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 1 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!43 &2070156965 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh-1818442 + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 414 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 169 + localAABB: + m_Center: {x: 0.375, y: 2.125, z: -4.875} + m_Extent: {x: 8.375, y: 2.625, z: 9.375} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200000003000100040005000600040007000500080009000a0008000b0009000c000d000e000f00100011001200130014001500160017000b00180009000b00190018001a001b0001001c001a00010019001d00180019001e001d001f0020001b001a001f001b001e00210022001e002300210024002500200026002400200027002800290027002a0028002b002c002d002b002e002c002f00300031003200330034003500070000003500000036003700380039003a003b003c003d00030004003d001c0003002a003e0028002a003f003e0009003f002a00090018003f00400041003d00060040003d0041001a001c003d0041001c003f0042003e003f0043004200180043003f0018001d0043004400450041004000440041004600470048004600490047001d004a0043001d0021004a004b004c00450044004b0045004d0024001f0045004d001f004e004f00500051004e0050005200530054005200550053004f005600570058004f00570059005a005b0059005c005a0056005d005e00570056005e005f005c0059005f0060005c005d00610062005e005d006200630060005f0063006400600065006600670068006500670069006a006b0069006c006a0066006d006e00670066006e006d006f0070006e006d0070007100720073007100740072007500760077007500780076005100500079007a00510079007a0079007b007c007a007b007d0054007e007d00520054007f007e0080007f007d007e005800570081008200580081008200810083007b008200830084005b008500840059005b0086008500870086008400850057005e0088008100570088008100880089008300810089008a00590084008a005f0059008b00840086008b008a0084005e0062008c0088005e008c0088008c008d00890088008d008e005f008a008e0063005f008f008a008b008f008e008a00680067009000910068009000910090009200930091009200940095009600940097009500980099009a0098009b00990067006e009c00900067009c0090009c009d00920090009d006e0070009e009c006e009e009c009e009f009d009c009f00a000a100a200a000a300a100a400a500a300a400a600a500a700a300a000a700a800a300 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 169 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 40 + format: 2 + dimension: 4 + - stream: 0 + offset: 44 + format: 0 + dimension: 2 + - stream: 0 + offset: 52 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 10140 + _typelessdata: 000080be00009840000080bf000000000000803f000000000000803f0000000000000000000080bfffffffff000080be000080bfab1cb43e58ac263f000000c100009840000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c1000000c1b6142c3e2232e53e000000c10000984000009040000000000000803f000000000000803f0000000000000000000080bfffffffff000000c1000090407d06fe3e2032e53e000080be000098400000a8c0000000000000803f000000000000803f0000000000000000000080bfffffffff000080be0000a8c089fe753e58ac263f0000b040000098400000a8c0000000000000803f000000000000803f0000000000000000000080bfffffffff0000b0400000a8c089fe753e4c4f4d3f00000c410000984000009040000000000000803f000000000000803f0000000000000000000080bfffffffff00000c41000090407e06fe3ed625633f00000c4100009840000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000c41000000c1b6142c3ed625633f0000b04000009840000080bf000000000000803f000000000000803f0000000000000000000080bfffffffff0000b040000080bfac1cb43e4c4f4d3f000000c1000000bf0000904000000000000080bf000000000000803f00000000000000000000803fffffffff000000c1000090407e12833bdf12833b000020c0000000bf000000c100000000000080bf000000000000803f00000000000000000000803fffffffff000020c0000000c16b08aa3e39ec173e000020c0000000bf0000904000000000000080bf000000000000803f00000000000000000000803fffffffff000020c0000090406f12833b32ec173e000000c1000000bf000000c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c1000000c16a08aa3ee212833b000080be00009840000080bf0000000000000000000000000000c0ff0000c0ff0000c0ff0000803fffffffff000080be000080bf0000000000000000000080be00009840000080bf00000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000080be000080bf0000000000000000000020c0000098400000904000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000020c0000090400000000000000000000020c0000098400000904000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000020c0000090407d06fe3ef98d173f000080be00009840000080bf00000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000080be000080bfab1cb43e58ac263f000000c1000098400000904000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff000000c1000090407d06fe3e2032e53e000080be000098400000a8c00000000000000000000000000000c0ff0000c0ff0000c0ff0000803fffffffff000080be0000a8c00000000000000000000020c000009840000000c100000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000020c0000000c10000000000000000000080be000098400000a8c000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000080be0000a8c00000000000000000000020c000009840000000c100000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000020c0000000c1b6142c3ef98d173f000000c100009840000000c100000000ffff7f3f000000000000803f0000000000000000000080bfffffffff000000c1000000c1b6142c3e2232e53e000080be000098400000a8c000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff000080be0000a8c089fe753e58ac263f000020c0000000bf000004c100000000000080bf000000000000803f00000000000000000000803fffffffff000020c0000004c18064ad3e36ec173e000000c1000000bf000004c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c1000004c17e64ad3e8612833b000020c000009840000004c1000000000000803f000000000000803f0000000000000000000080bfffffffff000020c0000004c18b5c253ef98d173f000000c100009840000004c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c1000004c18e5c253e2032e53e000020c000009840000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff000020c0000000c1b6142c3ef98d173f000020c0000000bf000038c100000000000080bf000000000000803f00000000000000000000803fffffffff000020c0000038c19411d93e34ec173e000000c1000000bf000038c100000000000080bf000000000000803f00000000000000000000803fffffffff000000c1000038c19111d93ea412833b000020c000009840000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff000020c0000038c1c4049c3df98d173f000000c100009840000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff000000c1000038c1cb049c3d2132e53e000020c0000000bf000064c100000000000080bf000000000000803f00000000000000000000803fffffffff000020c0000064c17d06fe3e3bec173e000020c0000000bf000038c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff000020c0000038c19411d93e34ec173e000000c1000000bf000060c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff000000c1000060c166aafa3e6f12833b000020c000009840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff000020c0000064c18112833bf98d173f000000c100009840000060c100000000ffff7f3f000000000000803f0000000000000000000080bfffffffff000000c1000060c1e60b2d3c2032e53e000020c000009840000038c100000000ffff7f3f000000000000803f0000000000000000000080bfffffffff000020c0000038c1c4049c3df98d173f0000c040000000bf0000904000000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000090401a13833beb30be3e00000c41000000bf000000c100000000000080bf000000000000803f00000000000000000000803fffffffff00000c41000000c16c08aa3ed325e33e00000c41000000bf0000904000000000000080bf000000000000803f00000000000000000000803fffffffff00000c41000090402313833bd225e33e0000c040000000bf000000c100000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000000c16c08aa3eeb30be3e000020c0000000bf0000904000000000ffff7fbf000000000000803f00000000000000000000803fffffffff000020c0000090406f12833b32ec173e0000c040000000bf000000c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c040000000c16c08aa3eeb30be3e0000c040000000bf0000904000000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c040000090401a13833beb30be3e000020c0000000bf000000c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff000020c0000000c16b08aa3e39ec173e00000c41000098400000904000000000ffff7f3f000000000000803f0000000000000000000080bfffffffff00000c41000090407e06fe3ed625633f0000b04000009840000080bf00000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000b040000080bfac1cb43e4c4f4d3f0000c040000098400000904000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000c040000090407c06fe3e61ab503f0000b04000009840000080bf00000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000b040000080bf00000000000000000000b04000009840000080bf0000000000000000000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000b040000080bf00000000000000000000c040000098400000904000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000c0400000904000000000000000000000c0400000984000009040000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000090407c06fe3e61ab503f000020c00000984000009040000000000000803f000000000000803f0000000000000000000080bfffffffff000020c0000090407d06fe3ef98d173f00000c4100009840000000c100000000ffff7f3f000000000000803f0000000000000000000080bfffffffff00000c41000000c1b6142c3ed625633f0000c04000009840000000c100000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000c040000000c1b6142c3e61ab503f0000b040000098400000a8c000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000b0400000a8c089fe753e4c4f4d3f0000b040000098400000a8c000000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000b0400000a8c000000000000000000000c04000009840000000c100000000ffff7f3f000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000c040000000c100000000000000000000b040000098400000a8c00000000000000000000000000000c0ff0000c0ff0000c0ff0000803fffffffff0000b0400000a8c000000000000000000000c04000009840000000c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000000c1b6142c3e61ab503f00000c41000000bf000004c100000000000080bf000000000000803f00000000000000000000803fffffffff00000c41000004c18464ad3ed525e33e0000c040000000bf000004c100000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000004c18364ad3eea30be3e00000c4100009840000004c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000c41000004c18a5c253ed525633f0000044100009840000004c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000441000004c18d5c253ebfc95f3f00000c41000000bf000038c100000000000080bf000000000000803f00000000000000000000803fffffffff00000c41000038c19a11d93ed525e33e0000c040000000bf000038c100000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000038c19811d93ee930be3e00000c4100009840000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000c41000038c1c3049c3dd625633f0000044100009840000038c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000441000038c1cc049c3dc0c95f3f0000c040000000bf000038c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c040000038c19811d93ee930be3e00000c41000000bf000064c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff00000c41000064c18306fe3ed625e33e00000c41000000bf000038c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff00000c41000038c19a11d93ed525e33e0000c040000000bf000064c100000000ffff7fbf000000000000803f00000000000000000000803fffffffff0000c040000064c18206fe3ee830be3e0000c040000000bf000064c100000000000080bf000000000000803f00000000000000000000803fffffffff0000c040000064c18206fe3ee830be3e00000c4100009840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff00000c41000064c19312833bd625633f0000c04000009840000064c100000000ffff7f3f000000000000803f0000000000000000000080bfffffffff0000c040000064c16f12833b61ab503f0000c04000009840000064c1000000000000803f000000000000803f0000000000000000000080bfffffffff0000c040000064c16f12833b61ab503f00000c41000000bf000090400000803f000000000000000000000000000000000000803f000080bfffffffff00009040000000bf6609003fc012833b00000c41000000bf000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000000bf7907543fc812833b00000c410000003f000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000008407907543f02caf73c00000c410000003f000090400000803f000000000000000000000000000000000000803f000080bfffffffff00009040000008406609003f04caf73c000000c10000003f000000c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004100000840675a283f632d303e000000c1000000bf00009040000080bf00000000000000000000000000000000000080bf000080bfffffffff000090c0000000bf76587c3fa44c153e000000c10000003f00009040000080bf00000000000000000000000000000000000080bf000080bfffffffff000090c00000084078587c3f4d2d303e000000c1000000bf000000c1000080bf00000000000000000000000000000000000080bf000080bfffffffff00000041000000bf6a5a283fb94c153e00000c41000000bf000004c10000803f000000000000000000000000000000000000803f000080bfffffffff000004c1000000bf84b5553fbc12833b00000c410000003f000004c10000803f000000000000000000000000000000000000803f000080bfffffffff000004c10000003f84b5553fe9c9f73c00000c410000003f000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c10000003f7907543f02caf73c000000c10000003f000004c1000080bf000000000000000000000000000000000000803f0000803fffffffff000004c10000003f5dac263f612d303e000000c1000000bf000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c1000000bf6a5a283fb94c153e000000c10000003f000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c10000003f675a283f632d303e000000c1000000bf000004c1000080bf000000000000000000000000000000000000803f0000803fffffffff000004c1000000bf5dac263fb94c153e00000c41000000bf000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000000bf0d8c6b3fa412833b00000c410000003f000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c10000003f0d8c6b3fe9c9f73c000000c10000003f000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c10000003fd4d5103f5c2d303e000000c1000000bf000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c1000000bfd5d5103fb24c153e00000c41000000bf000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c1000000bf82067e3f6f12833b00000c410000003f000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c10000003f82067e3fe3c9f73c000000c10000003f000060c1000080bf000000000000000000000000000000000000803f0000803fffffffff000060c10000003f6a09003f562d303e000000c1000000bf000060c1000080bf000000000000000000000000000000000000803f0000803fffffffff000060c1000000bf6c09003fac4c153e000000c1000000bf0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff00008040000000bf6409003f2032e53e000020c0000000bf0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000000bf4cfe243f2132e53e000020c00000003f0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000008404cfe243f75a2f23e000000c10000003f0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff00008040000008406409003f75a2f23e000040c00000e03f000064c157533fbd447aebbbc6b67fbfdaeb7d3f6ed4f13dbe7641bd000080bfffffffff00000040000008403cfe4e3fd184b13e000000c1000000bf000060c157533fbd447aebbbc6b67fbfdaeb7d3f6ed4f13dbe7641bd000080bfffffffff000080c0000000bf8ea1703fdb47933e000000c10000003f000060c1638b4cbd000000003cae7fbf9710783f9710783eac7346bd000080bfffffffff000080c00000084099a1703f5ab8a03e000020c0000000bf000064c1f6fa39bddb5025bc13b97fbf67bc7f3f0000000062fd39bd000080bfffffffff00000040000000bff4a24b3fd647933e0000c040000000bf0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff0000a0c0000000bfb51b5e3f2132e53e0000c0400000003f0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff0000a0c000000840b51b5e3f76a2f23e00000c41000000bf0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000000bf2996703f2232e53e00000c410000003f0000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000008402996703f76a2f23e0000c8400000e03f000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a04000000840e4d6103fd37eb13e000020c0000000bf000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00000040000000bff4a24b3fd647933e000040c00000e03f000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00000040000008403cfe4e3fd184b13e0000c040000000bf000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a040000000bfa985123f4442933e00000c410000003f000064c10000000000000000000080bfd409793fee2d6dbe00000000000080bfffffffff0000004100000840d30a003fbfb0a03e0000c040000000bf000064c10000000000000000000080bfd409793fee2d6dbe00000000000080bfffffffff0000a040000000bfa985123f4442933e0000c8400000e03f000064c10000000000000000000080bf2ef9643f2ef9e4be00000000000080bfffffffff0000a04000000840e4d6103fd37eb13e00000c41000000bf000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00000041000000bf2b0b003f6340933e00000c4100008040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c100005c407907543f1317fa3d00000c4100008040000090400000803f000000000000000000000000000000000000803f000080bfffffffff0000904000005c406709003f1b17fa3d00000c4100009840000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000098407907543f0934113e00000c4100009840000090400000803f000000000000000000000000000000000000803f000080bfffffffff00009040000098406709003f0d34113e000000c100008040000000c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004100005c40645a283fda1f873e000000c10000804000009040000080bf00000000000000000000000000000000000080bf000080bfffffffff000090c000005c4075587c3fd11f873e000000c100009840000000c1000080bf00000000000000000000000000000000000080bf000080bfffffffff0000004100009840665a283f1934913e000000c10000984000009040000080bf00000000000000000000000000000000000080bf000080bfffffffff000090c00000984077587c3f1034913e00000c4100008040000004c10000803f000000000000000000000000000000000000803f000080bfffffffff000004c10000804084b5553f1e17fa3d00000c4100008040000000c10000803f000000000000000000000000000000000000803f000080bfffffffff000000c1000080407907543f1317fa3d00000c4100009840000004c10000803f000000000000000000000000000000000000803f000080bfffffffff000004c10000984084b5553f0c34113e000000c100008040000004c1000080bf000000000000000000000000000000000000803f0000803fffffffff000004c1000080405aac263fda1f873e000000c100008040000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c100008040645a283fda1f873e000000c100009840000004c1000080bf000000000000000000000000000000000000803f0000803fffffffff000004c10000984059ac263f1934913e000000c100009840000000c1000080bf000000000000000000000000000000000000803f0000803fffffffff000000c100009840665a283f1934913e00000c4100008040000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000080400d8c6b3f2417fa3d00000c4100009840000038c10000803f000000000000000000000000000000000000803f000080bfffffffff000038c1000098400d8c6b3f1034113e000000c100008040000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c100008040d1d5103fd61f873e000000c100009840000038c1000080bf000000000000000000000000000000000000803f0000803fffffffff000038c100009840d0d5103f1534913e00000c4100008040000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c10000804082067e3f2117fa3d00000c4100009840000064c10000803f000000000000000000000000000000000000803f000080bfffffffff000064c10000984082067e3f0e34113e000000c100008040000060c1000080bf000000000000000000000000000000000000803f0000803fffffffff000060c1000080406809003fd21f873e000000c100009840000060c1000080bf000000000000000000000000000000000000803f0000803fffffffff000060c1000098406609003f1234913e000020c0000080400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c000005c404dfe243fcfd5103f000000c1000080400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff0000804000005c406409003fcfd5103f000020c0000098400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c0000098404dfe243fefdf153f000000c1000098400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff00008040000098406409003feedf153f000040c000008040000064c1638b4cbd000000003bae7fbf09b67d3f09b6fd3d08f84abd000080bfffffffff0000004000005c403afe4e3f3ac1cf3e000000c10000003f000060c1638b4cbd000000003bae7fbf09b67d3f09b6fd3d08f84abd000080bfffffffff000080c00000084099a1703f5ab8a03e000000c100008040000060c1628b4cbd000000003bae7fbf3bae7f3f00000000628b4cbd000080bfffffffff000080c000005c4099a1703f4bc1cf3e000040c00000e03f000064c1648b4cbd000000003cae7fbf9710783f9710783ead7346bd000080bfffffffff00000040000008403cfe4e3fd184b13e000020c000009840000064c168cd42bd45de813c98ad7fbfd2b57f3fbb40942eadd342bd000080bfffffffff000000400000984054a24b3fc7d5d93e000000c100008040000060c168cd42bd45de813c98ad7fbfd2b57f3fbb40942eadd342bd000080bfffffffff000080c000005c4099a1703f4bc1cf3e000000c100009840000060c162fd39bd0000000067bc7fbf67bc7f3f0000000063fd39bd000080bfffffffff000080c00000984099a1703fb4d5d93e000040c000008040000064c1666e4cbd9949083dff897fbf3bae7f3f00000000628b4cbd000080bfffffffff0000004000005c403afe4e3f3ac1cf3e0000c040000080400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff0000a0c000005c40b51b5e3fcfd5103f0000c040000098400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff0000a0c000009840b51b5e3feedf153f00000c41000080400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c100005c402996703fcfd5103f00000c41000098400000904000000000000000000000803f000080bf0000000000000000000080bfffffffff000000c1000098402996703feedf153f0000c04000009840000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a040000098400384123f5fd0d93e000040c000008040000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000004000005c403afe4e3f3ac1cf3e000020c000009840000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff000000400000984054a24b3fc7d5d93e0000c84000008040000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000a04000005c402ed6103fd2bbcf3e00000c4100008040000064c10000000000000000ffff7fbf425b783f425b78be00000000000080bfffffffff0000004100005c40ab09003f1ebacf3e0000c8400000e03f000064c10000000000000000ffff7fbf425b783f425b78be00000000000080bfffffffff0000a04000000840e4d6103fd37eb13e00000c410000003f000064c10000000000000000000080bf2ef9643f2ef9e4be00000000000080bfffffffff0000004100000840d30a003fbfb0a03e00000c4100009840000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff00000041000098406609003f73ced93e00000c4100008040000064c10000000000000000000080bf0000803f0000000000000000000080bfffffffff0000004100005c40ab09003f1ebacf3e + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.375, y: 2.125, z: -4.875} + m_Extent: {x: 8.375, y: 2.625, z: 9.375} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: -1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.unity.meta b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.unity.meta new file mode 100644 index 0000000..afc1cae --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 735c40e4d7967d7458e6a4db48651d2a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Demo Lightmap Parameters.giparams b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Demo Lightmap Parameters.giparams new file mode 100644 index 0000000..0d19fc2 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Demo Lightmap Parameters.giparams @@ -0,0 +1,25 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1113 &111300000 +LightmapParameters: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Demo Lightmap Parameters + serializedVersion: 3 + resolution: 2 + clusterResolution: 0.6 + irradianceBudget: 128 + irradianceQuality: 16384 + backFaceTolerance: 0.9 + isTransparent: 0 + modellingTolerance: 0.2 + systemTag: -1 + edgeStitching: 1 + blurRadius: 2 + directLightQuality: 64 + antiAliasingSamples: 8 + bakedLightmapTag: -1 + pushoff: 0.0001 + AOQuality: 256 + AOAntiAliasingSamples: 16 diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Demo Lightmap Parameters.giparams.meta b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Demo Lightmap Parameters.giparams.meta new file mode 100644 index 0000000..d87336e --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Demo Lightmap Parameters.giparams.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c833c6a9a24b72f40ae6e54d900acae3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 111300000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/GI Blocker.mat b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/GI Blocker.mat new file mode 100644 index 0000000..84b6c7b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/GI Blocker.mat @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: GI Blocker + m_Shader: {fileID: 46, 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: + - _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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/GI Blocker.mat.meta b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/GI Blocker.mat.meta new file mode 100644 index 0000000..8381269 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/GI Blocker.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f9a5ce4748e5abd4288cab387226ef27 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Neon Light.mat b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Neon Light.mat new file mode 100644 index 0000000..521d17d --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Neon Light.mat @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Neon Light + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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: 0.9019608, a: 1} + - _EmissionColor: {r: 1, g: 1, b: 0.84705883, a: 1} diff --git a/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Neon Light.mat.meta b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Neon Light.mat.meta new file mode 100644 index 0000000..595b420 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Demo/Prototype Materials Demo/Neon Light.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b234e1586ac9f524f8162eb03da23c35 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials.meta b/Assets/Gridbox Prototype Materials/Materials.meta new file mode 100644 index 0000000..2a378be --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 399cff2d68318a946838ccb784ef4c77 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP.meta new file mode 100644 index 0000000..affde01 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b57a409b80fff1b4bbfdcdafcc3e4e17 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue1.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue1.mat new file mode 100644 index 0000000..db727e5 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue1.mat @@ -0,0 +1,360 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-117528126831297532 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Blue1 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _SampleGI: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &198753021317713938 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue1.mat.meta new file mode 100644 index 0000000..c259911 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0faf08228432a664cb2d46f4d1eee2b0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue2.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue2.mat new file mode 100644 index 0000000..64ddfdb --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue2.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3316996563839529924 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Blue2 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &401755358572647137 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue2.mat.meta new file mode 100644 index 0000000..7d34d32 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e070baac7ac0c374ba010641b095c1b4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue3.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue3.mat new file mode 100644 index 0000000..c68be1f --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue3.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Blue3 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &405463733965869680 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &4270820687507988644 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue3.mat.meta new file mode 100644 index 0000000..8396f3d --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Blue3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c90bcdf992e150d41b0ee0f7aabccad6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Brown.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Brown.mat new file mode 100644 index 0000000..20f26a1 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Brown.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6184066117688322300 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Brown + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6508449904305221272 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Brown.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Brown.mat.meta new file mode 100644 index 0000000..73b0bdf --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Brown.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb9ba0197f6873943824ae7aade506c9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Cyan.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Cyan.mat new file mode 100644 index 0000000..70b41e0 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Cyan.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1463151046976849855 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Cyan + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &818829162936331706 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Cyan.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Cyan.mat.meta new file mode 100644 index 0000000..ad202a8 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Cyan.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 853d20181ae88ba47b1084b10a15569b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green1.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green1.mat new file mode 100644 index 0000000..02c7fed --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green1.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9140936037109052349 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green1 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &2802043139912665072 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green1.mat.meta new file mode 100644 index 0000000..bdfef61 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f29b9efacb0fa1b45a6ebd5778585717 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green2.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green2.mat new file mode 100644 index 0000000..695eb08 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green2.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green2 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green2.mat.meta new file mode 100644 index 0000000..9960671 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35e2a03bbcc6739409a02bb46883d128 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green3.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green3.mat new file mode 100644 index 0000000..68f714e --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green3.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green3 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 988b6610bda0aca4286aff060b8d16b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 988b6610bda0aca4286aff060b8d16b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green3.mat.meta new file mode 100644 index 0000000..37455f6 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Green3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8474bf551220f0e4993899dfdc95aed3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey1.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey1.mat new file mode 100644 index 0000000..32959ee --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey1.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Grey1 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &1794977809289348456 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &2849752495664318720 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey1.mat.meta new file mode 100644 index 0000000..419436e --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64859cf955a5fb047880af754183e463 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey2.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey2.mat new file mode 100644 index 0000000..7a8cb44 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey2.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4334575420740837081 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey2 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &3566525884816360484 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey2.mat.meta new file mode 100644 index 0000000..23aaac3 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 572218b186e96c648853f56156b07925 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey3.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey3.mat new file mode 100644 index 0000000..10c532c --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey3.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1619262301482539146 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey3 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6093370758918295864 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey3.mat.meta new file mode 100644 index 0000000..7f651fb --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a66e312fee7fb6e469dec2f4daba4dcd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey4.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey4.mat new file mode 100644 index 0000000..0a57087 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey4.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6960053972577698673 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey4 + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6326139262992099504 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey4.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey4.mat.meta new file mode 100644 index 0000000..dbf9296 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Grey4.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd022c63e7c1c7f4e98c0083ed2bcf70 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Magenta.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Magenta.mat new file mode 100644 index 0000000..6482d83 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Magenta.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Magenta + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 81c078e07a3828a42885510e3d5369a9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 81c078e07a3828a42885510e3d5369a9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &405463733965869680 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &4270820687507988644 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Magenta.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Magenta.mat.meta new file mode 100644 index 0000000..9553580 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Magenta.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f8daeaadc7b77c42b2004245caa7f63 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Olive.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Olive.mat new file mode 100644 index 0000000..7596085 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Olive.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Olive + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 9895b9b639c999f488492b5182e2242c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9895b9b639c999f488492b5182e2242c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Olive.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Olive.mat.meta new file mode 100644 index 0000000..c63439e --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Olive.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3b40d06620734d4fa8f4423d0f09692 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Orange.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Orange.mat new file mode 100644 index 0000000..20a6532 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Orange.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7043737816000637832 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &-5993627902651352250 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Orange + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Orange.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Orange.mat.meta new file mode 100644 index 0000000..331e768 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Orange.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e6b6a154cd59634b8e06a92e338ba2c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Pink.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Pink.mat new file mode 100644 index 0000000..4223d26 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Pink.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7887750440273316491 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-6650882337939974940 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Pink + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 054e32e11095e1d4896131bb4eed8cc1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 054e32e11095e1d4896131bb4eed8cc1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Pink.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Pink.mat.meta new file mode 100644 index 0000000..2024c57 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Pink.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9cbe122d0bf53f14ba269e044bc3f03b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Purple.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Purple.mat new file mode 100644 index 0000000..45aeb40 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Purple.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6631285973008607186 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-3574224795644339735 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Purple + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Purple.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Purple.mat.meta new file mode 100644 index 0000000..93e7b4f --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Purple.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08ad40672f8bdd84c8231727ae06ba48 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Red.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Red.mat new file mode 100644 index 0000000..45d1e8d --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Red.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Red + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &4785242104535983485 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &7282580934660746523 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Red.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Red.mat.meta new file mode 100644 index 0000000..dca36aa --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Red.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c61a55dba6ed64c4f8e865f32677062f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_White.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_White.mat new file mode 100644 index 0000000..37e4890 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_White.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1827427509989235299 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_White + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &8042599487693452414 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_White.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_White.mat.meta new file mode 100644 index 0000000..6ed7bf0 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_White.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f904fac889ccd8d42b60ac1c11dc5f91 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Yellow.mat b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Yellow.mat new file mode 100644 index 0000000..6a8ae0b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Yellow.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7887750440273316491 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-6650882337939974940 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Yellow + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Yellow.mat.meta b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Yellow.mat.meta new file mode 100644 index 0000000..0a1f0d6 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/HDRP/Prototype_512x512_Yellow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd66d467961812f4383351e477499b93 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard.meta b/Assets/Gridbox Prototype Materials/Materials/Standard.meta new file mode 100644 index 0000000..cb9537e --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5b101da68e9261049841c73c48f7a8d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue1.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue1.mat new file mode 100644 index 0000000..afa7a8a --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue1.mat @@ -0,0 +1,360 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-117528126831297532 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Blue1 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _SampleGI: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &198753021317713938 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue1.mat.meta new file mode 100644 index 0000000..32e8fee --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 663834164c6a04740aaa1b778249ce7e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue2.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue2.mat new file mode 100644 index 0000000..c48e985 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue2.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3316996563839529924 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Blue2 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &401755358572647137 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue2.mat.meta new file mode 100644 index 0000000..0b9d33b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e148de6cdf2d164aa3e3f90ce8c852c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue3.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue3.mat new file mode 100644 index 0000000..d45fcbe --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue3.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Blue3 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &405463733965869680 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &4270820687507988644 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue3.mat.meta new file mode 100644 index 0000000..cc98c8b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Blue3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0b4de3bd6e976e4f8b3adc6e72377ed +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Brown.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Brown.mat new file mode 100644 index 0000000..eeab9df --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Brown.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6184066117688322300 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Brown + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6508449904305221272 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Brown.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Brown.mat.meta new file mode 100644 index 0000000..bc5fbe0 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Brown.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a54b7ad866d3a9b47bbf3b53baa0acc4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Cyan.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Cyan.mat new file mode 100644 index 0000000..ce865d5 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Cyan.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1463151046976849855 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Cyan + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &818829162936331706 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Cyan.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Cyan.mat.meta new file mode 100644 index 0000000..2b92874 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Cyan.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cba66c276aed0874091de1c33eb3950d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green1.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green1.mat new file mode 100644 index 0000000..17f05f9 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green1.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9140936037109052349 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green1 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &2802043139912665072 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green1.mat.meta new file mode 100644 index 0000000..9584564 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 79f64ed6f5d6d374d91c3a0af4070258 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green2.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green2.mat new file mode 100644 index 0000000..2ded3e7 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green2.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green2 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green2.mat.meta new file mode 100644 index 0000000..4a32b07 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbe80190c9adea34c8c8845ca4a17934 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green3.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green3.mat new file mode 100644 index 0000000..66dc195 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green3.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green3 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 988b6610bda0aca4286aff060b8d16b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 988b6610bda0aca4286aff060b8d16b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green3.mat.meta new file mode 100644 index 0000000..b0ca302 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Green3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6298605825d7154f8923c76872aa46e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey1.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey1.mat new file mode 100644 index 0000000..54de235 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey1.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Grey1 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &1794977809289348456 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &2849752495664318720 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey1.mat.meta new file mode 100644 index 0000000..8a1eaf4 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c181c23a6120fbe4aadd5bb53a58dd78 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey2.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey2.mat new file mode 100644 index 0000000..627867f --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey2.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4334575420740837081 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey2 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &3566525884816360484 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey2.mat.meta new file mode 100644 index 0000000..906a6b3 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07dc66ae04b7f6a43b9674bf0fefb33a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey3.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey3.mat new file mode 100644 index 0000000..1c6f395 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey3.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1619262301482539146 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey3 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6093370758918295864 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey3.mat.meta new file mode 100644 index 0000000..c4919ac --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17c44fb3e5be9644586a0728a5f5a386 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey4.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey4.mat new file mode 100644 index 0000000..4dcb0fd --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey4.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6960053972577698673 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey4 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6326139262992099504 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey4.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey4.mat.meta new file mode 100644 index 0000000..0a3ed5c --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Grey4.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d530ffe6c4968843806085897955b9d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Magenta.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Magenta.mat new file mode 100644 index 0000000..5743c0a --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Magenta.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Magenta + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 81c078e07a3828a42885510e3d5369a9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 81c078e07a3828a42885510e3d5369a9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &405463733965869680 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &4270820687507988644 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Magenta.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Magenta.mat.meta new file mode 100644 index 0000000..0696edc --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Magenta.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b905f60df09c8245b6e0d5af2e04c7f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Olive.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Olive.mat new file mode 100644 index 0000000..fb0dbe1 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Olive.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Olive + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 9895b9b639c999f488492b5182e2242c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9895b9b639c999f488492b5182e2242c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Olive.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Olive.mat.meta new file mode 100644 index 0000000..6683c2b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Olive.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f794c8451763f354c84ed1f9b0ea15a5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Orange.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Orange.mat new file mode 100644 index 0000000..24422d7 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Orange.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7043737816000637832 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &-5993627902651352250 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Orange + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Orange.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Orange.mat.meta new file mode 100644 index 0000000..7fbccd8 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Orange.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 652107f36a28e44479c0b827dee5852a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Pink.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Pink.mat new file mode 100644 index 0000000..2f6e6ed --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Pink.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7887750440273316491 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-6650882337939974940 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Pink + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 054e32e11095e1d4896131bb4eed8cc1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 054e32e11095e1d4896131bb4eed8cc1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Pink.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Pink.mat.meta new file mode 100644 index 0000000..c3401d8 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Pink.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4944e2c33c99f9f46a4796e2e746213e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Purple.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Purple.mat new file mode 100644 index 0000000..38cd76e --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Purple.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6631285973008607186 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-3574224795644339735 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Purple + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Purple.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Purple.mat.meta new file mode 100644 index 0000000..bcf85ea --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Purple.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 36bce9ab6cae8ce43962938466458044 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Red.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Red.mat new file mode 100644 index 0000000..6bb47fe --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Red.mat @@ -0,0 +1,357 @@ +%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: Prototype_512x512_Red + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &4785242104535983485 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &7282580934660746523 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Red.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Red.mat.meta new file mode 100644 index 0000000..2fd3943 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Red.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a26de236ce89e94b963be8fa2b7ade6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_White.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_White.mat new file mode 100644 index 0000000..03c8042 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_White.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1827427509989235299 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_White + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &8042599487693452414 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_White.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_White.mat.meta new file mode 100644 index 0000000..4af3fca --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_White.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aeee7071bea0a4c478b4fea5933c5f79 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Yellow.mat b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Yellow.mat new file mode 100644 index 0000000..ecb7ca1 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Yellow.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7887750440273316491 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-6650882337939974940 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Yellow + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Yellow.mat.meta b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Yellow.mat.meta new file mode 100644 index 0000000..76c9f9b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/Standard/Prototype_512x512_Yellow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c852af001dae0064e9acaa832f1dadb7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP.meta b/Assets/Gridbox Prototype Materials/Materials/URP.meta new file mode 100644 index 0000000..4520d4d --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b91c06905b658c2469418c86f7fbe9f3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue1.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue1.mat new file mode 100644 index 0000000..6995021 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue1.mat @@ -0,0 +1,363 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-117528126831297532 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Blue1 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _SampleGI: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &198753021317713938 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue1.mat.meta new file mode 100644 index 0000000..9a889ae --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f29e3c1c576f6641b9e474f6b194480 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue2.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue2.mat new file mode 100644 index 0000000..20cfd84 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue2.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3316996563839529924 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Blue2 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &401755358572647137 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue2.mat.meta new file mode 100644 index 0000000..96573f0 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e18ded4b611aa8f4a9f0f261d2f29537 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue3.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue3.mat new file mode 100644 index 0000000..08a9af9 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue3.mat @@ -0,0 +1,362 @@ +%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: Prototype_512x512_Blue3 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &405463733965869680 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &4270820687507988644 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue3.mat.meta new file mode 100644 index 0000000..4b2a467 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Blue3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f5ffb23c71776424f8f776c97d3fd190 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Brown.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Brown.mat new file mode 100644 index 0000000..4b3e596 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Brown.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6184066117688322300 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Brown + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6508449904305221272 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Brown.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Brown.mat.meta new file mode 100644 index 0000000..0bc4fc9 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Brown.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f74a13152dad544abedc7538eb3182c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Cyan.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Cyan.mat new file mode 100644 index 0000000..1411529 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Cyan.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1463151046976849855 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Cyan + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 6c35396cb8128474a8a73c6b19f2fe1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &818829162936331706 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Cyan.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Cyan.mat.meta new file mode 100644 index 0000000..a079251 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Cyan.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d9914e92c1db3f4caed885c92e0b7e9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green1.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green1.mat new file mode 100644 index 0000000..0ac141f --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green1.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9140936037109052349 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green1 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 4967dfcee94bddd4ba1430cb6fa1f304, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &2802043139912665072 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green1.mat.meta new file mode 100644 index 0000000..736f465 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74117f645ca87544896e430b75e9a316 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green2.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green2.mat new file mode 100644 index 0000000..13e2a4f --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green2.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green2 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green2.mat.meta new file mode 100644 index 0000000..45ba94b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b38742730e330c488cc8d7964788813 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green3.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green3.mat new file mode 100644 index 0000000..ab72049 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green3.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Green3 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 988b6610bda0aca4286aff060b8d16b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green3.mat.meta new file mode 100644 index 0000000..f4a6b9b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Green3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bce32739db90b6843ac7f0179bcaa6b7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey1.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey1.mat new file mode 100644 index 0000000..caa0106 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey1.mat @@ -0,0 +1,362 @@ +%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: Prototype_512x512_Grey1 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &1794977809289348456 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &2849752495664318720 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey1.mat.meta new file mode 100644 index 0000000..85e9df5 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfc08c90188302847afb04f628582097 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey2.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey2.mat new file mode 100644 index 0000000..77423f2 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey2.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4334575420740837081 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey2 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 37920ac3813690349a856bbe19a86e2b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &3566525884816360484 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey2.mat.meta new file mode 100644 index 0000000..f6b71bb --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9fe0a856a63e8634ebc7077bc570ea68 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey3.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey3.mat new file mode 100644 index 0000000..be1e7a1 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey3.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1619262301482539146 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey3 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6093370758918295864 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey3.mat.meta new file mode 100644 index 0000000..df7dbab --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 981abf7a53e6a964fba6bc48555ec31a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey4.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey4.mat new file mode 100644 index 0000000..dcbdead --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey4.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6960053972577698673 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Grey4 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ed0c2c8a99e92e14ba740ac8aa428288, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6326139262992099504 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey4.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey4.mat.meta new file mode 100644 index 0000000..5bc7e73 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Grey4.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4084a843b9ef6af45a63b7163f9fbefb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Magenta.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Magenta.mat new file mode 100644 index 0000000..e5b4922 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Magenta.mat @@ -0,0 +1,362 @@ +%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: Prototype_512x512_Magenta + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 81c078e07a3828a42885510e3d5369a9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 81c078e07a3828a42885510e3d5369a9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &405463733965869680 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &4270820687507988644 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Magenta.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Magenta.mat.meta new file mode 100644 index 0000000..cf831f1 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Magenta.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9618c6b42230db7408b3b734da21470a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Olive.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Olive.mat new file mode 100644 index 0000000..7b0978f --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Olive.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4979246967307641232 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Olive + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 9895b9b639c999f488492b5182e2242c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 382df89af99b9f2459dd19206e68a63d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6078984416387280717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Olive.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Olive.mat.meta new file mode 100644 index 0000000..0e361ec --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Olive.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8521b32b7fcd7ae41acc48012ada9ec0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Orange.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Orange.mat new file mode 100644 index 0000000..e139893 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Orange.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7043737816000637832 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &-5993627902651352250 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Orange + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: fe3e0a556829be24bb87c912d79e872d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Orange.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Orange.mat.meta new file mode 100644 index 0000000..e08c9ec --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Orange.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1a5903867c8f0a4a8a94c3fe36dad11 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Pink.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Pink.mat new file mode 100644 index 0000000..d0aadd2 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Pink.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7887750440273316491 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-6650882337939974940 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Pink + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 054e32e11095e1d4896131bb4eed8cc1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Pink.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Pink.mat.meta new file mode 100644 index 0000000..9b7faa8 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Pink.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e88a93148f69984e968ecc92408960f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Purple.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Purple.mat new file mode 100644 index 0000000..ee521a0 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Purple.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6631285973008607186 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-3574224795644339735 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Purple + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: aa0c741df9dd8634c8d84fd9ba2b0e3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Purple.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Purple.mat.meta new file mode 100644 index 0000000..ef3475a --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Purple.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68d9464d0cd4fbf48a81abf378167c7f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Red.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Red.mat new file mode 100644 index 0000000..712a58f --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Red.mat @@ -0,0 +1,362 @@ +%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: Prototype_512x512_Red + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 3d6064e2e1cd7214e9f67f3a68f494fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &4785242104535983485 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!114 &7282580934660746523 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Red.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Red.mat.meta new file mode 100644 index 0000000..c56743b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Red.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4b62a69d54e80347bd546999c6d4b9e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_White.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_White.mat new file mode 100644 index 0000000..46c6965 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_White.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1827427509989235299 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_White + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &8042599487693452414 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_White.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_White.mat.meta new file mode 100644 index 0000000..077c87d --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_White.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2ab8149ec4775284bada96c1b85b4a09 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Yellow.mat b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Yellow.mat new file mode 100644 index 0000000..dbba38c --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Yellow.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7887750440273316491 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!114 &-6650882337939974940 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 11 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prototype_512x512_Yellow + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: _NORMALMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - DistortionVectors + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + 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} + - _DetailMap: + 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} + - _DistortionVectorMap: + 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} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + 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} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 44ae09ed76086b14e82d37feb30c7650, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _CoatMask: 0 + - _Cull: 2 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoMapScale: 1 + - _DetailAlbedoScale: 1 + - _DetailNormalMapScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 1 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 1 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 1 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 1 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 0 + - _MetallicRemapMin: 0 + - _Mode: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OcclusionStrength: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _RayTracing: 0 + - _ReceiveShadows: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _SSRefractionProjectionModel: 0 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SmoothnessSource: 1 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularHighlights: 0 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _Surface: 0 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UVSec: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _WorkflowMode: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestModeDistortion: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 0} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Yellow.mat.meta b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Yellow.mat.meta new file mode 100644 index 0000000..7aae997 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/URP/Prototype_512x512_Yellow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d76d5dba59c8a824a8170635648a356c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue1.mat b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue1.mat new file mode 100644 index 0000000..0986ac1 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue1.mat @@ -0,0 +1,78 @@ +%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: prototype_512x512_blue1 + m_Shader: {fileID: 46, 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: + - _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: 2, y: 2} + 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: 20, y: 20} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 44cced520ecfd9f4292979a4fe8268c4, type: 3} + m_Scale: {x: 20, y: 20} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue1.mat.meta new file mode 100644 index 0000000..b226641 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 671d6cf81dceb1d48891b9bd1c6b4493 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue2.mat b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue2.mat new file mode 100644 index 0000000..0f17d9a --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue2.mat @@ -0,0 +1,78 @@ +%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: prototype_512x512_blue2 + m_Shader: {fileID: 46, 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: + - _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: 2800000, guid: 17198718c5735204999fb13dc36e290f, type: 3} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue2.mat.meta b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue2.mat.meta new file mode 100644 index 0000000..945e6dc --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a13cd74488ee2a47a08cfbaacf1a148 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue3.mat b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue3.mat new file mode 100644 index 0000000..a099423 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue3.mat @@ -0,0 +1,78 @@ +%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: prototype_512x512_blue3 + m_Shader: {fileID: 46, 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: + - _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: 100, y: 100} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: b6fc60785b6a795478135ce6f7712c5a, type: 3} + m_Scale: {x: 100, y: 100} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue3.mat.meta b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue3.mat.meta new file mode 100644 index 0000000..007dbfa --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_blue3.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 252e5cac7f0c5a440b896aff10da8c72 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_brown.mat b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_brown.mat new file mode 100644 index 0000000..a6ce6d2 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_brown.mat @@ -0,0 +1,78 @@ +%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: prototype_512x512_brown + m_Shader: {fileID: 46, 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: + - _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: 2800000, guid: 3c227d230cca14c42822692b6aff3459, type: 3} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_brown.mat.meta b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_brown.mat.meta new file mode 100644 index 0000000..a451085 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_brown.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3928c4c05b9a70849a7be5a0278b3e3d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_grey1.mat b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_grey1.mat new file mode 100644 index 0000000..bf758d9 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_grey1.mat @@ -0,0 +1,78 @@ +%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: prototype_512x512_grey1 + m_Shader: {fileID: 46, 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: + - _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: 2800000, guid: dd29f35641da38647a1eeb1028211f1a, type: 3} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_grey1.mat.meta b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_grey1.mat.meta new file mode 100644 index 0000000..8492ac8 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_grey1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e099c83203c6cab48b66c23156c42ce8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_white.mat b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_white.mat new file mode 100644 index 0000000..9d5bf18 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_white.mat @@ -0,0 +1,78 @@ +%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: prototype_512x512_white + m_Shader: {fileID: 46, 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: + - _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: 2800000, guid: 9397418d1d7b12543bf27fb61b93bbea, type: 3} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_white.mat.meta b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_white.mat.meta new file mode 100644 index 0000000..d92bc4b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_white.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e7fec641232aada4b9419c7ece6a7203 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_yellow.mat b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_yellow.mat new file mode 100644 index 0000000..0e5ca40 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_yellow.mat @@ -0,0 +1,78 @@ +%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: prototype_512x512_yellow + m_Shader: {fileID: 46, 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: + - _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: 2800000, guid: ee12d2bc9f5c8554d97d5beb9dc4b275, type: 3} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_yellow.mat.meta b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_yellow.mat.meta new file mode 100644 index 0000000..af45c60 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Materials/prototype_512x512_yellow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 000bfee73cbc81f49a85a2df2c5b87b2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Template.meta b/Assets/Gridbox Prototype Materials/Template.meta new file mode 100644 index 0000000..0f5bdf2 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Template.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ecfd7a8edc56334292dfde855949879 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Template/Materials.meta b/Assets/Gridbox Prototype Materials/Template/Materials.meta new file mode 100644 index 0000000..42cd16a --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Template/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53ecf4cd5104bd748bf488666324086e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Template/Materials/prototype_texture_512x512.mat b/Assets/Gridbox Prototype Materials/Template/Materials/prototype_texture_512x512.mat new file mode 100644 index 0000000..e30ac2a --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Template/Materials/prototype_texture_512x512.mat @@ -0,0 +1,78 @@ +%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: prototype_texture_512x512 + m_Shader: {fileID: 46, 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: + - _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: 2800000, guid: 3fe239e19d10e284cb9bb5a748ecb82e, type: 3} + 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: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 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} + m_BuildTextureStacks: [] diff --git a/Assets/Gridbox Prototype Materials/Template/Materials/prototype_texture_512x512.mat.meta b/Assets/Gridbox Prototype Materials/Template/Materials/prototype_texture_512x512.mat.meta new file mode 100644 index 0000000..12d50fd --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Template/Materials/prototype_texture_512x512.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a2247e479959834f852a96e453d7b5d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd b/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd new file mode 100644 index 0000000..6da2dba Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd differ diff --git a/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd.meta b/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd.meta new file mode 100644 index 0000000..1eb1c70 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 3fe239e19d10e284cb9bb5a748ecb82e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures.meta b/Assets/Gridbox Prototype Materials/Textures.meta new file mode 100644 index 0000000..c097dae --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c40ab282904050149a8f559c4a28bc5d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue1.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue1.png new file mode 100644 index 0000000..e93e044 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue1.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue1.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue1.png.meta new file mode 100644 index 0000000..6dab901 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue1.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 44cced520ecfd9f4292979a4fe8268c4 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png new file mode 100644 index 0000000..398c702 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png.meta new file mode 100644 index 0000000..ce57958 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 17198718c5735204999fb13dc36e290f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue3.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue3.png new file mode 100644 index 0000000..8a10ef1 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue3.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue3.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue3.png.meta new file mode 100644 index 0000000..84fd1e6 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue3.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: b6fc60785b6a795478135ce6f7712c5a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_brown.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_brown.png new file mode 100644 index 0000000..faa1582 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_brown.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_brown.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_brown.png.meta new file mode 100644 index 0000000..0bdf3bb --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_brown.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 3c227d230cca14c42822692b6aff3459 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_cyan.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_cyan.png new file mode 100644 index 0000000..f46f202 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_cyan.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_cyan.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_cyan.png.meta new file mode 100644 index 0000000..80105a0 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_cyan.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 6c35396cb8128474a8a73c6b19f2fe1f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green1.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green1.png new file mode 100644 index 0000000..f83f216 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green1.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green1.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green1.png.meta new file mode 100644 index 0000000..66ba3d1 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green1.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 4967dfcee94bddd4ba1430cb6fa1f304 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green2.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green2.png new file mode 100644 index 0000000..ec4f1fe Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green2.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green2.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green2.png.meta new file mode 100644 index 0000000..40e59e2 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green2.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 382df89af99b9f2459dd19206e68a63d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green3.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green3.png new file mode 100644 index 0000000..39534b6 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green3.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green3.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green3.png.meta new file mode 100644 index 0000000..db1c775 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_green3.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 988b6610bda0aca4286aff060b8d16b8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey1.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey1.png new file mode 100644 index 0000000..dd06d3c Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey1.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey1.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey1.png.meta new file mode 100644 index 0000000..01b0edb --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey1.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: dd29f35641da38647a1eeb1028211f1a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey2.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey2.png new file mode 100644 index 0000000..c9e380a Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey2.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey2.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey2.png.meta new file mode 100644 index 0000000..e6f6fb3 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey2.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 37920ac3813690349a856bbe19a86e2b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey3.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey3.png new file mode 100644 index 0000000..cceee74 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey3.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey3.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey3.png.meta new file mode 100644 index 0000000..bb98254 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey3.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: d9c0dd5cdac07b145be73329e489869a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey4.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey4.png new file mode 100644 index 0000000..61a15ae Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey4.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey4.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey4.png.meta new file mode 100644 index 0000000..b1cdc89 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_grey4.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: ed0c2c8a99e92e14ba740ac8aa428288 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_magenta.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_magenta.png new file mode 100644 index 0000000..65ab1ce Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_magenta.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_magenta.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_magenta.png.meta new file mode 100644 index 0000000..fd7dc54 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_magenta.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 81c078e07a3828a42885510e3d5369a9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_normal.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_normal.png new file mode 100644 index 0000000..4558d70 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_normal.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_normal.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_normal.png.meta new file mode 100644 index 0000000..6f6dc18 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_normal.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 44ae09ed76086b14e82d37feb30c7650 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_olive.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_olive.png new file mode 100644 index 0000000..bdf476c Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_olive.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_olive.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_olive.png.meta new file mode 100644 index 0000000..8c5cce9 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_olive.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 9895b9b639c999f488492b5182e2242c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_orange.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_orange.png new file mode 100644 index 0000000..6ae0986 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_orange.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_orange.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_orange.png.meta new file mode 100644 index 0000000..0c27abe --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_orange.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: fe3e0a556829be24bb87c912d79e872d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_pink.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_pink.png new file mode 100644 index 0000000..8733887 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_pink.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_pink.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_pink.png.meta new file mode 100644 index 0000000..1fc254e --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_pink.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 054e32e11095e1d4896131bb4eed8cc1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_purple.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_purple.png new file mode 100644 index 0000000..13b7182 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_purple.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_purple.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_purple.png.meta new file mode 100644 index 0000000..4439840 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_purple.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: aa0c741df9dd8634c8d84fd9ba2b0e3d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_red.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_red.png new file mode 100644 index 0000000..9e4a710 Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_red.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_red.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_red.png.meta new file mode 100644 index 0000000..018df6b --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_red.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 3d6064e2e1cd7214e9f67f3a68f494fb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_white.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_white.png new file mode 100644 index 0000000..2c3ad6b Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_white.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_white.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_white.png.meta new file mode 100644 index 0000000..19bc1ee --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_white.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 9397418d1d7b12543bf27fb61b93bbea +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_yellow.png b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_yellow.png new file mode 100644 index 0000000..c52d70b Binary files /dev/null and b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_yellow.png differ diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_yellow.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_yellow.png.meta new file mode 100644 index 0000000..62b9e01 --- /dev/null +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_yellow.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: ee12d2bc9f5c8554d97d5beb9dc4b275 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + 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: 512 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Img.meta b/Assets/Img.meta new file mode 100644 index 0000000..02e5de6 --- /dev/null +++ b/Assets/Img.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d08d6949cb2f544194063092153ceb0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Img/Crosshair.meta b/Assets/Img/Crosshair.meta new file mode 100644 index 0000000..3b74256 --- /dev/null +++ b/Assets/Img/Crosshair.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51113d736c01d294a9369ba3fdf72322 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Img/Crosshair/Crosshair-Point-Red.png b/Assets/Img/Crosshair/Crosshair-Point-Red.png new file mode 100644 index 0000000..4a77e5c Binary files /dev/null and b/Assets/Img/Crosshair/Crosshair-Point-Red.png differ diff --git a/Assets/Img/Crosshair/Crosshair-Point-Red.png.meta b/Assets/Img/Crosshair/Crosshair-Point-Red.png.meta new file mode 100644 index 0000000..807ec1d --- /dev/null +++ b/Assets/Img/Crosshair/Crosshair-Point-Red.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 50a3ac7eee070fd44ab2021a86a5284c +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 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Img/Crosshair/Crosshair-Point.png b/Assets/Img/Crosshair/Crosshair-Point.png new file mode 100644 index 0000000..99cbcfb Binary files /dev/null and b/Assets/Img/Crosshair/Crosshair-Point.png differ diff --git a/Assets/Img/Crosshair/Crosshair-Point.png.meta b/Assets/Img/Crosshair/Crosshair-Point.png.meta new file mode 100644 index 0000000..3fa805e --- /dev/null +++ b/Assets/Img/Crosshair/Crosshair-Point.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 65609a1664b485c45b3faabd44c5d5d0 +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 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Img/Green.png b/Assets/Img/Green.png new file mode 100644 index 0000000..ce2fe4b Binary files /dev/null and b/Assets/Img/Green.png differ diff --git a/Assets/Img/Green.png.meta b/Assets/Img/Green.png.meta new file mode 100644 index 0000000..3483ee4 --- /dev/null +++ b/Assets/Img/Green.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 6e45334af48d8be41bc466a250835d44 +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 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents.meta b/Assets/ML-Agents.meta new file mode 100644 index 0000000..c8af772 --- /dev/null +++ b/Assets/ML-Agents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f14312a979b4b44aab8e97b3a5bc764 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers.meta b/Assets/ML-Agents/Timers.meta new file mode 100644 index 0000000..e30c0b5 --- /dev/null +++ b/Assets/ML-Agents/Timers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9be91195140bdcf469b1fc064c131f3c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/InGame_timers.json b/Assets/ML-Agents/Timers/InGame_timers.json new file mode 100644 index 0000000..211d9d7 --- /dev/null +++ b/Assets/ML-Agents/Timers/InGame_timers.json @@ -0,0 +1 @@ +{"count":1,"self":8.29834,"total":8.3840507,"children":{"InitializeActuators":{"count":2,"self":0.0015002,"total":0.0015002,"children":null},"InitializeSensors":{"count":2,"self":0.0020851999999999997,"total":0.0020851999999999997,"children":null},"AgentSendState":{"count":177,"self":0.0020038,"total":0.0305444,"children":{"CollectObservations":{"count":177,"self":0.027041899999999997,"total":0.027041899999999997,"children":null},"WriteActionMask":{"count":176,"self":0,"total":0,"children":null},"RequestDecision":{"count":176,"self":0.0014987,"total":0.0014987,"children":null}}},"DecideAction":{"count":176,"self":0.0015013,"total":0.0015013,"children":null},"AgentAct":{"count":176,"self":0.049079,"total":0.049079,"children":null}},"gauges":{},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1666723865","unity_version":"2020.3.19f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2020.3.19f1\\Editor\\Unity.exe -createproject C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-ParallelEnv -cloneFromTemplate C:\\Program Files\\Unity\\Hub\\Editor\\2020.3.19f1\\Editor\\Data\\Resources\\PackageManager\\ProjectTemplates\\com.unity.template.3d-5.0.4.tgz -cloudOrganization -cloudEnvironment production -useHub -hubIPC -hubSessionId 208a5b10-5492-11ed-86d0-77f1dee37fca -accessToken jWLleZEe05t6Ag-hm9NYl5I5jN05osnA3bzkODLG62400ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"InGame","end_time_seconds":"1666723873"}} \ No newline at end of file diff --git a/Assets/ML-Agents/Timers/InGame_timers.json.meta b/Assets/ML-Agents/Timers/InGame_timers.json.meta new file mode 100644 index 0000000..d39769f --- /dev/null +++ b/Assets/ML-Agents/Timers/InGame_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4f7b611877dd89845bf9e100b3887d5e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/SampleScene_timers.json b/Assets/ML-Agents/Timers/SampleScene_timers.json new file mode 100644 index 0000000..934d1f0 --- /dev/null +++ b/Assets/ML-Agents/Timers/SampleScene_timers.json @@ -0,0 +1 @@ +{"count":1,"self":43.4436928,"total":43.9858769,"children":{"InitializeActuators":{"count":2,"self":0.0010007,"total":0.0010007,"children":null},"InitializeSensors":{"count":2,"self":0.0010000999999999999,"total":0.0010000999999999999,"children":null},"AgentSendState":{"count":1889,"self":0.0119998,"total":0.031002699999999998,"children":{"CollectObservations":{"count":1889,"self":0.012502599999999999,"total":0.012502599999999999,"children":null},"WriteActionMask":{"count":1889,"self":0.0019998999999999998,"total":0.0019998999999999998,"children":null},"RequestDecision":{"count":1889,"self":0.0045004,"total":0.0045004,"children":null}}},"DecideAction":{"count":1889,"self":0.0190076,"total":0.0190076,"children":null},"AgentAct":{"count":1889,"self":0.4891732,"total":0.4891732,"children":null}},"gauges":{"AKMAgent.CumulativeReward":{"count":1,"max":-159.249954,"min":-159.249954,"runningAverage":-159.249954,"value":-159.249954,"weightedAverage":-159.249954}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1660760208","unity_version":"2020.3.19f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2020.3.19f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-PPO -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-UCUNI -hubSessionId e97ad0c0-1d76-11ed-b68e-ebc2b2606ff2 -accessToken i02n0ke2UCGKb4ss5eujidIcv-fUtkTiH1IeTAQyLHI00ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.0","scene_name":"SampleScene","end_time_seconds":"1660760252"}} \ No newline at end of file diff --git a/Assets/ML-Agents/Timers/SampleScene_timers.json.meta b/Assets/ML-Agents/Timers/SampleScene_timers.json.meta new file mode 100644 index 0000000..4278225 --- /dev/null +++ b/Assets/ML-Agents/Timers/SampleScene_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ac0487b6335b47340be576d32cc5e5e6 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/Start_timers.json b/Assets/ML-Agents/Timers/Start_timers.json new file mode 100644 index 0000000..4a5ebfc --- /dev/null +++ b/Assets/ML-Agents/Timers/Start_timers.json @@ -0,0 +1 @@ +{"count":1,"self":100.7007424,"total":102.0526476,"children":{"InitializeActuators":{"count":2,"self":0.0015004999999999999,"total":0.0015004999999999999,"children":null},"InitializeSensors":{"count":2,"self":0.0010015,"total":0.0010015,"children":null},"AgentSendState":{"count":2851,"self":0.0227973,"total":0.3594312,"children":{"CollectObservations":{"count":2851,"self":0.3230326,"total":0.3230326,"children":null},"WriteActionMask":{"count":2850,"self":0.0040877,"total":0.0040877,"children":null},"RequestDecision":{"count":2850,"self":0.0095135999999999988,"total":0.0095135999999999988,"children":null}}},"DecideAction":{"count":2850,"self":0.0184923,"total":0.0184923,"children":null},"AgentAct":{"count":2850,"self":0.971482,"total":0.971482,"children":null}},"gauges":{"AKMAgent.CumulativeReward":{"count":1,"max":0,"min":0,"runningAverage":0,"value":0,"weightedAverage":0}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1665340408","unity_version":"2020.3.19f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2020.3.19f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-PPO\\Aimbot-PPO-MultiScene -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-8AgJBC01I23iOtjIDvezn -hubSessionId a2bff0f0-47ee-11ed-98ba-e72fca9de6f1 -accessToken VHkJOvWIH11sBEzC18rl6YA9y6y2sRMQj2zrOyZdNeE00ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.0","scene_name":"Start","end_time_seconds":"1665340510"}} \ No newline at end of file diff --git a/Assets/ML-Agents/Timers/Start_timers.json.meta b/Assets/ML-Agents/Timers/Start_timers.json.meta new file mode 100644 index 0000000..af6698a --- /dev/null +++ b/Assets/ML-Agents/Timers/Start_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0210dc189297f1245809f9ffb20d730f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefeb.meta b/Assets/Prefeb.meta new file mode 100644 index 0000000..0b3d368 --- /dev/null +++ b/Assets/Prefeb.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e78e6ce4e2f8cc499c1f94a280dca5d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefeb/Enemy-Simple.prefab b/Assets/Prefeb/Enemy-Simple.prefab new file mode 100644 index 0000000..d685e29 --- /dev/null +++ b/Assets/Prefeb/Enemy-Simple.prefab @@ -0,0 +1,377 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &389133021 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 389133022} + - component: {fileID: 389133026} + - component: {fileID: 389133025} + - component: {fileID: 389133024} + - component: {fileID: 389133023} + m_Layer: 5 + m_Name: EnemyHPBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &389133022 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 389133021} + 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: + - {fileID: 1209469037} + m_Father: {fileID: 8240453774489061358} + 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: 1.3} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &389133026 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 389133021} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &389133025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 389133021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &389133024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 389133021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &389133023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 389133021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b293d3b541b20b7448f3ca4d09a9c38c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &535890556 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 535890557} + - component: {fileID: 535890559} + - component: {fileID: 535890558} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &535890557 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 535890556} + 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: 1209469037} + 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: 1, y: 0.22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &535890559 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 535890556} + m_CullTransparentMesh: 1 +--- !u!114 &535890558 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 535890556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 6e45334af48d8be41bc466a250835d44, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1209469036 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1209469037} + - component: {fileID: 1209469039} + - component: {fileID: 1209469038} + m_Layer: 5 + m_Name: BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1209469037 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1209469036} + 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: + - {fileID: 535890557} + m_Father: {fileID: 389133022} + 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: 1, y: 0.22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1209469039 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1209469036} + m_CullTransparentMesh: 1 +--- !u!114 &1209469038 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1209469036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8240453774489061354 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8240453774489061358} + - component: {fileID: 8240453774489061359} + - component: {fileID: 8240453774489061356} + - component: {fileID: 8240453774489061357} + - component: {fileID: 8240453774489061329} + m_Layer: 0 + m_Name: Enemy-Simple + m_TagString: Enemy + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8240453774489061358 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8240453774489061354} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: 1.044, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 389133022} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8240453774489061359 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8240453774489061354} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8240453774489061356 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8240453774489061354} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3928c4c05b9a70849a7be5a0278b3e3d, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &8240453774489061357 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8240453774489061354} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &8240453774489061329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8240453774489061354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8cded1019e262a04e8d9ccb536d1ff20, type: 3} + m_Name: + m_EditorClassIdentifier: + EnemyHP: 100 diff --git a/Assets/Prefeb/Enemy-Simple.prefab.meta b/Assets/Prefeb/Enemy-Simple.prefab.meta new file mode 100644 index 0000000..121f154 --- /dev/null +++ b/Assets/Prefeb/Enemy-Simple.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c044b8f18a5ed2f4eaabb8d40095018f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefeb/MessageContents.prefab b/Assets/Prefeb/MessageContents.prefab new file mode 100644 index 0000000..ef3f788 --- /dev/null +++ b/Assets/Prefeb/MessageContents.prefab @@ -0,0 +1,81 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6669642163532043162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 581278746850413839} + - component: {fileID: 7135961816703934414} + - component: {fileID: 6853888537037025558} + m_Layer: 5 + m_Name: MessageContents + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &581278746850413839 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6669642163532043162} + 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, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 993, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7135961816703934414 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6669642163532043162} + m_CullTransparentMesh: 1 +--- !u!114 &6853888537037025558 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6669642163532043162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: MessageContents diff --git a/Assets/Prefeb/MessageContents.prefab.meta b/Assets/Prefeb/MessageContents.prefab.meta new file mode 100644 index 0000000..7f0d2ce --- /dev/null +++ b/Assets/Prefeb/MessageContents.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b8fb23282ce09a84c8d0907986c5189e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefeb/infoImageBG.prefab b/Assets/Prefeb/infoImageBG.prefab new file mode 100644 index 0000000..80c2adf --- /dev/null +++ b/Assets/Prefeb/infoImageBG.prefab @@ -0,0 +1,229 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2963094767320567766 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2963094767320567753} + - component: {fileID: 2963094767320567755} + - component: {fileID: 2963094767320567752} + m_Layer: 0 + m_Name: infoText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2963094767320567753 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2963094767320567766} + 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: 2963094767576631242} + 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: 3, y: 2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2963094767320567755 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2963094767320567766} + m_CullTransparentMesh: 1 +--- !u!114 &2963094767320567752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2963094767320567766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Enemy + + 123123 + + 123123' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: f653ac5b85a721e4c9383008e6a565a7, type: 2} + m_sharedMaterial: {fileID: -4662725986004701985, guid: f653ac5b85a721e4c9383008e6a565a7, 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_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 0.5 + m_fontSizeBase: 0.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + 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_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2963094767576631243 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2963094767576631242} + - component: {fileID: 2963094767576631244} + - component: {fileID: 2963094767576631245} + - component: {fileID: 5699170692795172790} + m_Layer: 0 + m_Name: infoImageBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2963094767576631242 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2963094767576631243} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 4.28} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2963094767320567753} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 295} + m_SizeDelta: {x: 3, y: 2} + m_Pivot: {x: 0.5, y: -1} +--- !u!222 &2963094767576631244 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2963094767576631243} + m_CullTransparentMesh: 1 +--- !u!114 &2963094767576631245 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2963094767576631243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.6603774, g: 0.6572624, b: 0.6572624, a: 0.53333336} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5699170692795172790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2963094767576631243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 812dfed7ee1d09c4fa7c3ed8372f54ae, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefeb/infoImageBG.prefab.meta b/Assets/Prefeb/infoImageBG.prefab.meta new file mode 100644 index 0000000..c1fc17d --- /dev/null +++ b/Assets/Prefeb/infoImageBG.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e13f99706bb4ffe459a06857048ece22 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ProBuilder Data.meta b/Assets/ProBuilder Data.meta new file mode 100644 index 0000000..4962618 --- /dev/null +++ b/Assets/ProBuilder Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 882a91327a512154090540672f87b00c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ProBuilder Data/Default Material Palette.asset b/Assets/ProBuilder Data/Default Material Palette.asset new file mode 100644 index 0000000..d38ee08 --- /dev/null +++ b/Assets/ProBuilder Data/Default Material Palette.asset @@ -0,0 +1,25 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3f1ca63a91b17724bbd99c8fa67e0180, type: 3} + m_Name: Default Material Palette + m_EditorClassIdentifier: + array: + - {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} diff --git a/Assets/ProBuilder Data/Default Material Palette.asset.meta b/Assets/ProBuilder Data/Default Material Palette.asset.meta new file mode 100644 index 0000000..a44db73 --- /dev/null +++ b/Assets/ProBuilder Data/Default Material Palette.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06afaa7effec9c44e9a225d85ab23718 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta new file mode 100644 index 0000000..f046a5d --- /dev/null +++ b/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d04b1c2cf8c254c4f97e65dfebc54bc6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/InGame.unity b/Assets/Scenes/InGame.unity new file mode 100644 index 0000000..b97eb3c --- /dev/null +++ b/Assets/Scenes/InGame.unity @@ -0,0 +1,37348 @@ +%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: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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: 705507994} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + 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: 1 + 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_LightingSettings: {fileID: 0} +--- !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 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &2141715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2141716} + - component: {fileID: 2141718} + - component: {fileID: 2141717} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2141716 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141715} + 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: 756103204} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2141717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: nonR +--- !u!222 &2141718 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141715} + m_CullTransparentMesh: 1 +--- !u!1 &15538178 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 15538179} + - component: {fileID: 15538181} + - component: {fileID: 15538180} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &15538179 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 15538178} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2088978190} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &15538180 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 15538178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &15538181 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 15538178} + m_CullTransparentMesh: 1 +--- !u!1 &15909073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 15909074} + - component: {fileID: 15909076} + - component: {fileID: 15909075} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &15909074 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 15909073} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1399926665} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &15909075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 15909073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &15909076 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 15909073} + m_CullTransparentMesh: 1 +--- !u!1 &16217188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 16217189} + - component: {fileID: 16217191} + - component: {fileID: 16217190} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &16217189 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 16217188} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 894156494} + m_RootOrder: 1 + 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: -15.333334, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &16217190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 16217188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &16217191 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 16217188} + m_CullTransparentMesh: 1 +--- !u!1 &17027926 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 17027927} + m_Layer: 0 + m_Name: serie_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &17027927 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 17027926} + 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: + - {fileID: 1807687761} + - {fileID: 559163972} + m_Father: {fileID: 201489786} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &23283622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 23283623} + - component: {fileID: 23283625} + - component: {fileID: 23283624} + m_Layer: 0 + m_Name: column0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &23283623 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 23283622} + 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: + - {fileID: 237682636} + - {fileID: 446284310} + m_Father: {fileID: 1175413812} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &23283624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 23283622} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &23283625 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 23283622} + m_CullTransparentMesh: 1 +--- !u!1 &25666659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 25666660} + - component: {fileID: 25666662} + - component: {fileID: 25666661} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &25666660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25666659} + 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: 1414640702} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &25666661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25666659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 70 +--- !u!222 &25666662 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25666659} + m_CullTransparentMesh: 1 +--- !u!1 &25903617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 25903618} + - component: {fileID: 25903620} + - component: {fileID: 25903619} + m_Layer: 0 + m_Name: axis_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &25903618 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25903617} + 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: + - {fileID: 878929884} + - {fileID: 517135391} + m_Father: {fileID: 188889958} + 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: -201.26, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &25903619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25903617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &25903620 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25903617} + m_CullTransparentMesh: 1 +--- !u!1 &30003215 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 30003216} + - component: {fileID: 30003218} + - component: {fileID: 30003217} + m_Layer: 0 + m_Name: painter_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &30003216 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30003215} + 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: 201489786} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &30003217 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30003215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &30003218 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30003215} + m_CullTransparentMesh: 1 +--- !u!1 &30407328 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 30407329} + m_Layer: 0 + m_Name: label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &30407329 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30407328} + 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: 380015112} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &39280861 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 39280862} + - component: {fileID: 39280864} + - component: {fileID: 39280863} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &39280862 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39280861} + 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: 1506720544} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &39280863 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39280861} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &39280864 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39280861} + m_CullTransparentMesh: 1 +--- !u!1 &42608551 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 42608552} + - component: {fileID: 42608554} + - component: {fileID: 42608553} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &42608552 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42608551} + 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: 1163442369} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &42608553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42608551} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 40 +--- !u!222 &42608554 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42608551} + m_CullTransparentMesh: 1 +--- !u!1 &47646444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 47646445} + - component: {fileID: 47646447} + - component: {fileID: 47646446} + m_Layer: 0 + m_Name: Cylinder.002_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &47646445 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 47646444} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &47646446 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 47646444} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &47646447 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 47646444} + m_Mesh: {fileID: 8684665421547244038, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &48524276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 48524277} + - component: {fileID: 48524279} + - component: {fileID: 48524278} + m_Layer: 0 + m_Name: axis_8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &48524277 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48524276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1753569902} + - {fileID: 1494239043} + m_Father: {fileID: 1519188529} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 117} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &48524278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48524276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &48524279 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48524276} + m_CullTransparentMesh: 1 +--- !u!1 &52116501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 52116502} + - component: {fileID: 52116504} + - component: {fileID: 52116503} + m_Layer: 5 + m_Name: right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &52116502 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52116501} + 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: 215367152} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -705, y: -427.6} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &52116503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52116501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + m_FontSize: 25 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u2192" +--- !u!222 &52116504 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52116501} + m_CullTransparentMesh: 1 +--- !u!1 &52138316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 52138317} + - component: {fileID: 52138319} + - component: {fileID: 52138318} + m_Layer: 5 + m_Name: MouseVisualizationMeter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &52138317 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52138316} + 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: 460761058} + m_RootOrder: 1 + 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: -1.5} + m_SizeDelta: {x: 100, y: 7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &52138318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52138316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &52138319 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52138316} + m_CullTransparentMesh: 1 +--- !u!1 &52282411 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 52282412} + - component: {fileID: 52282414} + - component: {fileID: 52282413} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &52282412 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52282411} + 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: 102944256} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &52282413 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52282411} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 20 +--- !u!222 &52282414 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52282411} + m_CullTransparentMesh: 1 +--- !u!1 &56789638 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 56789639} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &56789639 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56789638} + 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: 380015112} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &69535874 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 69535875} + - component: {fileID: 69535877} + - component: {fileID: 69535876} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &69535875 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69535874} + 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: 691081143} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &69535876 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69535874} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 50 +--- !u!222 &69535877 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69535874} + m_CullTransparentMesh: 1 +--- !u!1 &72077393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 72077394} + - component: {fileID: 72077396} + - component: {fileID: 72077395} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &72077394 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72077393} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 928900839} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &72077395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72077393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &72077396 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72077393} + m_CullTransparentMesh: 1 +--- !u!1 &95675457 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 95675458} + - component: {fileID: 95675460} + - component: {fileID: 95675459} + m_Layer: 0 + m_Name: Cube.004_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &95675458 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 95675457} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &95675459 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 95675457} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &95675460 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 95675457} + m_Mesh: {fileID: -6813842297940566337, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &99436128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 99436129} + - component: {fileID: 99436131} + - component: {fileID: 99436130} + m_Layer: 0 + m_Name: Cube.013_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &99436129 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99436128} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &99436130 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99436128} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &99436131 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99436128} + m_Mesh: {fileID: -3139941974747981782, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &101801538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 101801539} + m_Layer: 0 + m_Name: item0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &101801539 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101801538} + 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: + - {fileID: 140747536} + - {fileID: 2009713366} + - {fileID: 973809284} + m_Father: {fileID: 162376322} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 25} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &102944255 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 102944256} + - component: {fileID: 102944258} + - component: {fileID: 102944257} + m_Layer: 0 + m_Name: axis_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &102944256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102944255} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 52282412} + - {fileID: 796009156} + m_Father: {fileID: 1372129984} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -63} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &102944257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102944255} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &102944258 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102944255} + m_CullTransparentMesh: 1 +--- !u!1 &111303085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 111303086} + - component: {fileID: 111303088} + - component: {fileID: 111303087} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &111303086 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111303085} + 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: 1721895620} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &111303087 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111303085} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 20 +--- !u!222 &111303088 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111303085} + m_CullTransparentMesh: 1 +--- !u!1 &119127065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 119127066} + - component: {fileID: 119127068} + - component: {fileID: 119127067} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &119127066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119127065} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 966834423} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &119127067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119127065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &119127068 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119127065} + m_CullTransparentMesh: 1 +--- !u!1 &129304604 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 129304605} + - component: {fileID: 129304608} + - component: {fileID: 129304607} + - component: {fileID: 129304606} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &129304605 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129304604} + 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: + - {fileID: 200344308} + m_Father: {fileID: 189965854} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &129304606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129304604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!114 &129304607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129304604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &129304608 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129304604} + m_CullTransparentMesh: 1 +--- !u!1 &133317625 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 133317626} + - component: {fileID: 133317628} + - component: {fileID: 133317627} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &133317626 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133317625} + 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: 1234953724} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &133317627 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133317625} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &133317628 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133317625} + m_CullTransparentMesh: 1 +--- !u!1 &135550328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135550329} + - component: {fileID: 135550331} + - component: {fileID: 135550330} + m_Layer: 0 + m_Name: info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &135550329 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135550328} + 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: + - {fileID: 443256482} + - {fileID: 967778547} + m_Father: {fileID: 855143409} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &135550330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135550328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1254902, g: 0.1254902, b: 0.1254902, a: 0.6666667} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &135550331 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135550328} + m_CullTransparentMesh: 1 +--- !u!1 &136678428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 136678429} + - component: {fileID: 136678431} + - component: {fileID: 136678430} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &136678429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 136678428} + 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: 1931933153} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &136678430 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 136678428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: shootR +--- !u!222 &136678431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 136678428} + m_CullTransparentMesh: 1 +--- !u!1 &140747535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 140747536} + - component: {fileID: 140747538} + - component: {fileID: 140747537} + m_Layer: 0 + m_Name: column0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &140747536 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140747535} + 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: + - {fileID: 241336535} + - {fileID: 1953553497} + m_Father: {fileID: 101801539} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &140747537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140747535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &140747538 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140747535} + m_CullTransparentMesh: 1 +--- !u!1 &141368730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141368731} + m_Layer: 0 + m_Name: label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141368731 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141368730} + 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: + - {fileID: 1822552283} + - {fileID: 858525493} + m_Father: {fileID: 2037666613} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &143757499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 143757500} + - component: {fileID: 143757502} + - component: {fileID: 143757501} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &143757500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143757499} + 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: 2009713366} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &143757501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143757499} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &143757502 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143757499} + m_CullTransparentMesh: 1 +--- !u!1 &143942508 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 143942509} + - component: {fileID: 143942511} + - component: {fileID: 143942510} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &143942509 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143942508} + 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: 841599020} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &143942510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143942508} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &143942511 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143942508} + m_CullTransparentMesh: 1 +--- !u!1 &146100691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 146100692} + - component: {fileID: 146100694} + - component: {fileID: 146100693} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &146100692 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146100691} + 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: 813204784} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &146100693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146100691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: EnemyNum +--- !u!222 &146100694 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146100691} + m_CullTransparentMesh: 1 +--- !u!1 &147875581 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 147875582} + - component: {fileID: 147875584} + - component: {fileID: 147875583} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &147875582 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147875581} + 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: 1747636731} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &147875583 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147875581} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'SaveWeightsNow + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: f653ac5b85a721e4c9383008e6a565a7, type: 2} + m_sharedMaterial: {fileID: -4662725986004701985, guid: f653ac5b85a721e4c9383008e6a565a7, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 15 + m_fontSizeBase: 15 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &147875584 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147875581} + m_CullTransparentMesh: 1 +--- !u!1 &149710880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 149710881} + - component: {fileID: 149710883} + - component: {fileID: 149710882} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &149710881 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 149710880} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2085253772} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &149710882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 149710880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &149710883 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 149710880} + m_CullTransparentMesh: 1 +--- !u!1 &162289218 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 162289219} + - component: {fileID: 162289221} + - component: {fileID: 162289220} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &162289219 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162289218} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 928900839} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &162289220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162289218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 75 +--- !u!222 &162289221 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162289218} + m_CullTransparentMesh: 1 +--- !u!1 &162376321 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 162376322} + - component: {fileID: 162376326} + - component: {fileID: 162376325} + - component: {fileID: 162376324} + - component: {fileID: 162376323} + m_Layer: 0 + m_Name: view + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &162376322 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162376321} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2026877416} + - {fileID: 101801539} + m_Father: {fileID: 2037666613} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0, y: 1} +--- !u!114 &162376323 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162376321} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &162376324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162376321} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_EffectDistance: {x: 2, y: -2} + m_UseGraphicAlpha: 0 +--- !u!114 &162376325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162376321} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &162376326 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162376321} + m_CullTransparentMesh: 1 +--- !u!1 &163181242 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 163181243} + - component: {fileID: 163181245} + - component: {fileID: 163181244} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &163181243 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163181242} + 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: 1477455556} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &163181244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163181242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &163181245 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163181242} + m_CullTransparentMesh: 1 +--- !u!1 &188789333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 188789334} + - component: {fileID: 188789336} + - component: {fileID: 188789335} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &188789334 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188789333} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 907816953} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &188789335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188789333} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &188789336 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188789333} + m_CullTransparentMesh: 1 +--- !u!1 &188889957 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 188889958} + m_Layer: 0 + m_Name: XAxis0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &188889958 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188889957} + 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: + - {fileID: 25903618} + - {fileID: 808684899} + - {fileID: 1186343261} + - {fileID: 1282464052} + - {fileID: 1926093282} + m_Father: {fileID: 201489786} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &188953744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 188953745} + - component: {fileID: 188953747} + - component: {fileID: 188953746} + m_Layer: 0 + m_Name: axis_6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &188953745 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188953744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 496880997} + - {fileID: 1769014919} + m_Father: {fileID: 1519188529} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 57} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &188953746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188953744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &188953747 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188953744} + m_CullTransparentMesh: 1 +--- !u!1 &189965853 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 189965854} + - component: {fileID: 189965857} + - component: {fileID: 189965856} + - component: {fileID: 189965855} + m_Layer: 5 + m_Name: MessageBoxScroll + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &189965854 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189965853} + 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: + - {fileID: 129304605} + - {fileID: 382283862} + - {fileID: 1188398130} + m_Father: {fileID: 511399609} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -505, y: 186.51} + m_SizeDelta: {x: 1010, y: 373.02} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &189965855 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189965853} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 200344308} + m_Horizontal: 1 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 129304605} + m_HorizontalScrollbar: {fileID: 382283863} + m_VerticalScrollbar: {fileID: 1188398131} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &189965856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189965853} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &189965857 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189965853} + m_CullTransparentMesh: 1 +--- !u!1 &191139042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 191139043} + - component: {fileID: 191139045} + - component: {fileID: 191139044} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &191139043 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191139042} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1241541574} + m_RootOrder: 1 + 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: -15.333334, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &191139044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191139042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &191139045 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191139042} + m_CullTransparentMesh: 1 +--- !u!1 &194652654 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 194652655} + m_Layer: 5 + m_Name: RewardChanger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &194652655 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 194652654} + 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: + - {fileID: 1946802030} + - {fileID: 1506720544} + - {fileID: 800325714} + - {fileID: 1958294038} + - {fileID: 2076769193} + - {fileID: 317682828} + - {fileID: 841599020} + - {fileID: 756103204} + - {fileID: 1931933153} + - {fileID: 1832129955} + - {fileID: 785752919} + - {fileID: 429369155} + - {fileID: 1148611240} + - {fileID: 1483392555} + m_Father: {fileID: 1619861058} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -172, y: -118} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &195883127 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 195883128} + - component: {fileID: 195883131} + - component: {fileID: 195883130} + - component: {fileID: 195883129} + m_Layer: 5 + m_Name: CameraChangeButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &195883128 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 195883127} + 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: + - {fileID: 338423604} + m_Father: {fileID: 511399609} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -80, y: -220.00003} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &195883129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 195883127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 195883130} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317534022} + m_TargetAssemblyTypeName: CameraChange, Assembly-CSharp + m_MethodName: switchCamera + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &195883130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 195883127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &195883131 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 195883127} + m_CullTransparentMesh: 1 +--- !u!1 &200344307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 200344308} + - component: {fileID: 200344310} + - component: {fileID: 200344309} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &200344308 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200344307} + 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: 129304605} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0.00048828125} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &200344309 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200344307} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 6 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &200344310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200344307} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &200583462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 200583463} + - component: {fileID: 200583465} + - component: {fileID: 200583464} + m_Layer: 0 + m_Name: axis_8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &200583463 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200583462} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1392249417} + - {fileID: 1235656834} + m_Father: {fileID: 1372129984} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 117} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &200583464 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200583462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &200583465 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200583462} + m_CullTransparentMesh: 1 +--- !u!1 &201489783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 201489786} + - component: {fileID: 201489785} + - component: {fileID: 201489784} + m_Layer: 0 + m_Name: EPTotalRewardChart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &201489784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 201489783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4f38bd00b4648c448cabfc167538f7c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_EnableTextMeshPro: 0 + m_DebugInfo: + m_Show: 1 + m_ShowDebugInfo: 0 + m_ShowAllChartObject: 0 + m_FoldSeries: 0 + m_LabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0.1254902, g: 0.1254902, b: 0.1254902, a: 0.6666667} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontSize: 18 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_ChartName: + m_Theme: + m_Show: 1 + m_SharedTheme: {fileID: 11400000, guid: e1dc23a10de1e4c5dbfbaf74c4dfd218, type: 2} + m_TransparentBackground: 1 + m_EnableCustomTheme: 0 + m_CustomFont: {fileID: 0} + m_CustomBackgroundColor: + serializedVersion: 2 + rgba: 3487029 + m_CustomColorPalette: [] + m_Settings: + m_Show: 1 + m_MaxPainter: 10 + m_ReversePainter: 0 + m_BasePainterMaterial: {fileID: 0} + m_SeriePainterMaterial: {fileID: 0} + m_TopPainterMaterial: {fileID: 0} + m_LineSmoothStyle: 3 + m_LineSmoothness: 2 + m_LineSegmentDistance: 3 + m_CicleSmoothness: 2 + m_LegendIconLineWidth: 2 + m_LegendIconCornerRadius: + - 0 + - 0.25 + - 0.25 + - 0.25 + m_AngleAxes: [] + m_Backgrounds: [] + m_DataZooms: [] + m_Grids: + - m_Show: 1 + m_Left: 0.06 + m_Right: 0.01 + m_Top: 0.11 + m_Bottom: 0.09 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_ShowBorder: 1 + m_BorderWidth: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 0 + m_Legends: [] + m_MarkLines: [] + m_MarkAreas: [] + m_Polars: [] + m_Radars: [] + m_RadiusAxes: [] + m_Titles: + - m_Show: 1 + m_Text: EPTotalRewardChart + m_SubText: + m_LabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_SubLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_ItemGap: 0 + m_Location: + m_Align: 2 + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Tooltips: + - m_Show: 1 + m_Type: 0 + m_Trigger: 1 + m_ItemFormatter: + m_TitleFormatter: + m_Marker: "\u25CF" + m_FixedWidth: 0 + m_FixedHeight: 0 + m_MinWidth: 0 + m_MinHeight: 0 + m_NumericFormatter: + m_PaddingLeftRight: 10 + m_PaddingTopBottom: 10 + m_IgnoreDataShow: 0 + m_IgnoreDataDefaultContent: '-' + m_ShowContent: 1 + m_AlwayShowContent: 0 + m_Offset: {x: 18, y: -25} + m_BackgroundImage: {fileID: 0} + m_BackgroundType: 0 + m_BackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_BorderWidth: 2 + m_FixedXEnable: 0 + m_FixedX: 0 + m_FixedYEnable: 0 + m_FixedY: 0 + m_TitleHeight: 25 + m_ItemHeight: 25 + m_BorderColor: + serializedVersion: 2 + rgba: 4293322470 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_IndicatorLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_TitleLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + m_ContentLabelStyles: + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 5 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 20 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 0 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 5 + m_VisualMaps: [] + m_XAxes: + - m_Show: 1 + m_Type: 1 + m_MinMaxType: 0 + m_GridIndex: 0 + m_PolarIndex: 0 + m_ParallelIndex: 0 + m_Position: 2 + m_Offset: 0 + m_Min: 0 + m_Max: 0 + m_SplitNumber: 0 + m_Interval: 0 + m_BoundaryGap: 1 + m_MaxCache: 0 + m_LogBase: 10 + m_LogBaseE: 0 + m_CeilRate: 0 + m_Inverse: 0 + m_Clockwise: 1 + m_InsertDataToHead: 0 + m_Icons: [] + m_Data: + - x1 + - x2 + - x3 + - x4 + - x5 + m_AxisLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_OnZero: 1 + m_ShowArrow: 0 + m_Arrow: + m_Width: 10 + m_Height: 15 + m_Offset: 0 + m_Dent: 3 + m_Color: + serializedVersion: 2 + rgba: 0 + m_AxisName: + m_Show: 0 + m_Name: axisName + m_LabelStyle: + m_Show: 1 + m_Position: 10 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_AxisTick: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_AlignWithLabel: 0 + m_Inside: 0 + m_ShowStartTick: 1 + m_ShowEndTick: 1 + m_Distance: 0 + m_SplitNumber: 0 + m_AutoColor: 0 + m_AxisLabel: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 8 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_Interval: 0 + m_Inside: 0 + m_ShowAsPositiveNumber: 0 + m_OnZero: 0 + m_ShowStartLabel: 1 + m_ShowEndLabel: 1 + m_TextLimit: + m_Enable: 1 + m_MaxWidth: 0 + m_Gap: 1 + m_Suffix: ... + m_SplitLine: + m_Show: 0 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Interval: 0 + m_Distance: 0 + m_AutoColor: 0 + m_SplitArea: + m_Show: 0 + m_Color: [] + m_YAxes: + - m_Show: 1 + m_Type: 0 + m_MinMaxType: 0 + m_GridIndex: 0 + m_PolarIndex: 0 + m_ParallelIndex: 0 + m_Position: 0 + m_Offset: 0 + m_Min: 0 + m_Max: 0 + m_SplitNumber: 0 + m_Interval: 0 + m_BoundaryGap: 0 + m_MaxCache: 0 + m_LogBase: 10 + m_LogBaseE: 0 + m_CeilRate: 0 + m_Inverse: 0 + m_Clockwise: 1 + m_InsertDataToHead: 0 + m_Icons: [] + m_Data: [] + m_AxisLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_OnZero: 1 + m_ShowArrow: 0 + m_Arrow: + m_Width: 10 + m_Height: 15 + m_Offset: 0 + m_Dent: 3 + m_Color: + serializedVersion: 2 + rgba: 0 + m_AxisName: + m_Show: 0 + m_Name: axisName + m_LabelStyle: + m_Show: 1 + m_Position: 10 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_AxisTick: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_AlignWithLabel: 0 + m_Inside: 0 + m_ShowStartTick: 1 + m_ShowEndTick: 1 + m_Distance: 0 + m_SplitNumber: 0 + m_AutoColor: 0 + m_AxisLabel: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 8 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_Interval: 0 + m_Inside: 0 + m_ShowAsPositiveNumber: 0 + m_OnZero: 0 + m_ShowStartLabel: 1 + m_ShowEndLabel: 1 + m_TextLimit: + m_Enable: 0 + m_MaxWidth: 0 + m_Gap: 1 + m_Suffix: ... + m_SplitLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Interval: 0 + m_Distance: 0 + m_AutoColor: 0 + m_SplitArea: + m_Show: 0 + m_Color: [] + m_SingleAxes: [] + m_Parallels: [] + m_ParallelAxes: [] + m_Comments: [] + m_SerieBars: [] + m_SerieCandlesticks: [] + m_SerieEffectScatters: [] + m_SerieHeatmaps: [] + m_SerieLines: + - m_Labels: [] + m_LabelLines: [] + m_EndLabels: [] + m_LineArrows: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Index: 0 + m_Show: 1 + m_CoordSystem: GridCoord + m_SerieType: Line + m_SerieName: serie0 + m_Stack: + m_XAxisIndex: 0 + m_YAxisIndex: 0 + m_RadarIndex: 0 + m_VesselIndex: 0 + m_PolarIndex: 0 + m_SingleAxisIndex: 0 + m_ParallelIndex: 0 + m_MinShow: 0 + m_MaxShow: 0 + m_MaxCache: 0 + m_SampleDist: 0 + m_SampleType: 1 + m_SampleAverage: 0 + m_LineType: 0 + m_BarType: 0 + m_BarPercentStack: 0 + m_BarWidth: 0 + m_BarGap: 0.1 + m_BarZebraWidth: 4 + m_BarZebraGap: 2 + m_Min: 0 + m_Max: 0 + m_MinSize: 0 + m_MaxSize: 1 + m_StartAngle: 0 + m_EndAngle: 0 + m_MinAngle: 0 + m_Clockwise: 1 + m_RoundCap: 0 + m_SplitNumber: 0 + m_ClickOffset: 1 + m_RoseType: 0 + m_Gap: 0 + m_Center: + - 0.5 + - 0.48 + m_Radius: + - 0 + - 0.28 + m_ShowDataDimension: 1 + m_ShowDataName: 0 + m_Clip: 0 + m_Ignore: 0 + m_IgnoreValue: 0 + m_IgnoreLineBreak: 0 + m_ShowAsPositiveNumber: 0 + m_Large: 1 + m_LargeThreshold: 200 + m_AvoidLabelOverlap: 0 + m_RadarType: 0 + m_PlaceHolder: 0 + m_DataSortType: 2 + m_Orient: 1 + m_Align: 0 + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_InsertDataToHead: 0 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Symbol: + m_Show: 1 + m_Type: 3 + m_Size: 0 + m_Gap: 0 + m_Width: 0 + m_Height: 0 + m_Offset: {x: 0, y: 0} + m_Image: {fileID: 0} + m_ImageType: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_SizeType: 0 + m_SelectedSize: 0 + m_DataIndex: 1 + m_DataScale: 1 + m_SelectedDataScale: 1.5 + m_StartIndex: 0 + m_Interval: 0 + m_ForceShowLast: 0 + m_Repeat: 0 + m_Animation: + m_Enable: 0 + m_Type: 0 + m_Easting: 0 + m_Threshold: 2000 + m_FadeInDuration: 1000 + m_FadeInDelay: 0 + m_FadeOutDuration: 1000 + m_FadeOutDelay: 0 + m_DataChangeEnable: 1 + m_DataChangeDuration: 500 + m_ActualDuration: 0 + m_ItemStyle: + m_Show: 1 + m_Color: + serializedVersion: 2 + rgba: 0 + m_Color0: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_BackgroundWidth: 0 + m_CenterColor: + serializedVersion: 2 + rgba: 0 + m_CenterGap: 0 + m_BorderWidth: 0 + m_BorderGap: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 0 + m_BorderColor0: + serializedVersion: 2 + rgba: 0 + m_BorderToColor: + serializedVersion: 2 + rgba: 0 + m_Opacity: 1 + m_ItemMarker: + m_ItemFormatter: + m_NumericFormatter: + m_CornerRadius: + - 0 + - 0 + - 0 + - 0 + m_Data: + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 0 + - 52 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 1 + - 76 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 2 + - 12 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 3 + - 23 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 4 + - 15 + m_SeriePies: [] + m_SerieRadars: [] + m_SerieRings: [] + m_SerieScatters: [] + m_SerieParallels: [] + m_SerieSimplifiedLines: [] + m_SerieSimplifiedBars: [] + m_SerieSimplifiedCandlesticks: [] +--- !u!222 &201489785 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 201489783} + m_CullTransparentMesh: 1 +--- !u!224 &201489786 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 201489783} + 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: + - {fileID: 1397091675} + - {fileID: 1433177290} + - {fileID: 758017859} + - {fileID: 2114851408} + - {fileID: 1829544112} + - {fileID: 30003216} + - {fileID: 1107178053} + - {fileID: 1804136062} + - {fileID: 1380521381} + - {fileID: 997104155} + - {fileID: 795430071} + - {fileID: 1810548990} + - {fileID: 1406810794} + - {fileID: 188889958} + - {fileID: 1519188529} + - {fileID: 17027927} + - {fileID: 1069784063} + - {fileID: 890609531} + m_Father: {fileID: 268923344} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 670.7, y: -50} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &208643480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 208643481} + - component: {fileID: 208643483} + - component: {fileID: 208643482} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &208643481 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208643480} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1884023750} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &208643482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208643480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &208643483 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208643480} + m_CullTransparentMesh: 1 +--- !u!1 &210575778 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 210575779} + - component: {fileID: 210575781} + - component: {fileID: 210575780} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &210575779 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210575778} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1770477494} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &210575780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210575778} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &210575781 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210575778} + m_CullTransparentMesh: 1 +--- !u!1 &214633554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 214633555} + - component: {fileID: 214633557} + - component: {fileID: 214633556} + m_Layer: 5 + m_Name: killReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &214633555 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214633554} + 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: 509053162} + m_RootOrder: 4 + 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: -80} + m_SizeDelta: {x: 316.0601, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &214633556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214633554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'killReward: ' +--- !u!222 &214633557 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214633554} + m_CullTransparentMesh: 1 +--- !u!1 &215367151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 215367152} + m_Layer: 5 + m_Name: KeyViewer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &215367152 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 215367151} + 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: + - {fileID: 2047194226} + - {fileID: 228560050} + - {fileID: 406639879} + - {fileID: 52116502} + - {fileID: 854133116} + - {fileID: 438520161} + m_Father: {fileID: 511399609} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 941, y: 550} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &216871882 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 216871883} + - component: {fileID: 216871885} + - component: {fileID: 216871884} + m_Layer: 0 + m_Name: painter_9 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &216871883 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 216871882} + 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: 1213129649} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &216871884 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 216871882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &216871885 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 216871882} + m_CullTransparentMesh: 1 +--- !u!1 &221517428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 221517429} + - component: {fileID: 221517431} + - component: {fileID: 221517430} + m_Layer: 0 + m_Name: axis_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &221517429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 221517428} + 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: + - {fileID: 328064205} + - {fileID: 1311450673} + m_Father: {fileID: 800843590} + 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: 122.380005, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &221517430 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 221517428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &221517431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 221517428} + m_CullTransparentMesh: 1 +--- !u!1 &225688599 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 225688600} + - component: {fileID: 225688602} + - component: {fileID: 225688601} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &225688600 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 225688599} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1414640702} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &225688601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 225688599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &225688602 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 225688599} + m_CullTransparentMesh: 1 +--- !u!1 &228560049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 228560050} + - component: {fileID: 228560052} + - component: {fileID: 228560051} + m_Layer: 5 + m_Name: down + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &228560050 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228560049} + 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: 215367152} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -734.2999, y: -427.60004} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &228560051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228560049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + m_FontSize: 25 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u2193" +--- !u!222 &228560052 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228560049} + m_CullTransparentMesh: 1 +--- !u!1 &232422798 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 232422799} + - component: {fileID: 232422801} + - component: {fileID: 232422800} + m_Layer: 0 + m_Name: Cube.005_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &232422799 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232422798} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &232422800 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232422798} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &232422801 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232422798} + m_Mesh: {fileID: -7823134470834710897, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &237682635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 237682636} + - component: {fileID: 237682638} + - component: {fileID: 237682637} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &237682636 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237682635} + 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: 23283623} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &237682637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237682635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &237682638 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237682635} + m_CullTransparentMesh: 1 +--- !u!1 &241336534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 241336535} + - component: {fileID: 241336537} + - component: {fileID: 241336536} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &241336535 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241336534} + 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: 140747536} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &241336536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241336534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &241336537 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241336534} + m_CullTransparentMesh: 1 +--- !u!1 &268923343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 268923344} + m_Layer: 5 + m_Name: Charts + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &268923344 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268923343} + 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: + - {fileID: 1213129649} + - {fileID: 611641053} + - {fileID: 201489786} + m_Father: {fileID: 511399609} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &269085593 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 269085594} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &269085594 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269085593} + 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: + - {fileID: 1292240548} + m_Father: {fileID: 382283862} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &290413415 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 290413416} + - component: {fileID: 290413419} + - component: {fileID: 290413418} + - component: {fileID: 290413417} + m_Layer: 5 + m_Name: TimeLimitAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &290413416 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290413415} + 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: + - {fileID: 2042180458} + m_Father: {fileID: 1587956790} + 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: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &290413417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290413415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 290413418} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982029} + m_TargetAssemblyTypeName: RealTimeTimeLimitChanger, Assembly-CSharp + m_MethodName: BTPressed + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &290413418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290413415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &290413419 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290413415} + m_CullTransparentMesh: 1 +--- !u!1 &290664181 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 290664182} + - component: {fileID: 290664184} + - component: {fileID: 290664183} + m_Layer: 0 + m_Name: Cylinder.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &290664182 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290664181} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0.4829301, y: 1.386794, z: 3.058825} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &290664183 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290664181} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &290664184 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290664181} + m_Mesh: {fileID: 5796478305813232498, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &295944707 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 295944708} + - component: {fileID: 295944710} + - component: {fileID: 295944709} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &295944708 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 295944707} + 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: 648258324} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &295944709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 295944707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &295944710 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 295944707} + m_CullTransparentMesh: 1 +--- !u!1 &307946888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 307946889} + - component: {fileID: 307946891} + - component: {fileID: 307946890} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &307946889 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 307946888} + 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: 756103204} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &307946890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 307946888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &307946891 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 307946888} + m_CullTransparentMesh: 1 +--- !u!1 &313400499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 313400500} + m_Layer: 5 + m_Name: EnemyNumChanger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &313400500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 313400499} + 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: + - {fileID: 2131057827} + - {fileID: 813204784} + m_Father: {fileID: 1619861058} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -170.5, y: -65} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &317534021 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 317534023} + - component: {fileID: 317534022} + m_Layer: 0 + m_Name: CameraController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &317534022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317534021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 136f4ef424a10ea47b5981794fff8a7c, type: 3} + m_Name: + m_EditorClassIdentifier: + FPSCamera: {fileID: 1633276149} + TPSCamera: {fileID: 348429004} + AgentOBJ: {fileID: 629870337} +--- !u!4 &317534023 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317534021} + 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: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &317682824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 317682828} + - component: {fileID: 317682827} + - component: {fileID: 317682826} + - component: {fileID: 317682825} + m_Layer: 5 + m_Name: winAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &317682825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317682824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 317682826} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982031} + m_TargetAssemblyTypeName: RealTimeRewardChanger, Assembly-CSharp + m_MethodName: winRBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &317682826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317682824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &317682827 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317682824} + m_CullTransparentMesh: 1 +--- !u!224 &317682828 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317682824} + 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: + - {fileID: 1435262641} + m_Father: {fileID: 194652655} + m_RootOrder: 5 + 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: -100} + m_SizeDelta: {x: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &326222084 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 326222085} + - component: {fileID: 326222087} + - component: {fileID: 326222086} + m_Layer: 0 + m_Name: axis_6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &326222085 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326222084} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1863075755} + - {fileID: 1669330272} + m_Father: {fileID: 1372129984} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 57} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &326222086 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326222084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &326222087 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326222084} + m_CullTransparentMesh: 1 +--- !u!1 &326762359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 326762360} + - component: {fileID: 326762362} + - component: {fileID: 326762361} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &326762360 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326762359} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 808684899} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &326762361 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326762359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &326762362 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326762359} + m_CullTransparentMesh: 1 +--- !u!1 &328064204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 328064205} + - component: {fileID: 328064207} + - component: {fileID: 328064206} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &328064205 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328064204} + 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: 221517429} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &328064206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328064204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x4 +--- !u!222 &328064207 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328064204} + m_CullTransparentMesh: 1 +--- !u!1 &335823786 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 335823787} + - component: {fileID: 335823789} + - component: {fileID: 335823788} + m_Layer: 0 + m_Name: column0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &335823787 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335823786} + 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: + - {fileID: 2022475718} + - {fileID: 430271807} + m_Father: {fileID: 737756490} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &335823788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335823786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &335823789 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335823786} + m_CullTransparentMesh: 1 +--- !u!1 &338423603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 338423604} + - component: {fileID: 338423606} + - component: {fileID: 338423605} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &338423604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 338423603} + 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: 195883128} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &338423605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 338423603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Change Camera + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: f653ac5b85a721e4c9383008e6a565a7, type: 2} + m_sharedMaterial: {fileID: -4662725986004701985, guid: f653ac5b85a721e4c9383008e6a565a7, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 15 + m_fontSizeBase: 15 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &338423606 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 338423603} + m_CullTransparentMesh: 1 +--- !u!1 &348429001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 348429002} + - component: {fileID: 348429004} + m_Layer: 0 + m_Name: TPSCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &348429002 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 348429001} + 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: 666949839} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &348429004 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 348429001} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 1 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 20.78461 + 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.000004 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &355301578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 355301579} + m_Layer: 0 + m_Name: label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &355301579 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 355301578} + 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: + - {fileID: 1414673186} + - {fileID: 1884118930} + m_Father: {fileID: 1069784063} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &358674450 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 358674451} + - component: {fileID: 358674453} + - component: {fileID: 358674452} + m_Layer: 0 + m_Name: axis_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &358674451 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358674450} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 721859327} + - {fileID: 1273108962} + m_Father: {fileID: 1519188529} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -33} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &358674452 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358674450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &358674453 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358674450} + m_CullTransparentMesh: 1 +--- !u!1 &380015111 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 380015112} + m_Layer: 0 + m_Name: serie_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &380015112 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380015111} + 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: + - {fileID: 30407329} + - {fileID: 56789639} + m_Father: {fileID: 1213129649} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &381530242 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 381530243} + - component: {fileID: 381530245} + - component: {fileID: 381530244} + m_Layer: 0 + m_Name: painter_9 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &381530243 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381530242} + 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: 611641053} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &381530244 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381530242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &381530245 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381530242} + m_CullTransparentMesh: 1 +--- !u!1 &382283861 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 382283862} + - component: {fileID: 382283865} + - component: {fileID: 382283864} + - component: {fileID: 382283863} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &382283862 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382283861} + 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: + - {fileID: 269085594} + m_Father: {fileID: 189965854} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!114 &382283863 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382283861} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1292240549} + m_HandleRect: {fileID: 1292240548} + m_Direction: 0 + m_Value: 0 + m_Size: 0.99999994 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &382283864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382283861} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &382283865 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382283861} + m_CullTransparentMesh: 1 +--- !u!1 &404938101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 404938102} + - component: {fileID: 404938104} + - component: {fileID: 404938103} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &404938102 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 404938101} + 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: 2026877416} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &404938103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 404938101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &404938104 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 404938101} + m_CullTransparentMesh: 1 +--- !u!1 &406639878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 406639879} + - component: {fileID: 406639881} + - component: {fileID: 406639880} + m_Layer: 5 + m_Name: up + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &406639879 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406639878} + 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: 215367152} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -734.2999, y: -398.39996} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &406639880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406639878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + m_FontSize: 25 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u2191" +--- !u!222 &406639881 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406639878} + m_CullTransparentMesh: 1 +--- !u!1 &420670194 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 420670195} + - component: {fileID: 420670197} + - component: {fileID: 420670196} + m_Layer: 0 + m_Name: Cylinder.003_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &420670195 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420670194} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &420670196 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420670194} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &420670197 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420670194} + m_Mesh: {fileID: 1022286299411585782, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &420980395 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 420980396} + - component: {fileID: 420980398} + - component: {fileID: 420980397} + m_Layer: 0 + m_Name: painter_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &420980396 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420980395} + 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: 611641053} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &420980397 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420980395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &420980398 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420980395} + m_CullTransparentMesh: 1 +--- !u!1 &429029227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 429029228} + - component: {fileID: 429029230} + - component: {fileID: 429029229} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &429029228 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429029227} + 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: 1931933153} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &429029229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429029227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &429029230 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429029227} + m_CullTransparentMesh: 1 +--- !u!1 &429369154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 429369155} + - component: {fileID: 429369158} + - component: {fileID: 429369157} + - component: {fileID: 429369156} + m_Layer: 5 + m_Name: killInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &429369155 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429369154} + 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: + - {fileID: 1399697880} + - {fileID: 1692175693} + m_Father: {fileID: 194652655} + m_RootOrder: 11 + 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: 70, y: -80} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &429369156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429369154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 429369157} + m_TextComponent: {fileID: 1692175694} + m_Placeholder: {fileID: 1399697881} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &429369157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429369154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &429369158 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429369154} + m_CullTransparentMesh: 1 +--- !u!1 &430271806 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 430271807} + - component: {fileID: 430271809} + - component: {fileID: 430271808} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &430271807 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 430271806} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 335823787} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &430271808 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 430271806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &430271809 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 430271806} + m_CullTransparentMesh: 1 +--- !u!1 &430915227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 430915228} + - component: {fileID: 430915230} + - component: {fileID: 430915229} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &430915228 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 430915227} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1926093282} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &430915229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 430915227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &430915230 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 430915227} + m_CullTransparentMesh: 1 +--- !u!1 &435476305 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 435476306} + - component: {fileID: 435476308} + - component: {fileID: 435476307} + m_Layer: 0 + m_Name: painter_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &435476306 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435476305} + 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: 611641053} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &435476307 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435476305} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &435476308 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435476305} + m_CullTransparentMesh: 1 +--- !u!1 &438520158 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 438520161} + - component: {fileID: 438520160} + - component: {fileID: 438520159} + m_Layer: 5 + m_Name: mouse + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &438520159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438520158} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + m_FontSize: 25 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!222 &438520160 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438520158} + m_CullTransparentMesh: 1 +--- !u!224 &438520161 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438520158} + 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: 215367152} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -572.51, y: -427.60004} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &439946272 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 439946273} + - component: {fileID: 439946275} + - component: {fileID: 439946274} + m_Layer: 0 + m_Name: painter_7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &439946273 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439946272} + 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: 611641053} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &439946274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439946272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &439946275 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439946272} + m_CullTransparentMesh: 1 +--- !u!1 &443205578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 443205579} + - component: {fileID: 443205581} + - component: {fileID: 443205580} + m_Layer: 0 + m_Name: Cube.010_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &443205579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443205578} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &443205580 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443205578} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &443205581 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443205578} + m_Mesh: {fileID: -160208019829609773, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &443256481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 443256482} + - component: {fileID: 443256484} + - component: {fileID: 443256483} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &443256482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443256481} + 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: 135550329} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &443256483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443256481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &443256484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443256481} + m_CullTransparentMesh: 1 +--- !u!1 &446284309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 446284310} + - component: {fileID: 446284312} + - component: {fileID: 446284311} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &446284310 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 446284309} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 23283623} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &446284311 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 446284309} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &446284312 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 446284309} + m_CullTransparentMesh: 1 +--- !u!1 &448010745 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 448010746} + - component: {fileID: 448010748} + - component: {fileID: 448010747} + m_Layer: 0 + m_Name: painter_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &448010746 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448010745} + 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: 611641053} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &448010747 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448010745} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &448010748 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448010745} + m_CullTransparentMesh: 1 +--- !u!1 &453040566 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 453040567} + - component: {fileID: 453040569} + - component: {fileID: 453040568} + m_Layer: 0 + m_Name: info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &453040567 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453040566} + 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: + - {fileID: 933702210} + - {fileID: 1294052618} + m_Father: {fileID: 890609531} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &453040568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453040566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1254902, g: 0.1254902, b: 0.1254902, a: 0.6666667} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &453040569 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453040566} + m_CullTransparentMesh: 1 +--- !u!1 &454701933 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 454701934} + - component: {fileID: 454701936} + - component: {fileID: 454701935} + m_Layer: 0 + m_Name: Cylinder.011_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &454701934 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454701933} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &454701935 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454701933} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &454701936 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454701933} + m_Mesh: {fileID: 7280481152629387332, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &459517739 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 459517740} + - component: {fileID: 459517741} + - component: {fileID: 459517742} + m_Layer: 5 + m_Name: nonRewardData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &459517740 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459517739} + 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: 497823044} + 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: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &459517741 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459517739} + m_CullTransparentMesh: 1 +--- !u!114 &459517742 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459517739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &460761057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 460761058} + m_Layer: 5 + m_Name: MouseVisualization + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &460761058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 460761057} + 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: + - {fileID: 1565640926} + - {fileID: 52138317} + m_Father: {fileID: 511399609} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 157.5, y: 31.800049} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &463651889 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 463651890} + - component: {fileID: 463651892} + - component: {fileID: 463651891} + m_Layer: 5 + m_Name: shootWithoutReadyReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &463651890 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 463651889} + 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: 509053162} + m_RootOrder: 2 + 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: -40} + m_SizeDelta: {x: 316.0601, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &463651891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 463651889} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'shootWOReadyReward: ' +--- !u!222 &463651892 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 463651889} + m_CullTransparentMesh: 1 +--- !u!1 &465041949 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 465041950} + - component: {fileID: 465041952} + - component: {fileID: 465041951} + m_Layer: 5 + m_Name: hitReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &465041950 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465041949} + 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: 509053162} + 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, y: -60} + m_SizeDelta: {x: 316.0601, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &465041951 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465041949} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'hitReward: ' +--- !u!222 &465041952 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465041949} + m_CullTransparentMesh: 1 +--- !u!1 &465774758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 465774759} + - component: {fileID: 465774761} + - component: {fileID: 465774760} + m_Layer: 0 + m_Name: axis_7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &465774759 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465774758} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2054949623} + - {fileID: 720116287} + m_Father: {fileID: 1519188529} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 87} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &465774760 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465774758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &465774761 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465774758} + m_CullTransparentMesh: 1 +--- !u!1 &472685522 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 472685523} + - component: {fileID: 472685525} + - component: {fileID: 472685524} + m_Layer: 0 + m_Name: painter_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &472685523 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472685522} + 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: 1213129649} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &472685524 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472685522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &472685525 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472685522} + m_CullTransparentMesh: 1 +--- !u!1 &474214542 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 474214543} + - component: {fileID: 474214545} + - component: {fileID: 474214544} + m_Layer: 0 + m_Name: axis_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &474214543 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 474214542} + 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: + - {fileID: 1475721441} + - {fileID: 763127411} + m_Father: {fileID: 800843590} + m_RootOrder: 2 + 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: 14.5, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &474214544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 474214542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &474214545 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 474214542} + m_CullTransparentMesh: 1 +--- !u!1 &485630227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 485630228} + - component: {fileID: 485630230} + - component: {fileID: 485630229} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &485630228 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485630227} + 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: 518493904} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &485630229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485630227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &485630230 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485630227} + m_CullTransparentMesh: 1 +--- !u!1 &491271241 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 491271242} + - component: {fileID: 491271244} + - component: {fileID: 491271243} + m_Layer: 0 + m_Name: column2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &491271242 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491271241} + 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: + - {fileID: 801653729} + - {fileID: 2037616963} + m_Father: {fileID: 1175413812} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &491271243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491271241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &491271244 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491271241} + m_CullTransparentMesh: 1 +--- !u!1 &495150914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 495150915} + - component: {fileID: 495150917} + - component: {fileID: 495150916} + m_Layer: 0 + m_Name: axis_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &495150915 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 495150914} + 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: + - {fileID: 591203361} + - {fileID: 1625376957} + m_Father: {fileID: 800843590} + m_RootOrder: 1 + 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: -93.37999, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &495150916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 495150914} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &495150917 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 495150914} + m_CullTransparentMesh: 1 +--- !u!1 &496880996 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 496880997} + - component: {fileID: 496880999} + - component: {fileID: 496880998} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &496880997 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496880996} + 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: 188953745} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &496880998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496880996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 60 +--- !u!222 &496880999 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496880996} + m_CullTransparentMesh: 1 +--- !u!1 &497823043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 497823044} + m_Layer: 5 + m_Name: RewardsData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &497823044 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 497823043} + 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: + - {fileID: 459517740} + - {fileID: 1031242400} + - {fileID: 725440910} + - {fileID: 2062704623} + - {fileID: 1369105108} + - {fileID: 665628738} + - {fileID: 719190099} + m_Father: {fileID: 1619861058} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -221.5, y: -118} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &507878345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 507878346} + - component: {fileID: 507878348} + - component: {fileID: 507878347} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &507878346 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 507878345} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1477455556} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &507878347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 507878345} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &507878348 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 507878345} + m_CullTransparentMesh: 1 +--- !u!1 &509053161 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 509053162} + m_Layer: 5 + m_Name: RewardsText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &509053162 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509053161} + 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: + - {fileID: 958160271} + - {fileID: 1950007530} + - {fileID: 463651890} + - {fileID: 465041950} + - {fileID: 214633555} + - {fileID: 1821752599} + - {fileID: 1841514737} + m_Father: {fileID: 1619861058} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -402, y: -118} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &511399605 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 511399609} + - component: {fileID: 511399608} + - component: {fileID: 511399607} + - component: {fileID: 511399606} + - component: {fileID: 511399610} + m_Layer: 5 + m_Name: UI Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &511399606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 511399605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &511399607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 511399605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &511399608 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 511399605} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &511399609 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 511399605} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1928982027} + - {fileID: 215367152} + - {fileID: 1619861058} + - {fileID: 268923344} + - {fileID: 1913659021} + - {fileID: 460761058} + - {fileID: 195883128} + - {fileID: 1747636731} + - {fileID: 189965854} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &511399610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 511399605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 09d6c910046a96641836c2d703e88bcd, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &517135390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 517135391} + - component: {fileID: 517135393} + - component: {fileID: 517135392} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &517135391 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517135390} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 25903618} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &517135392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517135390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &517135393 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517135390} + m_CullTransparentMesh: 1 +--- !u!1 &518493903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 518493904} + - component: {fileID: 518493906} + - component: {fileID: 518493905} + m_Layer: 0 + m_Name: column2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &518493904 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 518493903} + 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: + - {fileID: 485630228} + - {fileID: 1179767048} + m_Father: {fileID: 737756490} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &518493905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 518493903} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &518493906 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 518493903} + m_CullTransparentMesh: 1 +--- !u!1 &528506630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 528506631} + - component: {fileID: 528506633} + - component: {fileID: 528506632} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &528506631 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 528506630} + 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: 808684899} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &528506632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 528506630} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x2 +--- !u!222 &528506633 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 528506630} + m_CullTransparentMesh: 1 +--- !u!1 &532615954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 532615955} + - component: {fileID: 532615957} + - component: {fileID: 532615956} + m_Layer: 0 + m_Name: Cylinder.009_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &532615955 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 532615954} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &532615956 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 532615954} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &532615957 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 532615954} + m_Mesh: {fileID: 287060331232230867, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &545189440 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 545189441} + m_Layer: 0 + m_Name: XAxis0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &545189441 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 545189440} + 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: + - {fileID: 844985474} + - {fileID: 1113647590} + - {fileID: 1770477494} + - {fileID: 1481370281} + - {fileID: 568499057} + m_Father: {fileID: 611641053} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &559163971 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 559163972} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &559163972 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 559163971} + 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: 17027927} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &568499056 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 568499057} + - component: {fileID: 568499059} + - component: {fileID: 568499058} + m_Layer: 0 + m_Name: axis_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &568499057 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568499056} + 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: + - {fileID: 1356798915} + - {fileID: 2121688058} + m_Father: {fileID: 545189441} + m_RootOrder: 4 + 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: 230.26001, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &568499058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568499056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &568499059 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568499056} + m_CullTransparentMesh: 1 +--- !u!1 &571903140 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 571903141} + - component: {fileID: 571903143} + - component: {fileID: 571903142} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &571903141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571903140} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1283581649} + m_RootOrder: 1 + 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: -124.666664, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &571903142 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571903140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &571903143 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571903140} + m_CullTransparentMesh: 1 +--- !u!1 &591203360 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 591203361} + - component: {fileID: 591203363} + - component: {fileID: 591203362} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &591203361 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591203360} + 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: 495150915} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &591203362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591203360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x2 +--- !u!222 &591203363 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591203360} + m_CullTransparentMesh: 1 +--- !u!1 &595285975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 595285976} + - component: {fileID: 595285978} + - component: {fileID: 595285977} + m_Layer: 0 + m_Name: axis_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &595285976 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595285975} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1133378795} + - {fileID: 804560882} + m_Father: {fileID: 1372129984} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -93} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &595285977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595285975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &595285978 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595285975} + m_CullTransparentMesh: 1 +--- !u!1 &600869054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 600869055} + - component: {fileID: 600869057} + - component: {fileID: 600869056} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &600869055 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 600869054} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1113647590} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &600869056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 600869054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &600869057 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 600869054} + m_CullTransparentMesh: 1 +--- !u!1 &602372910 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 602372911} + - component: {fileID: 602372913} + - component: {fileID: 602372912} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &602372911 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 602372910} + 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: 1770477494} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &602372912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 602372910} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x3 +--- !u!222 &602372913 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 602372910} + m_CullTransparentMesh: 1 +--- !u!1 &611641052 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 611641053} + - component: {fileID: 611641055} + - component: {fileID: 611641054} + m_Layer: 0 + m_Name: RealTimeKeyCounterChart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &611641053 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611641052} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1530748063} + - {fileID: 1234285013} + - {fileID: 2116623349} + - {fileID: 1236075753} + - {fileID: 420980396} + - {fileID: 435476306} + - {fileID: 448010746} + - {fileID: 1966151977} + - {fileID: 439946273} + - {fileID: 1213032258} + - {fileID: 381530243} + - {fileID: 1543384452} + - {fileID: 1037816792} + - {fileID: 545189441} + - {fileID: 890182309} + - {fileID: 1876561007} + - {fileID: 2037666613} + - {fileID: 855143409} + m_Father: {fileID: 268923344} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 353.4, y: -354} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &611641054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611641052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 535d2697503c2a94a887354e22a5414d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_EnableTextMeshPro: 0 + m_DebugInfo: + m_Show: 1 + m_ShowDebugInfo: 0 + m_ShowAllChartObject: 0 + m_FoldSeries: 0 + m_LabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0.1254902, g: 0.1254902, b: 0.1254902, a: 0.6666667} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontSize: 18 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_ChartName: + m_Theme: + m_Show: 1 + m_SharedTheme: {fileID: 11400000, guid: e1dc23a10de1e4c5dbfbaf74c4dfd218, type: 2} + m_TransparentBackground: 1 + m_EnableCustomTheme: 0 + m_CustomFont: {fileID: 0} + m_CustomBackgroundColor: + serializedVersion: 2 + rgba: 0 + m_CustomColorPalette: [] + m_Settings: + m_Show: 1 + m_MaxPainter: 10 + m_ReversePainter: 0 + m_BasePainterMaterial: {fileID: 0} + m_SeriePainterMaterial: {fileID: 0} + m_TopPainterMaterial: {fileID: 0} + m_LineSmoothStyle: 3 + m_LineSmoothness: 2 + m_LineSegmentDistance: 3 + m_CicleSmoothness: 2 + m_LegendIconLineWidth: 2 + m_LegendIconCornerRadius: + - 0.25 + - 0.25 + - 0.25 + - 0.25 + m_AngleAxes: [] + m_Backgrounds: [] + m_DataZooms: [] + m_Grids: + - m_Show: 1 + m_Left: 0.06 + m_Right: 0.01 + m_Top: 0.11 + m_Bottom: 0.09 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_ShowBorder: 1 + m_BorderWidth: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 0 + m_Legends: [] + m_MarkLines: [] + m_MarkAreas: [] + m_Polars: [] + m_Radars: [] + m_RadiusAxes: [] + m_Titles: + - m_Show: 1 + m_Text: realTimeKeyCounter + m_SubText: + m_LabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_SubLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_ItemGap: 0 + m_Location: + m_Align: 2 + m_Left: 0 + m_Right: 0 + m_Top: -0 + m_Bottom: 0 + m_Tooltips: + - m_Show: 1 + m_Type: 1 + m_Trigger: 1 + m_ItemFormatter: + m_TitleFormatter: + m_Marker: "\u25CF" + m_FixedWidth: 0 + m_FixedHeight: 0 + m_MinWidth: 0 + m_MinHeight: 0 + m_NumericFormatter: + m_PaddingLeftRight: 10 + m_PaddingTopBottom: 10 + m_IgnoreDataShow: 0 + m_IgnoreDataDefaultContent: '-' + m_ShowContent: 1 + m_AlwayShowContent: 0 + m_Offset: {x: 18, y: -25} + m_BackgroundImage: {fileID: 0} + m_BackgroundType: 0 + m_BackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_BorderWidth: 2 + m_FixedXEnable: 0 + m_FixedX: 0 + m_FixedYEnable: 0 + m_FixedY: 0 + m_TitleHeight: 25 + m_ItemHeight: 25 + m_BorderColor: + serializedVersion: 2 + rgba: 4293322470 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_IndicatorLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_TitleLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + m_ContentLabelStyles: + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 5 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 20 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 0 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 5 + m_VisualMaps: [] + m_XAxes: + - m_Show: 1 + m_Type: 1 + m_MinMaxType: 0 + m_GridIndex: 0 + m_PolarIndex: 0 + m_ParallelIndex: 0 + m_Position: 2 + m_Offset: 0 + m_Min: 0 + m_Max: 0 + m_SplitNumber: 0 + m_Interval: 0 + m_BoundaryGap: 1 + m_MaxCache: 0 + m_LogBase: 10 + m_LogBaseE: 0 + m_CeilRate: 0 + m_Inverse: 0 + m_Clockwise: 1 + m_InsertDataToHead: 0 + m_Icons: [] + m_Data: + - x1 + - x2 + - x3 + - x4 + - x5 + m_AxisLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_OnZero: 1 + m_ShowArrow: 0 + m_Arrow: + m_Width: 10 + m_Height: 15 + m_Offset: 0 + m_Dent: 3 + m_Color: + serializedVersion: 2 + rgba: 0 + m_AxisName: + m_Show: 0 + m_Name: axisName + m_LabelStyle: + m_Show: 1 + m_Position: 10 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_AxisTick: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_AlignWithLabel: 0 + m_Inside: 0 + m_ShowStartTick: 1 + m_ShowEndTick: 1 + m_Distance: 0 + m_SplitNumber: 0 + m_AutoColor: 0 + m_AxisLabel: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 8 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_Interval: 0 + m_Inside: 0 + m_ShowAsPositiveNumber: 0 + m_OnZero: 0 + m_ShowStartLabel: 1 + m_ShowEndLabel: 1 + m_TextLimit: + m_Enable: 1 + m_MaxWidth: 0 + m_Gap: 1 + m_Suffix: ... + m_SplitLine: + m_Show: 0 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Interval: 0 + m_Distance: 0 + m_AutoColor: 0 + m_SplitArea: + m_Show: 0 + m_Color: [] + m_YAxes: + - m_Show: 1 + m_Type: 0 + m_MinMaxType: 0 + m_GridIndex: 0 + m_PolarIndex: 0 + m_ParallelIndex: 0 + m_Position: 0 + m_Offset: 0 + m_Min: 0 + m_Max: 0 + m_SplitNumber: 0 + m_Interval: 0 + m_BoundaryGap: 0 + m_MaxCache: 0 + m_LogBase: 10 + m_LogBaseE: 0 + m_CeilRate: 0 + m_Inverse: 0 + m_Clockwise: 1 + m_InsertDataToHead: 0 + m_Icons: [] + m_Data: [] + m_AxisLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_OnZero: 1 + m_ShowArrow: 0 + m_Arrow: + m_Width: 10 + m_Height: 15 + m_Offset: 0 + m_Dent: 3 + m_Color: + serializedVersion: 2 + rgba: 0 + m_AxisName: + m_Show: 0 + m_Name: axisName + m_LabelStyle: + m_Show: 1 + m_Position: 10 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_AxisTick: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_AlignWithLabel: 0 + m_Inside: 0 + m_ShowStartTick: 1 + m_ShowEndTick: 1 + m_Distance: 0 + m_SplitNumber: 0 + m_AutoColor: 0 + m_AxisLabel: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 8 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_Interval: 0 + m_Inside: 0 + m_ShowAsPositiveNumber: 0 + m_OnZero: 0 + m_ShowStartLabel: 1 + m_ShowEndLabel: 1 + m_TextLimit: + m_Enable: 0 + m_MaxWidth: 0 + m_Gap: 1 + m_Suffix: ... + m_SplitLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Interval: 0 + m_Distance: 0 + m_AutoColor: 0 + m_SplitArea: + m_Show: 0 + m_Color: [] + m_SingleAxes: [] + m_Parallels: [] + m_ParallelAxes: [] + m_Comments: [] + m_SerieBars: + - m_Labels: [] + m_LabelLines: [] + m_EndLabels: [] + m_LineArrows: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Index: 0 + m_Show: 1 + m_CoordSystem: GridCoord + m_SerieType: Bar + m_SerieName: serie0 + m_Stack: + m_XAxisIndex: 0 + m_YAxisIndex: 0 + m_RadarIndex: 0 + m_VesselIndex: 0 + m_PolarIndex: 0 + m_SingleAxisIndex: 0 + m_ParallelIndex: 0 + m_MinShow: 0 + m_MaxShow: 0 + m_MaxCache: 0 + m_SampleDist: 0 + m_SampleType: 1 + m_SampleAverage: 0 + m_LineType: 0 + m_BarType: 0 + m_BarPercentStack: 0 + m_BarWidth: 0 + m_BarGap: 0.1 + m_BarZebraWidth: 4 + m_BarZebraGap: 2 + m_Min: 0 + m_Max: 0 + m_MinSize: 0 + m_MaxSize: 1 + m_StartAngle: 0 + m_EndAngle: 0 + m_MinAngle: 0 + m_Clockwise: 1 + m_RoundCap: 0 + m_SplitNumber: 0 + m_ClickOffset: 1 + m_RoseType: 0 + m_Gap: 0 + m_Center: + - 0.5 + - 0.48 + m_Radius: + - 0 + - 0.28 + m_ShowDataDimension: 1 + m_ShowDataName: 0 + m_Clip: 0 + m_Ignore: 0 + m_IgnoreValue: 0 + m_IgnoreLineBreak: 0 + m_ShowAsPositiveNumber: 0 + m_Large: 1 + m_LargeThreshold: 200 + m_AvoidLabelOverlap: 0 + m_RadarType: 0 + m_PlaceHolder: 0 + m_DataSortType: 2 + m_Orient: 1 + m_Align: 0 + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_InsertDataToHead: 0 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Symbol: + m_Show: 0 + m_Type: 3 + m_Size: 0 + m_Gap: 0 + m_Width: 0 + m_Height: 0 + m_Offset: {x: 0, y: 0} + m_Image: {fileID: 0} + m_ImageType: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_SizeType: 0 + m_SelectedSize: 0 + m_DataIndex: 1 + m_DataScale: 1 + m_SelectedDataScale: 1.5 + m_StartIndex: 0 + m_Interval: 0 + m_ForceShowLast: 0 + m_Repeat: 0 + m_Animation: + m_Enable: 1 + m_Type: 0 + m_Easting: 0 + m_Threshold: 2000 + m_FadeInDuration: 1000 + m_FadeInDelay: 0 + m_FadeOutDuration: 1000 + m_FadeOutDelay: 0 + m_DataChangeEnable: 1 + m_DataChangeDuration: 500 + m_ActualDuration: 0 + m_ItemStyle: + m_Show: 1 + m_Color: + serializedVersion: 2 + rgba: 0 + m_Color0: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_BackgroundWidth: 0 + m_CenterColor: + serializedVersion: 2 + rgba: 0 + m_CenterGap: 0 + m_BorderWidth: 0 + m_BorderGap: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 0 + m_BorderColor0: + serializedVersion: 2 + rgba: 0 + m_BorderToColor: + serializedVersion: 2 + rgba: 0 + m_Opacity: 1 + m_ItemMarker: + m_ItemFormatter: + m_NumericFormatter: + m_CornerRadius: + - 0 + - 0 + - 0 + - 0 + m_Data: + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 0 + - 27 + - m_Index: 1 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 1 + - 73 + - m_Index: 2 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 2 + - 52 + - m_Index: 3 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 3 + - 67 + - m_Index: 4 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 4 + - 48 + m_SerieCandlesticks: [] + m_SerieEffectScatters: [] + m_SerieHeatmaps: [] + m_SerieLines: [] + m_SeriePies: [] + m_SerieRadars: [] + m_SerieRings: [] + m_SerieScatters: [] + m_SerieParallels: [] + m_SerieSimplifiedLines: [] + m_SerieSimplifiedBars: [] + m_SerieSimplifiedCandlesticks: [] +--- !u!222 &611641055 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611641052} + m_CullTransparentMesh: 1 +--- !u!1 &621445972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 621445973} + - component: {fileID: 621445975} + - component: {fileID: 621445974} + m_Layer: 0 + m_Name: Torus.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &621445973 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 621445972} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: 0.36568335, y: 1.2728398, z: 3.6131558} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 35 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &621445974 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 621445972} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &621445975 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 621445972} + m_Mesh: {fileID: 7206358537197127457, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &625252341 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 625252342} + m_Layer: 0 + m_Name: debug + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &625252342 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 625252341} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2088978190} + m_Father: {fileID: 1213129649} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0, y: 1} +--- !u!1 &629870337 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 629870343} + - component: {fileID: 629870342} + - component: {fileID: 629870341} + - component: {fileID: 629870340} + - component: {fileID: 629870339} + - component: {fileID: 629870338} + - component: {fileID: 629870344} + - component: {fileID: 629870345} + - component: {fileID: 629870346} + m_Layer: 0 + m_Name: Agent + m_TagString: Enemy + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &629870338 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a5c9d521e5ef4759a8246a07d52221e, type: 3} + m_Name: + m_EditorClassIdentifier: + DecisionPeriod: 1 + TakeActionsBetweenDecisions: 0 +--- !u!114 &629870339 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d1c4e0b1822b495aa52bc52839ecb30, type: 3} + m_Name: + m_EditorClassIdentifier: + m_BrainParameters: + VectorObservationSize: 34 + NumStackedVectorObservations: 1 + m_ActionSpec: + m_NumContinuousActions: 1 + BranchSizes: 030000000300000002000000 + VectorActionSize: + VectorActionDescriptions: [] + VectorActionSpaceType: 0 + hasUpgradedBrainParametersWithActionSpec: 1 + m_Model: {fileID: 0} + m_InferenceDevice: 0 + m_BehaviorType: 0 + m_BehaviorName: AKMAgent + TeamId: 0 + m_UseChildSensors: 1 + m_UseChildActuators: 1 + m_ObservableAttributeHandling: 0 +--- !u!114 &629870340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4faf6e358e53cc24582eaff8dd830f97, type: 3} + m_Name: + m_EditorClassIdentifier: + agentParameters: + maxStep: 0 + hasUpgradedFromAgentParameters: 1 + MaxStep: 0 + thisAgentObj: {fileID: 629870337} + thisAgent: {fileID: 629870343} + thisCam: {fileID: 1633276149} + PlayerController: {fileID: 629870342} + enemyPrefab: {fileID: 8240453774489061354, guid: c044b8f18a5ed2f4eaabb8d40095018f, type: 3} + cameraChangerOBJ: {fileID: 317534021} + nonRewardDefault: -0.05 + shootRewardDefault: -0.1 + shootWithoutReadyRewardDefault: -1 + hitRewardDefault: 2 + winRewardDefault: 10 + loseRewardDefault: -10 + killRewardDefault: 5 + lockMouse: 0 + Damage: 50 + fireRate: 0.3 + enemyNum: 3 + timeLimit: 30 + lockCameraX: 0 + lockCameraY: 1 + minEnemyAreaX: -9 + maxEnemyAreaX: 8 + minEnemyAreaY: -24 + maxEnemyAreaY: -10 + minAgentAreaX: -9 + maxAgentAreaX: 8 + minAgentAreaY: -28 + maxAgentAreaY: -24 + MoveSpeed: 2 + vX: 0 + vZ: 0 + acceleration: 0.1 + mouseXSensitivity: 100 + mouseYSensitivity: 200 + yRotation: 0.1 + defaultTPCamera: 1 +--- !u!114 &629870341 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 787273829b64d4d4b8237ea7316f59ce, type: 3} + m_Name: + m_EditorClassIdentifier: + agentCam: {fileID: 1633276149} + lineMeterial: {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} + rayInfoPrefab: {fileID: 2963094767576631243, guid: e13f99706bb4ffe459a06857048ece22, type: 3} + agentCanvas: {fileID: 1054491405} + viewDistance: 100 + focusRange: 0.15 + halfOuterRayNum: 5 + focusRayNum: 3 + showInGameRay: 1 + showDebugRay: 1 + showInGameRayInfo: 1 + lineWidth: 0.05 + rayTagResult: [] + rayDisResult: [] +--- !u!143 &629870342 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 2 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 0, z: 0} +--- !u!4 &629870343 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -24} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1233692427} + - {fileID: 1633276152} + - {fileID: 1054491406} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &629870344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88b6042bc9a5d4aa58d931eae49442e5, type: 3} + m_Name: + m_EditorClassIdentifier: + agentParameters: + maxStep: 0 + hasUpgradedFromAgentParameters: 1 + MaxStep: 0 +--- !u!114 &629870345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89d83d123322a5c4ba6afb3c86403371, type: 3} + m_Name: + m_EditorClassIdentifier: + updateStep: 3000 + upText: {fileID: 406639880} + downText: {fileID: 228560051} + leftText: {fileID: 2047194227} + rightText: {fileID: 52116503} + shootText: {fileID: 854133117} + MouseText: {fileID: 438520159} + remainTimeText: {fileID: 1510253035} + remainEnemyText: {fileID: 1266400769} + mouseVisualizationBG: {fileID: 1565640927} + mouseVisualizationMeter: {fileID: 52138318} + nonRewardText: {fileID: 459517742} + shootRewardText: {fileID: 1031242402} + shootWithoutReadyRewardText: {fileID: 725440912} + hitRewardText: {fileID: 2062704625} + winRewardText: {fileID: 665628740} + loseRewardText: {fileID: 719190101} + killRewardText: {fileID: 1369105110} + realTimeRewardChartOBJ: {fileID: 1213129646} + realTimeKeyCounterChartOBJ: {fileID: 611641052} + EPTotalRewardsChartOBJ: {fileID: 201489783} + mouseMaxMovement: 15 +--- !u!114 &629870346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629870337} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a3e891536ddde24b86cbac3ad3837e6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &636386815 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 636386819} + - component: {fileID: 636386818} + - component: {fileID: 636386817} + - component: {fileID: 636386816} + m_Layer: 0 + m_Name: Ground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!64 &636386816 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636386815} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &636386817 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636386815} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 252e5cac7f0c5a440b896aff10da8c72, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &636386818 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636386815} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &636386819 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636386815} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 10, y: 1, z: 10} + m_Children: [] + m_Father: {fileID: 1423193378} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &637116272 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 637116273} + - component: {fileID: 637116275} + - component: {fileID: 637116274} + m_Layer: 0 + m_Name: painter_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &637116273 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 637116272} + 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: 1213129649} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &637116274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 637116272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &637116275 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 637116272} + m_CullTransparentMesh: 1 +--- !u!1 &645014595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 645014596} + - component: {fileID: 645014598} + - component: {fileID: 645014597} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &645014596 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645014595} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1186343261} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &645014597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645014595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &645014598 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645014595} + m_CullTransparentMesh: 1 +--- !u!43 &647063595 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh27232 + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 36 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 24 + localAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200010003000200040005000600050007000600080009000a0009000b000a000c000d000e000d000f000e00100011001200110013001200140015001600150017001600 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 24 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 48 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 1344 + _typelessdata: 00000000000000000000000000000000000000000000803f000080bf0000000000000000000080bf0000000000000000ced7a33c2ea6c93d00004842000000000000000000000000000000000000803f000080bf0000000000000000000080bf000048c2000000000f467b3f2ea6c93d00000000000000400000000000000000000000000000803f000080bf0000000000000000000080bf00000000000000400bd7a33c8b350c3e00004842000000400000000000000000000000000000803f000080bf0000000000000000000080bf000048c20000004009467b3f8b350c3e0000484200000000000000000000803f000000000000000000000000000000000000803f000080bf00000000000000000ed7a33c8b358c3e0000484200000000000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf000000000bd7a33cee5c823e0000484200000040000000000000803f000000000000000000000000000000000000803f000080bf00000000000000405b756f3d8b358c3e0000484200000040000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf0000004059756f3dee5c823e0000484200000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf0000484200000000ced7a33c6cb0203e0000000000000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf00000000000000000f467b3f6cb0203e0000484200000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf00004842000000400bd7a33ce112483e0000000000000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf000000000000004009467b3fe112483e0000000000000000000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f0000000059756f3dc28d5c3e000000000000000000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000005b756f3dfb3e703e0000000000000040000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f000000400bd7a33cc28d5c3e000000000000004000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000400ed7a33cfb3e703e000000000000004000000000000000000000803f000000000000803f0000000000000000000080bf00000000000000001b467b3f6bb0a03d000048420000004000000000000000000000803f000000000000803f0000000000000000000080bf00004842000000003fd8a33c6bb0a03d0000000000000040000080bf000000000000803f000000000000803f0000000000000000000080bf00000000000080bf11467b3ff19b723d0000484200000040000080bf000000000000803f000000000000803f0000000000000000000080bf00004842000080bf0bd7a33cf19b723d0000000000000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf00000000000080bf0bd7a33c0bd7a33c0000484200000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf000048c2000080bf11467b3f0bd7a33c00000000000000000000000000000000000080bf00000000000080bf0000000000000000000080bf00000000000000003fd8a33c6bb0203d00004842000000000000000000000000000080bf00000000000080bf0000000000000000000080bf000048c2000000001b467b3f6bb0203d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &648100778 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 648100779} + - component: {fileID: 648100781} + - component: {fileID: 648100780} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &648100779 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648100778} + 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: 1148611240} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &648100780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648100778} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &648100781 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648100778} + m_CullTransparentMesh: 1 +--- !u!1 &648258323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 648258324} + - component: {fileID: 648258326} + - component: {fileID: 648258325} + m_Layer: 0 + m_Name: column1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &648258324 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648258323} + 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: + - {fileID: 295944708} + - {fileID: 1344447592} + m_Father: {fileID: 737756490} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &648258325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648258323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &648258326 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648258323} + m_CullTransparentMesh: 1 +--- !u!1 &649944397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 649944398} + - component: {fileID: 649944400} + - component: {fileID: 649944399} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &649944398 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649944397} + 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: 1470983556} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &649944399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649944397} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x1 +--- !u!222 &649944400 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649944397} + m_CullTransparentMesh: 1 +--- !u!1 &665628737 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 665628738} + - component: {fileID: 665628739} + - component: {fileID: 665628740} + m_Layer: 5 + m_Name: winRewardData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &665628738 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665628737} + 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: 497823044} + m_RootOrder: 5 + 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: -100} + m_SizeDelta: {x: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &665628739 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665628737} + m_CullTransparentMesh: 1 +--- !u!114 &665628740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665628737} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &666949838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 666949839} + m_Layer: 0 + m_Name: TPSCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &666949839 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666949838} + m_LocalRotation: {x: 0.35355338, y: 0.35355338, z: -0.1464466, w: 0.8535535} + m_LocalPosition: {x: -16.12, y: 18.1, z: -31.86} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 348429002} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 45, y: 45, z: 0} +--- !u!1 &670541041 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 670541042} + - component: {fileID: 670541044} + - component: {fileID: 670541043} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &670541042 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670541041} + 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: 2076769193} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &670541043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670541041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &670541044 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670541041} + m_CullTransparentMesh: 1 +--- !u!1 &678277789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 678277790} + - component: {fileID: 678277792} + - component: {fileID: 678277791} + m_Layer: 0 + m_Name: Cube.002_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &678277790 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678277789} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &678277791 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678277789} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &678277792 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678277789} + m_Mesh: {fileID: 7848903858435477928, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &691081142 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 691081143} + - component: {fileID: 691081145} + - component: {fileID: 691081144} + m_Layer: 0 + m_Name: axis_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &691081143 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691081142} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 69535875} + - {fileID: 1010425409} + m_Father: {fileID: 890182309} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 37} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &691081144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691081142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &691081145 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691081142} + m_CullTransparentMesh: 1 +--- !u!1 &695855997 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 695855998} + - component: {fileID: 695856000} + - component: {fileID: 695855999} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &695855998 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695855997} + 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: 1822552283} + 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: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &695855999 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695855997} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &695856000 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695855997} + m_CullTransparentMesh: 1 +--- !u!4 &698893709 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_PrefabInstance: {fileID: 1342743755} + m_PrefabAsset: {fileID: 0} +--- !u!1 &705507993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705507995} + - component: {fileID: 705507994} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!108 &705507994 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &705507995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1423193378} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &717272750 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 717272751} + - component: {fileID: 717272753} + - component: {fileID: 717272752} + m_Layer: 0 + m_Name: axis_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &717272751 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717272750} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 793704201} + - {fileID: 1199612232} + m_Father: {fileID: 890182309} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -59} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &717272752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717272750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &717272753 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717272750} + m_CullTransparentMesh: 1 +--- !u!1 &719190098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 719190099} + - component: {fileID: 719190100} + - component: {fileID: 719190101} + m_Layer: 5 + m_Name: loseRewardData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &719190099 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 719190098} + 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: 497823044} + m_RootOrder: 6 + 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: -120} + m_SizeDelta: {x: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &719190100 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 719190098} + m_CullTransparentMesh: 1 +--- !u!114 &719190101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 719190098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &720116286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 720116287} + - component: {fileID: 720116289} + - component: {fileID: 720116288} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &720116287 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 720116286} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 465774759} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &720116288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 720116286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &720116289 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 720116286} + m_CullTransparentMesh: 1 +--- !u!1 &721859326 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 721859327} + - component: {fileID: 721859329} + - component: {fileID: 721859328} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &721859327 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721859326} + 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: 358674451} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &721859328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721859326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 30 +--- !u!222 &721859329 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721859326} + m_CullTransparentMesh: 1 +--- !u!1 &725440909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 725440910} + - component: {fileID: 725440911} + - component: {fileID: 725440912} + m_Layer: 5 + m_Name: shootWithoutReadyRewardData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &725440910 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 725440909} + 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: 497823044} + m_RootOrder: 2 + 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: -40} + m_SizeDelta: {x: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &725440911 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 725440909} + m_CullTransparentMesh: 1 +--- !u!114 &725440912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 725440909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &733816197 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 733816198} + - component: {fileID: 733816200} + - component: {fileID: 733816199} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &733816198 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 733816197} + 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: + - {fileID: 1462706065} + - {fileID: 951578499} + m_Father: {fileID: 1037816792} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 217.77777, y: 30.666666} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &733816199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 733816197} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &733816200 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 733816197} + m_CullTransparentMesh: 1 +--- !u!1 &737756489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 737756490} + m_Layer: 0 + m_Name: item0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &737756490 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 737756489} + 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: + - {fileID: 335823787} + - {fileID: 648258324} + - {fileID: 518493904} + m_Father: {fileID: 1053490561} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 25} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &745459473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 745459474} + - component: {fileID: 745459476} + - component: {fileID: 745459475} + m_Layer: 0 + m_Name: Cube.016_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &745459474 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 745459473} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &745459475 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 745459473} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &745459476 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 745459473} + m_Mesh: {fileID: 7170122609824211509, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &755709329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755709330} + - component: {fileID: 755709332} + - component: {fileID: 755709331} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &755709330 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755709329} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 885432327} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &755709331 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755709329} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &755709332 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755709329} + m_CullTransparentMesh: 1 +--- !u!1 &756103203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 756103204} + - component: {fileID: 756103207} + - component: {fileID: 756103206} + - component: {fileID: 756103205} + m_Layer: 5 + m_Name: nonInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &756103204 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756103203} + 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: + - {fileID: 2141716} + - {fileID: 307946889} + m_Father: {fileID: 194652655} + m_RootOrder: 7 + 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: 70, y: 0} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &756103205 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756103203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 756103206} + m_TextComponent: {fileID: 307946890} + m_Placeholder: {fileID: 2141717} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &756103206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756103203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &756103207 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756103203} + m_CullTransparentMesh: 1 +--- !u!1 &758017858 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 758017859} + - component: {fileID: 758017861} + - component: {fileID: 758017860} + m_Layer: 0 + m_Name: painter_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &758017859 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758017858} + 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: 201489786} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &758017860 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758017858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &758017861 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758017858} + m_CullTransparentMesh: 1 +--- !u!1 &758796083 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 758796084} + - component: {fileID: 758796086} + - component: {fileID: 758796085} + m_Layer: 0 + m_Name: Cylinder.006_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &758796084 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758796083} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &758796085 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758796083} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &758796086 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758796083} + m_Mesh: {fileID: -8980357973529549349, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &763127410 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 763127411} + - component: {fileID: 763127413} + - component: {fileID: 763127412} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &763127411 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 763127410} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 474214543} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &763127412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 763127410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &763127413 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 763127410} + m_CullTransparentMesh: 1 +--- !u!1 &785752918 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 785752919} + - component: {fileID: 785752922} + - component: {fileID: 785752921} + - component: {fileID: 785752920} + m_Layer: 5 + m_Name: hitInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &785752919 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 785752918} + 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: + - {fileID: 2138874024} + - {fileID: 1304207500} + m_Father: {fileID: 194652655} + m_RootOrder: 10 + 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: 70, y: -60} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &785752920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 785752918} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 785752921} + m_TextComponent: {fileID: 1304207501} + m_Placeholder: {fileID: 2138874025} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &785752921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 785752918} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &785752922 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 785752918} + m_CullTransparentMesh: 1 +--- !u!1 &793704200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 793704201} + - component: {fileID: 793704203} + - component: {fileID: 793704202} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &793704201 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 793704200} + 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: 717272751} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &793704202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 793704200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 20 +--- !u!222 &793704203 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 793704200} + m_CullTransparentMesh: 1 +--- !u!1 &795430070 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 795430071} + - component: {fileID: 795430073} + - component: {fileID: 795430072} + m_Layer: 0 + m_Name: painter_9 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &795430071 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 795430070} + 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: 201489786} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &795430072 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 795430070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &795430073 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 795430070} + m_CullTransparentMesh: 1 +--- !u!1 &796009155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 796009156} + - component: {fileID: 796009158} + - component: {fileID: 796009157} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &796009156 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 796009155} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 102944256} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &796009157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 796009155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &796009158 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 796009155} + m_CullTransparentMesh: 1 +--- !u!1 &800325710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 800325714} + - component: {fileID: 800325713} + - component: {fileID: 800325712} + - component: {fileID: 800325711} + m_Layer: 5 + m_Name: shootWithoutReadyAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &800325711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800325710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 800325712} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982031} + m_TargetAssemblyTypeName: RealTimeRewardChanger, Assembly-CSharp + m_MethodName: shootWithoutReadyRBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &800325712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800325710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &800325713 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800325710} + m_CullTransparentMesh: 1 +--- !u!224 &800325714 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800325710} + 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: + - {fileID: 2142133932} + m_Father: {fileID: 194652655} + m_RootOrder: 2 + 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: -40} + m_SizeDelta: {x: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &800843589 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 800843590} + m_Layer: 0 + m_Name: XAxis0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &800843590 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800843589} + 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: + - {fileID: 1470983556} + - {fileID: 495150915} + - {fileID: 474214543} + - {fileID: 221517429} + - {fileID: 2085253772} + m_Father: {fileID: 1213129649} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &801653728 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 801653729} + - component: {fileID: 801653731} + - component: {fileID: 801653730} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &801653729 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801653728} + 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: 491271242} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &801653730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801653728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &801653731 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801653728} + m_CullTransparentMesh: 1 +--- !u!1 &802051161 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 802051162} + - component: {fileID: 802051164} + - component: {fileID: 802051163} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &802051162 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802051161} + 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: 1635496871} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &802051163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802051161} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 10 +--- !u!222 &802051164 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802051161} + m_CullTransparentMesh: 1 +--- !u!1 &804560881 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 804560882} + - component: {fileID: 804560884} + - component: {fileID: 804560883} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &804560882 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804560881} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 595285976} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &804560883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804560881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &804560884 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804560881} + m_CullTransparentMesh: 1 +--- !u!1 &808684898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 808684899} + - component: {fileID: 808684901} + - component: {fileID: 808684900} + m_Layer: 0 + m_Name: axis_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &808684899 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 808684898} + 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: + - {fileID: 528506631} + - {fileID: 326762360} + m_Father: {fileID: 188889958} + m_RootOrder: 1 + 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: -93.37999, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &808684900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 808684898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &808684901 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 808684898} + m_CullTransparentMesh: 1 +--- !u!1 &810240985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 810240986} + - component: {fileID: 810240988} + - component: {fileID: 810240987} + m_Layer: 0 + m_Name: title_sub + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &810240986 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 810240985} + 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: + - {fileID: 1829879846} + - {fileID: 1364826441} + m_Father: {fileID: 1037816792} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -24} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &810240987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 810240985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &810240988 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 810240985} + m_CullTransparentMesh: 1 +--- !u!4 &811589416 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_PrefabInstance: {fileID: 1351715751} + m_PrefabAsset: {fileID: 0} +--- !u!1 &813204783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 813204784} + - component: {fileID: 813204787} + - component: {fileID: 813204786} + - component: {fileID: 813204785} + m_Layer: 5 + m_Name: enemyNumInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &813204784 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813204783} + 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: + - {fileID: 146100692} + - {fileID: 1678407469} + m_Father: {fileID: 313400500} + m_RootOrder: 1 + 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: 70, y: 0} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &813204785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813204783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 813204786} + m_TextComponent: {fileID: 1678407470} + m_Placeholder: {fileID: 146100693} + m_ContentType: 2 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 4 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 1 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &813204786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813204783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &813204787 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813204783} + m_CullTransparentMesh: 1 +--- !u!1 &815597365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 815597366} + - component: {fileID: 815597368} + - component: {fileID: 815597367} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &815597366 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 815597365} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1885190692} + m_RootOrder: 1 + 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: -116.666664, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &815597367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 815597365} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &815597368 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 815597365} + m_CullTransparentMesh: 1 +--- !u!1 &821367000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 821367001} + - component: {fileID: 821367003} + - component: {fileID: 821367002} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &821367001 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821367000} + 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: 858525493} + 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: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &821367002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821367000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &821367003 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821367000} + m_CullTransparentMesh: 1 +--- !u!1 &822320913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 822320914} + - component: {fileID: 822320916} + - component: {fileID: 822320915} + m_Layer: 0 + m_Name: Cube.019_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &822320914 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 822320913} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &822320915 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 822320913} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &822320916 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 822320913} + m_Mesh: {fileID: -5124059043551020927, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &838006000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 838006001} + - component: {fileID: 838006003} + - component: {fileID: 838006002} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &838006001 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 838006000} + 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: 1926093282} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &838006002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 838006000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x5 +--- !u!222 &838006003 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 838006000} + m_CullTransparentMesh: 1 +--- !u!1 &841599019 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 841599020} + - component: {fileID: 841599023} + - component: {fileID: 841599022} + - component: {fileID: 841599021} + m_Layer: 5 + m_Name: loseAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &841599020 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841599019} + 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: + - {fileID: 143942509} + m_Father: {fileID: 194652655} + m_RootOrder: 6 + 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: -120} + m_SizeDelta: {x: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &841599021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841599019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 841599022} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982031} + m_TargetAssemblyTypeName: RealTimeRewardChanger, Assembly-CSharp + m_MethodName: loseRBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &841599022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841599019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &841599023 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841599019} + m_CullTransparentMesh: 1 +--- !u!1 &844985473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 844985474} + - component: {fileID: 844985476} + - component: {fileID: 844985475} + m_Layer: 0 + m_Name: axis_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &844985474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844985473} + 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: + - {fileID: 1863263628} + - {fileID: 1602618187} + m_Father: {fileID: 545189441} + 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: -201.26, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &844985475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844985473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &844985476 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844985473} + m_CullTransparentMesh: 1 +--- !u!1 &849018138 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 849018139} + - component: {fileID: 849018141} + - component: {fileID: 849018140} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &849018139 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 849018138} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 858525493} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &849018140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 849018138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &849018141 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 849018138} + m_CullTransparentMesh: 1 +--- !u!1 &850708202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 850708203} + - component: {fileID: 850708205} + - component: {fileID: 850708204} + m_Layer: 0 + m_Name: Cube_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &850708203 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850708202} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &850708204 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850708202} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &850708205 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850708202} + m_Mesh: {fileID: -8126535997912153522, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &854133115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 854133116} + - component: {fileID: 854133118} + - component: {fileID: 854133117} + m_Layer: 5 + m_Name: shoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &854133116 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854133115} + 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: 215367152} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -677, y: -427.60004} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &854133117 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854133115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + m_FontSize: 25 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: shoot! +--- !u!222 &854133118 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854133115} + m_CullTransparentMesh: 1 +--- !u!1 &855143408 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 855143409} + m_Layer: 0 + m_Name: debug + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &855143409 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855143408} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 135550329} + m_Father: {fileID: 611641053} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0, y: 1} +--- !u!1 &858525492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 858525493} + - component: {fileID: 858525495} + - component: {fileID: 858525494} + m_Layer: 0 + m_Name: label_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &858525493 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858525492} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 821367001} + - {fileID: 849018139} + m_Father: {fileID: 141368731} + m_RootOrder: 1 + 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: -290, y: 150} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &858525494 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858525492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &858525495 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858525492} + m_CullTransparentMesh: 1 +--- !u!1 &861779682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 861779683} + m_Layer: 0 + m_Name: Empty.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &861779683 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861779682} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 1.2633394, z: 0.42388362} + m_LocalScale: {x: 27.770853, y: 27.770853, z: 27.770853} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 34 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &863884969 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 863884970} + m_Layer: 0 + m_Name: Wall + m_TagString: Wall + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &863884970 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863884969} + 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: + - {fileID: 1690705681} + - {fileID: 811589416} + - {fileID: 1365896253} + - {fileID: 698893709} + m_Father: {fileID: 1423193378} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &874554413 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 874554414} + - component: {fileID: 874554416} + - component: {fileID: 874554415} + m_Layer: 0 + m_Name: painter_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &874554414 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874554413} + 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: 1213129649} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &874554415 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874554413} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &874554416 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874554413} + m_CullTransparentMesh: 1 +--- !u!1 &878239539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 878239540} + - component: {fileID: 878239543} + - component: {fileID: 878239542} + - component: {fileID: 878239541} + m_Layer: 5 + m_Name: TimeLimitInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &878239540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878239539} + 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: + - {fileID: 984439407} + - {fileID: 1242777229} + m_Father: {fileID: 1587956790} + m_RootOrder: 1 + 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: 70, y: 0} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &878239541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878239539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 878239542} + m_TextComponent: {fileID: 1242777230} + m_Placeholder: {fileID: 984439408} + m_ContentType: 2 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 4 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 1 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &878239542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878239539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &878239543 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878239539} + m_CullTransparentMesh: 1 +--- !u!1 &878929883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 878929884} + - component: {fileID: 878929886} + - component: {fileID: 878929885} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &878929884 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878929883} + 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: 25903618} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &878929885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878929883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x1 +--- !u!222 &878929886 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878929883} + m_CullTransparentMesh: 1 +--- !u!1 &885432326 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 885432327} + - component: {fileID: 885432329} + - component: {fileID: 885432328} + m_Layer: 0 + m_Name: axis_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &885432327 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885432326} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1872392832} + - {fileID: 755709330} + m_Father: {fileID: 1519188529} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 27} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &885432328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885432326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &885432329 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885432326} + m_CullTransparentMesh: 1 +--- !u!1 &885839553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 885839554} + - component: {fileID: 885839556} + - component: {fileID: 885839555} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &885839554 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885839553} + 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: 1052249376} + 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: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &885839555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885839553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &885839556 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885839553} + m_CullTransparentMesh: 1 +--- !u!1 &886618690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 886618691} + - component: {fileID: 886618693} + - component: {fileID: 886618692} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &886618691 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 886618690} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1321112281} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &886618692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 886618690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &886618693 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 886618690} + m_CullTransparentMesh: 1 +--- !u!1 &890182308 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 890182309} + m_Layer: 0 + m_Name: YAxis0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &890182309 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890182308} + 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: + - {fileID: 1241541574} + - {fileID: 1907076005} + - {fileID: 717272751} + - {fileID: 907816953} + - {fileID: 1163442369} + - {fileID: 691081143} + - {fileID: 1725213616} + - {fileID: 962451837} + - {fileID: 928900839} + m_Father: {fileID: 611641053} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &890609530 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 890609531} + m_Layer: 0 + m_Name: debug + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &890609531 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890609530} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 453040567} + m_Father: {fileID: 201489786} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0, y: 1} +--- !u!1 &894156493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 894156494} + - component: {fileID: 894156496} + - component: {fileID: 894156495} + m_Layer: 0 + m_Name: axis_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &894156494 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894156493} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1744030218} + - {fileID: 16217189} + m_Father: {fileID: 1519188529} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -123} + m_SizeDelta: {x: 18.666668, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &894156495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894156493} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &894156496 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894156493} + m_CullTransparentMesh: 1 +--- !u!1 &894179988 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 894179989} + - component: {fileID: 894179991} + - component: {fileID: 894179990} + m_Layer: 5 + m_Name: Remain Time + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &894179989 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894179988} + 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: 1619861058} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -349.76, y: -87} + m_SizeDelta: {x: 188.9113, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &894179990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894179988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Remain Time:' +--- !u!222 &894179991 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894179988} + m_CullTransparentMesh: 1 +--- !u!1 &898640494 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 898640495} + - component: {fileID: 898640497} + - component: {fileID: 898640496} + m_Layer: 0 + m_Name: Cube.008_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &898640495 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 898640494} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &898640496 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 898640494} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &898640497 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 898640494} + m_Mesh: {fileID: -1813769483251343583, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &907816952 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 907816953} + - component: {fileID: 907816955} + - component: {fileID: 907816954} + m_Layer: 0 + m_Name: axis_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &907816953 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907816952} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1083382302} + - {fileID: 188789334} + m_Father: {fileID: 890182309} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -27} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &907816954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907816952} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &907816955 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907816952} + m_CullTransparentMesh: 1 +--- !u!1 &909785770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 909785771} + - component: {fileID: 909785773} + - component: {fileID: 909785772} + m_Layer: 0 + m_Name: title_sub + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &909785771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909785770} + 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: + - {fileID: 1797648751} + - {fileID: 1406686774} + m_Father: {fileID: 1406810794} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -24} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &909785772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909785770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &909785773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909785770} + m_CullTransparentMesh: 1 +--- !u!1 &909810156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 909810157} + - component: {fileID: 909810159} + - component: {fileID: 909810158} + m_Layer: 0 + m_Name: Cube.015_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &909810157 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909810156} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &909810158 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909810156} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &909810159 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909810156} + m_Mesh: {fileID: 8029401347676143002, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &928036774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 928036775} + - component: {fileID: 928036777} + - component: {fileID: 928036776} + m_Layer: 0 + m_Name: Cube.001_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &928036775 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928036774} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &928036776 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928036774} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &928036777 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928036774} + m_Mesh: {fileID: 1964926367440911766, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &928900838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 928900839} + - component: {fileID: 928900841} + - component: {fileID: 928900840} + m_Layer: 0 + m_Name: axis_8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &928900839 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928900838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 162289219} + - {fileID: 72077394} + m_Father: {fileID: 890182309} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 117} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &928900840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928900838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &928900841 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928900838} + m_CullTransparentMesh: 1 +--- !u!1 &932711991 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 932711992} + - component: {fileID: 932711994} + - component: {fileID: 932711993} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &932711992 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932711991} + 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: 1321112281} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &932711993 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932711991} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 30 +--- !u!222 &932711994 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932711991} + m_CullTransparentMesh: 1 +--- !u!1 &933702209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 933702210} + - component: {fileID: 933702212} + - component: {fileID: 933702211} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &933702210 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933702209} + 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: 453040567} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &933702211 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933702209} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &933702212 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933702209} + m_CullTransparentMesh: 1 +--- !u!1 &942607300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 942607301} + - component: {fileID: 942607303} + - component: {fileID: 942607302} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &942607301 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942607300} + 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: 1481370281} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &942607302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942607300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x4 +--- !u!222 &942607303 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942607300} + m_CullTransparentMesh: 1 +--- !u!1 &950921141 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 950921142} + - component: {fileID: 950921144} + - component: {fileID: 950921143} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &950921142 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950921141} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1884118930} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &950921143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950921141} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &950921144 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950921141} + m_CullTransparentMesh: 1 +--- !u!1 &951578498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 951578499} + - component: {fileID: 951578501} + - component: {fileID: 951578500} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &951578499 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 951578498} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 733816198} + m_RootOrder: 1 + 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: -114.888885, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &951578500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 951578498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &951578501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 951578498} + m_CullTransparentMesh: 1 +--- !u!1 &956206173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 956206174} + - component: {fileID: 956206176} + - component: {fileID: 956206175} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &956206174 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956206173} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1163442369} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &956206175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956206173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &956206176 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956206173} + m_CullTransparentMesh: 1 +--- !u!1 &958160270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 958160271} + - component: {fileID: 958160273} + - component: {fileID: 958160272} + m_Layer: 5 + m_Name: nonReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &958160271 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958160270} + 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: 509053162} + 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: 316.0601, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &958160272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958160270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'nonReward: ' +--- !u!222 &958160273 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958160270} + m_CullTransparentMesh: 1 +--- !u!1 &958496984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 958496985} + - component: {fileID: 958496987} + - component: {fileID: 958496986} + m_Layer: 0 + m_Name: Cylinder_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &958496985 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958496984} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: 0.049297333, y: 0.81470364, z: 2.4645214} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 33 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &958496986 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958496984} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &958496987 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958496984} + m_Mesh: {fileID: 1785010775391022613, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &962451836 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 962451837} + - component: {fileID: 962451839} + - component: {fileID: 962451838} + m_Layer: 0 + m_Name: axis_7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &962451837 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962451836} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2021417083} + - {fileID: 1045203207} + m_Father: {fileID: 890182309} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 101} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &962451838 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962451836} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &962451839 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962451836} + m_CullTransparentMesh: 1 +--- !u!1 &966834422 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 966834423} + - component: {fileID: 966834425} + - component: {fileID: 966834424} + m_Layer: 0 + m_Name: axis_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &966834423 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 966834422} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1439682604} + - {fileID: 119127066} + m_Father: {fileID: 1372129984} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 27} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &966834424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 966834422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &966834425 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 966834422} + m_CullTransparentMesh: 1 +--- !u!1 &967778546 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 967778547} + - component: {fileID: 967778549} + - component: {fileID: 967778548} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &967778547 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967778546} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 135550329} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &967778548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967778546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &967778549 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967778546} + m_CullTransparentMesh: 1 +--- !u!1 &971083480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 971083481} + - component: {fileID: 971083483} + - component: {fileID: 971083482} + m_Layer: 0 + m_Name: Cylinder.007_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &971083481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971083480} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &971083482 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971083480} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &971083483 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971083480} + m_Mesh: {fileID: -8872914256712105324, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &973809283 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 973809284} + - component: {fileID: 973809286} + - component: {fileID: 973809285} + m_Layer: 0 + m_Name: column2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &973809284 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 973809283} + 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: + - {fileID: 2045678517} + - {fileID: 1049117196} + m_Father: {fileID: 101801539} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &973809285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 973809283} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &973809286 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 973809283} + m_CullTransparentMesh: 1 +--- !u!1 &976372793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 976372794} + - component: {fileID: 976372796} + - component: {fileID: 976372795} + m_Layer: 0 + m_Name: Cylinder.004_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &976372794 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 976372793} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &976372795 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 976372793} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &976372796 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 976372793} + m_Mesh: {fileID: 2619653575200246064, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &984439406 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 984439407} + - component: {fileID: 984439409} + - component: {fileID: 984439408} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &984439407 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984439406} + 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: 878239540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &984439408 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984439406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: EnemyNum +--- !u!222 &984439409 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984439406} + m_CullTransparentMesh: 1 +--- !u!1 &997104154 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 997104155} + - component: {fileID: 997104157} + - component: {fileID: 997104156} + m_Layer: 0 + m_Name: painter_8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &997104155 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997104154} + 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: 201489786} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &997104156 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997104154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &997104157 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997104154} + m_CullTransparentMesh: 1 +--- !u!1 &1010425408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1010425409} + - component: {fileID: 1010425411} + - component: {fileID: 1010425410} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1010425409 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010425408} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 691081143} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1010425410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010425408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1010425411 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010425408} + m_CullTransparentMesh: 1 +--- !u!1 &1016459704 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1016459705} + - component: {fileID: 1016459707} + - component: {fileID: 1016459706} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1016459705 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016459704} + 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: 1148611240} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1016459706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016459704} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: winR +--- !u!222 &1016459707 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016459704} + m_CullTransparentMesh: 1 +--- !u!1 &1023339845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1023339846} + - component: {fileID: 1023339848} + - component: {fileID: 1023339847} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1023339846 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023339845} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1470983556} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1023339847 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023339845} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1023339848 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023339845} + m_CullTransparentMesh: 1 +--- !u!1 &1026481343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1026481344} + - component: {fileID: 1026481346} + - component: {fileID: 1026481345} + m_Layer: 0 + m_Name: Cube.012_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1026481344 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1026481343} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1026481345 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1026481343} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1026481346 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1026481343} + m_Mesh: {fileID: -1479511118752177815, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1031242399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1031242400} + - component: {fileID: 1031242401} + - component: {fileID: 1031242402} + m_Layer: 5 + m_Name: shootRewardData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1031242400 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1031242399} + 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: 497823044} + m_RootOrder: 1 + 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: -20} + m_SizeDelta: {x: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1031242401 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1031242399} + m_CullTransparentMesh: 1 +--- !u!114 &1031242402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1031242399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &1032063796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1032063797} + - component: {fileID: 1032063799} + - component: {fileID: 1032063798} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1032063797 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032063796} + 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: 2085253772} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1032063798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032063796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x5 +--- !u!222 &1032063799 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032063796} + m_CullTransparentMesh: 1 +--- !u!1 &1032891061 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1032891062} + - component: {fileID: 1032891064} + - component: {fileID: 1032891063} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1032891062 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032891061} + 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: 1414673186} + 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: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1032891063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032891061} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1032891064 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032891061} + m_CullTransparentMesh: 1 +--- !u!1 &1037816791 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1037816792} + m_Layer: 0 + m_Name: Title0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1037816792 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1037816791} + 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: + - {fileID: 733816198} + - {fileID: 810240986} + m_Father: {fileID: 611641053} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &1045203206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1045203207} + - component: {fileID: 1045203209} + - component: {fileID: 1045203208} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1045203207 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045203206} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 962451837} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1045203208 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045203206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1045203209 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045203206} + m_CullTransparentMesh: 1 +--- !u!1 &1045368338 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1045368339} + - component: {fileID: 1045368341} + - component: {fileID: 1045368340} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1045368339 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045368338} + 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: 1958294038} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1045368340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045368338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &1045368341 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045368338} + m_CullTransparentMesh: 1 +--- !u!1 &1049117195 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1049117196} + - component: {fileID: 1049117198} + - component: {fileID: 1049117197} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1049117196 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049117195} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 973809284} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1049117197 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049117195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1049117198 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049117195} + m_CullTransparentMesh: 1 +--- !u!1 &1052249375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1052249376} + - component: {fileID: 1052249378} + - component: {fileID: 1052249377} + m_Layer: 0 + m_Name: label_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1052249376 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052249375} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 885839554} + - {fileID: 1685871917} + m_Father: {fileID: 1792069383} + m_RootOrder: 1 + 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: -290, y: 150} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1052249377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052249375} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1052249378 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052249375} + m_CullTransparentMesh: 1 +--- !u!1 &1053490560 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053490561} + - component: {fileID: 1053490565} + - component: {fileID: 1053490564} + - component: {fileID: 1053490563} + - component: {fileID: 1053490562} + m_Layer: 0 + m_Name: view + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1053490561 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053490560} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1234953724} + - {fileID: 737756490} + m_Father: {fileID: 1439973039} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1053490562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053490560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1053490563 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053490560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_EffectDistance: {x: 2, y: -2} + m_UseGraphicAlpha: 0 +--- !u!114 &1053490564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053490560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1053490565 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053490560} + m_CullTransparentMesh: 1 +--- !u!1 &1054491405 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1054491406} + - component: {fileID: 1054491409} + - component: {fileID: 1054491408} + - component: {fileID: 1054491407} + - component: {fileID: 1054491410} + m_Layer: 0 + m_Name: AgentCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1054491406 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054491405} + 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: 629870343} + m_RootOrder: 2 + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1054491407 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054491405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1054491408 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054491405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!223 &1054491409 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054491405} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &1054491410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054491405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 812dfed7ee1d09c4fa7c3ed8372f54ae, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1069784062 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1069784063} + m_Layer: 0 + m_Name: Tooltip0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1069784063 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1069784062} + 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: + - {fileID: 1310028838} + - {fileID: 355301579} + m_Father: {fileID: 201489786} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1083382301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1083382302} + - component: {fileID: 1083382304} + - component: {fileID: 1083382303} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1083382302 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083382301} + 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: 907816953} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1083382303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083382301} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 30 +--- !u!222 &1083382304 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1083382301} + m_CullTransparentMesh: 1 +--- !u!1 &1107178052 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1107178053} + - component: {fileID: 1107178055} + - component: {fileID: 1107178054} + m_Layer: 0 + m_Name: painter_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1107178053 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107178052} + 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: 201489786} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1107178054 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107178052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1107178055 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107178052} + m_CullTransparentMesh: 1 +--- !u!1 &1111257557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1111257558} + - component: {fileID: 1111257560} + - component: {fileID: 1111257559} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1111257558 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1111257557} + 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: 1832129955} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1111257559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1111257557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1111257560 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1111257557} + m_CullTransparentMesh: 1 +--- !u!1 &1113647589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1113647590} + - component: {fileID: 1113647592} + - component: {fileID: 1113647591} + m_Layer: 0 + m_Name: axis_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1113647590 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113647589} + 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: + - {fileID: 1811785218} + - {fileID: 600869055} + m_Father: {fileID: 545189441} + m_RootOrder: 1 + 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: -93.37999, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1113647591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113647589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1113647592 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113647589} + m_CullTransparentMesh: 1 +--- !u!1 &1133378794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1133378795} + - component: {fileID: 1133378797} + - component: {fileID: 1133378796} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1133378795 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1133378794} + 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: 595285976} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1133378796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1133378794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 10 +--- !u!222 &1133378797 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1133378794} + m_CullTransparentMesh: 1 +--- !u!1 &1148611239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1148611240} + - component: {fileID: 1148611243} + - component: {fileID: 1148611242} + - component: {fileID: 1148611241} + m_Layer: 5 + m_Name: winInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1148611240 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148611239} + 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: + - {fileID: 1016459705} + - {fileID: 648100779} + m_Father: {fileID: 194652655} + m_RootOrder: 12 + 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: 70, y: -100} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1148611241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148611239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1148611242} + m_TextComponent: {fileID: 648100780} + m_Placeholder: {fileID: 1016459706} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1148611242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148611239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1148611243 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148611239} + m_CullTransparentMesh: 1 +--- !u!1 &1163442368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1163442369} + - component: {fileID: 1163442371} + - component: {fileID: 1163442370} + m_Layer: 0 + m_Name: axis_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1163442369 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1163442368} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 42608552} + - {fileID: 956206174} + m_Father: {fileID: 890182309} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 5} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1163442370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1163442368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1163442371 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1163442368} + m_CullTransparentMesh: 1 +--- !u!1 &1175413811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1175413812} + m_Layer: 0 + m_Name: item0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1175413812 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1175413811} + 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: + - {fileID: 23283623} + - {fileID: 1927392549} + - {fileID: 491271242} + m_Father: {fileID: 1310028838} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 25} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &1179767047 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179767048} + - component: {fileID: 1179767050} + - component: {fileID: 1179767049} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1179767048 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179767047} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 518493904} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1179767049 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179767047} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1179767050 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179767047} + m_CullTransparentMesh: 1 +--- !u!1001 &1183749942 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 863884970} + m_Modifications: + - target: {fileID: 1225757330756864865, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 647063595} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.x + value: -10 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.z + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7581380566783588035, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 647063595} + - target: {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 647063595} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Name + value: 1x30Cube + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_TagString + value: Wall + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_StaticEditorFlags + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: db65a59014728b245830bf6269cbbfa6, type: 3} +--- !u!1 &1186343260 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1186343261} + - component: {fileID: 1186343263} + - component: {fileID: 1186343262} + m_Layer: 0 + m_Name: axis_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1186343261 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186343260} + 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: + - {fileID: 1615325406} + - {fileID: 645014596} + m_Father: {fileID: 188889958} + m_RootOrder: 2 + 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: 14.5, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1186343262 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186343260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1186343263 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186343260} + m_CullTransparentMesh: 1 +--- !u!1 &1188398129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1188398130} + - component: {fileID: 1188398133} + - component: {fileID: 1188398132} + - component: {fileID: 1188398131} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1188398130 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1188398129} + 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: + - {fileID: 1469925108} + m_Father: {fileID: 189965854} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!114 &1188398131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1188398129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1742366328} + m_HandleRect: {fileID: 1742366327} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1188398132 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1188398129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1188398133 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1188398129} + m_CullTransparentMesh: 1 +--- !u!1 &1199612231 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199612232} + - component: {fileID: 1199612234} + - component: {fileID: 1199612233} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1199612232 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199612231} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 717272751} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1199612233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199612231} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1199612234 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199612231} + m_CullTransparentMesh: 1 +--- !u!1 &1213032257 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1213032258} + - component: {fileID: 1213032260} + - component: {fileID: 1213032259} + m_Layer: 0 + m_Name: painter_8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1213032258 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1213032257} + 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: 611641053} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1213032259 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1213032257} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1213032260 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1213032257} + m_CullTransparentMesh: 1 +--- !u!1 &1213129646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1213129649} + - component: {fileID: 1213129648} + - component: {fileID: 1213129647} + m_Layer: 0 + m_Name: RealTimeRewardChart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1213129647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1213129646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4f38bd00b4648c448cabfc167538f7c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_EnableTextMeshPro: 0 + m_DebugInfo: + m_Show: 1 + m_ShowDebugInfo: 0 + m_ShowAllChartObject: 0 + m_FoldSeries: 0 + m_LabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0.1254902, g: 0.1254902, b: 0.1254902, a: 0.6666667} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontSize: 18 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_ChartName: + m_Theme: + m_Show: 1 + m_SharedTheme: {fileID: 11400000, guid: e1dc23a10de1e4c5dbfbaf74c4dfd218, type: 2} + m_TransparentBackground: 1 + m_EnableCustomTheme: 0 + m_CustomFont: {fileID: 0} + m_CustomBackgroundColor: + serializedVersion: 2 + rgba: 3487029 + m_CustomColorPalette: [] + m_Settings: + m_Show: 1 + m_MaxPainter: 10 + m_ReversePainter: 0 + m_BasePainterMaterial: {fileID: 0} + m_SeriePainterMaterial: {fileID: 0} + m_TopPainterMaterial: {fileID: 0} + m_LineSmoothStyle: 3 + m_LineSmoothness: 2 + m_LineSegmentDistance: 3 + m_CicleSmoothness: 2 + m_LegendIconLineWidth: 2 + m_LegendIconCornerRadius: + - 0 + - 0.25 + - 0.25 + - 0.25 + m_AngleAxes: [] + m_Backgrounds: [] + m_DataZooms: [] + m_Grids: + - m_Show: 1 + m_Left: 0.06 + m_Right: 0.01 + m_Top: 0.11 + m_Bottom: 0.09 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_ShowBorder: 1 + m_BorderWidth: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 0 + m_Legends: [] + m_MarkLines: [] + m_MarkAreas: [] + m_Polars: [] + m_Radars: [] + m_RadiusAxes: [] + m_Titles: + - m_Show: 1 + m_Text: RealTimeRewardChart + m_SubText: + m_LabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_SubLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_ItemGap: 0 + m_Location: + m_Align: 2 + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Tooltips: + - m_Show: 1 + m_Type: 0 + m_Trigger: 1 + m_ItemFormatter: + m_TitleFormatter: + m_Marker: "\u25CF" + m_FixedWidth: 0 + m_FixedHeight: 0 + m_MinWidth: 0 + m_MinHeight: 0 + m_NumericFormatter: + m_PaddingLeftRight: 10 + m_PaddingTopBottom: 10 + m_IgnoreDataShow: 0 + m_IgnoreDataDefaultContent: '-' + m_ShowContent: 1 + m_AlwayShowContent: 0 + m_Offset: {x: 18, y: -25} + m_BackgroundImage: {fileID: 0} + m_BackgroundType: 0 + m_BackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_BorderWidth: 2 + m_FixedXEnable: 0 + m_FixedX: 0 + m_FixedYEnable: 0 + m_FixedY: 0 + m_TitleHeight: 25 + m_ItemHeight: 25 + m_BorderColor: + serializedVersion: 2 + rgba: 4293322470 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_IndicatorLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_TitleLabelStyle: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + m_ContentLabelStyles: + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 5 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 20 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 3 + - m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 0 + m_Right: 0 + m_Left: 0 + m_Bottom: 0 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 5 + m_VisualMaps: [] + m_XAxes: + - m_Show: 1 + m_Type: 1 + m_MinMaxType: 0 + m_GridIndex: 0 + m_PolarIndex: 0 + m_ParallelIndex: 0 + m_Position: 2 + m_Offset: 0 + m_Min: 0 + m_Max: 0 + m_SplitNumber: 0 + m_Interval: 0 + m_BoundaryGap: 1 + m_MaxCache: 0 + m_LogBase: 10 + m_LogBaseE: 0 + m_CeilRate: 0 + m_Inverse: 0 + m_Clockwise: 1 + m_InsertDataToHead: 0 + m_Icons: [] + m_Data: + - x1 + - x2 + - x3 + - x4 + - x5 + m_AxisLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_OnZero: 1 + m_ShowArrow: 0 + m_Arrow: + m_Width: 10 + m_Height: 15 + m_Offset: 0 + m_Dent: 3 + m_Color: + serializedVersion: 2 + rgba: 0 + m_AxisName: + m_Show: 0 + m_Name: axisName + m_LabelStyle: + m_Show: 1 + m_Position: 10 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_AxisTick: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_AlignWithLabel: 0 + m_Inside: 0 + m_ShowStartTick: 1 + m_ShowEndTick: 1 + m_Distance: 0 + m_SplitNumber: 0 + m_AutoColor: 0 + m_AxisLabel: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 8 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_Interval: 0 + m_Inside: 0 + m_ShowAsPositiveNumber: 0 + m_OnZero: 0 + m_ShowStartLabel: 1 + m_ShowEndLabel: 1 + m_TextLimit: + m_Enable: 1 + m_MaxWidth: 0 + m_Gap: 1 + m_Suffix: ... + m_SplitLine: + m_Show: 0 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Interval: 0 + m_Distance: 0 + m_AutoColor: 0 + m_SplitArea: + m_Show: 0 + m_Color: [] + m_YAxes: + - m_Show: 1 + m_Type: 0 + m_MinMaxType: 0 + m_GridIndex: 0 + m_PolarIndex: 0 + m_ParallelIndex: 0 + m_Position: 0 + m_Offset: 0 + m_Min: 0 + m_Max: 0 + m_SplitNumber: 0 + m_Interval: 0 + m_BoundaryGap: 0 + m_MaxCache: 0 + m_LogBase: 10 + m_LogBaseE: 0 + m_CeilRate: 0 + m_Inverse: 0 + m_Clockwise: 1 + m_InsertDataToHead: 0 + m_Icons: [] + m_Data: [] + m_AxisLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_OnZero: 1 + m_ShowArrow: 0 + m_Arrow: + m_Width: 10 + m_Height: 15 + m_Offset: 0 + m_Dent: 3 + m_Color: + serializedVersion: 2 + rgba: 0 + m_AxisName: + m_Show: 0 + m_Name: axisName + m_LabelStyle: + m_Show: 1 + m_Position: 10 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 0 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_AxisTick: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_AlignWithLabel: 0 + m_Inside: 0 + m_ShowStartTick: 1 + m_ShowEndTick: 1 + m_Distance: 0 + m_SplitNumber: 0 + m_AutoColor: 0 + m_AxisLabel: + m_Show: 1 + m_Position: 0 + m_AutoOffset: 0 + m_Offset: {x: 0, y: 0, z: 0} + m_Rotate: 0 + m_Distance: 8 + m_Formatter: + m_NumericFormatter: + m_Width: 0 + m_Height: 0 + m_Icon: + m_Show: 0 + m_Layer: 0 + m_Align: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Width: 20 + m_Height: 20 + m_Offset: {x: 0, y: 0, z: 0} + m_AutoHideWhenLabelEmpty: 0 + m_Background: + m_Show: 1 + m_Sprite: {fileID: 0} + m_Type: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Width: 0 + m_Height: 0 + m_TextPadding: + m_Show: 1 + m_Top: 2 + m_Right: 4 + m_Left: 4 + m_Bottom: 2 + m_TextStyle: + m_Show: 1 + m_Font: {fileID: 0} + m_AutoWrap: 0 + m_AutoAlign: 1 + m_Rotate: 0 + m_AutoColor: 0 + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_LineSpacing: 1 + m_Alignment: 4 + m_Interval: 0 + m_Inside: 0 + m_ShowAsPositiveNumber: 0 + m_OnZero: 0 + m_ShowStartLabel: 1 + m_ShowEndLabel: 1 + m_TextLimit: + m_Enable: 0 + m_MaxWidth: 0 + m_Gap: 1 + m_Suffix: ... + m_SplitLine: + m_Show: 1 + m_LineStyle: + m_Show: 1 + m_Type: 5 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Interval: 0 + m_Distance: 0 + m_AutoColor: 0 + m_SplitArea: + m_Show: 0 + m_Color: [] + m_SingleAxes: [] + m_Parallels: [] + m_ParallelAxes: [] + m_Comments: [] + m_SerieBars: [] + m_SerieCandlesticks: [] + m_SerieEffectScatters: [] + m_SerieHeatmaps: [] + m_SerieLines: + - m_Labels: [] + m_LabelLines: [] + m_EndLabels: [] + m_LineArrows: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Index: 0 + m_Show: 1 + m_CoordSystem: GridCoord + m_SerieType: Line + m_SerieName: serie0 + m_Stack: + m_XAxisIndex: 0 + m_YAxisIndex: 0 + m_RadarIndex: 0 + m_VesselIndex: 0 + m_PolarIndex: 0 + m_SingleAxisIndex: 0 + m_ParallelIndex: 0 + m_MinShow: 0 + m_MaxShow: 0 + m_MaxCache: 0 + m_SampleDist: 0 + m_SampleType: 1 + m_SampleAverage: 0 + m_LineType: 0 + m_BarType: 0 + m_BarPercentStack: 0 + m_BarWidth: 0 + m_BarGap: 0.1 + m_BarZebraWidth: 4 + m_BarZebraGap: 2 + m_Min: 0 + m_Max: 0 + m_MinSize: 0 + m_MaxSize: 1 + m_StartAngle: 0 + m_EndAngle: 0 + m_MinAngle: 0 + m_Clockwise: 1 + m_RoundCap: 0 + m_SplitNumber: 0 + m_ClickOffset: 1 + m_RoseType: 0 + m_Gap: 0 + m_Center: + - 0.5 + - 0.48 + m_Radius: + - 0 + - 0.28 + m_ShowDataDimension: 1 + m_ShowDataName: 0 + m_Clip: 0 + m_Ignore: 0 + m_IgnoreValue: 0 + m_IgnoreLineBreak: 0 + m_ShowAsPositiveNumber: 0 + m_Large: 1 + m_LargeThreshold: 200 + m_AvoidLabelOverlap: 0 + m_RadarType: 0 + m_PlaceHolder: 0 + m_DataSortType: 2 + m_Orient: 1 + m_Align: 0 + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_InsertDataToHead: 0 + m_LineStyle: + m_Show: 1 + m_Type: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_Width: 0 + m_Length: 0 + m_Opacity: 1 + m_Symbol: + m_Show: 1 + m_Type: 3 + m_Size: 0 + m_Gap: 0 + m_Width: 0 + m_Height: 0 + m_Offset: {x: 0, y: 0} + m_Image: {fileID: 0} + m_ImageType: 0 + m_Color: + serializedVersion: 2 + rgba: 0 + m_SizeType: 0 + m_SelectedSize: 0 + m_DataIndex: 1 + m_DataScale: 1 + m_SelectedDataScale: 1.5 + m_StartIndex: 0 + m_Interval: 0 + m_ForceShowLast: 0 + m_Repeat: 0 + m_Animation: + m_Enable: 0 + m_Type: 0 + m_Easting: 0 + m_Threshold: 2000 + m_FadeInDuration: 1000 + m_FadeInDelay: 0 + m_FadeOutDuration: 1000 + m_FadeOutDelay: 0 + m_DataChangeEnable: 1 + m_DataChangeDuration: 500 + m_ActualDuration: 0 + m_ItemStyle: + m_Show: 1 + m_Color: + serializedVersion: 2 + rgba: 0 + m_Color0: + serializedVersion: 2 + rgba: 0 + m_ToColor: + serializedVersion: 2 + rgba: 0 + m_ToColor2: + serializedVersion: 2 + rgba: 0 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_BackgroundWidth: 0 + m_CenterColor: + serializedVersion: 2 + rgba: 0 + m_CenterGap: 0 + m_BorderWidth: 0 + m_BorderGap: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 0 + m_BorderColor0: + serializedVersion: 2 + rgba: 0 + m_BorderToColor: + serializedVersion: 2 + rgba: 0 + m_Opacity: 1 + m_ItemMarker: + m_ItemFormatter: + m_NumericFormatter: + m_CornerRadius: + - 0 + - 0 + - 0 + - 0 + m_Data: + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 0 + - 52 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 1 + - 76 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 2 + - 12 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 3 + - 23 + - m_Index: 0 + m_Name: + m_Id: + m_ParentId: + m_Ignore: 0 + m_Selected: 0 + m_Radius: 0 + m_ItemStyles: [] + m_Labels: [] + m_LabelLines: [] + m_Symbols: [] + m_LineStyles: [] + m_AreaStyles: [] + m_TitleStyles: [] + m_EmphasisItemStyles: [] + m_EmphasisLabels: [] + m_EmphasisLabelLines: [] + m_Data: + - 4 + - 15 + m_SeriePies: [] + m_SerieRadars: [] + m_SerieRings: [] + m_SerieScatters: [] + m_SerieParallels: [] + m_SerieSimplifiedLines: [] + m_SerieSimplifiedBars: [] + m_SerieSimplifiedCandlesticks: [] +--- !u!222 &1213129648 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1213129646} + m_CullTransparentMesh: 1 +--- !u!224 &1213129649 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1213129646} + 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: + - {fileID: 1351210039} + - {fileID: 1636289228} + - {fileID: 1445443961} + - {fileID: 2039575183} + - {fileID: 637116273} + - {fileID: 874554414} + - {fileID: 472685523} + - {fileID: 1238526725} + - {fileID: 1570055073} + - {fileID: 1768275352} + - {fileID: 216871883} + - {fileID: 1466325945} + - {fileID: 1872357242} + - {fileID: 800843590} + - {fileID: 1372129984} + - {fileID: 380015112} + - {fileID: 1439973039} + - {fileID: 625252342} + m_Father: {fileID: 268923344} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 75, y: -50} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1215051367 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1215051368} + - component: {fileID: 1215051370} + - component: {fileID: 1215051369} + m_Layer: 0 + m_Name: Cube.003_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1215051368 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215051367} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1215051369 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215051367} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1215051370 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215051367} + m_Mesh: {fileID: 5488722605592516591, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1233692426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1233692427} + - component: {fileID: 1233692430} + - component: {fileID: 1233692429} + - component: {fileID: 1233692428} + m_Layer: 0 + m_Name: Chara + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1233692427 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233692426} + 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: 629870343} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &1233692428 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233692426} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1233692429 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233692426} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1233692430 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233692426} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1234285012 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1234285013} + - component: {fileID: 1234285015} + - component: {fileID: 1234285014} + m_Layer: 0 + m_Name: painter_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1234285013 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234285012} + 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: 611641053} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1234285014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234285012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1234285015 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234285012} + m_CullTransparentMesh: 1 +--- !u!1 &1234601877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1234601878} + - component: {fileID: 1234601880} + - component: {fileID: 1234601879} + m_Layer: 0 + m_Name: axis_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1234601878 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234601877} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1393325965} + - {fileID: 1489565676} + m_Father: {fileID: 1372129984} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -123} + m_SizeDelta: {x: 18.666668, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1234601879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234601877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1234601880 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234601877} + m_CullTransparentMesh: 1 +--- !u!1 &1234953723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1234953724} + - component: {fileID: 1234953726} + - component: {fileID: 1234953725} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1234953724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234953723} + 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: + - {fileID: 133317626} + - {fileID: 1802288088} + m_Father: {fileID: 1053490561} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1234953725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234953723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1234953726 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234953723} + m_CullTransparentMesh: 1 +--- !u!1 &1235656833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1235656834} + - component: {fileID: 1235656836} + - component: {fileID: 1235656835} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1235656834 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1235656833} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 200583463} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1235656835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1235656833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1235656836 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1235656833} + m_CullTransparentMesh: 1 +--- !u!1 &1236075752 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1236075753} + - component: {fileID: 1236075755} + - component: {fileID: 1236075754} + m_Layer: 0 + m_Name: painter_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1236075753 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236075752} + 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: 611641053} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1236075754 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236075752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1236075755 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236075752} + m_CullTransparentMesh: 1 +--- !u!1 &1238526724 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1238526725} + - component: {fileID: 1238526727} + - component: {fileID: 1238526726} + m_Layer: 0 + m_Name: painter_6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1238526725 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238526724} + 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: 1213129649} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1238526726 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238526724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1238526727 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238526724} + m_CullTransparentMesh: 1 +--- !u!1 &1241541573 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1241541574} + - component: {fileID: 1241541576} + - component: {fileID: 1241541575} + m_Layer: 0 + m_Name: axis_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1241541574 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241541573} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1867950664} + - {fileID: 191139043} + m_Father: {fileID: 890182309} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -123} + m_SizeDelta: {x: 18.666668, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1241541575 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241541573} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1241541576 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241541573} + m_CullTransparentMesh: 1 +--- !u!1 &1242777228 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242777229} + - component: {fileID: 1242777231} + - component: {fileID: 1242777230} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1242777229 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242777228} + 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: 878239540} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1242777230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242777228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1242777231 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242777228} + m_CullTransparentMesh: 1 +--- !u!1 &1256664428 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1256664429} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1256664429 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1256664428} + 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: 1876561007} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1265073923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1265073924} + - component: {fileID: 1265073926} + - component: {fileID: 1265073925} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1265073924 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265073923} + 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: 1927392549} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1265073925 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265073923} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1265073926 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265073923} + m_CullTransparentMesh: 1 +--- !u!1 &1266400766 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1266400767} + - component: {fileID: 1266400768} + - component: {fileID: 1266400769} + m_Layer: 5 + m_Name: remainEnemyData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1266400767 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266400766} + 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: 1619861058} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -220.3, y: -65} + m_SizeDelta: {x: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1266400768 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266400766} + m_CullTransparentMesh: 1 +--- !u!114 &1266400769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266400766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &1273108961 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1273108962} + - component: {fileID: 1273108964} + - component: {fileID: 1273108963} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1273108962 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273108961} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 358674451} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1273108963 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273108961} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1273108964 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273108961} + m_CullTransparentMesh: 1 +--- !u!1 &1276826917 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1276826918} + - component: {fileID: 1276826920} + - component: {fileID: 1276826919} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1276826918 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276826917} + 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: 2088978190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1276826919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276826917} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1276826920 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276826917} + m_CullTransparentMesh: 1 +--- !u!1 &1282464051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1282464052} + - component: {fileID: 1282464054} + - component: {fileID: 1282464053} + m_Layer: 0 + m_Name: axis_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1282464052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282464051} + 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: + - {fileID: 1935182773} + - {fileID: 1319598733} + m_Father: {fileID: 188889958} + 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: 122.380005, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1282464053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282464051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1282464054 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282464051} + m_CullTransparentMesh: 1 +--- !u!1 &1283581648 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1283581649} + - component: {fileID: 1283581651} + - component: {fileID: 1283581650} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1283581649 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283581648} + 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: + - {fileID: 1517139709} + - {fileID: 571903141} + m_Father: {fileID: 1872357242} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 237.33333, y: 30.666666} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1283581650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283581648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1283581651 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283581648} + m_CullTransparentMesh: 1 +--- !u!1 &1292240547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1292240548} + - component: {fileID: 1292240550} + - component: {fileID: 1292240549} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1292240548 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292240547} + 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: 269085594} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1292240549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292240547} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1292240550 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292240547} + m_CullTransparentMesh: 1 +--- !u!1 &1294052617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1294052618} + - component: {fileID: 1294052620} + - component: {fileID: 1294052619} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1294052618 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294052617} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 453040567} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1294052619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294052617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1294052620 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294052617} + m_CullTransparentMesh: 1 +--- !u!1 &1304207499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1304207500} + - component: {fileID: 1304207502} + - component: {fileID: 1304207501} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1304207500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304207499} + 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: 785752919} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1304207501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304207499} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1304207502 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304207499} + m_CullTransparentMesh: 1 +--- !u!1 &1304688935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1304688936} + - component: {fileID: 1304688938} + - component: {fileID: 1304688937} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1304688936 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304688935} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1927392549} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1304688937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304688935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1304688938 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304688935} + m_CullTransparentMesh: 1 +--- !u!1 &1310028837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1310028838} + - component: {fileID: 1310028842} + - component: {fileID: 1310028841} + - component: {fileID: 1310028840} + - component: {fileID: 1310028839} + m_Layer: 0 + m_Name: view + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1310028838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1310028837} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1842428954} + - {fileID: 1175413812} + m_Father: {fileID: 1069784063} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1310028839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1310028837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1310028840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1310028837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_EffectDistance: {x: 2, y: -2} + m_UseGraphicAlpha: 0 +--- !u!114 &1310028841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1310028837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1310028842 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1310028837} + m_CullTransparentMesh: 1 +--- !u!1 &1311450672 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1311450673} + - component: {fileID: 1311450675} + - component: {fileID: 1311450674} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1311450673 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311450672} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 221517429} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1311450674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311450672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1311450675 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311450672} + m_CullTransparentMesh: 1 +--- !u!1 &1319598732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1319598733} + - component: {fileID: 1319598735} + - component: {fileID: 1319598734} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1319598733 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319598732} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1282464052} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1319598734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319598732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1319598735 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319598732} + m_CullTransparentMesh: 1 +--- !u!1 &1321112280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1321112281} + - component: {fileID: 1321112283} + - component: {fileID: 1321112282} + m_Layer: 0 + m_Name: axis_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1321112281 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1321112280} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 932711992} + - {fileID: 886618691} + m_Father: {fileID: 1372129984} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -33} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1321112282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1321112280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1321112283 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1321112280} + m_CullTransparentMesh: 1 +--- !u!1001 &1342743755 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 863884970} + m_Modifications: + - target: {fileID: 1225757330756864865, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1995503638} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.z + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7581380566783588035, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1995503638} + - target: {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1995503638} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Name + value: 1x30Cube + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_TagString + value: Wall + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_StaticEditorFlags + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: db65a59014728b245830bf6269cbbfa6, type: 3} +--- !u!1 &1344447591 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1344447592} + - component: {fileID: 1344447594} + - component: {fileID: 1344447593} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1344447592 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344447591} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 648258324} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1344447593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344447591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1344447594 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344447591} + m_CullTransparentMesh: 1 +--- !u!1 &1351210038 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1351210039} + - component: {fileID: 1351210041} + - component: {fileID: 1351210040} + m_Layer: 0 + m_Name: painter_b + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1351210039 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1351210038} + 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: 1213129649} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1351210040 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1351210038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1351210041 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1351210038} + m_CullTransparentMesh: 1 +--- !u!1001 &1351715751 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 863884970} + m_Modifications: + - target: {fileID: 1225757330756864865, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1821328656} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.x + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.z + value: -29 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7581380566783588035, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1821328656} + - target: {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1821328656} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Name + value: 1x30Cube + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_TagString + value: Wall + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_StaticEditorFlags + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: db65a59014728b245830bf6269cbbfa6, type: 3} +--- !u!1 &1356798914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356798915} + - component: {fileID: 1356798917} + - component: {fileID: 1356798916} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1356798915 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356798914} + 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: 568499057} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1356798916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356798914} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x5 +--- !u!222 &1356798917 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356798914} + m_CullTransparentMesh: 1 +--- !u!1 &1358647291 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1358647292} + - component: {fileID: 1358647294} + - component: {fileID: 1358647293} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1358647292 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1358647291} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2009713366} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1358647293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1358647291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1358647294 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1358647291} + m_CullTransparentMesh: 1 +--- !u!1 &1364826440 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1364826441} + - component: {fileID: 1364826443} + - component: {fileID: 1364826442} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1364826441 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364826440} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 810240986} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1364826442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364826440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1364826443 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364826440} + m_CullTransparentMesh: 1 +--- !u!4 &1365896253 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_PrefabInstance: {fileID: 1183749942} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1369105107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1369105108} + - component: {fileID: 1369105109} + - component: {fileID: 1369105110} + m_Layer: 5 + m_Name: killRewardData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1369105108 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1369105107} + 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: 497823044} + m_RootOrder: 4 + 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: -80} + m_SizeDelta: {x: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1369105109 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1369105107} + m_CullTransparentMesh: 1 +--- !u!114 &1369105110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1369105107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &1372129983 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1372129984} + m_Layer: 0 + m_Name: YAxis0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1372129984 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372129983} + 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: + - {fileID: 1234601878} + - {fileID: 595285976} + - {fileID: 102944256} + - {fileID: 1321112281} + - {fileID: 1399926665} + - {fileID: 966834423} + - {fileID: 326222085} + - {fileID: 1414640702} + - {fileID: 200583463} + m_Father: {fileID: 1213129649} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1376895280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1376895282} + - component: {fileID: 1376895281} + m_Layer: 0 + m_Name: GameController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1376895281 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376895280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a8fb4d12d4b8fc4784f3e142e7fdcf8, type: 3} + m_Name: + m_EditorClassIdentifier: + Agent: {fileID: 629870337} +--- !u!4 &1376895282 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376895280} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 340.72153, y: 228.94073, z: 274.50043} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1380521380 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1380521381} + - component: {fileID: 1380521383} + - component: {fileID: 1380521382} + m_Layer: 0 + m_Name: painter_7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1380521381 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380521380} + 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: 201489786} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1380521382 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380521380} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1380521383 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380521380} + m_CullTransparentMesh: 1 +--- !u!1 &1382603267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1382603270} + - component: {fileID: 1382603269} + - component: {fileID: 1382603268} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1382603268 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1382603267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1382603269 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1382603267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1382603270 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1382603267} + 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} +--- !u!1 &1392249416 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1392249417} + - component: {fileID: 1392249419} + - component: {fileID: 1392249418} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1392249417 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392249416} + 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: 200583463} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1392249418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392249416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 80 +--- !u!222 &1392249419 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392249416} + m_CullTransparentMesh: 1 +--- !u!1 &1393325964 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1393325965} + - component: {fileID: 1393325967} + - component: {fileID: 1393325966} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1393325965 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1393325964} + 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: 1234601878} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 10.666667, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1393325966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1393325964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 0 +--- !u!222 &1393325967 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1393325964} + m_CullTransparentMesh: 1 +--- !u!1 &1397091674 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1397091675} + - component: {fileID: 1397091677} + - component: {fileID: 1397091676} + m_Layer: 0 + m_Name: painter_b + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1397091675 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1397091674} + 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: 201489786} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1397091676 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1397091674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1397091677 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1397091674} + m_CullTransparentMesh: 1 +--- !u!1 &1399697879 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399697880} + - component: {fileID: 1399697882} + - component: {fileID: 1399697881} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1399697880 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399697879} + 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: 429369155} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1399697881 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399697879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: killR +--- !u!222 &1399697882 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399697879} + m_CullTransparentMesh: 1 +--- !u!1 &1399926664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399926665} + - component: {fileID: 1399926667} + - component: {fileID: 1399926666} + m_Layer: 0 + m_Name: axis_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1399926665 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399926664} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1443827058} + - {fileID: 15909074} + m_Father: {fileID: 1372129984} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -3} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1399926666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399926664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1399926667 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399926664} + m_CullTransparentMesh: 1 +--- !u!1 &1402881478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1402881479} + - component: {fileID: 1402881481} + - component: {fileID: 1402881480} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1402881479 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402881478} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1481370281} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1402881480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402881478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1402881481 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402881478} + m_CullTransparentMesh: 1 +--- !u!1 &1406686773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1406686774} + - component: {fileID: 1406686776} + - component: {fileID: 1406686775} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1406686774 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1406686773} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 909785771} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1406686775 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1406686773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1406686776 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1406686773} + m_CullTransparentMesh: 1 +--- !u!1 &1406810793 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1406810794} + m_Layer: 0 + m_Name: Title0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1406810794 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1406810793} + 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: + - {fileID: 1885190692} + - {fileID: 909785771} + m_Father: {fileID: 201489786} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &1414640701 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1414640702} + - component: {fileID: 1414640704} + - component: {fileID: 1414640703} + m_Layer: 0 + m_Name: axis_7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1414640702 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414640701} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 25666660} + - {fileID: 225688600} + m_Father: {fileID: 1372129984} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 87} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1414640703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414640701} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1414640704 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414640701} + m_CullTransparentMesh: 1 +--- !u!1 &1414673185 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1414673186} + - component: {fileID: 1414673188} + - component: {fileID: 1414673187} + m_Layer: 0 + m_Name: label_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1414673186 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414673185} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1032891062} + - {fileID: 1416018135} + m_Father: {fileID: 355301579} + 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: -290, y: 150} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1414673187 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414673185} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1414673188 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414673185} + m_CullTransparentMesh: 1 +--- !u!1 &1416018134 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1416018135} + - component: {fileID: 1416018137} + - component: {fileID: 1416018136} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1416018135 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416018134} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1414673186} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1416018136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416018134} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1416018137 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416018134} + m_CullTransparentMesh: 1 +--- !u!1 &1423193377 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1423193378} + m_Layer: 0 + m_Name: Env + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &1423193378 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1423193377} + 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: + - {fileID: 863884970} + - {fileID: 636386819} + - {fileID: 705507995} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1433177289 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1433177290} + - component: {fileID: 1433177292} + - component: {fileID: 1433177291} + m_Layer: 0 + m_Name: painter_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1433177290 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433177289} + 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: 201489786} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1433177291 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433177289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1433177292 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433177289} + m_CullTransparentMesh: 1 +--- !u!1 &1435262640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435262641} + - component: {fileID: 1435262643} + - component: {fileID: 1435262642} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1435262641 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435262640} + 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: 317682828} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1435262642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435262640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &1435262643 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435262640} + m_CullTransparentMesh: 1 +--- !u!1 &1435664621 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435664622} + - component: {fileID: 1435664624} + - component: {fileID: 1435664623} + m_Layer: 0 + m_Name: Cube.017_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1435664622 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435664621} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1435664623 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435664621} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1435664624 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435664621} + m_Mesh: {fileID: -8211673063228289779, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1439682603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1439682604} + - component: {fileID: 1439682606} + - component: {fileID: 1439682605} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1439682604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439682603} + 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: 966834423} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1439682605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439682603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 50 +--- !u!222 &1439682606 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439682603} + m_CullTransparentMesh: 1 +--- !u!1 &1439973038 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1439973039} + m_Layer: 0 + m_Name: Tooltip0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1439973039 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439973038} + 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: + - {fileID: 1053490561} + - {fileID: 1792069383} + m_Father: {fileID: 1213129649} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1443827057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1443827058} + - component: {fileID: 1443827060} + - component: {fileID: 1443827059} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1443827058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443827057} + 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: 1399926665} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1443827059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443827057} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 40 +--- !u!222 &1443827060 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443827057} + m_CullTransparentMesh: 1 +--- !u!1 &1445443960 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1445443961} + - component: {fileID: 1445443963} + - component: {fileID: 1445443962} + m_Layer: 0 + m_Name: painter_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1445443961 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1445443960} + 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: 1213129649} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1445443962 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1445443960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1445443963 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1445443960} + m_CullTransparentMesh: 1 +--- !u!1 &1462706064 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1462706065} + - component: {fileID: 1462706067} + - component: {fileID: 1462706066} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1462706065 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462706064} + 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: 733816198} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: -0, y: -2} + m_SizeDelta: {x: 209.77777, y: 26.666666} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1462706066 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462706064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: realTimeKeyCounter +--- !u!222 &1462706067 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462706064} + m_CullTransparentMesh: 1 +--- !u!1 &1466325944 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1466325945} + - component: {fileID: 1466325947} + - component: {fileID: 1466325946} + m_Layer: 0 + m_Name: painter_t + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1466325945 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466325944} + 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: 1213129649} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1466325946 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466325944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1466325947 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466325944} + m_CullTransparentMesh: 1 +--- !u!1 &1469925107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1469925108} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1469925108 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1469925107} + 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: + - {fileID: 1742366327} + m_Father: {fileID: 1188398130} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1470983555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1470983556} + - component: {fileID: 1470983558} + - component: {fileID: 1470983557} + m_Layer: 0 + m_Name: axis_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1470983556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470983555} + 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: + - {fileID: 649944398} + - {fileID: 1023339846} + m_Father: {fileID: 800843590} + 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: -201.26, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1470983557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470983555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1470983558 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470983555} + m_CullTransparentMesh: 1 +--- !u!1 &1475721440 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1475721441} + - component: {fileID: 1475721443} + - component: {fileID: 1475721442} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1475721441 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475721440} + 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: 474214543} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1475721442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475721440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x3 +--- !u!222 &1475721443 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475721440} + m_CullTransparentMesh: 1 +--- !u!1 &1477455555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1477455556} + - component: {fileID: 1477455558} + - component: {fileID: 1477455557} + m_Layer: 0 + m_Name: title_sub + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1477455556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477455555} + 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: + - {fileID: 163181243} + - {fileID: 507878346} + m_Father: {fileID: 1872357242} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -24} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1477455557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477455555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1477455558 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477455555} + m_CullTransparentMesh: 1 +--- !u!1 &1481370280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1481370281} + - component: {fileID: 1481370283} + - component: {fileID: 1481370282} + m_Layer: 0 + m_Name: axis_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1481370281 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1481370280} + 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: + - {fileID: 942607301} + - {fileID: 1402881479} + m_Father: {fileID: 545189441} + 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: 122.380005, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1481370282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1481370280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1481370283 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1481370280} + m_CullTransparentMesh: 1 +--- !u!1 &1483392554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1483392555} + - component: {fileID: 1483392558} + - component: {fileID: 1483392557} + - component: {fileID: 1483392556} + m_Layer: 5 + m_Name: loseInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1483392555 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483392554} + 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: + - {fileID: 1977465144} + - {fileID: 1591846252} + m_Father: {fileID: 194652655} + m_RootOrder: 13 + 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: 70, y: -120} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1483392556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483392554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1483392557} + m_TextComponent: {fileID: 1591846253} + m_Placeholder: {fileID: 1977465145} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1483392557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483392554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1483392558 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483392554} + m_CullTransparentMesh: 1 +--- !u!1 &1484661764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1484661765} + - component: {fileID: 1484661767} + - component: {fileID: 1484661766} + m_Layer: 0 + m_Name: Cylinder.005_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1484661765 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1484661764} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1484661766 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1484661764} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1484661767 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1484661764} + m_Mesh: {fileID: -3715088358359381335, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1489565675 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1489565676} + - component: {fileID: 1489565678} + - component: {fileID: 1489565677} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1489565676 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489565675} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1234601878} + m_RootOrder: 1 + 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: -15.333334, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1489565677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489565675} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1489565678 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489565675} + m_CullTransparentMesh: 1 +--- !u!1 &1494239042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1494239043} + - component: {fileID: 1494239045} + - component: {fileID: 1494239044} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1494239043 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1494239042} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 48524277} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1494239044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1494239042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1494239045 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1494239042} + m_CullTransparentMesh: 1 +--- !u!1 &1495256091 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1495256092} + - component: {fileID: 1495256094} + - component: {fileID: 1495256093} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1495256092 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1495256091} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1907076005} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1495256093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1495256091} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1495256094 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1495256091} + m_CullTransparentMesh: 1 +--- !u!1 &1506720543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1506720544} + - component: {fileID: 1506720547} + - component: {fileID: 1506720546} + - component: {fileID: 1506720545} + m_Layer: 5 + m_Name: shootAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1506720544 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506720543} + 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: + - {fileID: 39280862} + m_Father: {fileID: 194652655} + m_RootOrder: 1 + 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: -20} + m_SizeDelta: {x: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1506720545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506720543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1506720546} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982031} + m_TargetAssemblyTypeName: RealTimeRewardChanger, Assembly-CSharp + m_MethodName: shootRBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1506720546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506720543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1506720547 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506720543} + m_CullTransparentMesh: 1 +--- !u!1 &1510253032 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1510253033} + - component: {fileID: 1510253034} + - component: {fileID: 1510253035} + m_Layer: 5 + m_Name: remainTimeData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1510253033 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1510253032} + 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: 1619861058} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -222.8, y: -87} + m_SizeDelta: {x: 65, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1510253034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1510253032} + m_CullTransparentMesh: 1 +--- !u!114 &1510253035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1510253032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &1517139708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1517139709} + - component: {fileID: 1517139711} + - component: {fileID: 1517139710} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1517139709 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517139708} + 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: 1283581649} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: -0, y: -2} + m_SizeDelta: {x: 229.33333, y: 26.666666} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1517139710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517139708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: RealTimeRewardChart +--- !u!222 &1517139711 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517139708} + m_CullTransparentMesh: 1 +--- !u!1 &1519188528 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1519188529} + m_Layer: 0 + m_Name: YAxis0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1519188529 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519188528} + 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: + - {fileID: 894156494} + - {fileID: 1635496871} + - {fileID: 1721895620} + - {fileID: 358674451} + - {fileID: 1884023750} + - {fileID: 885432327} + - {fileID: 188953745} + - {fileID: 465774759} + - {fileID: 48524277} + m_Father: {fileID: 201489786} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1530748062 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1530748063} + - component: {fileID: 1530748065} + - component: {fileID: 1530748064} + m_Layer: 0 + m_Name: painter_b + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1530748063 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1530748062} + 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: 611641053} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1530748064 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1530748062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1530748065 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1530748062} + m_CullTransparentMesh: 1 +--- !u!1 &1536968431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1536968432} + - component: {fileID: 1536968434} + - component: {fileID: 1536968433} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1536968432 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536968431} + 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: 1725213616} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1536968433 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536968431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 60 +--- !u!222 &1536968434 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536968431} + m_CullTransparentMesh: 1 +--- !u!1 &1537446174 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1537446175} + - component: {fileID: 1537446177} + - component: {fileID: 1537446176} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1537446175 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537446174} + 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: 1907076005} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1537446176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537446174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 10 +--- !u!222 &1537446177 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537446174} + m_CullTransparentMesh: 1 +--- !u!1 &1543384451 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1543384452} + - component: {fileID: 1543384454} + - component: {fileID: 1543384453} + m_Layer: 0 + m_Name: painter_t + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1543384452 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543384451} + 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: 611641053} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1543384453 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543384451} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1543384454 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543384451} + m_CullTransparentMesh: 1 +--- !u!1 &1550524475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1550524476} + - component: {fileID: 1550524478} + - component: {fileID: 1550524477} + m_Layer: 0 + m_Name: Cube.020_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1550524476 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550524475} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1550524477 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550524475} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1550524478 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550524475} + m_Mesh: {fileID: 6286744291313444990, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1565640925 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1565640926} + - component: {fileID: 1565640928} + - component: {fileID: 1565640927} + m_Layer: 5 + m_Name: MouseVisualizationBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1565640926 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1565640925} + 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: 460761058} + 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: 200, y: 10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1565640927 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1565640925} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1565640928 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1565640925} + m_CullTransparentMesh: 1 +--- !u!1 &1569521920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1569521921} + - component: {fileID: 1569521923} + - component: {fileID: 1569521922} + m_Layer: 5 + m_Name: Remain Enemy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1569521921 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569521920} + 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: 1619861058} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -358.16003, y: -65} + m_SizeDelta: {x: 205.722, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1569521922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569521920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Remain Enemy:' +--- !u!222 &1569521923 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569521920} + m_CullTransparentMesh: 1 +--- !u!1 &1570055072 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1570055073} + - component: {fileID: 1570055075} + - component: {fileID: 1570055074} + m_Layer: 0 + m_Name: painter_7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1570055073 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1570055072} + 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: 1213129649} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1570055074 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1570055072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1570055075 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1570055072} + m_CullTransparentMesh: 1 +--- !u!1 &1587956789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1587956790} + m_Layer: 5 + m_Name: TimeLimitChanger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1587956790 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1587956789} + 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: + - {fileID: 290413416} + - {fileID: 878239540} + m_Father: {fileID: 1619861058} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -170.5, y: -87} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1591846251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1591846252} + - component: {fileID: 1591846254} + - component: {fileID: 1591846253} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1591846252 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591846251} + 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: 1483392555} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1591846253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591846251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1591846254 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591846251} + m_CullTransparentMesh: 1 +--- !u!1 &1602618186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1602618187} + - component: {fileID: 1602618189} + - component: {fileID: 1602618188} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1602618187 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602618186} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 844985474} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1602618188 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602618186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1602618189 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602618186} + m_CullTransparentMesh: 1 +--- !u!1 &1603146468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1603146469} + - component: {fileID: 1603146471} + - component: {fileID: 1603146470} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1603146469 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603146468} + 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: 1842428954} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1603146470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603146468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1603146471 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603146468} + m_CullTransparentMesh: 1 +--- !u!1 &1614878825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1614878826} + - component: {fileID: 1614878828} + - component: {fileID: 1614878827} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1614878826 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1614878825} + 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: 1884023750} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1614878827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1614878825} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 40 +--- !u!222 &1614878828 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1614878825} + m_CullTransparentMesh: 1 +--- !u!1 &1614888746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1614888747} + - component: {fileID: 1614888749} + - component: {fileID: 1614888748} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1614888747 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1614888746} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1635496871} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1614888748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1614888746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1614888749 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1614888746} + m_CullTransparentMesh: 1 +--- !u!1 &1615325405 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1615325406} + - component: {fileID: 1615325408} + - component: {fileID: 1615325407} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1615325406 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615325405} + 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: 1186343261} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1615325407 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615325405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x3 +--- !u!222 &1615325408 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615325405} + m_CullTransparentMesh: 1 +--- !u!1 &1619861057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1619861058} + m_Layer: 5 + m_Name: Reward&RemainTime + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1619861058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619861057} + 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: + - {fileID: 894179989} + - {fileID: 1510253033} + - {fileID: 1569521921} + - {fileID: 1266400767} + - {fileID: 313400500} + - {fileID: 1587956790} + - {fileID: 194652655} + - {fileID: 497823044} + - {fileID: 509053162} + m_Father: {fileID: 511399609} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1625376956 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1625376957} + - component: {fileID: 1625376959} + - component: {fileID: 1625376958} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1625376957 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625376956} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 495150915} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1625376958 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625376956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1625376959 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625376956} + m_CullTransparentMesh: 1 +--- !u!1 &1631471391 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1631471392} + m_Layer: 0 + m_Name: label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1631471392 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1631471391} + 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: 1876561007} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1633112520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1633112521} + - component: {fileID: 1633112523} + - component: {fileID: 1633112522} + m_Layer: 0 + m_Name: Cube.007_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1633112521 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1633112520} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1633112522 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1633112520} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1633112523 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1633112520} + m_Mesh: {fileID: 5687744605115444253, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1633276148 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1633276152} + - component: {fileID: 1633276149} + m_Layer: 0 + m_Name: FPSCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!20 &1633276149 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1633276148} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 2 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 25 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 51.28201 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1633276152 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1633276148} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.44000006, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1773751427} + m_Father: {fileID: 629870343} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1635496870 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1635496871} + - component: {fileID: 1635496873} + - component: {fileID: 1635496872} + m_Layer: 0 + m_Name: axis_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1635496871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635496870} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 802051162} + - {fileID: 1614888747} + m_Father: {fileID: 1519188529} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -93} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1635496872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635496870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1635496873 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635496870} + m_CullTransparentMesh: 1 +--- !u!1 &1636289227 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1636289228} + - component: {fileID: 1636289230} + - component: {fileID: 1636289229} + m_Layer: 0 + m_Name: painter_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1636289228 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636289227} + 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: 1213129649} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1636289229 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636289227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1636289230 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636289227} + m_CullTransparentMesh: 1 +--- !u!1 &1669330271 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1669330272} + - component: {fileID: 1669330274} + - component: {fileID: 1669330273} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1669330272 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669330271} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 326222085} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1669330273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669330271} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1669330274 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669330271} + m_CullTransparentMesh: 1 +--- !u!1 &1674594923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1674594924} + - component: {fileID: 1674594926} + - component: {fileID: 1674594925} + m_Layer: 0 + m_Name: Cylinder.010_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1674594924 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674594923} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1674594925 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674594923} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1674594926 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674594923} + m_Mesh: {fileID: -7775485357160322779, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1678407468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1678407469} + - component: {fileID: 1678407471} + - component: {fileID: 1678407470} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1678407469 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678407468} + 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: 813204784} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1678407470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678407468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1678407471 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678407468} + m_CullTransparentMesh: 1 +--- !u!1 &1685871916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1685871917} + - component: {fileID: 1685871919} + - component: {fileID: 1685871918} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1685871917 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685871916} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1052249376} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1685871918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685871916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1685871919 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685871916} + m_CullTransparentMesh: 1 +--- !u!4 &1690705681 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_PrefabInstance: {fileID: 2027516183} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1692175692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1692175693} + - component: {fileID: 1692175695} + - component: {fileID: 1692175694} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1692175693 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692175692} + 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: 429369155} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1692175694 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692175692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 69 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1692175695 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692175692} + m_CullTransparentMesh: 1 +--- !u!1 &1697246154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1697246155} + - component: {fileID: 1697246157} + - component: {fileID: 1697246156} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1697246155 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697246154} + 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: 1885190692} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: -0, y: -2} + m_SizeDelta: {x: 213.33333, y: 26.666666} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1697246156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697246154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: EPTotalRewardChart +--- !u!222 &1697246157 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697246154} + m_CullTransparentMesh: 1 +--- !u!1 &1699903299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1699903300} + - component: {fileID: 1699903302} + - component: {fileID: 1699903301} + m_Layer: 0 + m_Name: label_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1699903300 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1699903299} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1928773188} + - {fileID: 1762055908} + m_Father: {fileID: 1792069383} + 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: -290, y: 150} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1699903301 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1699903299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1699903302 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1699903299} + m_CullTransparentMesh: 1 +--- !u!1 &1707839903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1707839904} + - component: {fileID: 1707839906} + - component: {fileID: 1707839905} + m_Layer: 0 + m_Name: Cylinder.000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1707839904 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707839903} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1707839905 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707839903} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1707839906 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707839903} + m_Mesh: {fileID: 7348556155622324996, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!43 &1718911498 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh26962 + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 36 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 24 + localAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200010003000200040005000600050007000600080009000a0009000b000a000c000d000e000d000f000e00100011001200110013001200140015001600150017001600 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 24 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 48 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 1344 + _typelessdata: 00000000000000000000000000000000000000000000803f000080bf0000000000000000000080bf0000000000000000ced7a33c2ea6c93d00004842000000000000000000000000000000000000803f000080bf0000000000000000000080bf000048c2000000000f467b3f2ea6c93d00000000000000400000000000000000000000000000803f000080bf0000000000000000000080bf00000000000000400bd7a33c8b350c3e00004842000000400000000000000000000000000000803f000080bf0000000000000000000080bf000048c20000004009467b3f8b350c3e0000484200000000000000000000803f000000000000000000000000000000000000803f000080bf00000000000000000ed7a33c8b358c3e0000484200000000000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf000000000bd7a33cee5c823e0000484200000040000000000000803f000000000000000000000000000000000000803f000080bf00000000000000405b756f3d8b358c3e0000484200000040000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf0000004059756f3dee5c823e0000484200000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf0000484200000000ced7a33c6cb0203e0000000000000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf00000000000000000f467b3f6cb0203e0000484200000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf00004842000000400bd7a33ce112483e0000000000000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf000000000000004009467b3fe112483e0000000000000000000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f0000000059756f3dc28d5c3e000000000000000000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000005b756f3dfb3e703e0000000000000040000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f000000400bd7a33cc28d5c3e000000000000004000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000400ed7a33cfb3e703e000000000000004000000000000000000000803f000000000000803f0000000000000000000080bf00000000000000001b467b3f6bb0a03d000048420000004000000000000000000000803f000000000000803f0000000000000000000080bf00004842000000003fd8a33c6bb0a03d0000000000000040000080bf000000000000803f000000000000803f0000000000000000000080bf00000000000080bf11467b3ff19b723d0000484200000040000080bf000000000000803f000000000000803f0000000000000000000080bf00004842000080bf0bd7a33cf19b723d0000000000000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf00000000000080bf0bd7a33c0bd7a33c0000484200000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf000048c2000080bf11467b3f0bd7a33c00000000000000000000000000000000000080bf00000000000080bf0000000000000000000080bf00000000000000003fd8a33c6bb0203d00004842000000000000000000000000000080bf00000000000080bf0000000000000000000080bf000048c2000000001b467b3f6bb0203d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1721895619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1721895620} + - component: {fileID: 1721895622} + - component: {fileID: 1721895621} + m_Layer: 0 + m_Name: axis_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1721895620 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721895619} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 111303086} + - {fileID: 1821850659} + m_Father: {fileID: 1519188529} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -63} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1721895621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721895619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1721895622 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721895619} + m_CullTransparentMesh: 1 +--- !u!1 &1725213615 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1725213616} + - component: {fileID: 1725213618} + - component: {fileID: 1725213617} + m_Layer: 0 + m_Name: axis_6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1725213616 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725213615} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1536968432} + - {fileID: 1952665839} + m_Father: {fileID: 890182309} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: 69} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1725213617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725213615} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1725213618 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725213615} + m_CullTransparentMesh: 1 +--- !u!1 &1734642346 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1734642347} + - component: {fileID: 1734642349} + - component: {fileID: 1734642348} + m_Layer: 0 + m_Name: Cube.011_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1734642347 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734642346} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1734642348 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734642346} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1734642349 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734642346} + m_Mesh: {fileID: -8669127404902318575, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1740914348 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1740914349} + - component: {fileID: 1740914351} + - component: {fileID: 1740914350} + m_Layer: 0 + m_Name: Cube.014_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1740914349 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740914348} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1740914350 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740914348} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1740914351 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740914348} + m_Mesh: {fileID: -1094834897351882323, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1742366326 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1742366327} + - component: {fileID: 1742366329} + - component: {fileID: 1742366328} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1742366327 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742366326} + 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: 1469925108} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1742366328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742366326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1742366329 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742366326} + m_CullTransparentMesh: 1 +--- !u!1 &1744030217 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1744030218} + - component: {fileID: 1744030220} + - component: {fileID: 1744030219} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1744030218 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1744030217} + 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: 894156494} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 10.666667, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1744030219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1744030217} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 0 +--- !u!222 &1744030220 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1744030217} + m_CullTransparentMesh: 1 +--- !u!1 &1747636730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1747636731} + - component: {fileID: 1747636735} + - component: {fileID: 1747636734} + - component: {fileID: 1747636733} + m_Layer: 5 + m_Name: SaveNowButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1747636731 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747636730} + 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: + - {fileID: 147875582} + m_Father: {fileID: 511399609} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -80, y: -250} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1747636733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747636730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1747636734} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982030} + m_TargetAssemblyTypeName: SaveWeightsButton, Assembly-CSharp + m_MethodName: onButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1747636734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747636730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1747636735 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747636730} + m_CullTransparentMesh: 1 +--- !u!1 &1753479624 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1753479625} + - component: {fileID: 1753479627} + - component: {fileID: 1753479626} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1753479625 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753479624} + 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: 1832129955} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1753479626 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753479624} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'SWORR + +' +--- !u!222 &1753479627 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753479624} + m_CullTransparentMesh: 1 +--- !u!1 &1753569901 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1753569902} + - component: {fileID: 1753569904} + - component: {fileID: 1753569903} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1753569902 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753569901} + 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: 48524277} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1753569903 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753569901} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 80 +--- !u!222 &1753569904 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753569901} + m_CullTransparentMesh: 1 +--- !u!1 &1753625888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1753625889} + - component: {fileID: 1753625891} + - component: {fileID: 1753625890} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1753625889 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753625888} + 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: 1884118930} + 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: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1753625890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753625888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1753625891 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1753625888} + m_CullTransparentMesh: 1 +--- !u!1 &1762055907 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1762055908} + - component: {fileID: 1762055910} + - component: {fileID: 1762055909} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1762055908 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1762055907} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1699903300} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1762055909 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1762055907} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1762055910 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1762055907} + m_CullTransparentMesh: 1 +--- !u!1 &1768275351 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1768275352} + - component: {fileID: 1768275354} + - component: {fileID: 1768275353} + m_Layer: 0 + m_Name: painter_8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1768275352 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768275351} + 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: 1213129649} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1768275353 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768275351} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1768275354 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768275351} + m_CullTransparentMesh: 1 +--- !u!1 &1769014918 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1769014919} + - component: {fileID: 1769014921} + - component: {fileID: 1769014920} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1769014919 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1769014918} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 188953745} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1769014920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1769014918} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1769014921 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1769014918} + m_CullTransparentMesh: 1 +--- !u!1 &1770477493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1770477494} + - component: {fileID: 1770477496} + - component: {fileID: 1770477495} + m_Layer: 0 + m_Name: axis_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1770477494 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1770477493} + 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: + - {fileID: 602372911} + - {fileID: 210575779} + m_Father: {fileID: 545189441} + m_RootOrder: 2 + 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: 14.5, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1770477495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1770477493} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1770477496 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1770477493} + m_CullTransparentMesh: 1 +--- !u!1 &1773751426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1773751427} + m_Layer: 0 + m_Name: AKM + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1773751427 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1773751426} + m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.0000006705522} + m_LocalPosition: {x: 0.396, y: -0.36700004, z: 0.71} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: + - {fileID: 1984237746} + - {fileID: 928036775} + - {fileID: 678277790} + - {fileID: 1215051368} + - {fileID: 95675458} + - {fileID: 232422799} + - {fileID: 1806074329} + - {fileID: 1633112521} + - {fileID: 898640495} + - {fileID: 2037469699} + - {fileID: 443205579} + - {fileID: 1734642347} + - {fileID: 1026481344} + - {fileID: 99436129} + - {fileID: 1740914349} + - {fileID: 909810157} + - {fileID: 745459474} + - {fileID: 1435664622} + - {fileID: 2032658543} + - {fileID: 822320914} + - {fileID: 1550524476} + - {fileID: 850708203} + - {fileID: 1707839904} + - {fileID: 290664182} + - {fileID: 47646445} + - {fileID: 420670195} + - {fileID: 976372794} + - {fileID: 1484661765} + - {fileID: 758796084} + - {fileID: 971083481} + - {fileID: 532615955} + - {fileID: 1674594924} + - {fileID: 454701934} + - {fileID: 958496985} + - {fileID: 861779683} + - {fileID: 621445973} + m_Father: {fileID: 1633276152} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!1 &1792069382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1792069383} + m_Layer: 0 + m_Name: label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1792069383 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792069382} + 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: + - {fileID: 1699903300} + - {fileID: 1052249376} + m_Father: {fileID: 1439973039} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1797648750 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1797648751} + - component: {fileID: 1797648753} + - component: {fileID: 1797648752} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1797648751 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797648750} + 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: 909785771} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1797648752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797648750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1797648753 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797648750} + m_CullTransparentMesh: 1 +--- !u!1 &1802288087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1802288088} + - component: {fileID: 1802288090} + - component: {fileID: 1802288089} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1802288088 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1802288087} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1234953724} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1802288089 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1802288087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1802288090 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1802288087} + m_CullTransparentMesh: 1 +--- !u!1 &1804136061 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1804136062} + - component: {fileID: 1804136064} + - component: {fileID: 1804136063} + m_Layer: 0 + m_Name: painter_6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1804136062 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804136061} + 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: 201489786} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1804136063 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804136061} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1804136064 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804136061} + m_CullTransparentMesh: 1 +--- !u!1 &1806074328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1806074329} + - component: {fileID: 1806074331} + - component: {fileID: 1806074330} + m_Layer: 0 + m_Name: Cube.006_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1806074329 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1806074328} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: 0.15559006, y: 0.4127557, z: 1.3653904} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1806074330 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1806074328} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1806074331 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1806074328} + m_Mesh: {fileID: 3382770850716141589, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &1807687760 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1807687761} + m_Layer: 0 + m_Name: label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1807687761 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1807687760} + 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: 17027927} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1810548989 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1810548990} + - component: {fileID: 1810548992} + - component: {fileID: 1810548991} + m_Layer: 0 + m_Name: painter_t + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1810548990 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1810548989} + 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: 201489786} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1810548991 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1810548989} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1810548992 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1810548989} + m_CullTransparentMesh: 1 +--- !u!1 &1811785217 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1811785218} + - component: {fileID: 1811785220} + - component: {fileID: 1811785219} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1811785218 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1811785217} + 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: 1113647590} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1811785219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1811785217} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x2 +--- !u!222 &1811785220 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1811785217} + m_CullTransparentMesh: 1 +--- !u!43 &1821328656 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh26856 + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 36 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 24 + localAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200010003000200040005000600050007000600080009000a0009000b000a000c000d000e000d000f000e00100011001200110013001200140015001600150017001600 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 24 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 48 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 1344 + _typelessdata: 00000000000000000000000000000000000000000000803f000080bf0000000000000000000080bf0000000000000000ced7a33c2ea6c93d00004842000000000000000000000000000000000000803f000080bf0000000000000000000080bf000048c2000000000f467b3f2ea6c93d00000000000000400000000000000000000000000000803f000080bf0000000000000000000080bf00000000000000400bd7a33c8b350c3e00004842000000400000000000000000000000000000803f000080bf0000000000000000000080bf000048c20000004009467b3f8b350c3e0000484200000000000000000000803f000000000000000000000000000000000000803f000080bf00000000000000000ed7a33c8b358c3e0000484200000000000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf000000000bd7a33cee5c823e0000484200000040000000000000803f000000000000000000000000000000000000803f000080bf00000000000000405b756f3d8b358c3e0000484200000040000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf0000004059756f3dee5c823e0000484200000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf0000484200000000ced7a33c6cb0203e0000000000000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf00000000000000000f467b3f6cb0203e0000484200000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf00004842000000400bd7a33ce112483e0000000000000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf000000000000004009467b3fe112483e0000000000000000000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f0000000059756f3dc28d5c3e000000000000000000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000005b756f3dfb3e703e0000000000000040000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f000000400bd7a33cc28d5c3e000000000000004000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000400ed7a33cfb3e703e000000000000004000000000000000000000803f000000000000803f0000000000000000000080bf00000000000000001b467b3f6bb0a03d000048420000004000000000000000000000803f000000000000803f0000000000000000000080bf00004842000000003fd8a33c6bb0a03d0000000000000040000080bf000000000000803f000000000000803f0000000000000000000080bf00000000000080bf11467b3ff19b723d0000484200000040000080bf000000000000803f000000000000803f0000000000000000000080bf00004842000080bf0bd7a33cf19b723d0000000000000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf00000000000080bf0bd7a33c0bd7a33c0000484200000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf000048c2000080bf11467b3f0bd7a33c00000000000000000000000000000000000080bf00000000000080bf0000000000000000000080bf00000000000000003fd8a33c6bb0203d00004842000000000000000000000000000080bf00000000000080bf0000000000000000000080bf000048c2000000001b467b3f6bb0203d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1821752598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1821752599} + - component: {fileID: 1821752601} + - component: {fileID: 1821752600} + m_Layer: 5 + m_Name: winReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1821752599 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1821752598} + 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: 509053162} + m_RootOrder: 5 + 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: -100} + m_SizeDelta: {x: 316.0601, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1821752600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1821752598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'winReward: ' +--- !u!222 &1821752601 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1821752598} + m_CullTransparentMesh: 1 +--- !u!1 &1821850658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1821850659} + - component: {fileID: 1821850661} + - component: {fileID: 1821850660} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1821850659 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1821850658} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1721895620} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1821850660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1821850658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1821850661 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1821850658} + m_CullTransparentMesh: 1 +--- !u!1 &1822552282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1822552283} + - component: {fileID: 1822552285} + - component: {fileID: 1822552284} + m_Layer: 0 + m_Name: label_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1822552283 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1822552282} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 695855998} + - {fileID: 1981716309} + m_Father: {fileID: 141368731} + 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: -290, y: 150} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1822552284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1822552282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1822552285 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1822552282} + m_CullTransparentMesh: 1 +--- !u!1 &1829544111 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1829544112} + - component: {fileID: 1829544114} + - component: {fileID: 1829544113} + m_Layer: 0 + m_Name: painter_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1829544112 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829544111} + 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: 201489786} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1829544113 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829544111} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1829544114 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829544111} + m_CullTransparentMesh: 1 +--- !u!1 &1829879845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1829879846} + - component: {fileID: 1829879848} + - component: {fileID: 1829879847} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1829879846 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829879845} + 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: 810240986} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1829879847 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829879845} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1829879848 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829879845} + m_CullTransparentMesh: 1 +--- !u!1 &1832129954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1832129955} + - component: {fileID: 1832129958} + - component: {fileID: 1832129957} + - component: {fileID: 1832129956} + m_Layer: 5 + m_Name: shootWithoutReadyInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1832129955 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832129954} + 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: + - {fileID: 1753479625} + - {fileID: 1111257558} + m_Father: {fileID: 194652655} + m_RootOrder: 9 + 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: 70, y: -40} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1832129956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832129954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1832129957} + m_TextComponent: {fileID: 1111257559} + m_Placeholder: {fileID: 1753479626} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1832129957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832129954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1832129958 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832129954} + m_CullTransparentMesh: 1 +--- !u!1 &1832248880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1832248881} + - component: {fileID: 1832248883} + - component: {fileID: 1832248882} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1832248881 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832248880} + 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: 2131057827} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1832248882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832248880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &1832248883 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832248880} + m_CullTransparentMesh: 1 +--- !u!1 &1841514736 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1841514737} + - component: {fileID: 1841514739} + - component: {fileID: 1841514738} + m_Layer: 5 + m_Name: loseReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1841514737 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841514736} + 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: 509053162} + m_RootOrder: 6 + 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: -120} + m_SizeDelta: {x: 316.0601, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1841514738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841514736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'loseReward: ' +--- !u!222 &1841514739 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841514736} + m_CullTransparentMesh: 1 +--- !u!1 &1842428953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1842428954} + - component: {fileID: 1842428956} + - component: {fileID: 1842428955} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1842428954 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842428953} + 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: + - {fileID: 1603146469} + - {fileID: 2108148304} + m_Father: {fileID: 1310028838} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1842428955 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842428953} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1842428956 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842428953} + m_CullTransparentMesh: 1 +--- !u!1 &1863075754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1863075755} + - component: {fileID: 1863075757} + - component: {fileID: 1863075756} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1863075755 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863075754} + 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: 326222085} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1863075756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863075754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 60 +--- !u!222 &1863075757 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863075754} + m_CullTransparentMesh: 1 +--- !u!1 &1863263627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1863263628} + - component: {fileID: 1863263630} + - component: {fileID: 1863263629} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1863263628 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863263627} + 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: 844985474} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1863263629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863263627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x1 +--- !u!222 &1863263630 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863263627} + m_CullTransparentMesh: 1 +--- !u!1 &1867950663 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1867950664} + - component: {fileID: 1867950666} + - component: {fileID: 1867950665} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1867950664 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867950663} + 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: 1241541574} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 10.666667, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1867950665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867950663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 0 +--- !u!222 &1867950666 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867950663} + m_CullTransparentMesh: 1 +--- !u!1 &1872357241 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872357242} + m_Layer: 0 + m_Name: Title0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1872357242 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872357241} + 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: + - {fileID: 1283581649} + - {fileID: 1477455556} + m_Father: {fileID: 1213129649} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &1872392831 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872392832} + - component: {fileID: 1872392834} + - component: {fileID: 1872392833} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1872392832 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872392831} + 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: 885432327} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1872392833 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872392831} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 50 +--- !u!222 &1872392834 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872392831} + m_CullTransparentMesh: 1 +--- !u!1 &1876561006 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1876561007} + m_Layer: 0 + m_Name: serie_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1876561007 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1876561006} + 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: + - {fileID: 1631471392} + - {fileID: 1256664429} + m_Father: {fileID: 611641053} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1884023749 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1884023750} + - component: {fileID: 1884023752} + - component: {fileID: 1884023751} + m_Layer: 0 + m_Name: axis_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1884023750 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1884023749} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1614878826} + - {fileID: 208643481} + m_Father: {fileID: 1519188529} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -3} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1884023751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1884023749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1884023752 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1884023749} + m_CullTransparentMesh: 1 +--- !u!1 &1884118929 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1884118930} + - component: {fileID: 1884118932} + - component: {fileID: 1884118931} + m_Layer: 0 + m_Name: label_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1884118930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1884118929} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1753625889} + - {fileID: 950921142} + m_Father: {fileID: 355301579} + m_RootOrder: 1 + 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: -290, y: 150} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1884118931 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1884118929} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1884118932 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1884118929} + m_CullTransparentMesh: 1 +--- !u!1 &1885190691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1885190692} + - component: {fileID: 1885190694} + - component: {fileID: 1885190693} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1885190692 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885190691} + 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: + - {fileID: 1697246155} + - {fileID: 815597366} + m_Father: {fileID: 1406810794} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 221.33333, y: 30.666666} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1885190693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885190691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1885190694 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885190691} + m_CullTransparentMesh: 1 +--- !u!1 &1888459657 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1888459658} + - component: {fileID: 1888459660} + - component: {fileID: 1888459659} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1888459658 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1888459657} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2026877416} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1888459659 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1888459657} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1888459660 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1888459657} + m_CullTransparentMesh: 1 +--- !u!1 &1907076004 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1907076005} + - component: {fileID: 1907076007} + - component: {fileID: 1907076006} + m_Layer: 0 + m_Name: axis_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1907076005 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907076004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1537446175} + - {fileID: 1495256092} + m_Father: {fileID: 890182309} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -553.2, y: -91} + m_SizeDelta: {x: 29.333334, y: 23.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1907076006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907076004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1907076007 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907076004} + m_CullTransparentMesh: 1 +--- !u!1 &1913659020 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1913659021} + - component: {fileID: 1913659023} + - component: {fileID: 1913659022} + m_Layer: 5 + m_Name: Crosshair + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1913659021 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1913659020} + 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: 511399609} + m_RootOrder: 4 + 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: 5, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1913659022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1913659020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 50a3ac7eee070fd44ab2021a86a5284c, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1913659023 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1913659020} + m_CullTransparentMesh: 1 +--- !u!1 &1926093281 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1926093282} + - component: {fileID: 1926093284} + - component: {fileID: 1926093283} + m_Layer: 0 + m_Name: axis_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1926093282 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926093281} + 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: + - {fileID: 838006001} + - {fileID: 430915228} + m_Father: {fileID: 188889958} + m_RootOrder: 4 + 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: 230.26001, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1926093283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926093281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1926093284 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926093281} + m_CullTransparentMesh: 1 +--- !u!1 &1927392548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1927392549} + - component: {fileID: 1927392551} + - component: {fileID: 1927392550} + m_Layer: 0 + m_Name: column1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1927392549 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1927392548} + 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: + - {fileID: 1265073924} + - {fileID: 1304688936} + m_Father: {fileID: 1175413812} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1927392550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1927392548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1927392551 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1927392548} + m_CullTransparentMesh: 1 +--- !u!1 &1928773187 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1928773188} + - component: {fileID: 1928773190} + - component: {fileID: 1928773189} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1928773188 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928773187} + 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: 1699903300} + 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: 4, y: -2} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1928773189 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928773187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1928773190 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928773187} + m_CullTransparentMesh: 1 +--- !u!1 &1928982026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1928982027} + - component: {fileID: 1928982028} + - component: {fileID: 1928982029} + - component: {fileID: 1928982032} + - component: {fileID: 1928982031} + - component: {fileID: 1928982030} + m_Layer: 5 + m_Name: UIManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1928982027 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928982026} + 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: 511399609} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1928982028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928982026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 414edca99b7a04940a0801ec06c99007, type: 3} + m_Name: + m_EditorClassIdentifier: + MessageBox: {fileID: 200344307} + TextPrefab: {fileID: 6669642163532043162, guid: b8fb23282ce09a84c8d0907986c5189e, type: 3} + maxMassages: 25 + infoColor: {r: 1, g: 1, b: 1, a: 1} + successColor: {r: 0, g: 1, b: 0, a: 1} + errorColor: {r: 1, g: 0, b: 0, a: 1} + warningColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} +--- !u!114 &1928982029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928982026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 604d05168c977c04887a3add62ce34da, type: 3} + m_Name: + m_EditorClassIdentifier: + Agent: {fileID: 629870337} + TimeLimInputField: {fileID: 878239541} + TimeLimPlaceholder: {fileID: 984439408} +--- !u!114 &1928982030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928982026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 065aae6979c750b4fa0a0be5dbd8d2c7, type: 3} + m_Name: + m_EditorClassIdentifier: + Agent: {fileID: 629870337} +--- !u!114 &1928982031 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928982026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f31155528181e24438cf507311adf048, type: 3} + m_Name: + m_EditorClassIdentifier: + Agent: {fileID: 629870337} + nonRInputField: {fileID: 756103205} + shootRInputField: {fileID: 1931933154} + shootWithoutReadyRInputField: {fileID: 1832129956} + hitRInputField: {fileID: 785752920} + killRInputField: {fileID: 429369156} + winRInputField: {fileID: 1148611241} + loseRInputField: {fileID: 1483392556} + nonRPlaceholder: {fileID: 2141717} + shootRPlaceholder: {fileID: 136678430} + shootWithoutReadyRPlaceholder: {fileID: 1753479626} + hitRPlaceholder: {fileID: 2138874025} + killRPlaceholder: {fileID: 1399697881} + winRPlaceholder: {fileID: 1016459706} + loseRPlaceholder: {fileID: 1977465145} +--- !u!114 &1928982032 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928982026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 137cfd15c80550b4589b3dce99ff2d09, type: 3} + m_Name: + m_EditorClassIdentifier: + Agent: {fileID: 629870337} + enemyNumInputField: {fileID: 813204785} + enemyNumPlaceholder: {fileID: 146100693} +--- !u!1 &1931933152 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1931933153} + - component: {fileID: 1931933156} + - component: {fileID: 1931933155} + - component: {fileID: 1931933154} + m_Layer: 5 + m_Name: shootInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1931933153 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1931933152} + 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: + - {fileID: 136678429} + - {fileID: 429029228} + m_Father: {fileID: 194652655} + m_RootOrder: 8 + 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: 70, y: -20} + m_SizeDelta: {x: 100, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1931933154 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1931933152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1931933155} + m_TextComponent: {fileID: 429029229} + m_Placeholder: {fileID: 136678430} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1931933155 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1931933152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1931933156 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1931933152} + m_CullTransparentMesh: 1 +--- !u!1 &1935182772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1935182773} + - component: {fileID: 1935182775} + - component: {fileID: 1935182774} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1935182773 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935182772} + 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: 1282464052} + 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: 19.555555, y: 19.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1935182774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935182772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: x4 +--- !u!222 &1935182775 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935182772} + m_CullTransparentMesh: 1 +--- !u!1 &1946802029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1946802030} + - component: {fileID: 1946802034} + - component: {fileID: 1946802033} + - component: {fileID: 1946802032} + m_Layer: 5 + m_Name: nonAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1946802030 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946802029} + 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: + - {fileID: 1996723313} + m_Father: {fileID: 194652655} + 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: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1946802032 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946802029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1946802033} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982031} + m_TargetAssemblyTypeName: RealTimeRewardChanger, Assembly-CSharp + m_MethodName: nonRBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &1946802033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946802029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1946802034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946802029} + m_CullTransparentMesh: 1 +--- !u!1 &1950007529 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1950007530} + - component: {fileID: 1950007532} + - component: {fileID: 1950007531} + m_Layer: 5 + m_Name: shootReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1950007530 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950007529} + 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: 509053162} + m_RootOrder: 1 + 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: -20} + m_SizeDelta: {x: 316.0601, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1950007531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950007529} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'shootReward: ' +--- !u!222 &1950007532 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950007529} + m_CullTransparentMesh: 1 +--- !u!1 &1952665838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1952665839} + - component: {fileID: 1952665841} + - component: {fileID: 1952665840} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1952665839 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1952665838} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1725213616} + m_RootOrder: 1 + 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: -20.666668, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1952665840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1952665838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1952665841 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1952665838} + m_CullTransparentMesh: 1 +--- !u!1 &1953553496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1953553497} + - component: {fileID: 1953553499} + - component: {fileID: 1953553498} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1953553497 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953553496} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 140747536} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1953553498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953553496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1953553499 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953553496} + m_CullTransparentMesh: 1 +--- !u!1 &1958294034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1958294038} + - component: {fileID: 1958294037} + - component: {fileID: 1958294036} + - component: {fileID: 1958294035} + m_Layer: 5 + m_Name: hitAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1958294035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1958294034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1958294036} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982031} + m_TargetAssemblyTypeName: RealTimeRewardChanger, Assembly-CSharp + m_MethodName: hitRBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1958294036 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1958294034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1958294037 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1958294034} + m_CullTransparentMesh: 1 +--- !u!224 &1958294038 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1958294034} + 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: + - {fileID: 1045368339} + m_Father: {fileID: 194652655} + 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, y: -60} + m_SizeDelta: {x: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1966151976 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1966151977} + - component: {fileID: 1966151979} + - component: {fileID: 1966151978} + m_Layer: 0 + m_Name: painter_6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1966151977 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966151976} + 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: 611641053} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1966151978 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966151976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &1966151979 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1966151976} + m_CullTransparentMesh: 1 +--- !u!1 &1977465143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1977465144} + - component: {fileID: 1977465146} + - component: {fileID: 1977465145} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1977465144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977465143} + 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: 1483392555} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1977465145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977465143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: loseR +--- !u!222 &1977465146 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977465143} + m_CullTransparentMesh: 1 +--- !u!1 &1981716308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1981716309} + - component: {fileID: 1981716311} + - component: {fileID: 1981716310} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1981716309 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981716308} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1822552283} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1981716310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981716308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1981716311 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981716308} + m_CullTransparentMesh: 1 +--- !u!1 &1984237745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1984237746} + - component: {fileID: 1984237748} + - component: {fileID: 1984237747} + m_Layer: 0 + m_Name: Circle_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1984237746 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984237745} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1984237747 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984237745} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1984237748 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984237745} + m_Mesh: {fileID: 3440213568303713751, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!43 &1995503638 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh27068 + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 36 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 24 + localAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200010003000200040005000600050007000600080009000a0009000b000a000c000d000e000d000f000e00100011001200110013001200140015001600150017001600 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 24 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 48 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 1344 + _typelessdata: 00000000000000000000000000000000000000000000803f000080bf0000000000000000000080bf0000000000000000ced7a33c2ea6c93d00004842000000000000000000000000000000000000803f000080bf0000000000000000000080bf000048c2000000000f467b3f2ea6c93d00000000000000400000000000000000000000000000803f000080bf0000000000000000000080bf00000000000000400bd7a33c8b350c3e00004842000000400000000000000000000000000000803f000080bf0000000000000000000080bf000048c20000004009467b3f8b350c3e0000484200000000000000000000803f000000000000000000000000000000000000803f000080bf00000000000000000ed7a33c8b358c3e0000484200000000000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf000000000bd7a33cee5c823e0000484200000040000000000000803f000000000000000000000000000000000000803f000080bf00000000000000405b756f3d8b358c3e0000484200000040000080bf0000803f000000000000000000000000000000000000803f000080bf000080bf0000004059756f3dee5c823e0000484200000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf0000484200000000ced7a33c6cb0203e0000000000000000000080bf0000000000000000000080bf0000803f0000000000000000000080bf00000000000000000f467b3f6cb0203e0000484200000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf00004842000000400bd7a33ce112483e0000000000000040000080bf0000000000000000000080bf0000803f0000000000000000000080bf000000000000004009467b3fe112483e0000000000000000000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f0000000059756f3dc28d5c3e000000000000000000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000005b756f3dfb3e703e0000000000000040000080bf000080bf00000000000000000000000000000000000080bf000080bf0000803f000000400bd7a33cc28d5c3e000000000000004000000000000080bf00000000000000000000000000000000000080bf000080bf00000000000000400ed7a33cfb3e703e000000000000004000000000000000000000803f000000000000803f0000000000000000000080bf00000000000000001b467b3f6bb0a03d000048420000004000000000000000000000803f000000000000803f0000000000000000000080bf00004842000000003fd8a33c6bb0a03d0000000000000040000080bf000000000000803f000000000000803f0000000000000000000080bf00000000000080bf11467b3ff19b723d0000484200000040000080bf000000000000803f000000000000803f0000000000000000000080bf00004842000080bf0bd7a33cf19b723d0000000000000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf00000000000080bf0bd7a33c0bd7a33c0000484200000000000080bf00000000000080bf00000000000080bf0000000000000000000080bf000048c2000080bf11467b3f0bd7a33c00000000000000000000000000000000000080bf00000000000080bf0000000000000000000080bf00000000000000003fd8a33c6bb0203d00004842000000000000000000000000000080bf00000000000080bf0000000000000000000080bf000048c2000000001b467b3f6bb0203d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 25, y: 1, z: -0.5} + m_Extent: {x: 25, y: 1, z: 0.5} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1996723312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1996723313} + - component: {fileID: 1996723315} + - component: {fileID: 1996723314} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1996723313 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1996723312} + 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: 1946802030} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1996723314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1996723312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &1996723315 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1996723312} + m_CullTransparentMesh: 1 +--- !u!1 &2009713365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2009713366} + - component: {fileID: 2009713368} + - component: {fileID: 2009713367} + m_Layer: 0 + m_Name: column1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2009713366 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009713365} + 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: + - {fileID: 143757500} + - {fileID: 1358647292} + m_Father: {fileID: 101801539} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &2009713367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009713365} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2009713368 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009713365} + m_CullTransparentMesh: 1 +--- !u!1 &2021417082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2021417083} + - component: {fileID: 2021417085} + - component: {fileID: 2021417084} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2021417083 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021417082} + 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: 962451837} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &2021417084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021417082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 70 +--- !u!222 &2021417085 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021417082} + m_CullTransparentMesh: 1 +--- !u!1 &2022475717 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2022475718} + - component: {fileID: 2022475720} + - component: {fileID: 2022475719} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2022475718 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022475717} + 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: 335823787} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &2022475719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022475717} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &2022475720 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022475717} + m_CullTransparentMesh: 1 +--- !u!1 &2026877415 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2026877416} + - component: {fileID: 2026877418} + - component: {fileID: 2026877417} + m_Layer: 0 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2026877416 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2026877415} + 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: + - {fileID: 404938102} + - {fileID: 1888459658} + m_Father: {fileID: 162376322} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &2026877417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2026877415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2026877418 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2026877415} + m_CullTransparentMesh: 1 +--- !u!1001 &2027516183 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 863884970} + m_Modifications: + - target: {fileID: 1225757330756864865, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1718911498} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.x + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalPosition.z + value: -8 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4658081160006525512, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7581380566783588035, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1718911498} + - target: {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1718911498} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_Name + value: 1x30Cube + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_TagString + value: Wall + objectReference: {fileID: 0} + - target: {fileID: 8288440288027676086, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + propertyPath: m_StaticEditorFlags + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 7872882754437720452, guid: db65a59014728b245830bf6269cbbfa6, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: db65a59014728b245830bf6269cbbfa6, type: 3} +--- !u!1 &2032658542 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2032658543} + - component: {fileID: 2032658545} + - component: {fileID: 2032658544} + m_Layer: 0 + m_Name: Cube.018_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2032658543 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032658542} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2032658544 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032658542} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2032658545 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032658542} + m_Mesh: {fileID: -3773398725173850471, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &2037469698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2037469699} + - component: {fileID: 2037469701} + - component: {fileID: 2037469700} + m_Layer: 0 + m_Name: Cube.009_low + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2037469699 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037469698} + m_LocalRotation: {x: -0.7071068, y: -0.000000057601163, z: -0.000000057601163, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 1773751427} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2037469700 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037469698} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08d76a9e6d6712d4aa9193bdb4f6b55f, 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 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2037469701 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037469698} + m_Mesh: {fileID: 1558708428209142139, guid: 99fcce1f10b2ebd4a8cd31a345f6bed8, type: 3} +--- !u!1 &2037616962 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2037616963} + - component: {fileID: 2037616965} + - component: {fileID: 2037616964} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2037616963 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037616962} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 491271242} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2037616964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037616962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2037616965 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037616962} + m_CullTransparentMesh: 1 +--- !u!1 &2037666612 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2037666613} + m_Layer: 0 + m_Name: Tooltip0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2037666613 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037666612} + 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: + - {fileID: 162376322} + - {fileID: 141368731} + m_Father: {fileID: 611641053} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!1 &2039575182 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2039575183} + - component: {fileID: 2039575185} + - component: {fileID: 2039575184} + m_Layer: 0 + m_Name: painter_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2039575183 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2039575182} + 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: 1213129649} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &2039575184 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2039575182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &2039575185 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2039575182} + m_CullTransparentMesh: 1 +--- !u!1 &2042180457 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2042180458} + - component: {fileID: 2042180460} + - component: {fileID: 2042180459} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2042180458 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042180457} + 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: 290413416} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2042180459 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042180457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &2042180460 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042180457} + m_CullTransparentMesh: 1 +--- !u!1 &2045678516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2045678517} + - component: {fileID: 2045678519} + - component: {fileID: 2045678518} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2045678517 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2045678516} + 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: 973809284} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &2045678518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2045678516} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &2045678519 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2045678516} + m_CullTransparentMesh: 1 +--- !u!1 &2047194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2047194226} + - component: {fileID: 2047194228} + - component: {fileID: 2047194227} + m_Layer: 5 + m_Name: left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2047194226 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2047194225} + 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: 215367152} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -763.2, y: -427.6} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2047194227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2047194225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: f93a52d02d735b642888188cc77164da, type: 3} + m_FontSize: 25 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u2190" +--- !u!222 &2047194228 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2047194225} + m_CullTransparentMesh: 1 +--- !u!1 &2054949622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2054949623} + - component: {fileID: 2054949625} + - component: {fileID: 2054949624} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2054949623 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2054949622} + 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: 465774759} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -4, y: 0} + m_SizeDelta: {x: 21.333334, y: 19.555555} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &2054949624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2054949622} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 70 +--- !u!222 &2054949625 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2054949622} + m_CullTransparentMesh: 1 +--- !u!1 &2062704622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2062704623} + - component: {fileID: 2062704624} + - component: {fileID: 2062704625} + m_Layer: 5 + m_Name: hitRewardData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2062704623 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062704622} + 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: 497823044} + 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, y: -60} + m_SizeDelta: {x: 70, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2062704624 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062704622} + m_CullTransparentMesh: 1 +--- !u!114 &2062704625 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062704622} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 23 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 00 +--- !u!1 &2076769189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076769193} + - component: {fileID: 2076769192} + - component: {fileID: 2076769191} + - component: {fileID: 2076769190} + m_Layer: 5 + m_Name: killAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2076769190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076769189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2076769191} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982031} + m_TargetAssemblyTypeName: RealTimeRewardChanger, Assembly-CSharp + m_MethodName: killRBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &2076769191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076769189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2076769192 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076769189} + m_CullTransparentMesh: 1 +--- !u!224 &2076769193 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076769189} + 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: + - {fileID: 670541042} + m_Father: {fileID: 194652655} + m_RootOrder: 4 + 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: -80} + m_SizeDelta: {x: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2085253771 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2085253772} + - component: {fileID: 2085253774} + - component: {fileID: 2085253773} + m_Layer: 0 + m_Name: axis_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2085253772 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2085253771} + 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: + - {fileID: 1032063797} + - {fileID: 149710881} + m_Father: {fileID: 800843590} + m_RootOrder: 4 + 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: 230.26001, y: -140} + m_SizeDelta: {x: 27.555555, y: 23.555555} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2085253773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2085253771} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2085253774 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2085253771} + m_CullTransparentMesh: 1 +--- !u!1 &2088978189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2088978190} + - component: {fileID: 2088978192} + - component: {fileID: 2088978191} + m_Layer: 0 + m_Name: info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2088978190 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088978189} + 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: + - {fileID: 1276826918} + - {fileID: 15538179} + m_Father: {fileID: 625252342} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &2088978191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088978189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61287841bdc4142caba8e77985cd8715, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1254902, g: 0.1254902, b: 0.1254902, a: 0.6666667} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2088978192 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088978189} + m_CullTransparentMesh: 1 +--- !u!1 &2108148303 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2108148304} + - component: {fileID: 2108148306} + - component: {fileID: 2108148305} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2108148304 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108148303} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1842428954} + m_RootOrder: 1 + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2108148305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108148303} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2108148306 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108148303} + m_CullTransparentMesh: 1 +--- !u!1 &2114851407 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2114851408} + - component: {fileID: 2114851410} + - component: {fileID: 2114851409} + m_Layer: 0 + m_Name: painter_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2114851408 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114851407} + 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: 201489786} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &2114851409 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114851407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &2114851410 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114851407} + m_CullTransparentMesh: 1 +--- !u!1 &2116623348 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2116623349} + - component: {fileID: 2116623351} + - component: {fileID: 2116623350} + m_Layer: 0 + m_Name: painter_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2116623349 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116623348} + 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: 611641053} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 580, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &2116623350 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116623348} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01c85cd323a9f4dfb803470695bd0944, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &2116623351 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116623348} + m_CullTransparentMesh: 1 +--- !u!1 &2121688057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2121688058} + - component: {fileID: 2121688060} + - component: {fileID: 2121688059} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2121688058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2121688057} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 568499057} + m_RootOrder: 1 + 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: -19.777779, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2121688059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2121688057} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2121688060 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2121688057} + m_CullTransparentMesh: 1 +--- !u!1 &2131057826 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2131057827} + - component: {fileID: 2131057830} + - component: {fileID: 2131057829} + - component: {fileID: 2131057828} + m_Layer: 5 + m_Name: enemyNumAddBT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2131057827 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131057826} + 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: + - {fileID: 1832248881} + m_Father: {fileID: 313400500} + 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: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2131057828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131057826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2131057829} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1928982032} + m_TargetAssemblyTypeName: RealTimeEnemyNumChanger, Assembly-CSharp + m_MethodName: EnemyChangeBTPresses + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &2131057829 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131057826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2131057830 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131057826} + m_CullTransparentMesh: 1 +--- !u!1 &2138874023 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2138874024} + - component: {fileID: 2138874026} + - component: {fileID: 2138874025} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2138874024 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2138874023} + 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: 785752919} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 3, y: 0} + m_SizeDelta: {x: -6, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2138874025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2138874023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: hitR +--- !u!222 &2138874026 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2138874023} + m_CullTransparentMesh: 1 +--- !u!1 &2142133931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2142133932} + - component: {fileID: 2142133934} + - component: {fileID: 2142133933} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2142133932 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2142133931} + 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: 800325714} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2142133933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2142133931} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: <<< +--- !u!222 &2142133934 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2142133931} + m_CullTransparentMesh: 1 diff --git a/Assets/Scenes/InGame.unity.meta b/Assets/Scenes/InGame.unity.meta new file mode 100644 index 0000000..6b8c3b5 --- /dev/null +++ b/Assets/Scenes/InGame.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ef8aa1b5799bc8a4c8adeedf1e5553c7 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity new file mode 100644 index 0000000..2221b04 --- /dev/null +++ b/Assets/Scenes/SampleScene.unity @@ -0,0 +1,267 @@ +%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: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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: 705507994} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + 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: 1 + 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_LightingSettings: {fileID: 0} +--- !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 &705507993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705507995} + - component: {fileID: 705507994} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &705507994 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &705507995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + - component: {fileID: 963194227} + - component: {fileID: 963194226} + 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 &963194226 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 +--- !u!20 &963194227 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + 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: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, 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} diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Scenes/SampleScene.unity.meta new file mode 100644 index 0000000..952bd1e --- /dev/null +++ b/Assets/Scenes/SampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fc0d4010bbf28b4594072e72b8655ab +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Start.unity b/Assets/Scenes/Start.unity new file mode 100644 index 0000000..5a2c852 --- /dev/null +++ b/Assets/Scenes/Start.unity @@ -0,0 +1,7686 @@ +%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: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + 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: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + 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_LightingSettings: {fileID: 0} +--- !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 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &40421177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 40421178} + - component: {fileID: 40421180} + - component: {fileID: 40421179} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &40421178 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40421177} + 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: + - {fileID: 398273312} + m_Father: {fileID: 1138216963} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &40421179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40421177} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &40421180 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40421177} + m_CullTransparentMesh: 1 +--- !u!1 &42682887 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 42682888} + - component: {fileID: 42682890} + - component: {fileID: 42682889} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &42682888 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42682887} + 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: 883289516} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &42682889 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42682887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Start +--- !u!222 &42682890 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42682887} + m_CullTransparentMesh: 1 +--- !u!1 &83479713 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 83479714} + - component: {fileID: 83479717} + - component: {fileID: 83479716} + - component: {fileID: 83479715} + m_Layer: 5 + m_Name: TimeLimitInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &83479714 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83479713} + 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: + - {fileID: 1199381300} + - {fileID: 1577094367} + m_Father: {fileID: 1544423167} + 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: 80, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &83479715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83479713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 83479716} + m_TextComponent: {fileID: 1577094368} + m_Placeholder: {fileID: 1199381301} + m_ContentType: 2 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 4 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 1 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406051} + m_TargetAssemblyTypeName: EnvArgsChanger, Assembly-CSharp + m_MethodName: onTimeValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &83479716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83479713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &83479717 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83479713} + m_CullTransparentMesh: 1 +--- !u!1 &112144285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 112144286} + - component: {fileID: 112144288} + - component: {fileID: 112144287} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &112144286 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112144285} + 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: 653235283} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &112144287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112144285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LoadDirTime +--- !u!222 &112144288 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112144285} + m_CullTransparentMesh: 1 +--- !u!1 &129131657 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 129131658} + - component: {fileID: 129131660} + - component: {fileID: 129131659} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &129131658 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129131657} + 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: 1733870683} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &129131659 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129131657} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &129131660 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129131657} + m_CullTransparentMesh: 1 +--- !u!1 &132436944 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 132436945} + - component: {fileID: 132436947} + - component: {fileID: 132436946} + m_Layer: 5 + m_Name: InfoText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &132436945 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132436944} + 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: 1539152182} + 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: 565, y: 0} + m_SizeDelta: {x: 490.8, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &132436946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132436944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Input Date(just like 08311045)and Time(like 104504) +--- !u!222 &132436947 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132436944} + m_CullTransparentMesh: 1 +--- !u!1 &195568768 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 195568769} + - component: {fileID: 195568771} + - component: {fileID: 195568770} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &195568769 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 195568768} + 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: 1178472859} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &195568770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 195568768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &195568771 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 195568768} + m_CullTransparentMesh: 1 +--- !u!1 &214505146 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 214505148} + - component: {fileID: 214505147} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &214505147 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214505146} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &214505148 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214505146} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &228040751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 228040752} + - component: {fileID: 228040754} + - component: {fileID: 228040753} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &228040752 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228040751} + 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: 1054572789} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &228040753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228040751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &228040754 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228040751} + m_CullTransparentMesh: 1 +--- !u!1 &257592504 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 257592505} + - component: {fileID: 257592507} + - component: {fileID: 257592506} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &257592505 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 257592504} + 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: 277171738} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &257592506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 257592504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 1, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: TP +--- !u!222 &257592507 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 257592504} + m_CullTransparentMesh: 1 +--- !u!1 &265273350 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 265273351} + - component: {fileID: 265273353} + - component: {fileID: 265273352} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &265273351 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265273350} + 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: 1006873070} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &265273352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265273350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Lock Mouse +--- !u!222 &265273353 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265273350} + m_CullTransparentMesh: 1 +--- !u!1 &277171737 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 277171738} + - component: {fileID: 277171739} + m_Layer: 5 + m_Name: TPToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &277171738 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 277171737} + 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: + - {fileID: 1178472859} + - {fileID: 257592505} + m_Father: {fileID: 1118918522} + m_RootOrder: 1 + 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: 27.5, y: -18} + m_SizeDelta: {x: 50, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &277171739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 277171737} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 1178472860} + toggleTransition: 1 + graphic: {fileID: 195568770} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406051} + m_TargetAssemblyTypeName: EnvArgsChanger, Assembly-CSharp + m_MethodName: onTPCamToggleChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 1 +--- !u!1 &282242985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 282242986} + - component: {fileID: 282242988} + - component: {fileID: 282242987} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &282242986 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282242985} + 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: 1633180792} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &282242987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282242985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: TakeActionsBetweenDecisions +--- !u!222 &282242988 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282242985} + m_CullTransparentMesh: 1 +--- !u!1 &289162991 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 289162992} + m_Layer: 5 + m_Name: EnemyNum + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &289162992 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 289162991} + 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: + - {fileID: 409680776} + - {fileID: 1746261329} + m_Father: {fileID: 1375409014} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 214, y: -290} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &293920964 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 293920965} + - component: {fileID: 293920968} + - component: {fileID: 293920967} + - component: {fileID: 293920966} + m_Layer: 5 + m_Name: LoadDirTextBox-Date + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &293920965 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 293920964} + 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: + - {fileID: 884034940} + - {fileID: 746911212} + m_Father: {fileID: 1539152182} + m_RootOrder: 1 + 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: 95, y: 0} + m_SizeDelta: {x: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &293920966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 293920964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 293920967} + m_TextComponent: {fileID: 746911213} + m_Placeholder: {fileID: 884034941} + m_ContentType: 2 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 4 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 1 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406052} + m_TargetAssemblyTypeName: LoadDirChanger, Assembly-CSharp + m_MethodName: OnDateValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &293920967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 293920964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &293920968 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 293920964} + m_CullTransparentMesh: 1 +--- !u!1 &350269940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 350269941} + - component: {fileID: 350269943} + - component: {fileID: 350269942} + m_Layer: 5 + m_Name: killReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &350269941 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350269940} + 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: 1546066800} + m_RootOrder: 11 + 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: -155, y: -120} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &350269942 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350269940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'killReward + +' +--- !u!222 &350269943 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350269940} + m_CullTransparentMesh: 1 +--- !u!1 &398273311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 398273312} + - component: {fileID: 398273314} + - component: {fileID: 398273313} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &398273312 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398273311} + 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: 40421178} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &398273313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398273311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &398273314 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398273311} + m_CullTransparentMesh: 1 +--- !u!1 &409680775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 409680776} + - component: {fileID: 409680779} + - component: {fileID: 409680778} + - component: {fileID: 409680777} + m_Layer: 5 + m_Name: EnemyNumInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &409680776 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409680775} + 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: + - {fileID: 830483181} + - {fileID: 1963132020} + m_Father: {fileID: 289162992} + 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: 80, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &409680777 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409680775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 409680778} + m_TextComponent: {fileID: 1963132021} + m_Placeholder: {fileID: 830483182} + m_ContentType: 2 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 4 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 1 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: StartSceneEnemyNumChanger, Assembly-CSharp + m_MethodName: onValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &409680778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409680775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &409680779 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409680775} + m_CullTransparentMesh: 1 +--- !u!1 &473186478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 473186479} + - component: {fileID: 473186481} + - component: {fileID: 473186480} + m_Layer: 5 + m_Name: DecisionPeriodText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &473186479 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473186478} + 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: 2046915484} + m_RootOrder: 2 + 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: -74.09999, y: 0} + m_SizeDelta: {x: 120, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &473186480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473186478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'DecisionPeriod:' +--- !u!222 &473186481 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 473186478} + m_CullTransparentMesh: 1 +--- !u!1 &480624646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 480624647} + - component: {fileID: 480624649} + - component: {fileID: 480624648} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &480624647 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480624646} + 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: 619248516} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &480624648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480624646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 10.0 +--- !u!222 &480624649 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480624646} + m_CullTransparentMesh: 1 +--- !u!1 &519891816 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519891817} + - component: {fileID: 519891820} + - component: {fileID: 519891819} + - component: {fileID: 519891818} + m_Layer: 5 + m_Name: shootWithoutReady + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &519891817 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519891816} + 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: + - {fileID: 1002439974} + - {fileID: 979759537} + m_Father: {fileID: 1546066800} + m_RootOrder: 2 + 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: -60} + m_SizeDelta: {x: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &519891818 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519891816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 519891819} + m_TextComponent: {fileID: 979759538} + m_Placeholder: {fileID: 1002439975} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1546066801} + m_TargetAssemblyTypeName: RewardsChange, Assembly-CSharp + m_MethodName: shootWOReadyRValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &519891819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519891816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &519891820 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519891816} + m_CullTransparentMesh: 1 +--- !u!1 &570582915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570582916} + - component: {fileID: 570582918} + - component: {fileID: 570582917} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &570582916 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570582915} + 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: 1632904033} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &570582917 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570582915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &570582918 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570582915} + m_CullTransparentMesh: 1 +--- !u!1 &589318726 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 589318727} + - component: {fileID: 589318730} + - component: {fileID: 589318729} + - component: {fileID: 589318728} + m_Layer: 5 + m_Name: non + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &589318727 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589318726} + 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: + - {fileID: 1653556294} + - {fileID: 1952163555} + m_Father: {fileID: 1546066800} + 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: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &589318728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589318726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 589318729} + m_TextComponent: {fileID: 1952163556} + m_Placeholder: {fileID: 1653556295} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1546066801} + m_TargetAssemblyTypeName: RewardsChange, Assembly-CSharp + m_MethodName: nonRValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &589318729 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589318726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &589318730 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589318726} + m_CullTransparentMesh: 1 +--- !u!1 &619248515 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 619248516} + - component: {fileID: 619248519} + - component: {fileID: 619248518} + - component: {fileID: 619248517} + m_Layer: 5 + m_Name: kill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &619248516 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619248515} + 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: + - {fileID: 480624647} + - {fileID: 1768793743} + m_Father: {fileID: 1546066800} + m_RootOrder: 4 + 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: -120} + m_SizeDelta: {x: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &619248517 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619248515} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 619248518} + m_TextComponent: {fileID: 1768793744} + m_Placeholder: {fileID: 480624648} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1546066801} + m_TargetAssemblyTypeName: RewardsChange, Assembly-CSharp + m_MethodName: killRValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &619248518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619248515} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &619248519 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619248515} + m_CullTransparentMesh: 1 +--- !u!1 &651349051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 651349052} + - component: {fileID: 651349054} + m_Layer: 5 + m_Name: LoadDirToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &651349052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651349051} + 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: + - {fileID: 855266357} + m_Father: {fileID: 1539152182} + 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: 10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &651349054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651349051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 855266358} + toggleTransition: 1 + graphic: {fileID: 786591310} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406052} + m_TargetAssemblyTypeName: LoadDirChanger, Assembly-CSharp + m_MethodName: OnDirToggleChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 0 +--- !u!1 &653235282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 653235283} + - component: {fileID: 653235286} + - component: {fileID: 653235285} + - component: {fileID: 653235284} + m_Layer: 5 + m_Name: LoadDirTextBox-Time + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &653235283 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 653235282} + 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: + - {fileID: 112144286} + - {fileID: 1086771388} + m_Father: {fileID: 1539152182} + m_RootOrder: 2 + 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: 237.17099, y: 0} + m_SizeDelta: {x: 148.3425, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &653235284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 653235282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 653235285} + m_TextComponent: {fileID: 1086771389} + m_Placeholder: {fileID: 112144287} + m_ContentType: 2 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 4 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 1 + m_CharacterLimit: 6 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406052} + m_TargetAssemblyTypeName: LoadDirChanger, Assembly-CSharp + m_MethodName: OnTimeValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &653235285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 653235282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &653235286 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 653235282} + m_CullTransparentMesh: 1 +--- !u!1 &658127036 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 658127037} + - component: {fileID: 658127039} + - component: {fileID: 658127038} + m_Layer: 5 + m_Name: winReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &658127037 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 658127036} + 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: 1546066800} + m_RootOrder: 12 + 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: -155, y: -150} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &658127038 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 658127036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: winReward +--- !u!222 &658127039 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 658127036} + m_CullTransparentMesh: 1 +--- !u!1 &668470152 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 668470153} + - component: {fileID: 668470155} + - component: {fileID: 668470154} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &668470153 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668470152} + 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: + - {fileID: 2070899080} + m_Father: {fileID: 1633180792} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &668470154 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668470152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &668470155 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668470152} + m_CullTransparentMesh: 1 +--- !u!1 &720101934 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 720101935} + - component: {fileID: 720101937} + - component: {fileID: 720101936} + m_Layer: 5 + m_Name: nonReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &720101935 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 720101934} + 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: 1546066800} + m_RootOrder: 7 + 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: -155, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &720101936 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 720101934} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: nonReward +--- !u!222 &720101937 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 720101934} + m_CullTransparentMesh: 1 +--- !u!1 &726997157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 726997160} + - component: {fileID: 726997159} + - component: {fileID: 726997158} + m_Layer: 0 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &726997158 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 726997157} + m_Enabled: 1 +--- !u!20 &726997159 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 726997157} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, 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: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &726997160 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 726997157} + 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!1 &746911211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 746911212} + - component: {fileID: 746911214} + - component: {fileID: 746911213} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &746911212 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746911211} + 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: 293920965} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &746911213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746911211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &746911214 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746911211} + m_CullTransparentMesh: 1 +--- !u!1 &764033377 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 764033378} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &764033378 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764033377} + 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: + - {fileID: 910511157} + m_Father: {fileID: 2025428251} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &786591308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 786591309} + - component: {fileID: 786591311} + - component: {fileID: 786591310} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &786591309 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786591308} + 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: 855266357} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &786591310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786591308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &786591311 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786591308} + m_CullTransparentMesh: 1 +--- !u!1 &808693437 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 808693438} + - component: {fileID: 808693440} + - component: {fileID: 808693439} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &808693438 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 808693437} + 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: 2087760451} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &808693439 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 808693437} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &808693440 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 808693437} + m_CullTransparentMesh: 1 +--- !u!1 &830483180 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 830483181} + - component: {fileID: 830483183} + - component: {fileID: 830483182} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &830483181 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 830483180} + 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: 409680776} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 5, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &830483182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 830483180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 3 +--- !u!222 &830483183 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 830483180} + m_CullTransparentMesh: 1 +--- !u!1 &846094854 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 846094855} + - component: {fileID: 846094857} + - component: {fileID: 846094856} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &846094855 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846094854} + 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: 2087760451} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &846094856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846094854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 20.0 +--- !u!222 &846094857 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846094854} + m_CullTransparentMesh: 1 +--- !u!1 &855266356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 855266357} + - component: {fileID: 855266359} + - component: {fileID: 855266358} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &855266357 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855266356} + 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: + - {fileID: 786591309} + m_Father: {fileID: 651349052} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &855266358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855266356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &855266359 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855266356} + m_CullTransparentMesh: 1 +--- !u!1 &883289515 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 883289516} + - component: {fileID: 883289519} + - component: {fileID: 883289518} + - component: {fileID: 883289517} + m_Layer: 5 + m_Name: Start + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &883289516 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 883289515} + 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: + - {fileID: 42682888} + m_Father: {fileID: 1375409014} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0.5, y: 87} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &883289517 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 883289515} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 883289518} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406053} + m_TargetAssemblyTypeName: SceneChange, Assembly-CSharp + m_MethodName: onStartClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &883289518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 883289515} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &883289519 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 883289515} + m_CullTransparentMesh: 1 +--- !u!1 &884034939 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 884034940} + - component: {fileID: 884034942} + - component: {fileID: 884034941} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &884034940 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 884034939} + 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: 293920965} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &884034941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 884034939} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: LoadDirDate +--- !u!222 &884034942 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 884034939} + m_CullTransparentMesh: 1 +--- !u!1 &892644347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 892644348} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &892644348 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892644347} + 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: + - {fileID: 1413448795} + m_Father: {fileID: 2025428251} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &901241035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 901241036} + - component: {fileID: 901241038} + - component: {fileID: 901241037} + m_Layer: 5 + m_Name: DecisionPeriodData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &901241036 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901241035} + 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: 2046915484} + 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: -11.3, y: 0} + m_SizeDelta: {x: 24.8115, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &901241037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901241035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 1 +--- !u!222 &901241038 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901241035} + m_CullTransparentMesh: 1 +--- !u!1 &910511156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 910511157} + - component: {fileID: 910511159} + - component: {fileID: 910511158} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &910511157 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 910511156} + 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: 764033378} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &910511158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 910511156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &910511159 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 910511156} + m_CullTransparentMesh: 1 +--- !u!1 &979759536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 979759537} + - component: {fileID: 979759539} + - component: {fileID: 979759538} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &979759537 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979759536} + 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: 519891817} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &979759538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979759536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &979759539 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979759536} + m_CullTransparentMesh: 1 +--- !u!1 &1002439973 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002439974} + - component: {fileID: 1002439976} + - component: {fileID: 1002439975} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1002439974 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002439973} + 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: 519891817} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1002439975 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002439973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: -0.06 +--- !u!222 &1002439976 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002439973} + m_CullTransparentMesh: 1 +--- !u!1 &1006873069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1006873070} + - component: {fileID: 1006873071} + m_Layer: 5 + m_Name: LockMouseToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1006873070 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006873069} + 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: + - {fileID: 1632904033} + - {fileID: 265273351} + m_Father: {fileID: 1375409014} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 540, y: -80} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1006873071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006873069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1632904034} + toggleTransition: 1 + graphic: {fileID: 570582917} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406051} + m_TargetAssemblyTypeName: EnvArgsChanger, Assembly-CSharp + m_MethodName: onLockMouseToggleChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 0 +--- !u!1 &1054572788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1054572789} + - component: {fileID: 1054572792} + - component: {fileID: 1054572791} + - component: {fileID: 1054572790} + m_Layer: 5 + m_Name: lose + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1054572789 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054572788} + 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: + - {fileID: 1507282999} + - {fileID: 228040752} + m_Father: {fileID: 1546066800} + m_RootOrder: 6 + 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: -180} + m_SizeDelta: {x: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1054572790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054572788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1054572791} + m_TextComponent: {fileID: 228040753} + m_Placeholder: {fileID: 1507283000} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1546066801} + m_TargetAssemblyTypeName: RewardsChange, Assembly-CSharp + m_MethodName: loseRValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1054572791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054572788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1054572792 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054572788} + m_CullTransparentMesh: 1 +--- !u!1 &1065028216 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1065028217} + - component: {fileID: 1065028220} + - component: {fileID: 1065028219} + - component: {fileID: 1065028218} + m_Layer: 5 + m_Name: shoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1065028217 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065028216} + 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: + - {fileID: 1813454583} + - {fileID: 1942806763} + m_Father: {fileID: 1546066800} + m_RootOrder: 1 + 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: -30} + m_SizeDelta: {x: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1065028218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065028216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1065028219} + m_TextComponent: {fileID: 1942806764} + m_Placeholder: {fileID: 1813454584} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1546066801} + m_TargetAssemblyTypeName: RewardsChange, Assembly-CSharp + m_MethodName: shootRValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1065028219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065028216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1065028220 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065028216} + m_CullTransparentMesh: 1 +--- !u!1 &1086771387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1086771388} + - component: {fileID: 1086771390} + - component: {fileID: 1086771389} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1086771388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086771387} + 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: 653235283} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1086771389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086771387} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1086771390 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086771387} + m_CullTransparentMesh: 1 +--- !u!1 &1118918521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1118918522} + m_Layer: 5 + m_Name: DefaultCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1118918522 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1118918521} + 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: + - {fileID: 1138216963} + - {fileID: 277171738} + - {fileID: 1717720667} + m_Father: {fileID: 1375409014} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 514, y: -105} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1138216962 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1138216963} + - component: {fileID: 1138216964} + m_Layer: 5 + m_Name: FPToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1138216963 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138216962} + 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: + - {fileID: 40421178} + - {fileID: 1746614686} + m_Father: {fileID: 1118918522} + 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: -25, y: -18} + m_SizeDelta: {x: 50, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1138216964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138216962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 40421179} + toggleTransition: 1 + graphic: {fileID: 398273313} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406051} + m_TargetAssemblyTypeName: EnvArgsChanger, Assembly-CSharp + m_MethodName: onFPCameToggleChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 0 +--- !u!1 &1165772550 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1165772551} + - component: {fileID: 1165772553} + - component: {fileID: 1165772552} + m_Layer: 5 + m_Name: TimeLimitText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1165772551 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165772550} + 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: 1544423167} + m_RootOrder: 1 + 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: -48.5, y: 0} + m_SizeDelta: {x: 80, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1165772552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165772550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Time Limit +--- !u!222 &1165772553 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165772550} + m_CullTransparentMesh: 1 +--- !u!1 &1178472858 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178472859} + - component: {fileID: 1178472861} + - component: {fileID: 1178472860} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1178472859 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178472858} + 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: + - {fileID: 195568769} + m_Father: {fileID: 277171738} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1178472860 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178472858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1178472861 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178472858} + m_CullTransparentMesh: 1 +--- !u!1 &1199381299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199381300} + - component: {fileID: 1199381302} + - component: {fileID: 1199381301} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1199381300 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199381299} + 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: 83479714} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 5, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1199381301 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199381299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 15 +--- !u!222 &1199381302 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199381299} + m_CullTransparentMesh: 1 +--- !u!1 &1214676943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1214676944} + - component: {fileID: 1214676946} + - component: {fileID: 1214676945} + m_Layer: 5 + m_Name: shootReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1214676944 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214676943} + 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: 1546066800} + m_RootOrder: 8 + 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: -155, y: -30} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1214676945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214676943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: shootReward +--- !u!222 &1214676946 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214676943} + m_CullTransparentMesh: 1 +--- !u!1 &1341524053 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1341524054} + - component: {fileID: 1341524056} + - component: {fileID: 1341524055} + m_Layer: 5 + m_Name: hitReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1341524054 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341524053} + 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: 1546066800} + m_RootOrder: 10 + 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: -155, y: -90} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1341524055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341524053} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: hitReward +--- !u!222 &1341524056 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341524053} + m_CullTransparentMesh: 1 +--- !u!1 &1375409010 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1375409014} + - component: {fileID: 1375409013} + - component: {fileID: 1375409012} + - component: {fileID: 1375409011} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1375409011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375409010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1375409012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375409010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1375409013 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375409010} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1375409014 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375409010} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2024406050} + - {fileID: 1982556591} + - {fileID: 1951625459} + - {fileID: 883289516} + - {fileID: 1539152182} + - {fileID: 1546066800} + - {fileID: 2046915484} + - {fileID: 289162992} + - {fileID: 1544423167} + - {fileID: 1006873070} + - {fileID: 1118918522} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1389931565 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1389931568} + - component: {fileID: 1389931567} + - component: {fileID: 1389931566} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1389931566 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1389931565} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1389931567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1389931565} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1389931568 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1389931565} + 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: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1413448794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1413448795} + - component: {fileID: 1413448797} + - component: {fileID: 1413448796} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1413448795 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1413448794} + 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: 892644348} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1413448796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1413448794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1413448797 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1413448794} + m_CullTransparentMesh: 1 +--- !u!1 &1483319556 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1483319558} + - component: {fileID: 1483319557} + m_Layer: 0 + m_Name: StartSeneDataTransfer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1483319557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483319556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 52ba7faaa6129cf418f26c5933d4ea0e, type: 3} + m_Name: + m_EditorClassIdentifier: + nonRewardDefault: -0.05 + shootRewardDefault: -0.06 + shootWithoutReadyRewardDefault: -0.06 + hitRewardDefault: 5 + killRewardDefault: 10 + winRewardDefault: 20 + loseRewardDefault: -10 + lockMouse: 0 + defaultTPCamera: 1 +--- !u!4 &1483319558 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483319556} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 497.08234, y: 299.96817, z: 296.6533} + 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} +--- !u!1 &1507282998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1507282999} + - component: {fileID: 1507283001} + - component: {fileID: 1507283000} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1507282999 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1507282998} + 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: 1054572789} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1507283000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1507282998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: -0.05 +--- !u!222 &1507283001 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1507282998} + m_CullTransparentMesh: 1 +--- !u!1 &1539152181 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1539152182} + m_Layer: 5 + m_Name: LoadDir + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1539152182 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539152181} + 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: + - {fileID: 132436945} + - {fileID: 293920965} + - {fileID: 653235283} + - {fileID: 651349052} + m_Father: {fileID: 1375409014} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -46} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1544423166 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1544423167} + m_Layer: 5 + m_Name: TimeLimit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1544423167 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544423166} + 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: + - {fileID: 83479714} + - {fileID: 1165772551} + m_Father: {fileID: 1375409014} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 214, y: -320} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1546066799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1546066800} + - component: {fileID: 1546066801} + m_Layer: 5 + m_Name: DefaultRewards + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1546066800 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1546066799} + 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: + - {fileID: 589318727} + - {fileID: 1065028217} + - {fileID: 519891817} + - {fileID: 1733870683} + - {fileID: 619248516} + - {fileID: 2087760451} + - {fileID: 1054572789} + - {fileID: 720101935} + - {fileID: 1214676944} + - {fileID: 2010289380} + - {fileID: 1341524054} + - {fileID: 350269941} + - {fileID: 658127037} + - {fileID: 1792678409} + m_Father: {fileID: 1375409014} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 282, y: -80} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1546066801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1546066799} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 44fd351436d221849991bd84d37d8109, type: 3} + m_Name: + m_EditorClassIdentifier: + DataTransfer: {fileID: 1483319556} + nonRInputOBJ: {fileID: 589318726} + shootRInputOBJ: {fileID: 1065028216} + shootWithoutReadyRInputOBJ: {fileID: 519891816} + hitRInputOBJ: {fileID: 1733870682} + killRInputOBJ: {fileID: 619248515} + winRInputOBJ: {fileID: 2087760450} + loseRInputOBJ: {fileID: 1054572788} + nonRInputText: {fileID: 720101936} + shootRInputText: {fileID: 1214676945} + shootWithoutReadyRInputText: {fileID: 2010289381} + hitRInputText: {fileID: 1341524055} + killRInputText: {fileID: 350269942} + winRInputText: {fileID: 658127038} + loseRInputText: {fileID: 1792678410} +--- !u!1 &1577094366 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1577094367} + - component: {fileID: 1577094369} + - component: {fileID: 1577094368} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1577094367 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1577094366} + 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: 83479714} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1577094368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1577094366} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1577094369 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1577094366} + m_CullTransparentMesh: 1 +--- !u!1 &1632904032 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1632904033} + - component: {fileID: 1632904035} + - component: {fileID: 1632904034} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1632904033 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1632904032} + 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: + - {fileID: 570582916} + m_Father: {fileID: 1006873070} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1632904034 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1632904032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1632904035 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1632904032} + m_CullTransparentMesh: 1 +--- !u!1 &1633180791 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1633180792} + - component: {fileID: 1633180793} + m_Layer: 5 + m_Name: TakeActionsBetweenDecisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1633180792 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1633180791} + 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: + - {fileID: 668470153} + - {fileID: 282242986} + m_Father: {fileID: 2046915484} + m_RootOrder: 1 + 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: 286.9, y: 0.5} + m_SizeDelta: {x: 247.8758, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1633180793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1633180791} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 668470154} + toggleTransition: 1 + graphic: {fileID: 2070899081} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406051} + m_TargetAssemblyTypeName: EnvArgsChanger, Assembly-CSharp + m_MethodName: onABDToggleChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 1 +--- !u!1 &1653556293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1653556294} + - component: {fileID: 1653556296} + - component: {fileID: 1653556295} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1653556294 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1653556293} + 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: 589318727} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1653556295 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1653556293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: -0.05 +--- !u!222 &1653556296 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1653556293} + m_CullTransparentMesh: 1 +--- !u!1 &1717720666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1717720667} + - component: {fileID: 1717720669} + - component: {fileID: 1717720668} + m_Layer: 5 + m_Name: DefaultCemeraText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1717720667 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717720666} + 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: 1118918522} + m_RootOrder: 2 + 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: 105, y: 16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1717720668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717720666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: DefaultCemera +--- !u!222 &1717720669 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717720666} + m_CullTransparentMesh: 1 +--- !u!1 &1733870682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1733870683} + - component: {fileID: 1733870686} + - component: {fileID: 1733870685} + - component: {fileID: 1733870684} + m_Layer: 5 + m_Name: hit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1733870683 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733870682} + 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: + - {fileID: 1868400972} + - {fileID: 129131658} + m_Father: {fileID: 1546066800} + 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, y: -90} + m_SizeDelta: {x: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1733870684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733870682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1733870685} + m_TextComponent: {fileID: 129131659} + m_Placeholder: {fileID: 1868400973} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1546066801} + m_TargetAssemblyTypeName: RewardsChange, Assembly-CSharp + m_MethodName: hitRValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1733870685 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733870682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1733870686 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733870682} + m_CullTransparentMesh: 1 +--- !u!1 &1746261328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1746261329} + - component: {fileID: 1746261331} + - component: {fileID: 1746261330} + m_Layer: 5 + m_Name: EnemyNumText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1746261329 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746261328} + 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: 289162992} + m_RootOrder: 1 + 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: -48.5, y: 0} + m_SizeDelta: {x: 80, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1746261330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746261328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enemy Num +--- !u!222 &1746261331 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746261328} + m_CullTransparentMesh: 1 +--- !u!1 &1746614685 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1746614686} + - component: {fileID: 1746614688} + - component: {fileID: 1746614687} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1746614686 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746614685} + 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: 1138216963} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -10, y: 0} + m_SizeDelta: {x: -20, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1746614687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746614685} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: FP +--- !u!222 &1746614688 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746614685} + m_CullTransparentMesh: 1 +--- !u!1 &1768793742 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1768793743} + - component: {fileID: 1768793745} + - component: {fileID: 1768793744} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1768793743 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768793742} + 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: 619248516} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1768793744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768793742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1768793745 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1768793742} + m_CullTransparentMesh: 1 +--- !u!1 &1792678408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1792678409} + - component: {fileID: 1792678411} + - component: {fileID: 1792678410} + m_Layer: 5 + m_Name: loseReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1792678409 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792678408} + 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: 1546066800} + m_RootOrder: 13 + 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: -155, y: -180} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1792678410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792678408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: loseReward +--- !u!222 &1792678411 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792678408} + m_CullTransparentMesh: 1 +--- !u!1 &1813454582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1813454583} + - component: {fileID: 1813454585} + - component: {fileID: 1813454584} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1813454583 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1813454582} + 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: 1065028217} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1813454584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1813454582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: -0.06 +--- !u!222 &1813454585 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1813454582} + m_CullTransparentMesh: 1 +--- !u!1 &1868400971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1868400972} + - component: {fileID: 1868400974} + - component: {fileID: 1868400973} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1868400972 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868400971} + 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: 1733870683} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1868400973 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868400971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 5.0 +--- !u!222 &1868400974 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868400971} + m_CullTransparentMesh: 1 +--- !u!1 &1876464233 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1876464234} + - component: {fileID: 1876464236} + - component: {fileID: 1876464235} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1876464234 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1876464233} + 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: 2025428251} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1876464235 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1876464233} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1876464236 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1876464233} + m_CullTransparentMesh: 1 +--- !u!1 &1942806762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1942806763} + - component: {fileID: 1942806765} + - component: {fileID: 1942806764} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1942806763 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1942806762} + 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: 1065028217} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1942806764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1942806762} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1942806765 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1942806762} + m_CullTransparentMesh: 1 +--- !u!1 &1951625458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1951625459} + - component: {fileID: 1951625461} + - component: {fileID: 1951625460} + m_Layer: 5 + m_Name: errorText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1951625459 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951625458} + 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: 1375409014} + m_RootOrder: 2 + 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.5, y: -140} + m_SizeDelta: {x: 185.77, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1951625460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951625458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1951625461 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951625458} + m_CullTransparentMesh: 1 +--- !u!1 &1952163554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1952163555} + - component: {fileID: 1952163557} + - component: {fileID: 1952163556} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1952163555 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1952163554} + 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: 589318727} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1952163556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1952163554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1952163557 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1952163554} + m_CullTransparentMesh: 1 +--- !u!1 &1963132019 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1963132020} + - component: {fileID: 1963132022} + - component: {fileID: 1963132021} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1963132020 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1963132019} + 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: 409680776} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1963132021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1963132019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1963132022 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1963132019} + m_CullTransparentMesh: 1 +--- !u!1 &1982556590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1982556591} + - component: {fileID: 1982556593} + - component: {fileID: 1982556592} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1982556591 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1982556590} + 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: 1375409014} + m_RootOrder: 1 + 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: 2282.503, y: 1165.1953} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1982556592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1982556590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1982556593 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1982556590} + m_CullTransparentMesh: 1 +--- !u!1 &2010289379 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2010289380} + - component: {fileID: 2010289382} + - component: {fileID: 2010289381} + m_Layer: 5 + m_Name: shootWithoutReady + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2010289380 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2010289379} + 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: 1546066800} + m_RootOrder: 9 + 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: -155, y: -60} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2010289381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2010289379} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 979318e2cdafc0e43bfd56bb63011857, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: shootWithoutReady +--- !u!222 &2010289382 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2010289379} + m_CullTransparentMesh: 1 +--- !u!1 &2024406049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2024406050} + - component: {fileID: 2024406053} + - component: {fileID: 2024406052} + - component: {fileID: 2024406051} + m_Layer: 5 + m_Name: UIManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2024406050 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2024406049} + 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: 1375409014} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2024406051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2024406049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccfe892ab0f980343b6df0fafaec38e2, type: 3} + m_Name: + m_EditorClassIdentifier: + DataTransfer: {fileID: 1483319556} + EnemyNumText: {fileID: 1746261330} + EnemyNumInput: {fileID: 409680777} + TimeLimText: {fileID: 1165772552} + TimelimInput: {fileID: 83479715} + DecisionPeriodSlide: {fileID: 2025428252} + DecisionPeriodDataText: {fileID: 901241037} + TakeActionsBetweenDecisionsToggle: {fileID: 1633180793} + LockMouseToggle: {fileID: 1006873071} + FPToggle: {fileID: 1138216964} + FPText: {fileID: 1746614687} + TPToggle: {fileID: 277171739} + TPText: {fileID: 257592506} +--- !u!114 &2024406052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2024406049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 664e98da80fb4d842b0c3aff09fd4dc9, type: 3} + m_Name: + m_EditorClassIdentifier: + LoadDirDateTextBox: {fileID: 293920966} + LoadDirTimeTextBox: {fileID: 653235284} + Toggle: {fileID: 651349054} + DataTransfer: {fileID: 1483319556} +--- !u!114 &2024406053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2024406049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae3df5f5faba1428ab2529c043b7ae, type: 3} + m_Name: + m_EditorClassIdentifier: + DataTransfer: {fileID: 1483319556} + errorText: {fileID: 1951625460} +--- !u!1 &2025428250 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2025428251} + - component: {fileID: 2025428252} + m_Layer: 5 + m_Name: DecisionPeriodSlide + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2025428251 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025428250} + 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: + - {fileID: 1876464234} + - {fileID: 892644348} + - {fileID: 764033378} + m_Father: {fileID: 2046915484} + 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: 81.57973, y: 0} + m_SizeDelta: {x: 152.7595, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2025428252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025428250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 910511158} + m_FillRect: {fileID: 1413448795} + m_HandleRect: {fileID: 910511157} + m_Direction: 0 + m_MinValue: 1 + m_MaxValue: 20 + m_WholeNumbers: 1 + m_Value: 1 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2024406051} + m_TargetAssemblyTypeName: EnvArgsChanger, Assembly-CSharp + m_MethodName: onDPSlideValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &2046915483 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2046915484} + m_Layer: 5 + m_Name: DecisionPeriod + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2046915484 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046915483} + 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: + - {fileID: 2025428251} + - {fileID: 1633180792} + - {fileID: 473186479} + - {fileID: 901241036} + m_Father: {fileID: 1375409014} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 214, y: -348.5} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2070899079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2070899080} + - component: {fileID: 2070899082} + - component: {fileID: 2070899081} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2070899080 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070899079} + 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: 668470153} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2070899081 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070899079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2070899082 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070899079} + m_CullTransparentMesh: 1 +--- !u!1 &2087760450 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2087760451} + - component: {fileID: 2087760454} + - component: {fileID: 2087760453} + - component: {fileID: 2087760452} + m_Layer: 5 + m_Name: win + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2087760451 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087760450} + 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: + - {fileID: 846094855} + - {fileID: 808693438} + m_Father: {fileID: 1546066800} + m_RootOrder: 5 + 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: -150} + m_SizeDelta: {x: 136, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2087760452 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087760450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2087760453} + m_TextComponent: {fileID: 808693439} + m_Placeholder: {fileID: 846094856} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1546066801} + m_TargetAssemblyTypeName: RewardsChange, Assembly-CSharp + m_MethodName: winRValueChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &2087760453 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087760450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2087760454 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087760450} + m_CullTransparentMesh: 1 diff --git a/Assets/Scenes/Start.unity.meta b/Assets/Scenes/Start.unity.meta new file mode 100644 index 0000000..72d2114 --- /dev/null +++ b/Assets/Scenes/Start.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fc168544586b83f47a73568842170c14 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script.meta b/Assets/Script.meta new file mode 100644 index 0000000..9fa0257 --- /dev/null +++ b/Assets/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 240f7b386bfcf4e41ac9a2087d0a5f54 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame.meta b/Assets/Script/InGame.meta new file mode 100644 index 0000000..aa12207 --- /dev/null +++ b/Assets/Script/InGame.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a21ce0a6cd8625d40a303acfa21d924c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/AgentWithGun.cs b/Assets/Script/InGame/AgentWithGun.cs new file mode 100644 index 0000000..e4969bb --- /dev/null +++ b/Assets/Script/InGame/AgentWithGun.cs @@ -0,0 +1,680 @@ +using System; +using System.Reflection; +using System.Collections; +using System.Collections.Generic; + +using UnityEngine; +using UnityEngine.UI; +using UnityEditor; +using Unity.MLAgents; +using Unity.MLAgents.Sensors; +using Unity.MLAgents.Actuators; +using XCharts; +using XCharts.Runtime; + +/*主要ML-Agent控制*/ + +public class AgentWithGun : Agent +{ + public GameObject thisAgentObj; + public Transform thisAgent; + public Camera thisCam; + public CharacterController PlayerController; + public GameObject enemyPrefab; + public GameObject cameraChangerOBJ; + + + [Header("Rewards")] + [Tooltip("Nothing happened reward")] + public float nonRewardDefault = -0.05f; + [Tooltip("Agent Do shoot action reward")] + public float shootRewardDefault = -0.1f; + [Tooltip("Agent Do shoot action but gun is not read")] + public float shootWithoutReadyRewardDefault = -1.0f; + [Tooltip("Hit Enemy reward")] + public float hitRewardDefault = 2.0f; + [Tooltip("Episode Win reward")] + public float winRewardDefault = 10.0f; + [Tooltip("Episode Lose reward")] + public float loseRewardDefault = -10.0f; + [Tooltip("Enemy down reward")] + public float killRewardDefault = 5.0f; + + [Header("Env")] + public bool lockMouse = false; + public float Damage = 50; // damage to enemy + public float fireRate = 0.5f; + public int enemyNum = 3; + public int timeLimit = 30; + public bool lockCameraX = false; + public bool lockCameraY = true; + //public Vector3 startPosition = new Vector3(9, 1, 18); + public int minEnemyAreaX = -12; + public int maxEnemyAreaX = 11; + public int minEnemyAreaY = -20; + public int maxEnemyAreaY = 20; + public int minAgentAreaX = -12; + public int maxAgentAreaX = 11; + public int minAgentAreaY = -28; + public int maxAgentAreaY = -22; + + [Header("GetAxis() Simulate")] + public float MoveSpeed = 2.0f; + public float vX = 0f; + public float vZ = 0f; + public float acceleration = 0.1f; // 加速度 + public float mouseXSensitivity = 100; + public float mouseYSensitivity = 200; + public float yRotation = 0.1f;//定义一个浮点类型的量,记录‘围绕’X轴旋转的角度 + + private float startTime = 0; + private int shoot = 0; + private float lastShootTime = 0.0f; + private int nowEnemyNum = 0; + private int enemyKillCount = 0; + private int step = 0; + private int EP = 0; + private string LoadDirDate; + private string LoadDirTime; + private float LoadDirDateF; + private float loadDirTimeF; + public bool defaultTPCamera = true; + private bool gunReadyToggle = true; + private StartSeneData DataTransfer; + private UIController UICon; + private HistoryRecorder HistoryRec; + private RaySensors rayScript; + private CameraChange camChanger; + + + [System.NonSerialized] public float nonReward; + [System.NonSerialized] public float shootReward; + [System.NonSerialized] public float shootWithoutReadyReward; + [System.NonSerialized] public float hitReward; + [System.NonSerialized] public float winReward; + [System.NonSerialized] public float loseReward; + [System.NonSerialized] public float killReward; + [System.NonSerialized] public float saveNow = 0; + [System.NonSerialized] public int remainTime; + + + void Start() + { + try + { + // get DataTranfer + DataTransfer = GameObject.Find("StartSeneDataTransfer").GetComponent(); + // Enemy Num + enemyNum = DataTransfer.EnemyNum; + + // Time Limit + timeLimit = DataTransfer.Timelim; + + // get load directory. + LoadDirDate = DataTransfer.LoadDirDate; + LoadDirTime = DataTransfer.LoadDirTime; + LoadDirDateF = float.Parse(LoadDirDate); + loadDirTimeF = float.Parse(LoadDirTime); + + // get Default reward. + nonRewardDefault = DataTransfer.nonReward; + shootRewardDefault = DataTransfer.shootReward; + shootWithoutReadyRewardDefault = DataTransfer.shootWithoutReadyReward; + hitRewardDefault = DataTransfer.hitReward; + killRewardDefault = DataTransfer.killReward; + winRewardDefault = DataTransfer.winReward; + loseRewardDefault = DataTransfer.loseReward; + lockMouse = DataTransfer.lockMouse; + defaultTPCamera = DataTransfer.defaultTPCamera; + + // change Decision Period & Take Actions Between Decisions + transform.GetComponent().DecisionPeriod = DataTransfer.DecisionPeriod; + transform.GetComponent().TakeActionsBetweenDecisions = DataTransfer.ActionsBetweenDecisions; + + } + catch (NullReferenceException) + { + // Enemy Num + enemyNum = 3; + + // Time Limit + timeLimit = 30; + + // get load directory. + LoadDirDate = "0"; + LoadDirTime = "0"; + LoadDirDateF = float.Parse(LoadDirDate); + loadDirTimeF = float.Parse(LoadDirTime); + + // get Default reward. + nonRewardDefault = -0.05f; + shootRewardDefault = -0.06f; + shootWithoutReadyRewardDefault = -0.06f; + hitRewardDefault = 5.0f; + killRewardDefault = 10.0f; + winRewardDefault = 20.0f; + loseRewardDefault = -10.0f; + + // change Decision Period & Take Actions Between Decisions + transform.GetComponent().DecisionPeriod = 1; + transform.GetComponent().TakeActionsBetweenDecisions = true; + } + finally + { + UICon = transform.GetComponent(); + HistoryRec = transform.GetComponent(); + rayScript = GetComponent(); + camChanger = cameraChangerOBJ.GetComponent(); + + // give default Reward to Reward value will be used. + nonReward = nonRewardDefault; + shootReward = shootRewardDefault; + shootWithoutReadyReward = shootWithoutReadyRewardDefault; + hitReward = hitRewardDefault; + winReward = winRewardDefault; + loseReward = loseRewardDefault; + killReward = killRewardDefault; + //initialize remainTime + remainTime = (int)(timeLimit - Time.time + startTime); + // change default camera view + if (defaultTPCamera) + { + camChanger.ShowTPSView(); + } + else + { + camChanger.ShowFPSView(); + } + } + } + + /* ----------此Update用于debug,Build前删除或注释掉!----------*/ + /*void Update() + { + //Debug.Log(RaySensors.rayTagResult[0]); + }*/ + /* ----------此Update用于debug,Build前删除或注释掉!----------*/ + + // --------------初始化--------------- + // randomInitEnemys随机生成enemy + public void randomInitEnemys(int EnemyNum) + { + for (int i = 0; i < EnemyNum; i++) + { + int randX = UnityEngine.Random.Range(minEnemyAreaX, maxEnemyAreaX); + int randZ = UnityEngine.Random.Range(minEnemyAreaY, maxEnemyAreaY); + int Y = 1; + Instantiate(enemyPrefab, new Vector3(randX, Y, randZ), Quaternion.identity); + } + } + + // --------------初始化--------------- + // randomInitAgent随机位置初始化Agent + public void randomInitAgent() + { + int randX = UnityEngine.Random.Range(minAgentAreaX, maxAgentAreaX); + int randZ = UnityEngine.Random.Range(minAgentAreaY, maxAgentAreaY); + int Y = 1; + Vector3 initAgentLoc = new Vector3(randX, Y, randZ); + thisAgent.localPosition = initAgentLoc; + } + + // ------------动作处理-------------- + // moveAgent 用于模拟Input.GetAxis移动 + public void moveAgent(int vertical, int horizontal) + { + Vector3 thisMovement; + + if (horizontal != 0)//当按下按键(水平方向) + { + if (vX < MoveSpeed && vX > -MoveSpeed)//当前速度小于最大速度 + { + vX += (float)horizontal * acceleration;//增加加速度 + } + else + { + //防止在一瞬间切换输入时速度仍保持不变 + if ((vX * horizontal) > 0)//输入与当前速度方向同向 + { + vX = (float)horizontal * MoveSpeed; //限制最大速度 + } + else + { + vX += (float)horizontal * acceleration;//增加加速度 + } + + } + } + else + { + if (Math.Abs(vX) > 0.001) + { + vX -= (vX / Math.Abs(vX)) * acceleration;//减少加速度 + } + else + { + vX = 0; + } + } + + if (vertical != 0)//当按下按键(垂直方向) + { + if (vZ < MoveSpeed && vZ > -MoveSpeed)//当前速度小于最大速度 + { + vZ += (float)vertical * acceleration;//增加加速度 + } + else + { + if ((vZ * vertical) > 0)//输入与当前速度方向同向 + { + vZ = (float)vertical * MoveSpeed; //限制最大速度 + } + else + { + vZ += (float)vertical * acceleration;//增加加速度 + } + } + } + else + { + if (Math.Abs(vZ) > 0.001) + { + vZ -= (vZ / Math.Abs(vZ)) * acceleration;//减少加速度 + } + else + { + vZ = 0; + } + } + thisMovement = (transform.forward * vZ + transform.right * vX) * MoveSpeed; + //PlayerController下的.Move为实现物体运动的函数 + //Move()括号内放入一个Vector3类型的量,本例中为Player_Move + PlayerController.Move(thisMovement * Time.deltaTime); + // update Key Viewer + } + + // ------------动作处理-------------- + // cameraControl 用于控制Agent视角转动 + public void cameraControl(float Mouse_X, float Mouse_Y) + { + //Mouse_X = Input.GetAxis("Mouse X") * MouseSensitivity * Time.deltaTime; + //Debug.Log(Input.GetAxis("Mouse X")); + //Mouse_Y = Input.GetAxis("Mouse Y") * MouseSensitivity * Time.deltaTime; + if (lockCameraX) + { + Mouse_X = 0; + } + if (lockCameraY) + { + Mouse_Y = 0; + } + yRotation = yRotation - Mouse_Y; + //xRotation值为正时,屏幕下移,当xRotation值为负时,屏幕上移 + //当鼠标向上滑动,Mouse_Y值为正,xRotation-Mouse_Y的值为负,xRotation总的值为负,屏幕视角向上滑动 + //当鼠标向下滑动,Mouse_Y值为负,xRotation-Mouse_Y的值为正,xRotation总的值为正,屏幕视角向下滑动 + //简单来说就是要控制鼠标滑动的方向与屏幕移动的方向要相同 + + //limit UP DOWN between -90 -> 90 + yRotation = Mathf.Clamp(yRotation, -90f, 90f); + + + //相机左右旋转时,是以Y轴为中心旋转的,上下旋转时,是以X轴为中心旋转的 + thisAgent.Rotate(Vector3.up * Mouse_X); + //Vector3.up相当于Vector3(0,1,0),CameraRotation.Rotate(Vector3.up * Mouse_X)相当于使CameraRotation对象绕y轴旋转Mouse_X个单位 + //即相机左右旋转时,是以Y轴为中心旋转的,此时Mouse_X控制着值的大小 + + //相机在上下旋转移动时,相机方向不会随着移动,类似于低头和抬头,左右移动时,相机方向会随着向左向右移动,类似于向左向右看 + //所以在控制相机向左向右旋转时,要保证和父物体一起转动 + thisCam.transform.localRotation = Quaternion.Euler(yRotation, 0, 0); + //this.transform指这个CameraRotation的位置,localRotation指的是旋转轴 + //transform.localRotation = Quaternion.Eular(x,y,z)控制旋转的时候,按照X-Y-Z轴的旋转顺规 + //即以围绕X轴旋转x度,围绕Y轴旋转y度,围绕Z轴旋转z度 + //且绕轴旋转的坐标轴是父节点本地坐标系的坐标轴 + } + + // GotKill 获得击杀时用于被呼出 + public void GotKill() + { + enemyKillCount += 1; + } + + // check gun is ready to shoot + bool gunReady() + { + if ((Time.time - lastShootTime) >= fireRate) + { + return true; + } + else + { + return false; + } + } + + // ballistic 射击弹道处理,并返回获得reward + float ballistic() + { + Vector3 point = new Vector3(thisCam.pixelWidth / 2, thisCam.pixelHeight / 2, 0);//发射位置 + Ray ray = thisCam.ScreenPointToRay(point); + RaycastHit hit; + Debug.DrawRay(ray.origin, ray.direction * 100, Color.blue); + UICon.updateShootKeyViewer(shoot, gunReadyToggle); + //按下鼠标左键 + if (shoot != 0 && gunReadyToggle == true) + { + + lastShootTime = Time.time; + if (Physics.Raycast(ray, out hit, 100)) + { + if (hit.collider.tag == "Enemy") + { + GameObject gotHitObj = hit.transform.gameObject;//获取受到Ray撞击的对象 + gotHitObj.GetComponent().ReactToHit(Damage, thisAgentObj); + shoot = 0; + return hitReward; + } + } + shoot = 0; + return shootReward; + } + else if (shoot != 0 && gunReadyToggle == false) + { + shoot = 0; + return shootWithoutReadyReward; + } + else + { + shoot = 0; + return nonReward; + } + } + + // destroyEnemy消除除了自己以外的所有Enemy + public void destroyAllEnemys() + { + GameObject[] EnemyGameObjs; + EnemyGameObjs = GameObject.FindGameObjectsWithTag("Enemy"); + //遍历所有Enemy + foreach (GameObject EnemyObj in EnemyGameObjs) + { + Vector3 thisEnemyPosition = EnemyObj.transform.position; + Vector3 thisEnemyScale = EnemyObj.transform.localScale; + Vector3 MyselfPosition = thisAgent.position; + + //探测到Agent为自己时的处理 + if (thisEnemyPosition == MyselfPosition) + { + //Debug.Log("OH It's me"); + } + else + { + Destroy(EnemyObj); + } + } + } + + // checkFinish 检查是否结束回合返回int值 + // 1 = success,2 = overtime,0 = notover + int checkFinish() + { + GameObject[] EnemyGameObjs; + EnemyGameObjs = GameObject.FindGameObjectsWithTag("Enemy"); + if (EnemyGameObjs.Length <= 1) + { + //成功击杀所有Enemy + return 1; + } + else if (Time.time - startTime >= timeLimit) + { + //超时失败 + return 2; + } + else + { + return 0; + } + } + + // getEnemyNum 获取现场除了自己以外的敌人数量 + int getEnemyNum() + { + int enemyNum = 0; + GameObject[] EnemyGameObjs; + EnemyGameObjs = GameObject.FindGameObjectsWithTag("Enemy"); + //遍历所有Enemy + foreach (GameObject EnemyObj in EnemyGameObjs) + { + Vector3 thisEnemyPosition = EnemyObj.transform.position; + Vector3 thisEnemyScale = EnemyObj.transform.localScale; + Vector3 MyselfPosition = thisAgent.position; + + //探测到Agent为自己时的处理 + if (thisEnemyPosition == MyselfPosition) + { + //Debug.Log("OH It's me"); + } + else + { + enemyNum += 1; + } + } + return enemyNum; + } + + // enemyNumDiff 获取与上一把相比敌人数量的区别 + int enemyNumDiff() + { + int diff = 0; + int nowEnemyNum = getEnemyNum(); + diff = enemyNum - nowEnemyNum; + return diff; + } + + // ------------Reward-------------- + // rewardCalculate 计算本动作的Reward + public float rewardCalculate() + { + float epreward = 0f; + // 击杀reward判断 + if (enemyKillCount > 0) + { + for (int i = 0; i < enemyKillCount; i++) + { + epreward += killReward; + } + enemyKillCount = 0; + } + else + { + enemyKillCount = 0; + } + // 射击动作reward判断 + epreward += ballistic(); + return epreward; + } + + + // ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS + // env开始执行初始化 + public override void OnEpisodeBegin() + { + step = 0; + if (EP == 0) + { + UICon.iniChart(); + } + if (lockMouse) + { + Cursor.lockState = CursorLockMode.Locked; // hide and lock the mouse + } + //iniCharts(); + thisAgentObj.name = thisAgentObj.GetInstanceID().ToString(); + destroyAllEnemys(); + startTime = Time.time;// Reset StartTime as now time + randomInitAgent(); + randomInitEnemys(enemyNum); + nowEnemyNum = getEnemyNum(); // Reset Enemy number + } + + // ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS + // 观察情报 + public override void CollectObservations(VectorSensor sensor) + { + + //List enemyLDisList = RaySensors.enemyLDisList;// All Enemy Lside Distances + //List enemyRDisList = RaySensors.enemyRDisList;// All Enemy Rside Distances + + rayScript.updateRayInfo(); + float[] myObserve = { thisAgent.position.x, thisAgent.position.y, thisAgent.position.z, thisAgent.rotation.w }; + float[] rayTagResult = rayScript.rayTagResult;// 探测用RayTag结果 float[](raySensorNum,1) + float[] rayDisResult = rayScript.rayDisResult; // 探测用RayDis结果 float[](raySensorNum,1) + //float[] focusEnemyObserve = RaySensors.focusEnemyInfo;// 最近的Enemy情报 float[](3,1) MinEnemyIndex,x,z + + //sensor.AddObservation(allEnemyNum); // 敌人数量 int + sensor.AddObservation(myObserve); // 自机位置xyz+朝向 float[](4,1) + sensor.AddObservation(rayTagResult); // 探测用RayTag结果 float[](raySensorNum,1) + sensor.AddObservation(rayDisResult); // 探测用RayDis结果 float[](raySensorNum,1) + //sensor.AddObservation(focusEnemyObserve); // 最近的Enemy情报 float[](3,1) MinEnemyIndex,x,z + //sensor.AddObservation(raySensorNum); // raySensor数量 int + gunReadyToggle = gunReady(); + sensor.AddObservation(gunReadyToggle); // save gun is ready? + sensor.AddObservation(LoadDirDateF); // 用于loadModel的第一级dir + sensor.AddObservation(loadDirTimeF); // 用于loadModel的第二级dir + sensor.AddObservation(saveNow); // sent saveNow Toggle to python let agent save weights + saveNow = 0; // reset saveNow Toggle + //sensor.AddObservation(remainTime); // RemainTime int + } + + // ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS + // agent 输入处理 + public override void OnActionReceived(ActionBuffers actionBuffers) + { + //获取输入 + int vertical = actionBuffers.DiscreteActions[0]; + int horizontal = actionBuffers.DiscreteActions[1]; + int mouseShoot = actionBuffers.DiscreteActions[2]; + float Mouse_X = actionBuffers.ContinuousActions[0]; + if (vertical == 2) vertical = -1; + if (horizontal == 2) horizontal = -1; + remainTime = (int)(timeLimit - Time.time + startTime); + + //应用输入 + shoot = mouseShoot; + HistoryRec.realTimeKeyCounter(vertical, horizontal, shoot); + (int kWCount, int kSCount, int kACount, int kDCount, int shootCount) = HistoryRec.getKeyCount(); + UICon.updateRemainTime(remainTime); + UICon.updateRemainEnemy(enemyNum); + UICon.updateWASDKeyViewer(vertical, horizontal); + UICon.updateKeyCounterChart(kWCount, kSCount, kACount, kDCount, shootCount); + UICon.updateMouseMovementViewer(Mouse_X); + UICon.updateRewardViewer(nonReward, shootReward, shootWithoutReadyReward, hitReward, winReward, loseReward, killReward); + cameraControl(Mouse_X, 0); + moveAgent(vertical, horizontal); + float thisRoundReward = rewardCalculate(); + + //判断结束 + int finished = checkFinish(); + if (finished == 1) + { + //Win Finished + HistoryRec.addRealTimeReward(winReward); + HistoryRec.EPTotalRewardsUpdate(); + UICon.epUpdateChart(EP, HistoryRec.getLastEPTotalReward()); + UICon.resetStepChart(); + UICon.resetCounterChat(); + EP += 1; + SetReward(winReward); + Debug.Log("reward = " + winReward); + EndEpisode(); + } + else if (finished == 2) + { + //Lose Finished + HistoryRec.addRealTimeReward(loseReward); + HistoryRec.EPTotalRewardsUpdate(); + UICon.epUpdateChart(EP, HistoryRec.getLastEPTotalReward()); + UICon.resetStepChart(); + UICon.resetCounterChat(); + EP += 1; + SetReward(loseReward); + Debug.Log("reward = " + loseReward); + EndEpisode(); + } + else + { + // game not over yet + HistoryRec.addRealTimeReward(thisRoundReward); + UICon.stepUpdateChart(step, thisRoundReward); + step += 1; + SetReward(thisRoundReward); + Debug.Log("reward = " + thisRoundReward); + } + } + + // ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS + // 控制调试 + public override void Heuristic(in ActionBuffers actionsOut) + { + // + //-------------------BUILD + ActionSegment continuousActions = actionsOut.ContinuousActions; + ActionSegment discreteActions = actionsOut.DiscreteActions; + + int vertical = 0; + int horizontal = 0; + if (Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.S)) + { + vertical = 1; + } + else if (Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.W)) + { + vertical = -1; + } + else + { + vertical = 0; + } + if (Input.GetKey(KeyCode.D) && !Input.GetKey(KeyCode.A)) + { + horizontal = 1; + } + else if (Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.D)) + { + horizontal = -1; + } + else + { + horizontal = 0; + } + + if (Input.GetMouseButton(0)) + { + // Debug.Log("mousebuttonhit"); + shoot = 1; + } + else + { + shoot = 0; + } + discreteActions[0] = vertical; + discreteActions[1] = horizontal; + discreteActions[2] = shoot; + //^^^^^^^^^^^^^^^^^^^^^discrete-Control^^^^^^^^^^^^^^^^^^^^^^ + + //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvcontinuous-Controlvvvvvvvvvvvvvvvvvvvvvv + float Mouse_X = Input.GetAxis("Mouse X") * mouseXSensitivity * Time.deltaTime; + float Mouse_Y = Input.GetAxis("Mouse Y") * mouseYSensitivity * Time.deltaTime; + continuousActions[0] = Mouse_X; + //continuousActions[1] = nonReward; + //continuousActions[2] = shootReward; + //continuousActions[3] = shootWithoutReadyReward; + //continuousActions[4] = hitReward; + //continuousActions[5] = winReward; + //continuousActions[6] = loseReward; + //continuousActions[7] = killReward; + //continuousActions[1] = Mouse_Y; + //continuousActions[2] = timeLimit; + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^continuous-Control^^^^^^^^^^^^^^^^^^^^^^ + + } +} \ No newline at end of file diff --git a/Assets/Script/InGame/AgentWithGun.cs.meta b/Assets/Script/InGame/AgentWithGun.cs.meta new file mode 100644 index 0000000..25454b8 --- /dev/null +++ b/Assets/Script/InGame/AgentWithGun.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4faf6e358e53cc24582eaff8dd830f97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/CameraChange.cs b/Assets/Script/InGame/CameraChange.cs new file mode 100644 index 0000000..c3a5400 --- /dev/null +++ b/Assets/Script/InGame/CameraChange.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class CameraChange : MonoBehaviour +{ + public Camera FPSCamera; + public Camera TPSCamera; + public GameObject AgentOBJ; + + public void switchCamera() + { + if (TPSCamera.enabled && !FPSCamera.enabled) + { + ShowFPSView(); + }else if(FPSCamera.enabled && !TPSCamera.enabled) + { + ShowTPSView(); + } + else + { + ShowFPSView(); + } + } + + public void ShowTPSView() + { + TPSCamera.enabled = true; + FPSCamera.enabled = false; + AgentOBJ.GetComponent().showInGameRay = true; + } + public void ShowFPSView() + { + FPSCamera.enabled = true; + TPSCamera.enabled = false; + AgentOBJ.GetComponent().showInGameRay = false; + } +} diff --git a/Assets/Script/InGame/CameraChange.cs.meta b/Assets/Script/InGame/CameraChange.cs.meta new file mode 100644 index 0000000..ddac4ce --- /dev/null +++ b/Assets/Script/InGame/CameraChange.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 136f4ef424a10ea47b5981794fff8a7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/Enemy.cs b/Assets/Script/InGame/Enemy.cs new file mode 100644 index 0000000..f9f2208 --- /dev/null +++ b/Assets/Script/InGame/Enemy.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Enemy : MonoBehaviour +{ + float EnemyHP = 100; + public float EnemyMaxHP = 100; + + void Start() + { + EnemyHP = EnemyMaxHP; + } + + // Update is called once per frame + void Update() + { + detactDeath(); + } + private void detactDeath() + { + if (EnemyHP <= 0){ + Destroy(this.gameObject); + } + } + public void ReactToHit(float Damage,GameObject damageSource) + { + EnemyHP -= Damage; + Debug.Log("HP:"+ EnemyHP); + if(EnemyHP <= 0) + { + damageSource.GetComponent().GotKill(); + Destroy(this.gameObject); + } + } + public float getnowHP() + { + return EnemyHP; + } +} diff --git a/Assets/Script/InGame/Enemy.cs.meta b/Assets/Script/InGame/Enemy.cs.meta new file mode 100644 index 0000000..49e0f2d --- /dev/null +++ b/Assets/Script/InGame/Enemy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8cded1019e262a04e8d9ccb536d1ff20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/EnemyHPBar.cs b/Assets/Script/InGame/EnemyHPBar.cs new file mode 100644 index 0000000..849f275 --- /dev/null +++ b/Assets/Script/InGame/EnemyHPBar.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class EnemyHPBar : MonoBehaviour +{ + GameObject EnemyOBJ; + GameObject BGOBJ; + GameObject gaugeImgOBJ; + + + void Start() + { + EnemyOBJ = transform.parent.gameObject; + BGOBJ = transform.GetChild(0).gameObject; + gaugeImgOBJ = BGOBJ.transform.GetChild(0).gameObject; + Vector3 v = Camera.main.transform.position - transform.position; + v.x = v.z = 0.0f; + transform.LookAt(Camera.main.transform.position - v); + transform.Rotate(0,180,0); + } + + void Update() + { + Vector3 v = Camera.main.transform.position - transform.position; + v.x = v.z = 0.0f; + transform.LookAt(Camera.main.transform.position - v); + transform.Rotate(0,180,0); + + float maxHP = EnemyOBJ.GetComponent().EnemyMaxHP; + float nowHP = EnemyOBJ.GetComponent().getnowHP(); + gaugeImgOBJ.GetComponent().fillAmount = nowHP / maxHP; + } +} diff --git a/Assets/Script/InGame/EnemyHPBar.cs.meta b/Assets/Script/InGame/EnemyHPBar.cs.meta new file mode 100644 index 0000000..5216267 --- /dev/null +++ b/Assets/Script/InGame/EnemyHPBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b293d3b541b20b7448f3ca4d09a9c38c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/HistoryRecorder.cs b/Assets/Script/InGame/HistoryRecorder.cs new file mode 100644 index 0000000..7b1e9a0 --- /dev/null +++ b/Assets/Script/InGame/HistoryRecorder.cs @@ -0,0 +1,114 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +/*??????????????*/ + +public class HistoryRecorder : MonoBehaviour +{ + private List realTimeReward = new List (); + private List EPTotalRewards = new List (); + private List EPTotalShootCount = new List (); + + private int realTimeWKeyCount = 0; + private int realTimeAKeyCount = 0; + private int realTimeSKeyCount = 0; + private int realTimeDKeyCount = 0; + private int realTimeShootCount = 0; + + + // add Record History ----------------------------- + public void addRealTimeReward(float reward) + { + realTimeReward.Add(reward); + } + public void addEPTotalRewards(float EPTotalReward) + { + EPTotalRewards.Add(EPTotalReward); + } + public void addEPTotalShootCount(int TotalShootCount) + { + EPTotalShootCount.Add(TotalShootCount); + } + public void realTimeKeyCounter(int vertical, int horizontal, int shoot) + { + if (vertical == 1) + { + realTimeWKeyCount += 1; + } + else if (vertical == -1) + { + realTimeSKeyCount += 1; + } + if (horizontal == 1) + { + realTimeDKeyCount += 1; + } + else if (horizontal == -1) + { + realTimeAKeyCount += 1; + } + if (shoot == 1) + { + realTimeShootCount += 1; + } + } + + // math job--------------------------------------- + // delete RealTimeReward item + public void resetRealTimeReward() + { + realTimeReward.Clear(); + } + // set all realTimeKeyCount to 0 + public void resetrealTimeKeyCounter() + { + realTimeAKeyCount = 0; + realTimeDKeyCount = 0; + realTimeWKeyCount = 0; + realTimeSKeyCount = 0; + realTimeShootCount = 0; + } + // calc RealTimeReward's Average and Add to EPTotalRewards + public void EPTotalRewardsUpdate() + { + float EPSumRealTimeReward = getSumRealTimeReward(); + resetRealTimeReward(); + addEPTotalRewards(EPSumRealTimeReward); + } + + // get Record History ----------------------------- + // get EPTotalReward List + public List getEPTotalReward() + { + return (EPTotalRewards); + } + // get EPTotalShootCount List + public List getEPTotalShootCount() + { + return (EPTotalShootCount); + } + // get RealTimeReward's Mean + public float getMeanRealTimeReward() + { + return (realTimeReward.Average()); + } + // get RealTimeReward's Sum + public float getSumRealTimeReward() + { + return realTimeReward.Sum(); + } + // get LastEPTotalReward last item + public float getLastEPTotalReward() + { + return (EPTotalRewards.Last()); + } + //get KeyCount + public (int w,int s,int a,int d,int shoot) getKeyCount() + { + return (realTimeWKeyCount, realTimeSKeyCount, realTimeAKeyCount, realTimeDKeyCount, realTimeShootCount); + } + + +} diff --git a/Assets/Script/InGame/HistoryRecorder.cs.meta b/Assets/Script/InGame/HistoryRecorder.cs.meta new file mode 100644 index 0000000..93f02b0 --- /dev/null +++ b/Assets/Script/InGame/HistoryRecorder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a3e891536ddde24b86cbac3ad3837e6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/InGameMessages.cs b/Assets/Script/InGame/InGameMessages.cs new file mode 100644 index 0000000..e0b8764 --- /dev/null +++ b/Assets/Script/InGame/InGameMessages.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class InGameMessages : MonoBehaviour +{ + public GameObject MessageBox; // scrollView contents + public GameObject TextPrefab; // TextPrefab + public int maxMassages = 25; + + public Color infoColor = Color.white; + public Color successColor = Color.green; + public Color errorColor = Color.red; + public Color warningColor = Color.yellow; + + [System.NonSerialized]List messageList = new List(); + + public void SendMessagetoBox(string text,Message.MessageType messageType = Message.MessageType.info) + { + if (messageList.Count > maxMassages) + { + // keep mesages under maxMassages + Destroy(messageList[0].textOBJ.gameObject); + messageList.Remove(messageList[0]); + } + // add timestamp + string date = "[" + DateTime.Now.ToString("MMdd_hh:mm:ss") + "] "; + text = date + text; + + Message newMessage = new Message(); + newMessage.text = text; + + GameObject newText = Instantiate(TextPrefab, MessageBox.transform); + newMessage.textOBJ = newText.GetComponent(); + newMessage.textOBJ.text = newMessage.text; + newMessage.textOBJ.color = MessageTypeColor(messageType); + + messageList.Add(newMessage); + } + + // parse messageType to Color + Color MessageTypeColor(Message.MessageType messageType) + { + Color thisColor = infoColor; + switch (messageType) + { + case Message.MessageType.info: + thisColor = infoColor; + break; + case Message.MessageType.success: + thisColor = successColor; + break; + case Message.MessageType.error: + thisColor = errorColor; + break; + case Message.MessageType.warnning: + thisColor = warningColor; + break; + } + return thisColor; + } +} + +// Message Class +[System.Serializable] +public class Message +{ + public string text; + public Text textOBJ; + public MessageType messageType; + + public enum MessageType + { + info, + success, + error, + warnning + } +} diff --git a/Assets/Script/InGame/InGameMessages.cs.meta b/Assets/Script/InGame/InGameMessages.cs.meta new file mode 100644 index 0000000..97e5686 --- /dev/null +++ b/Assets/Script/InGame/InGameMessages.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 414edca99b7a04940a0801ec06c99007 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/RaySensors.cs b/Assets/Script/InGame/RaySensors.cs new file mode 100644 index 0000000..49f6e48 --- /dev/null +++ b/Assets/Script/InGame/RaySensors.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/*该scrip用于创建复数条ray于视角内,并探测被ray射到的物体*/ + + +public class RaySensors : MonoBehaviour +{ + public Camera agentCam; + public Material lineMeterial; + public GameObject rayInfoPrefab; + public GameObject agentCanvas; + + [SerializeField, Range(0, 500)] public float viewDistance = 100; // how long the ray can detect + //[SerializeField, Range(0, 1)] public float totalRange = 1f; // Total view range Max = 1 + [SerializeField, Range(0, 1)] public float focusRange = 0.15f; // center focus range + public int halfOuterRayNum = 3; // >=2 + public int focusRayNum = 5; // >= 1 and must be odd num! + + [Header("InGameLineSetting")] + public bool showInGameRay = true; + public bool showDebugRay = true; + public bool showInGameRayInfo = true; + public float lineWidth = 0.05f; + + [Header("RayCastResult")] + public float[] rayTagResult; + public float[] rayDisResult; + + [System.NonSerialized] public int totalRayNum; + GameObject[] linesOBJ; + GameObject[] rayInfoOBJ; + LineRenderer[] lineRenderers; + rayInfoUI[] rayInfoUIs; + + + private void Start() + { + + totalRayNum = halfOuterRayNum * 2 + focusRayNum; + rayTagResult = new float[totalRayNum]; + rayDisResult = new float[totalRayNum]; + linesOBJ = new GameObject[totalRayNum]; + lineRenderers = new LineRenderer[totalRayNum]; + rayInfoOBJ = new GameObject[totalRayNum]; + rayInfoUIs = new rayInfoUI[totalRayNum]; + for(int i = 0; i < totalRayNum; i++) + { + linesOBJ[i] = new GameObject(); + linesOBJ[i].name = "rayCastLine-" + Convert.ToString(i); + linesOBJ[i].transform.parent = agentCam.transform; + linesOBJ[i].AddComponent(); + lineRenderers[i] = linesOBJ[i].GetComponent(); + lineRenderers[i].material = lineMeterial; + + rayInfoOBJ[i] = (GameObject)Instantiate(rayInfoPrefab); + rayInfoOBJ[i].transform.SetParent(agentCanvas.transform,false); + rayInfoOBJ[i].name = "rayInfo-" + Convert.ToString(i); + rayInfoUIs[i] = rayInfoOBJ[i].GetComponent(); + } + } + + static int tagToInt(string tag) + { + switch (tag) + { + case "Wall": + return 1; + case "Enemy": + return 2; + default: + return 0; + } + } + + private void singleRaycastUpdate(Ray ray,LineRenderer thisLineRenderer,rayInfoUI thisRayInfoUI, out float rayTagResult, out float rayDisResult) + { + // get Raycast hit infomation and return Tag and distance + RaycastHit thisHit; + Color rayColor = Color.cyan; + float lineLength = viewDistance; + string rayInfoText = ""; + Vector3 rayInfoPosition; + if (Physics.Raycast(ray, out thisHit, viewDistance)) // 若在viewDistance范围内有碰撞 + { + rayInfoText = thisHit.collider.tag; + rayTagResult = tagToInt(thisHit.collider.tag); + rayDisResult = thisHit.distance; + lineLength = rayDisResult; + rayInfoText += "\n" + Convert.ToString(rayDisResult); + //输出log + switch (rayTagResult) + { + case 1:// Wall + rayColor = Color.white; + break; + case 2: // Enemy + rayColor = Color.red; + break; + case -1: // Hit Nothing + rayColor = Color.gray; + break; + default: // default,got wrong + rayColor = Color.cyan; + break; + } + } + else // 若在viewDistance范围无碰撞 + { + rayTagResult = -1f; + rayDisResult = -1f; + //输出log + //Debug.Log(0); + //Debug.Log(0); + } + rayInfoPosition = ray.origin + (ray.direction * lineLength); + if (showInGameRay) + { + drawLine(ray, lineLength, thisLineRenderer, rayColor); + } + else + { + turnOffLine(thisLineRenderer, rayColor); + } + // drawRay in game + if (showInGameRayInfo) thisRayInfoUI.updateInfo(rayInfoText, rayInfoPosition, rayColor); + // Show log + if (showDebugRay) Debug.DrawRay(ray.origin, ray.direction * viewDistance, rayColor); // drawRay in debug + // Debug.Log(ray.origin + ray.direction); + // Debug.Log(rayTagResult); + // Debug.Log(tagToInt(thisHit.collider.tag)); + } + + private void drawLine(Ray ray,float lineLength, LineRenderer thisLineRenderer, Color lineColor) + { + thisLineRenderer.startColor = lineColor; + thisLineRenderer.endColor = lineColor; + thisLineRenderer.startWidth = lineWidth; + thisLineRenderer.endWidth = lineWidth; + thisLineRenderer.SetPosition(0, ray.origin); + thisLineRenderer.SetPosition(1, ray.origin + (ray.direction * lineLength)); + } + + private void turnOffLine(LineRenderer thisLineRenderer, Color lineColor) + { + thisLineRenderer.startColor = lineColor; + thisLineRenderer.endColor = lineColor; + thisLineRenderer.startWidth = 0f; + thisLineRenderer.endWidth = 0f; + thisLineRenderer.SetPosition(0, new Vector3(0, 0, 0)); + thisLineRenderer.SetPosition(1, new Vector3(0, 0, 0)); + } + + public void updateRayInfo() + { + float focusLEdge = agentCam.pixelWidth * (1 - focusRange) / 2; + float focusREdge = agentCam.pixelWidth * (1 + focusRange) / 2; + float thisCamPixelHeight = agentCam.pixelHeight; + + for (int i = 0; i < halfOuterRayNum; i++) // create left outside rays; 0 ~ focusLeftEdge + { + Vector3 point = new Vector3(i * focusLEdge / (halfOuterRayNum - 1), thisCamPixelHeight / 2, 0); + Ray thisRay = agentCam.ScreenPointToRay(point); + singleRaycastUpdate(thisRay,lineRenderers[i], rayInfoUIs[i] , out rayTagResult[i], out rayDisResult[i]); + } + for (int i = 0; i < halfOuterRayNum; i++) // create right outside rays; focusRightEdge ~ MaxPixelHeight + { + Vector3 point = new Vector3(focusREdge + (i * focusLEdge / (halfOuterRayNum - 1)), thisCamPixelHeight / 2, 0); + Ray thisRay = agentCam.ScreenPointToRay(point); + singleRaycastUpdate(thisRay, lineRenderers[halfOuterRayNum + i], rayInfoUIs[halfOuterRayNum + i], out rayTagResult[halfOuterRayNum + i], out rayDisResult[halfOuterRayNum + i]); + } + for (int i = 0; i < focusRayNum; i++) // create center focus rays; focusLeftEdge ~ focusLeftEdge + { + Vector3 point = new Vector3(focusLEdge + ((i + 1) * (focusREdge - focusLEdge) / (focusRayNum + 1)), thisCamPixelHeight / 2, 0); + Ray thisRay = agentCam.ScreenPointToRay(point); + singleRaycastUpdate(thisRay, lineRenderers[halfOuterRayNum * 2 + i], rayInfoUIs[halfOuterRayNum * 2 + i], out rayTagResult[halfOuterRayNum*2 + i], out rayDisResult[halfOuterRayNum*2 + i]); + } + } +} diff --git a/Assets/Script/InGame/RaySensors.cs.meta b/Assets/Script/InGame/RaySensors.cs.meta new file mode 100644 index 0000000..4537bf3 --- /dev/null +++ b/Assets/Script/InGame/RaySensors.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 787273829b64d4d4b8237ea7316f59ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/RealTimeEnemyNumChanger.cs b/Assets/Script/InGame/RealTimeEnemyNumChanger.cs new file mode 100644 index 0000000..20ccbed --- /dev/null +++ b/Assets/Script/InGame/RealTimeEnemyNumChanger.cs @@ -0,0 +1,43 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +public class RealTimeEnemyNumChanger : MonoBehaviour +{ + public GameObject Agent; + + public InputField enemyNumInputField; + public Text enemyNumPlaceholder; + + public void EnemyChangeBTPresses() + { + AgentWithGun agentWithGun = Agent.GetComponent(); + InGameMessages messenger = gameObject.GetComponent(); + int enemyNum = Math.Abs(int.Parse(enemyNumInputField.GetComponent().text)); + + + if (enemyNumInputField.GetComponent().text == "-") + { + // input chara not illegal + enemyNumPlaceholder.color = Color.red; + enemyNumPlaceholder.text = "Wrong Type!"; + enemyNumInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong enemyNum Type!", Message.MessageType.error); + } + else if (enemyNumInputField.GetComponent().text == "") + { + // empty chara + enemyNumPlaceholder.color = Color.gray; + enemyNumPlaceholder.text = "nonR"; + } + else + { + // good to go~ + enemyNumPlaceholder.color = Color.gray; + enemyNumPlaceholder.text = "nonR"; + agentWithGun.enemyNum = enemyNum; + enemyNumInputField.GetComponent().text = ""; + messenger.SendMessagetoBox($"Enemy Num = {enemyNum} add Success. Valid in the next round.", Message.MessageType.success); + } + } +} diff --git a/Assets/Script/InGame/RealTimeEnemyNumChanger.cs.meta b/Assets/Script/InGame/RealTimeEnemyNumChanger.cs.meta new file mode 100644 index 0000000..eb35013 --- /dev/null +++ b/Assets/Script/InGame/RealTimeEnemyNumChanger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 137cfd15c80550b4589b3dce99ff2d09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/RealTimeRewardChanger.cs b/Assets/Script/InGame/RealTimeRewardChanger.cs new file mode 100644 index 0000000..5e4d7da --- /dev/null +++ b/Assets/Script/InGame/RealTimeRewardChanger.cs @@ -0,0 +1,234 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class RealTimeRewardChanger : MonoBehaviour +{ + public GameObject Agent; + + public InputField nonRInputField; + public InputField shootRInputField; + public InputField shootWithoutReadyRInputField; + public InputField hitRInputField; + public InputField killRInputField; + public InputField winRInputField; + public InputField loseRInputField; + + public Text nonRPlaceholder; + public Text shootRPlaceholder; + public Text shootWithoutReadyRPlaceholder; + public Text hitRPlaceholder; + public Text killRPlaceholder; + public Text winRPlaceholder; + public Text loseRPlaceholder; + + private void Start() + { + + } + + + public void nonRBTPresses() + { + InGameMessages messenger = gameObject.GetComponent(); + if (nonRInputField.GetComponent().text == "-") + { + // input chara not illegal + nonRPlaceholder.color = Color.red; + nonRPlaceholder.text = "Wrong Type!"; + nonRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong Reward Type!", Message.MessageType.error); + + }else if (nonRInputField.GetComponent().text == "") + { + // empty chara + nonRPlaceholder.color = Color.gray; + nonRPlaceholder.text = "nonR"; + } + else + { + // good to go~ + nonRPlaceholder.color = Color.gray; + nonRPlaceholder.text = "nonR"; + string reward = nonRInputField.GetComponent().text; + Agent.GetComponent().nonReward = float.Parse(reward); + nonRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Reward nonR change Success",Message.MessageType.success); + } + } + + public void shootRBTPresses() + { + InGameMessages messenger = gameObject.GetComponent(); + if (shootRInputField.GetComponent().text == "-") + { + // input chara not illegal + shootRPlaceholder.color = Color.red; + shootRPlaceholder.text = "Wrong Type!"; + shootRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong Reward Type!", Message.MessageType.error); + } + else if (shootRInputField.GetComponent().text == "") + { + // empty chara + shootRPlaceholder.color = Color.gray; + shootRPlaceholder.text = "shootR"; + } + else + { + // good to go~ + shootRPlaceholder.color = Color.gray; + shootRPlaceholder.text = "shootR"; + string reward = shootRInputField.GetComponent().text; + Agent.GetComponent().shootReward = float.Parse(reward); + shootRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Reward shootR change Success",Message.MessageType.success); + } + } + + public void shootWithoutReadyRBTPresses() + { + InGameMessages messenger = gameObject.GetComponent(); + if (shootWithoutReadyRInputField.GetComponent().text == "-") + { + // input chara not illegal + shootWithoutReadyRPlaceholder.color = Color.red; + shootWithoutReadyRPlaceholder.text = "Wrong Type!"; + shootWithoutReadyRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong Reward Type!", Message.MessageType.error); + } + else if (shootWithoutReadyRInputField.GetComponent().text == "") + { + // empty chara + shootWithoutReadyRPlaceholder.color = Color.gray; + shootWithoutReadyRPlaceholder.text = "SWORR"; + } + else + { + // good to go~ + shootWithoutReadyRPlaceholder.color = Color.gray; + shootWithoutReadyRPlaceholder.text = "SWORR"; + string reward = shootWithoutReadyRInputField.GetComponent().text; + Agent.GetComponent().shootWithoutReadyReward = float.Parse(reward); + shootWithoutReadyRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Reward SWORR change Success",Message.MessageType.success); + } + } + + public void hitRBTPresses() + { + InGameMessages messenger = gameObject.GetComponent(); + if (hitRInputField.GetComponent().text == "-") + { + // input chara not illegal + hitRPlaceholder.color = Color.red; + hitRPlaceholder.text = "Wrong Type!"; + hitRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong Reward Type!", Message.MessageType.error); + } + else if (hitRInputField.GetComponent().text == "") + { + // empty chara + hitRPlaceholder.color = Color.gray; + hitRPlaceholder.text = "hitR"; + } + else + { + // good to go~ + hitRPlaceholder.color = Color.gray; + hitRPlaceholder.text = "hitR"; + string reward = hitRInputField.GetComponent().text; + Agent.GetComponent().hitReward = float.Parse(reward); + hitRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Reward hitR change Success",Message.MessageType.success); + } + } + + public void killRBTPresses() + { + InGameMessages messenger = gameObject.GetComponent(); + if (killRInputField.GetComponent().text == "-") + { + // input chara not illegal + killRPlaceholder.color = Color.red; + killRPlaceholder.text = "Wrong Type!"; + killRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong Reward Type!", Message.MessageType.error); + } + else if (killRInputField.GetComponent().text == "") + { + // empty chara + killRPlaceholder.color = Color.gray; + killRPlaceholder.text = "killR"; + } + else + { + // good to go~ + killRPlaceholder.color = Color.gray; + killRPlaceholder.text = "killR"; + string reward = killRInputField.GetComponent().text; + Agent.GetComponent().killReward = float.Parse(reward); + killRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Reward killR change Success",Message.MessageType.success); + } + } + + public void winRBTPresses() + { + InGameMessages messenger = gameObject.GetComponent(); + if (winRInputField.GetComponent().text == "-") + { + // input chara not illegal + winRPlaceholder.color = Color.red; + winRPlaceholder.text = "Wrong Type!"; + winRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong Reward Type!", Message.MessageType.error); + } + else if (winRInputField.GetComponent().text == "") + { + // empty chara + winRPlaceholder.color = Color.gray; + winRPlaceholder.text = "winR"; + } + else + { + // good to go~ + winRPlaceholder.color = Color.gray; + winRPlaceholder.text = "winR"; + string reward = winRInputField.GetComponent().text; + Agent.GetComponent().winReward = float.Parse(reward); + winRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Reward winR change Success", Message.MessageType.success); + } + } + + public void loseRBTPresses() + { + InGameMessages messenger = gameObject.GetComponent(); + if (loseRInputField.GetComponent().text == "-") + { + // input chara not illegal + loseRPlaceholder.color = Color.red; + loseRPlaceholder.text = "Wrong Type!"; + loseRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong Reward Type!", Message.MessageType.error); + } + else if (loseRInputField.GetComponent().text == "") + { + // empty chara + loseRPlaceholder.color = Color.gray; + loseRPlaceholder.text = "loseR"; + } + else + { + // good to go~ + loseRPlaceholder.color = Color.gray; + loseRPlaceholder.text = "loseR"; + string reward = loseRInputField.GetComponent().text; + Agent.GetComponent().loseReward = float.Parse(reward); + loseRInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Reward loseR change Success",Message.MessageType.success); + } + } +} diff --git a/Assets/Script/InGame/RealTimeRewardChanger.cs.meta b/Assets/Script/InGame/RealTimeRewardChanger.cs.meta new file mode 100644 index 0000000..524cd19 --- /dev/null +++ b/Assets/Script/InGame/RealTimeRewardChanger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f31155528181e24438cf507311adf048 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/RealTimeTimeLimitChanger.cs b/Assets/Script/InGame/RealTimeTimeLimitChanger.cs new file mode 100644 index 0000000..b3aef8c --- /dev/null +++ b/Assets/Script/InGame/RealTimeTimeLimitChanger.cs @@ -0,0 +1,54 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +public class RealTimeTimeLimitChanger : MonoBehaviour +{ + public GameObject Agent; + + public InputField TimeLimInputField; + public Text TimeLimPlaceholder; + + public void BTPressed() + { + AgentWithGun agentWithGun = Agent.GetComponent(); + InGameMessages messenger = gameObject.GetComponent(); + int timeLimit = Math.Abs(int.Parse(TimeLimInputField.GetComponent().text)); + + if (TimeLimInputField.GetComponent().text == "-") + { + // input chara not illegal + TimeLimPlaceholder.color = Color.red; + TimeLimPlaceholder.text = "Wrong Type!"; + TimeLimInputField.GetComponent().text = ""; + messenger.SendMessagetoBox("Wrong timeLimit Type!", Message.MessageType.error); + } + else if (TimeLimInputField.GetComponent().text == "") + { + // empty chara + TimeLimPlaceholder.color = Color.gray; + TimeLimPlaceholder.text = "TimeLim"; + } + else + { + int remainTime = agentWithGun.remainTime; + // make sure new timeLimit is greater than remainTime; + if (timeLimit <= remainTime) + { + TimeLimPlaceholder.color = Color.red; + TimeLimPlaceholder.text = "Error"; + messenger.SendMessagetoBox($"New time should greater than remainTime({remainTime})",Message.MessageType.error); + } + else + { + // good to go~ + TimeLimPlaceholder.color = Color.gray; + TimeLimPlaceholder.text = "TimeLim"; + agentWithGun.timeLimit = timeLimit; + TimeLimInputField.GetComponent().text = ""; + messenger.SendMessagetoBox($"Time Limit changed to {timeLimit}",Message.MessageType.success); + } + + } + } +} diff --git a/Assets/Script/InGame/RealTimeTimeLimitChanger.cs.meta b/Assets/Script/InGame/RealTimeTimeLimitChanger.cs.meta new file mode 100644 index 0000000..516c2ee --- /dev/null +++ b/Assets/Script/InGame/RealTimeTimeLimitChanger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 604d05168c977c04887a3add62ce34da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/SaveWeightsButton.cs b/Assets/Script/InGame/SaveWeightsButton.cs new file mode 100644 index 0000000..ff74793 --- /dev/null +++ b/Assets/Script/InGame/SaveWeightsButton.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SaveWeightsButton : MonoBehaviour +{ + public GameObject Agent; + public void onButtonClicked() + { + // set saveNow to active. + Agent.GetComponent().saveNow = 1; + } +} diff --git a/Assets/Script/InGame/SaveWeightsButton.cs.meta b/Assets/Script/InGame/SaveWeightsButton.cs.meta new file mode 100644 index 0000000..fc8616a --- /dev/null +++ b/Assets/Script/InGame/SaveWeightsButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 065aae6979c750b4fa0a0be5dbd8d2c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/UIController.cs b/Assets/Script/InGame/UIController.cs new file mode 100644 index 0000000..5c9d742 --- /dev/null +++ b/Assets/Script/InGame/UIController.cs @@ -0,0 +1,202 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XCharts.Runtime; + +/*????UI*/ + +public class UIController : MonoBehaviour +{ + + [Header("Key Viewer")] + public int updateStep = 600; + public Text upText; + public Text downText; + public Text leftText; + public Text rightText; + public Text shootText; + public Text MouseText; + public Text remainTimeText; + public Text remainEnemyText; + public Image mouseVisualizationBG; + public Image mouseVisualizationMeter; + + [Header("Reward Viewer")] + public Text nonRewardText; + public Text shootRewardText; + public Text shootWithoutReadyRewardText; + public Text hitRewardText; + public Text winRewardText; + public Text loseRewardText; + public Text killRewardText; + + + [Header("X_Charts")] + public GameObject realTimeRewardChartOBJ; + public GameObject realTimeKeyCounterChartOBJ; + public GameObject EPTotalRewardsChartOBJ; + + [Header("Other Para")] + public float mouseMaxMovement = 15; + + private LineChart realTimeRewardChart; + private BarChart realTimeKeyCounterChart; + private LineChart EPTotalRewardsChart; + + //-----------RewardViewer-------- + public void updateRewardViewer(float nonReward, float shootReward, float shootWithoutReadyReward, float hitReward, float winReward, float loseReward, float killReward) + { + nonRewardText.text = Convert.ToString(nonReward); + shootRewardText.text = Convert.ToString(shootReward); + shootWithoutReadyRewardText.text = Convert.ToString(shootWithoutReadyReward); + hitRewardText.text = Convert.ToString(hitReward); + winRewardText.text = Convert.ToString(winReward); + loseRewardText.text = Convert.ToString(loseReward); + killRewardText.text = Convert.ToString(killReward); + } + + //------------RemainTime---------- + public void updateRemainTime(int remainTime) + { + remainTimeText.text = Convert.ToString(remainTime); + } + //------------RemainEnemy--------- + public void updateRemainEnemy(int enemyNum) + { + remainEnemyText.text = Convert.ToString(enemyNum); + } + + //------------Key Viewer---------- + public void updateWASDKeyViewer(int vertical,int horizontal) + { + if (vertical == 1) + { + upText.color = Color.red; + downText.color = Color.black; + } + else if (vertical == -1) + { + downText.color = Color.red; + upText.color = Color.black; + } + else + { + downText.color = Color.black; + upText.color = Color.black; + } + if (horizontal == 1) + { + rightText.color = Color.red; + leftText.color = Color.black; + } + else if (horizontal == -1) + { + leftText.color = Color.red; + rightText.color = Color.black; + } + else + { + downText.color = Color.black; + upText.color = Color.black; + } + } + public void updateShootKeyViewer(int shoot,bool isGunReady) + { + if(shoot != 0 && isGunReady == true) + { + shootText.color = Color.red; + } + else if(shoot != 0 && isGunReady == false) + { + shootText.color = Color.yellow; + } + else + { + shootText.color = Color.black; + } + } + public void updateMouseMovementViewer(float Mouse_x) + { + MouseText.text = Mouse_x.ToString(); + float mouseBGWidth = mouseVisualizationBG.GetComponent().sizeDelta.x; + float mouseBGPosX = mouseVisualizationBG.GetComponent().position.x; + float mouseBGPosY = mouseVisualizationBG.GetComponent().position.y; + + float mouseMeterWidth = mouseBGWidth * Mouse_x / mouseMaxMovement; + float mouseMeterPositionOffset = mouseMeterWidth / 2; + mouseVisualizationMeter.rectTransform.sizeDelta = new Vector2(Math.Abs(mouseMeterWidth),mouseVisualizationMeter.GetComponent().sizeDelta.y); + mouseVisualizationMeter.rectTransform.position = new Vector3(mouseBGPosX + mouseMeterPositionOffset, mouseBGPosY, 0); + } + + // ------------X Chart------------ + // Initialize Chart UI + public void iniChart() + { + realTimeRewardChart = realTimeRewardChartOBJ.GetComponent(); + resetStepChart(); + realTimeKeyCounterChart = realTimeKeyCounterChartOBJ.GetComponent(); + resetCounterChat(); + + EPTotalRewardsChart = EPTotalRewardsChartOBJ.GetComponent(); + resetEPChart(); + } + + // Resert------------ + // reset setp by setp update Chart + public void resetStepChart() + { + realTimeRewardChart.RemoveData(); + realTimeRewardChart.AddSerie("RealTimeRewardChart"); + } + // reset keyCounter Chart + public void resetCounterChat() + { + realTimeKeyCounterChart.RemoveData(); + realTimeKeyCounterChart.AddSerie("RealTimeKeyCounterChart"); + realTimeKeyCounterChart.AddXAxisData("W"); + realTimeKeyCounterChart.AddXAxisData("S"); + realTimeKeyCounterChart.AddXAxisData("A"); + realTimeKeyCounterChart.AddXAxisData("D"); + realTimeKeyCounterChart.AddXAxisData("Pew"); + realTimeKeyCounterChart.AddData("RealTimeKeyCounterChart", 0, "W"); + realTimeKeyCounterChart.AddData("RealTimeKeyCounterChart", 0, "S"); + realTimeKeyCounterChart.AddData("RealTimeKeyCounterChart", 0, "A"); + realTimeKeyCounterChart.AddData("RealTimeKeyCounterChart", 0, "D"); + realTimeKeyCounterChart.AddData("RealTimeKeyCounterChart", 0, "Pew"); + } + // reset EP by EP update Chart + public void resetEPChart() + { + EPTotalRewardsChart.RemoveData(); + EPTotalRewardsChart.AddSerie("EPTotalRewardsChart"); + } + + // Update------------ + // update setp by setp update Type Chart + public void stepUpdateChart(int step, float reward) + { + if(step % updateStep == 0) + { + resetStepChart(); + } + realTimeRewardChart.AddXAxisData(Convert.ToString(step)); + realTimeRewardChart.AddData(0,reward); + } + // update KeyCounter chart + public void updateKeyCounterChart(int kWCount, int kSCount, int kACount, int kDCount,int shootCount) + { + realTimeKeyCounterChart.UpdateData(0, 0, kWCount); + realTimeKeyCounterChart.UpdateData(0, 1, kSCount); + realTimeKeyCounterChart.UpdateData(0, 2, kACount); + realTimeKeyCounterChart.UpdateData(0, 3, kDCount); + realTimeKeyCounterChart.UpdateData(0, 4, shootCount); + } + // update EP by EP update Type Chart + public void epUpdateChart(int EP,float totalReward) + { + EPTotalRewardsChart.AddXAxisData(Convert.ToString(EP)); + EPTotalRewardsChart.AddData(0,totalReward); + } +} diff --git a/Assets/Script/InGame/UIController.cs.meta b/Assets/Script/InGame/UIController.cs.meta new file mode 100644 index 0000000..8847c71 --- /dev/null +++ b/Assets/Script/InGame/UIController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89d83d123322a5c4ba6afb3c86403371 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/gameFlowController.cs b/Assets/Script/InGame/gameFlowController.cs new file mode 100644 index 0000000..d634ac0 --- /dev/null +++ b/Assets/Script/InGame/gameFlowController.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class gameFlowController : MonoBehaviour +{ + public GameObject Agent; + AgentWithGun agentWithGun; + // Start is called before the first frame update + void Start() + { + agentWithGun = Agent.GetComponent(); + } + + // Update is called once per frame + void Update() + { + if (Input.GetKey(KeyCode.Escape)) + { + Application.Quit(); + } + if (Input.GetKey(KeyCode.L)) + { + agentWithGun.lockMouse = !agentWithGun.lockMouse; + } + } +} diff --git a/Assets/Script/InGame/gameFlowController.cs.meta b/Assets/Script/InGame/gameFlowController.cs.meta new file mode 100644 index 0000000..6a0dd77 --- /dev/null +++ b/Assets/Script/InGame/gameFlowController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a8fb4d12d4b8fc4784f3e142e7fdcf8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/rayInfoUI.cs b/Assets/Script/InGame/rayInfoUI.cs new file mode 100644 index 0000000..7ac7b72 --- /dev/null +++ b/Assets/Script/InGame/rayInfoUI.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using UnityEngine.UI; +using TMPro; + +public class rayInfoUI : MonoBehaviour +{ + TextMeshProUGUI infoText; + + // Start is called before the first frame update + void Start() + { + infoText = transform.GetChild(0).gameObject.GetComponent(); + } + + public void updateInfo(string info,Vector3 infoPosition, Color infoColor) + { + infoText.text = info; + infoText.color = infoColor; + transform.position = infoPosition; + Vector3 v = Camera.main.transform.position - infoPosition; + v.x = v.z = 0.0f; + transform.LookAt(Camera.main.transform.position - v); + transform.Rotate(0, 180, 0); + } +} diff --git a/Assets/Script/InGame/rayInfoUI.cs.meta b/Assets/Script/InGame/rayInfoUI.cs.meta new file mode 100644 index 0000000..f95ae0a --- /dev/null +++ b/Assets/Script/InGame/rayInfoUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 812dfed7ee1d09c4fa7c3ed8372f54ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Start.meta b/Assets/Script/Start.meta new file mode 100644 index 0000000..e70b27f --- /dev/null +++ b/Assets/Script/Start.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58aaf9e292ab84e488d6a832943252d0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Start/EnvArgsChanger.cs b/Assets/Script/Start/EnvArgsChanger.cs new file mode 100644 index 0000000..1755b16 --- /dev/null +++ b/Assets/Script/Start/EnvArgsChanger.cs @@ -0,0 +1,106 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +public class EnvArgsChanger : MonoBehaviour +{ + public GameObject DataTransfer; + + [Header("EnemyNum")] + public Text EnemyNumText; + public InputField EnemyNumInput; + + [Header("TimeLimit")] + public Text TimeLimText; + public InputField TimelimInput; + + [Header("Decision Period")] + public Slider DecisionPeriodSlide; + public Text DecisionPeriodDataText; + public Toggle TakeActionsBetweenDecisionsToggle; + + [Header("Lock Mouse")] + public Toggle LockMouseToggle; + + [Header("Default Camera")] + public Toggle FPToggle; + public Text FPText; + public Toggle TPToggle; + public Text TPText; + + private StartSeneData startSeneData; + private void Start() + { + startSeneData = DataTransfer.GetComponent(); + } + + + public void onEnemynumValueChanged() + { + // enemy total num value control + if (EnemyNumInput.GetComponent().text == "" || EnemyNumInput.GetComponent().text.Contains("-")) + { + EnemyNumText.color = Color.gray; + } + else + { + EnemyNumText.color = Color.yellow; + startSeneData.EnemyNum = Math.Abs(int.Parse(EnemyNumInput.GetComponent().text)); + } + } + + public void onTimeValueChanged() + { + // time limit value control + if (TimelimInput.GetComponent().text == "" || TimelimInput.GetComponent().text.Contains("-")) + { + TimeLimText.color = Color.gray; + } + else + { + TimeLimText.color = Color.yellow; + startSeneData.Timelim = Math.Abs(int.Parse(TimelimInput.GetComponent().text)); + } + } + + public void onDPSlideValueChanged() + { + // DecisionPeriod(DP) value Control + startSeneData.DecisionPeriod = (int)(DecisionPeriodSlide.GetComponent().value); + DecisionPeriodDataText.text = startSeneData.DecisionPeriod.ToString(); + } + public void onABDToggleChanged() + { + // Actions Between Decisions(ABD) Toggle Control + startSeneData.ActionsBetweenDecisions = TakeActionsBetweenDecisionsToggle.isOn; + } + public void onLockMouseToggleChanged() + { + // lock mouse or not + startSeneData.lockMouse = LockMouseToggle.isOn; + } + public void onTPCamToggleChanged() + { + startSeneData.defaultTPCamera = true; + + FPToggle.interactable = true; + FPToggle.SetIsOnWithoutNotify(false); + FPText.color = Color.gray; + + TPToggle.SetIsOnWithoutNotify(true); + TPToggle.interactable = false; + TPText.color = Color.green; + } + public void onFPCameToggleChanged() + { + startSeneData.defaultTPCamera = false; + + TPToggle.interactable = true; + TPToggle.SetIsOnWithoutNotify(false); + TPText.color = Color.gray; + + FPToggle.SetIsOnWithoutNotify(true); + FPToggle.interactable = false; + FPText.color = Color.green; + } +} diff --git a/Assets/Script/Start/EnvArgsChanger.cs.meta b/Assets/Script/Start/EnvArgsChanger.cs.meta new file mode 100644 index 0000000..63ec6b6 --- /dev/null +++ b/Assets/Script/Start/EnvArgsChanger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccfe892ab0f980343b6df0fafaec38e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Start/LoadDirChanger.cs b/Assets/Script/Start/LoadDirChanger.cs new file mode 100644 index 0000000..40a2b88 --- /dev/null +++ b/Assets/Script/Start/LoadDirChanger.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class LoadDirChanger : MonoBehaviour +{ + public InputField LoadDirDateTextBox; + public InputField LoadDirTimeTextBox; + public Toggle Toggle; + public GameObject DataTransfer; + + + public void OnDirToggleChanged() + { + // if loadDirToggle is on then turn off the input text boxs. + LoadDirDateTextBox.interactable = Toggle.isOn; + LoadDirTimeTextBox.interactable = Toggle.isOn; + // if loadDirToggle is off set loaddirs as 0. + if (!Toggle.isOn) + { + DataTransfer.GetComponent().LoadDirDate = "0"; + DataTransfer.GetComponent().LoadDirTime = "0"; + } + } + + public void OnDateValueChanged() + { + string input = LoadDirDateTextBox.GetComponent().text; + DataTransfer.GetComponent().LoadDirDate = input; + } + public void OnTimeValueChanged() + { + string input = LoadDirTimeTextBox.GetComponent().text; + DataTransfer.GetComponent().LoadDirTime = input; + } +} diff --git a/Assets/Script/Start/LoadDirChanger.cs.meta b/Assets/Script/Start/LoadDirChanger.cs.meta new file mode 100644 index 0000000..cb6c295 --- /dev/null +++ b/Assets/Script/Start/LoadDirChanger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 664e98da80fb4d842b0c3aff09fd4dc9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Start/RewardsChange.cs b/Assets/Script/Start/RewardsChange.cs new file mode 100644 index 0000000..c84f650 --- /dev/null +++ b/Assets/Script/Start/RewardsChange.cs @@ -0,0 +1,120 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.UI; + +public class RewardsChange : MonoBehaviour +{ + public GameObject DataTransfer; + + public GameObject nonRInputOBJ; + public GameObject shootRInputOBJ; + public GameObject shootWithoutReadyRInputOBJ; + public GameObject hitRInputOBJ; + public GameObject killRInputOBJ; + public GameObject winRInputOBJ; + public GameObject loseRInputOBJ; + + + public Text nonRInputText; + public Text shootRInputText; + public Text shootWithoutReadyRInputText; + public Text hitRInputText; + public Text killRInputText; + public Text winRInputText; + public Text loseRInputText; + + + + private void Start() + { + } + // Update is called once per frame + + public void nonRValueChanged() + { + if (nonRInputOBJ.GetComponent().text == "" || nonRInputOBJ.GetComponent().text == "-") + { + nonRInputText.color = Color.gray; + DataTransfer.GetComponent().nonReward = DataTransfer.GetComponent().nonRewardDefault; + } + else + { + nonRInputText.color = Color.yellow; + DataTransfer.GetComponent().nonReward = float.Parse(nonRInputOBJ.GetComponent().text); + } + } + public void shootRValueChanged() + { + if (shootRInputOBJ.GetComponent().text == "" || shootRInputOBJ.GetComponent().text == "-") + { + shootRInputText.color = Color.gray; + DataTransfer.GetComponent().shootReward = DataTransfer.GetComponent().shootRewardDefault; + } + else { + shootRInputText.color = Color.yellow; + DataTransfer.GetComponent().shootReward = float.Parse(shootRInputOBJ.GetComponent().text); + } + } + public void shootWOReadyRValueChanged() + { + if(shootWithoutReadyRInputOBJ.GetComponent().text == "" || shootWithoutReadyRInputOBJ.GetComponent().text == "-") + { + shootWithoutReadyRInputText.color = Color.gray; + DataTransfer.GetComponent().shootWithoutReadyReward = DataTransfer.GetComponent().shootWithoutReadyRewardDefault; + } + else{ + shootWithoutReadyRInputText.color = Color.yellow; + DataTransfer.GetComponent().shootWithoutReadyReward = float.Parse(shootWithoutReadyRInputOBJ.GetComponent().text); + } + } + public void hitRValueChanged() + { + if(hitRInputOBJ.GetComponent().text == "" || hitRInputOBJ.GetComponent().text == "-") + { + hitRInputText.color = Color.gray; + DataTransfer.GetComponent().hitReward = DataTransfer.GetComponent().hitRewardDefault; + } + else{ + hitRInputText.color = Color.yellow; + DataTransfer.GetComponent().hitReward = float.Parse(hitRInputOBJ.GetComponent().text); + } + } + public void winRValueChanged() + { + if(winRInputOBJ.GetComponent().text == "" || winRInputOBJ.GetComponent().text == "-") + { + winRInputText.color = Color.gray; + DataTransfer.GetComponent().winReward = DataTransfer.GetComponent().winRewardDefault; + } + else{ + winRInputText.color = Color.yellow; + DataTransfer.GetComponent().winReward = float.Parse(winRInputOBJ.GetComponent().text); + } + } + public void loseRValueChanged() + { + if(loseRInputOBJ.GetComponent().text == "" || loseRInputOBJ.GetComponent().text == "-") + { + loseRInputText.color = Color.gray; + DataTransfer.GetComponent().loseReward = DataTransfer.GetComponent().loseRewardDefault; + } + else{ + loseRInputText.color = Color.yellow; + DataTransfer.GetComponent().loseReward = float.Parse(loseRInputOBJ.GetComponent().text); + } + } + public void killRValueChanged() + { + if(killRInputOBJ.GetComponent().text == "" || killRInputOBJ.GetComponent().text == "-") + { + killRInputText.color = Color.gray; + DataTransfer.GetComponent().killReward = DataTransfer.GetComponent().killRewardDefault; + } + else{ + killRInputText.color = Color.yellow; + DataTransfer.GetComponent().killReward = float.Parse(killRInputOBJ.GetComponent().text); + } + } +} diff --git a/Assets/Script/Start/RewardsChange.cs.meta b/Assets/Script/Start/RewardsChange.cs.meta new file mode 100644 index 0000000..4ba0c47 --- /dev/null +++ b/Assets/Script/Start/RewardsChange.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44fd351436d221849991bd84d37d8109 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Start/SceneChange.cs b/Assets/Script/Start/SceneChange.cs new file mode 100644 index 0000000..6bc3348 --- /dev/null +++ b/Assets/Script/Start/SceneChange.cs @@ -0,0 +1,39 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.SceneManagement; + +public class SceneChange : MonoBehaviour +{ + public GameObject DataTransfer; + public Text errorText; + // Start is called before the first frame update + bool checkLoadDirFormat() + { + string thisLoadDirDate = DataTransfer.GetComponent().LoadDirDate; + string thisLoadDirTime = DataTransfer.GetComponent().LoadDirTime; + int LoadDirDateLength = thisLoadDirDate.Length; + int LoadDirTimeLength = thisLoadDirTime.Length; + if ((LoadDirDateLength == 8 && LoadDirTimeLength == 6) || (thisLoadDirDate == "0" && thisLoadDirTime == "0")) + { + return true; + } + else + { + return false; + } + } + + public void onStartClick() + { + if (checkLoadDirFormat()) + { + errorText.text = "Loading next Scene..."; + errorText.color = Color.green; + SceneManager.LoadScene("InGame"); + } + else + { + errorText.text = "Dir Format error"; + } + } +} diff --git a/Assets/Script/Start/SceneChange.cs.meta b/Assets/Script/Start/SceneChange.cs.meta new file mode 100644 index 0000000..b40b5d4 --- /dev/null +++ b/Assets/Script/Start/SceneChange.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 73ae3df5f5faba1428ab2529c043b7ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Start/StartSeneData.cs b/Assets/Script/Start/StartSeneData.cs new file mode 100644 index 0000000..22e4f4d --- /dev/null +++ b/Assets/Script/Start/StartSeneData.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class StartSeneData : MonoBehaviour +{ + [Header("Default Rewards")] + public float nonRewardDefault = -0.05f; + public float shootRewardDefault = -0.06f; + public float shootWithoutReadyRewardDefault = -0.06f; + public float hitRewardDefault = 5.0f; + public float killRewardDefault = 10.0f; + public float winRewardDefault = 20.0f; + public float loseRewardDefault = -0.05f; + public bool lockMouse = false; + public bool defaultTPCamera = true; + + // LoadDir + [System.NonSerialized]public string LoadDirDate = "0"; + [System.NonSerialized]public string LoadDirTime = "0"; + + // Rewards + [System.NonSerialized] public float nonReward; + [System.NonSerialized] public float shootReward; + [System.NonSerialized] public float shootWithoutReadyReward; + [System.NonSerialized] public float hitReward; + [System.NonSerialized] public float killReward; + [System.NonSerialized] public float winReward; + [System.NonSerialized] public float loseReward; + + // DecisionPeriod + [System.NonSerialized] public int DecisionPeriod = 1; + [System.NonSerialized] public bool ActionsBetweenDecisions = true; + + // EnemyNum + [System.NonSerialized] public int EnemyNum = 3; + + // TimeLimit + [System.NonSerialized] public int Timelim = 15; + + private void Start() + { + nonReward = nonRewardDefault; + shootReward = shootRewardDefault; + shootWithoutReadyReward = shootWithoutReadyRewardDefault; + hitReward = hitRewardDefault; + killReward = killRewardDefault; + winReward = winRewardDefault; + loseReward = loseRewardDefault; + } + // Update is called once per frame + void Awake() + { + DontDestroyOnLoad(transform.gameObject); + } +} diff --git a/Assets/Script/Start/StartSeneData.cs.meta b/Assets/Script/Start/StartSeneData.cs.meta new file mode 100644 index 0000000..327aeba --- /dev/null +++ b/Assets/Script/Start/StartSeneData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52ba7faaa6129cf418f26c5933d4ea0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro.meta b/Assets/TextMesh Pro.meta new file mode 100644 index 0000000..f9da8b5 --- /dev/null +++ b/Assets/TextMesh Pro.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f54d1bd14bd3ca042bd867b519fee8cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts.meta b/Assets/XCharts.meta new file mode 100644 index 0000000..5455863 --- /dev/null +++ b/Assets/XCharts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27636d97cef7446ffba2e3036a207851 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md new file mode 100644 index 0000000..4975545 --- /dev/null +++ b/Assets/XCharts/CHANGELOG.md @@ -0,0 +1,705 @@ + +# 更新日志 + +[master](#master) +[v3.0.1](#v3.0.1) +[v3.0.0](#v3.0.0) +[v3.0.0-preivew9](#v3.0.0-preivew9) +[v3.0.0-preivew8](#v3.0.0-preivew8) +[v3.0.0-preivew7](#v3.0.0-preivew7) +[v3.0.0-preivew6](#v3.0.0-preivew6) +[v3.0.0-preivew5](#v3.0.0-preivew5) +[v3.0.0-preivew4](#v3.0.0-preivew4) +[v3.0.0-preivew3](#v3.0.0-preivew3) +[v3.0.0-preivew2](#v3.0.0-preivew2) +[v3.0.0-preivew1](#v3.0.0-preivew1) +[v2.7.0](#v2.7.0) +[v2.6.0](#v2.6.0) +[v2.5.0](#v2.5.0) +[v2.4.0](#v2.4.0) +[v2.3.0](#v2.3.0) +[v2.2.3](#v2.2.3) +[v2.2.2](#v2.2.2) +[v2.2.1](#v2.2.1) +[v2.2.0](#v2.2.0) +[v2.1.1](#v2.1.1) +[v2.1.0](#v2.1.0) +[v2.0.1](#v2.0.1) +[v2.0.0](#v2.0.0) +[v2.0.0-preview.2](#v2.0.0-preview.2) +[v2.0.0-preview.1](#v2.0.0-preview.1) +[v1.6.3](#v1.6.3) +[v1.6.1](#v1.6.1) +[v1.6.0](#v1.6.0) +[v1.5.2](#v1.5.2) +[v1.5.1](#v1.5.1) +[v1.5.0](#v1.5.0) +[v1.4.0](#v1.4.0) +[v1.3.1](#v1.3.1) +[v1.3.0](#v1.3.0) +[v1.2.0](#v1.2.0) +[v1.1.0](#v1.1.0) +[v1.0.5](#v1.0.5) +[v1.0.4](#v1.0.4) +[v1.0.3](#v1.0.3) +[v1.0.2](#v1.0.2) +[v1.0.1](#v1.0.1) +[v1.0.0](#v1.0.0) +[v0.8.3](#v0.8.3) +[v0.8.2](#v0.8.2) +[v0.8.1](#v0.8.1) +[v0.8.0](#v0.8.0) +[v0.5.0](#v0.5.0) +[v0.1.0](#v0.1.0) + +## master + +## v3.0.1 + +* (2022.06.16) 发布`v3.0.1`版本 +* (2022.06.16) 修复`Inspector`上部分`foldout`箭头点击无法展开的问题 +* (2022.06.16) 修复`Inspector`上部分`foldout`箭头点击无法展开的问题 +* (2022.06.15) 优化`Doc`自动生成,完善代码注释和配置项手册文档 +* (2022.06.14) 优化`SerieLabelStyle`,支持动态调整`Icon` +* (2022.06.13) 优化`Background`背景设置 +* (2022.06.10) 增加`Legend`的`AxisLabel`支持`autoColor` +* (2022.06.08) 修复`Axis`的`AxisLabel`在设置不显示时还显示首尾两个`label`的问题 + +## v3.0.0 + +* 更健壮的底层框架。 +* 更强大的性能。 +* 更小的序列化文件。 +* 更好的交互体验。 +* 更多的组件支持。 +* 更强大的文本自述能力。 +* 更合理的组件调整。 +* 更灵活的组件插拔。 +* 更高效的二次开发。 +* 更丰富的Demo示例。 +* 增加`Time`时间轴。 +* 增加`SingleAxis`单轴。 +* 增加`Comment`文本组件。 +* 增加`Widgets`小组件。 +* 增加多种坐标系:`Grid`、`Polar`、`Radar`、`SingleAxis`。 +* 增加多种动画方式。 +* 增加多种图表交互。 +* 增加国际化支持。 +* 增加多种扩展图表。 + +## v3.0.0-preivew9 + +* (2022.05.06) 发布`v3.0.0-preivew9`版本 +* (2022.05.05) 优化`ItemStyle`设置`color`时的一致性 +* (2022.05.05) 增加`Line`对`Dash`,`Dot`等的支持 (#197) +* (2022.05.04) 增加`Legend`的委托回调 +* (2022.05.04) 优化`Symbol`和`Label` +* (2022.05.01) 增加`Bar`对`clip`的支持 (#196) +* (2022.05.01) 修复`RingChart`的`Label`不刷新的问题 (#195) +* (2022.04.29) 增加`Tooltip`支持自定义背景图 +* (2022.04.27) 修复`ItemStyle`代码修改`color`不刷新的问题 + +## v3.0.0-preivew8 + +* (2022.04.26) 发布`v3.0.0-preivew8`版本 +* (2022.04.23) 移除`Serie`的`IconStyle`组件 +* (2022.04.23) 强化`LabelStyle`,所有组件的`TextStyle`都升级为`LabelStyle` +* (2022.04.19) 增加`Label`的`rotate`支持设置旋转 +* (2022.04.17) 修复`Bar`在数值为负数时动画无效的问题 +* (2022.04.17) 增加`ItemStyle`的`BorderGap`支持设置边框间距 +* (2022.04.16) 优化`Bar`的`Border`和`Capsule`胶囊柱图 +* (2022.04.15) 增加`Liquid`对`Round Rect`圆角矩形水位图的支持 +* (2022.04.14) 增加`Line`对`EndLabel`的支持 +* (2022.04.13) 增加`VisualMap`的`workOnLine`和`workOnArea`支持折线和区域映射功能 (#191) +* (2022.04.12) 优化`Radar`支持`Area`区域触发`Tooltip` +* (2022.04.09) 优化`VisualMap` +* (2022.04.09) 优化`Tooltip` + +## v3.0.0-preivew7 + +* (2022.04.07) 发布`v3.0.0-preivew7`版本 +* (2022.04.07) 修复`Pie`颜色不刷新的问题 +* (2022.03.31) 修复`Add Main Component`添加组件异常的问题 +* (2022.03.30) 修复`Axis`无法自定义`Label`颜色的问题 + +## v3.0.0-preivew6 + +* (2022.03.30) 发布`v3.0.0-preivew6`版本 + +## v3.0.0-preivew5 + +* (2022.03.26) 发布`v3.0.0-preivew5`版本 + +## v3.0.0-preivew4 + +* (2022.03.21) 发布`v3.0.0-preivew4`版本 + +## v3.0.0-preivew3 + +* (2022.03.09) 发布`v3.0.0-preivew3`版本 + +## v3.0.0-preivew2 + +* (2022.01.08) 发布`v3.0.0-preivew2`版本 + +## v3.0.0-preivew1 + +* (2022.01.07) 发布`v3.0.0-preivew1`版本 + +## v2.7.0 + +* (2022.03.20) 发布`v2.7.0`版本 +* (2022.02.21) 修复`Chart`的`chartName`重复检测问题 #183 +* (2022.02.17) 修复`Axis`的`SplitLine`可能会显示在坐标系外的问题 #181 +* (2022.02.08) 修复数据全0时`{d}`显示不正确的问题 +* (2022.02.08) 修复`YAxis`的`AxisLabel`的`onZero`参数不生效的问题 +* (2022.01.06) 优化`Zebra`斑马柱图 + +## v2.6.0 + +* (2021.12.30) 发布`v2.6.0`版本 +* (2021.12.21) 修复`Emphasis`不生效的问题 +* (2021.12.17) 修复`MarkLine`在运行时`Label`不自动刷新显示隐藏的问题 #178 +* (2021.12.10) 完善`Radar`的`AxisLine`和`SplitLine`可单独控制 +* (2021.12.08) 修复`Serie`隐藏后`Y`轴最大值不刷新的问题 +* (2021.12.04) 增加`Symbol`新类型:`EmptyRect`,`EmptyTriangle`,`EmptyDiamond` +* (2021.12.04) 增加`Symbol`的`Empty`区域颜色可通过`ItemStyle`的`backgroundColor`设置的支持 +* (2021.12.03) 修复`Formatter`的`{c}`通配符不生效的问题 #175 +* (2021.12.03) 修复`Axis`的`boundaryGap`某些情况下显示的问题 #174 +* (2021.11.30) 修复`Serie`的`ignore`某些情况下绘制异常的问题 #173 + +## v2.5.0 + +* (2021.11.27) 发布`v2.5.0`版本 +* (2021.11.27) 增加`Tooltip`的`positionFunction`的坐标设置委托函数 +* (2021.10.29) 移除`XCharts`首次导入时`TextMeshPro`的相关设置 +* (2021.10.29) 增加`Tooltip`对通配符`{e}`的支持 #170 +* (2021.09.08) 完善`RadarChart` +* (2021.09.07) 修复`PieChart`渐出动画结束时`label`没有消失的问题 #168 +* (2021.09.06) 修复`GaugeChart`用代码改变`splitNumber`不会刷新`label`的问题 #167 + +## v2.4.0 + +### 版本要点 + +* 折线图支持忽略数据的连线是断开还是连接 +* 折线图支持轨迹匀速动画 +* 其他优化和问题修复 + +### 日志详情 + +* (2021.08.31) 发布`v2.4.0`版本 +* (2021.08.31) 优化`RingChart`的渐变效果 +* (2021.08.31) 修复`DataZoom`拖动时`SerieLabel`不刷新的问题 (#165) +* (2021.08.25) 修复`Theme`主题切换无法保持到场景上的问题 (#166) +* (2021.08.24) 增加`Animation`的`alongWithLinePath`参数设置折线轨迹匀速动画 +* (2021.08.22) 增加`Serie`的`ignoreLineBreak`参数设置忽略数据连线是否断开 (#164) +* (2021.08.22) 修复`Axis`在`DataZoom`开启时`Label`可能不更新的问题 (#164) +* (2021.08.15) 优化`Axis`的`AxisLabel`文本旋转设置,避免在DataZoom开启时偏移不一致 (#163) +* (2021.08.14) 增加`Legend`的`textAutoColor`设置文本颜色和`Serie`一致 (#163) +* (2021.08.12) 优化`BarChart`设置`Corner`时正负柱条圆角对称 +* (2021.08.03) 优化`Serie`的数据全为0时Y轴不显示的问题 +* (2021.07.29) 修复`Serie`开启`ignore`时被忽略的数据还会参与计算的问题 (#161) +* (2021.07.29) 完善`BarChart`的`Zebra`斑马柱图渐变支持 +* (2021.07.26) 修复`TextMeshPro Enable`时找不到`XCharts`路径的问题 (#160) + +## v2.3.0 + +### 版本要点 + +* 数据存储由`float`升级为`double` +* 新增`MarkLine`标线 +* `Serie`下可用`IconStyle`统一配置图标 +* `Label`支持用代码自定义显示样式 +* `DataZoom`完善 +* `PieChart`优化 +* 问题修复 + +### 升级注意 + +由于数据类型升级为了`double`,`float`隐式转`double`可能有精度问题,所以建议之前为`float`的数据类型都手动改为`double`类型。 + +### 日志详情 + +* (2021.07.24) 发布`v2.3.0`版本 +* (2021.07.22) 完善`SerieSymbol`以支持象形柱图`PictorialBarChart`扩展 +* (2021.07.19) 修复`WdbGL`平台上`Tooltip`不显示的问题 +* (2021.07.18) 增加`Serie`的`iconStyle`统一配置图标 +* (2021.07.15) 增加`MarkLine`标线 (#142) +* (2021.07.09) 优化`BarChart`可通过`serieData.show`设置是否显示柱条 +* (2021.07.08) 优化`data`数据存储类型由`float`全部转为`double` +* (2021.07.05) 修复`PieChart`的`avoidLabelOverlap`参数不生效的问题 +* (2021.07.04) 修复`PieChart`选中扇区后鼠标区域指示不准确的问题 +* (2021.07.04) 优化`PieChart`的`Label`为`Inside`时可通过参数`Margin`调节偏移 +* (2021.07.01) 增加`DataZoom`的`supportInsideScroll`和`supportInsideDrag`参数设置坐标系内是否支持滚动和拖拽 +* (2021.06.27) 增加`AxisLabel`的`showStartLabel`和`showEndLabel`参数设置首尾的`Label`是否显示 +* (2021.06.27) 增加`AxisLabel`和`SerieLabel`的`formatter`委托方法 (#145) +* (2021.06.27) 增加`DataZoom`的`orient`参数设置水平或垂直样式 +* (2021.06.21) 增加`IconStyle`的`autoHideWhenLabelEmpty`参数设置当`label`为空时是否自动隐藏图标 + +## v2.2.3 + +* (2021.06.20) 发布`v2.2.3`版本 +* (2021.06.20) 修复`Axis`的`Icon`默认显示出来的问题 + +## v2.2.2 + +* (2021.06.18) 发布`v2.2.2`版本 +* (2021.06.18) 优化`Axis`的`Label`为空时自动隐藏`Icon` +* (2021.06.17) 修复`maxCache`设置时实际数据个数多一个的问题 +* (2021.06.17) 修复`TextMeshPro`的开启和关闭不及时刷新的问题 +* (2021.06.17) 修复`XCharts`导入时总是弹出`XCharts Importer`的问题 + +## v2.2.1 + +* (2021.06.13) 发布`v2.2.1`版本 +* (2021.06.13) 完善对多屏幕的支持 +* (2021.06.12) 增加`IconStyle`的`align`参数设置图标的水平对齐 +* (2021.06.12) 完善`Theme`主题导入 (#148) +* (2021.06.10) 修复`Unity`版本兼容问题 (#154) +* (2021.06.05) 完善`CandlestickChart`对`inverse`的支持 (#152) +* (2021.06.04) 修复`Gauge`在最小值为负数时指针指示位置异常的问题 (#153) + +## v2.2.0 + +* (2021.05.30) 发布`v2.2.0`版本 +* (2021.05.25) 完善`TextStyle`的`alignment`的支持 (#150) +* (2021.05.24) 修复`PieChart`数据全为`0`时`Label`无法正常显示的问题 +* (2021.05.24) 修复`Add Serie`面板上`Serie Name`不生效的问题 (#149) +* (2021.05.23) 增加`TextStyle`的`autoWrap`设置是否自动换行 +* (2021.05.23) 增加`TextStyle`的`autoAlign`设置是否让系统自动设置对齐方式 +* (2021.05.23) 增加`AxisLabel`的`width`和`height`支持自定义文本的长宽 +* (2021.05.23) 增加`Axis`的`iconStyle`和`icons`支持设置坐标轴标签显示图标 +* (2021.05.20) 增加`Serie`和`Axis`的`insertDataToHead`参数控制数据插入头部还是尾部 +* (2021.05.18) 优化`Editor`下的图表创建 #147 +* (2021.05.16) 抽离`GanttChart`甘特图,通过扩展模块的方式来提供 +* (2021.05.11) 增加`VisualMap`对`Piecewise`分段设置颜色的支持 +* (2021.05.09) 修复`RingChart`无法设置环形的背景色的问题 #141 +* (2021.05.08) 增加`LiquidChart`的方形水位图支持 +* (2021.05.07) 优化`Axis`的刻度表现 #135 +* (2021.05.01) 增加`Settings`中关于关于材质球设置的参数 #140 +* (2021.05.01) 修复无法正确表示部分超大或超小数值的问题 +* (2021.04.29) 修复`Radar`切换到`Circle`异常的问题 #139 +* (2021.04.29) 增加`Settings`的`reversePainter`可设置`Serie`的绘制是否逆序 +* (2021.04.28) 增加`SerieData`的`ignore`可忽略当前数据项 +* (2021.04.28) 修复`DataZoom`下`AxisLabel`显示不准确的问题 #138 +* (2021.04.26) 修复运行时动态创建图表会异常的问题 #137 +* (2021.04.26) 增加`BarChart`绘制渐变边框的支持 +* (2021.04.23) 增加自定义图表支持 +* (2021.04.22) 修复`Gauge`的`AxisLabel`和文字颜色无法调整的问题 +* (2021.04.13) 增加`AxisTick`的`ShowStartTick`和`ShowEndTick`参数控制第一个和最后一个刻度是否显示 +* (2021.04.13) 完善多坐标轴的支持 #132 + +## v2.1.1 + +* (2021.04.13) 整理代码,清除`Warning` +* (2021.04.13) 修复`Unity`版本兼容问题 +* (2021.04.12) 修复`Theme`重构后引起的`missing class attribute 'ExtensionOfNativeClass'`的问题 #131 + +## v2.1.0 + +* (2021.04.07) 发布`v2.1.0`版本 +* (2021.03.31) 优化和重构`Theme`,解决引用相同或丢失的问题 #118 +* (2021.03.30) 优化`Tooltip`支持设置不同的类目轴数据 #129 +* (2021.03.29) 优化自定义绘制回调接口,增加`onCustomDrawBeforeSerie`、`onCustomDrawAfterSerie`和`onCustomDrawTop` +* (2021.03.25) 增加`GanttChart`甘特图 +* (2021.03.22) 增加`Theme`的`Unbind`按钮用于解绑复制图表时的主题 #118 +* (2021.03.18) 修复`Inspector`下`Foldout`后的勾选框无法选中的问题 +* (2021.03.18) 修复`BarChart`在`0`数值时显示异常的问题 +* (2021.03.14) 修复`Tooltip`的指示器在某些情况下指示位置不准的问题 +* (2021.03.13) 优化`MultiComponentMode`开启后的编辑体验和组件刷新 #128 +* (2021.03.10) 增加`CandlestickChart`K线图 #124 +* (2021.03.06) 增加`PieChart`的`minAngle`参数支持设置最小扇区角度 #117 +* (2021.03.05) 增加`Legend`几种内置图标的支持 #90 +* (2021.03.02) 增加`DataZoom`对数值轴的支持 #71 +* (2021.03.02) 优化`TextMeshPro`兼容问题 #125 +* (2021.03.01) 修复隐藏和显示图表时部分已隐藏的节点显示异常的问题 #125 + +## v2.0.1 + +* (2021.02.26) 修复`HeatmapChart`的`Tooltip`指示的位置不准的问题 #123 +* (2021.02.22) 修复`Unity`版本兼容问题 +* (2021.02.21) 增加`Tooltip`的`ignoreDataShow`参数 +* (2021.02.19) 修复图表在`LayoutGroup`控制下时可能显示错乱的问题 #121 +* (2021.02.18) 修复`Radar`参数变更后无法自刷新的问题 #122 + +## v2.0.0 + +* (2021.02.05) 发布`v2.0.0`版本 +* (2021.02.03) 修复`AxisLine`的`OnZero`对`YAxis`不生效的问题 #116 +* (2021.01.29) 修复`Category`轴在`BoundaryGap`和`AlignWithLabel`为`True`时`Tick`显示效果不对的问题 #115 +* (2021.01.25) 优化一些细节 +* (2021.01.22) 修复`Inpsector`上部分属性显示异常的问题 + +## v2.0.0-preview.2 + +* (2021.01.21) 发布`v2.0.0-preview.2`版本 +* (2021.01.21) 修复`Inpsector`上展开`AxisTick`时报错问题 +* (2021.01.21) 修复打包兼容报错问题 +* (2021.01.19) 增加`XChartsSettings`的`editorShowAllListData`参数配置是否在`Inspector`中显示列表的所有数据 + +## v2.0.0-preview.1 + +* (2021.01.19) 发布`v2.0.0-preview.1`版本 + +## v1.6.3 + +* (2021.01.02) 发布`v1.6.3`版本 +* (2020.12.18) 修复`Animation`不启用时更新数据会导致图表一直刷新的问题 +* (2020.12.01) 修复`Unity2020`上新创建的图表无法正常绘制的问题 +* (2020.11.22) 发布`v1.6.2`版本 +* (2020.11.22) 修复`LineChart`在数据过于密集时折线绘制异常的问题 #99 +* (2020.11.21) 修复`LineChart`的刻度位置在`alignWithLabel`为`true`时可能异常的问题 +* (2020.11.21) 修复`Unity5`兼容报错的问题 +* (2020.11.13) 完善`RadarChart`的`Indicator`对`\n`换行的支持 +* (2020.11.12) 修复`LineChart`当类型为`Smooth`时数据过密情况下报错的问题 #100 +* (2020.10.22) 完善`HeatmapChart`中`VisualMap`对`Piecewise`的支持 +* (2020.09.22) 修复`PieChart`边框大小不一致的问题 + +## v1.6.1 + +* (2020.09.19) 发布`v1.6.1`版本 +* (2020.09.19) 增加`Remove All Chart Object`移除图表下的所有子节点(会自动重新初始化) +* (2020.09.18) 修复`SerieLabel`在点击图例隐藏`Serie`后还显示的问题#94 +* (2020.09.18) 优化`Axis`的类目轴刻度和文本显示#93 +* (2020.09.17) 修复`Package`导入时缺失`meta`文件导致失败的问题#92 +* (2020.09.08) 优化`Legend`的颜色可自动匹配`ItemStyle`的自定义颜色#89 +* (2020.09.05) 优化`LineChart`在不使用`XAxis1`时也能显示`XAxis1` +* (2020.08.29) 增加`LineStyle`的`toColor`和`toColor2`设置`LineChart`的水平渐变,取消通过`ItemStyle`设置`LineChart`的水平渐变 +* (2020.08.29) 增加`PieChart`的`onPointerClickPie`点击扇形图扇区回调 +* (2020.08.29) 增加`BarChart`的`onPointerClickBar`点击柱形图柱条回调 + +## v1.6.0 + +* (2020.08.24) 发布`v1.6.0`版本 +* (2020.08.23) 重构代码,将与绘制相关的`Color`改为`Color32`,减少隐式转换(更新后会导致自定义的颜色丢失,可参考[问答29](https://github.com/XCharts-Team/XCharts/blob/master/Assets/XCharts/Documentation/XChartsFAQ-ZH.md)进行升级) +* (2020.08.15) 优化`PieChart`绘制表现效果#85 +* (2020.08.11) 增加`LiquidChart`数据变更动画#83 +* (2020.08.11) 优化`PieChart`文本堆叠和引线效果#85 +* (2020.08.08) 优化`LineChart`密集数据的绘制表现效果 +* (2020.07.30) 增加`LineChart`可通过`VisualMap`或`ItemStyle`配置渐变#78 +* (2020.07.25) 修复`LineChart`渐出动画绘制异常的问题#79 +* (2020.07.25) 修复`LiquidChart`在`100%`时渐变色会失效的问题#80 +* (2020.07.25) 增加`RadarChart`对`Tooltip`的`formatter`支持#77 +* (2020.07.23) 增加`RingChart`环形渐变支持#75 +* (2020.07.21) 增加`AxisLabel`和`SerieLabel`的`formatter`可单独配置数值格式化#68 +* (2020.07.17) 增加`SerieAnimation`动画完成回调接口 +* (2020.07.17) 优化`Chart`放在`ScrollView`下时不影响`ScrollView`的滚动和拖动 +* (2020.07.16) 修复`Tooltip`在上层有遮挡还会显示的问题#74 +* (2020.07.08) 优化`Scatter`类型`Serie`支持`Log`轴#70 +* (2020.07.07) 修复`SerieLabel`位置错乱的问题 +* (2020.07.07) 增加`Tooltip`的`offset`参数配置偏移 +* (2020.07.06) 增加`LiquidChart`水位图 +* (2020.07.01) 增加`PolarChart`极坐标图表 + +## v1.5.2 + +* (2020.06.25) 发布`v1.5.2`版本 +* (2020.06.25) 修复`BarChart`在数值为`0`时还会绘制一小部分柱条的问题 +* (2020.06.24) 修复`PieChart`在设置`clockwise`后绘制异常的问题#65 +* (2020.06.23) 优化`LineChart`在峰谷差异过大时的绘制效果#64 +* (2020.06.18) 修复`SerieLabel`在重新添加数据时可能不显示的问题 +* (2020.06.17) 增加`SerieData`可单独设置`SerieSymbol`#66 +* (2020.06.17) 修复`Check For Update`在`Unity 2018`部分版本报错的问题#63 +* (2020.06.16) 增加`Serie`的`avoidLabelOverlap`参数避免饼图标签堆叠的情况#56 +* (2020.06.15) 修复`SerieLabel`单独控制显示时可能错乱的问题 +* (2020.06.11) 修复`Check warning`不生效的问题 +* (2020.06.11) 修复`PieChart`和`RingChart`在数据占比很小时不显示的问题 +* (2020.06.11) 增加`Tooltip`的`titleFormatter`支持配置占位符`{i}`表示忽略不显示标题 +* (2020.06.07) 增加`Animation`的`customFadeInDelay`等自定义数据项延时和时长回调函数#58 +* (2020.06.07) 优化`PieChart`在数据全为`0`时的显示为等份的效果#59 +* (2020.06.04) 增加`SerieLabel`的`autoOffset`参数设置是否自动判断上下偏移 +* (2020.06.04) 增加`Tooltip`的`alwayShow`参数设置触发后一直显示 +* (2020.06.04) 优化`Tooltip`的`formatter`支持`{.1}`通配符 +* (2020.06.04) 优化`Legend`数量过多时自动换行显示#53 + +## v1.5.1 + +* (2020.06.03) 发布`v1.5.1`版本 +* (2020.06.02) 增加`Radar`的`ceilRate`,设置最大最小值的取整倍率 +* (2020.06.02) 优化`Tooltip`的`formatter`,支持`{c1:1-1:f1}`格式配置 +* (2020.05.31) 优化`Background`组件的生效条件,需要有单独的父节点(升级前需要自己处理旧的背景节点) +* (2020.05.30) 优化`PieChart`支持设置`ignoreValue`不显示指定数据 +* (2020.05.30) 修复`RadarChart`为`Circle`时不绘制`SplitArea`的问题 +* (2020.05.30) 优化`RadarChart`在设置`max`为`0`时可自动刷新最大值 +* (2020.05.29) 修复`PieChart`设置`gap`时只有一个数据时绘制异常的问题 +* (2020.05.27) 修复调用`UpdateDataName()`接口时不会自动刷新的问题 +* (2020.05.27) 优化`柱状图`的渐变色效果 +* (2020.05.24) 修复`Axis`同时设置`boundaryGap`和`alignWithLabel`时`Tick`绘制异常的问题 +* (2020.05.24) 优化版本更新检测 + +## v1.5.0 + +* (2020.05.22) 发布`v1.5.0`版本 +* (2020.05.21) 增加`圆角柱图`支持渐变 +* (2020.05.21) 增加`Background`背景组件 +* (2020.05.19) 隐藏`Hierarchy`试图下自动生成的子节点 +* (2020.05.18) 增加`chartName`属性可指定图表的别称,可通过`XChartMgr.Instance.GetChart(chartName)`获取图表 +* (2020.05.16) 增加部分鼠标事件回调 +* (2020.05.15) 优化自带例子,`Demo`改名为`Example` +* (2020.05.13) 增加`Serie`的`large`和`largeThreshold`参数配置折线图和柱状图的性能模式 +* (2020.05.13) 完善Demo,增加性能演示Demo +* (2020.05.13) 优化性能,优化大数据绘制,重构代码 +* (2020.05.04) 增加`numericFormatter`参数可配置数值格式化显示,去掉`forceENotation`参数 +* (2020.04.28) 增加`自由锚点`支持,任意对齐方式 +* (2020.04.23) 优化`ScatterChart`的`Tooltip`显示效果 +* (2020.04.23) 增加`Tooltip`的`formatter`对`{.}`、`{c:0}`、`{c1:1}`的支持 +* (2020.04.19) 优化`LineChart`折线图的区域填充渐变效果 +* (2020.04.19) 增加`AxisLabel`的`onZero`参数可将`Label`显示在`0`刻度上 +* (2020.04.19) 增加`Serie`和`AxisLabel`的`showAsPositiveNumber`参数将负数数值显示为正数 +* (2020.04.18) 增加`Covert XY Axis`互换XY轴配置 +* (2020.04.17) 增加`Axis`可通过`inverse`参数设置坐标轴反转 +* (2020.04.16) 修复`Check warning`在`Unity2019.3`上的显示问题 +* (2020.04.16) 修复`PieChart`在设置`Space`参数后动画绘制异常的问题 + +## v1.4.0 + +* (2020.04.11) 发布`v1.4.0`版本 +* (2020.04.11) 增加`Check warning`检测功能 +* (2020.04.09) 修复`Legend`初始化异常的问题 +* (2020.04.08) 增加`PieChart`通过`ItemStyle`设置边框的支持 +* (2020.03.29) 增加`Axis`的`ceilRate`设置最大最小值的取整倍率 +* (2020.03.29) 增加`BarChart`可通过`itemStyle`的`cornerRadius`设置`圆角柱图` +* (2020.03.29) 增加`itemStyle`的`cornerRadius`支持圆角矩形 +* (2020.03.24) 优化`Editor`参数编辑,兼容`Unity2019.3`及以上版本 +* (2020.03.24) 增加`Serie`在`inspector`上可进行调整顺序、添加和删除操作 +* (2020.03.23) 修复`Title`的`textStyle`和`subTextStyle`无效的问题 +* (2020.03.22) 增加`BarChart`通过`barType`参数设置`胶囊柱状图` +* (2020.03.21) 增加`BarChart`和`HeatmapChart`可通过`ignore`参数设置忽略数据的支持 +* (2020.03.21) 增加`ItemStyle`的`tooltipFormatter`参数可单独配置`Serie`的`Tooltip`显示 +* (2020.03.20) 修复`X Axis 1`和`Y Axis 1`配置变更时不会自动刷新的问题 +* (2020.03.20) 增加`AxisTick`的`width`参数可单独设置坐标轴刻度的宽度 +* (2020.03.20) 增加`Serie`的`radarType`参数设置`多圈`和`单圈`雷达图 +* (2020.03.17) 增加`BarChart`可用`ItemStyle`的`backgroundColor`设置数据项背景颜色 +* (2020.03.17) 增加`SerieData`的`ItemStyle`和`Emphasis`可单独配置数据项样式的支持 +* (2020.03.15) 重构`EmptyCricle`类型的`Symbol`边宽取自`ItemStyle`的`borderWidth`参数 +* (2020.03.15) 重构`SerieSymbol`,去掉`color`和`opacity`参数,取自`ItemStyle` + +## v1.3.1 + +* (2020.03.14) 发布`v1.3.1`版本 +* (2020.03.14) 修复`LineChart`开启`ingore`时部分数据可能绘制异常的问题 +* (2020.03.13) 修复`LineChart`的`label`偏移显示异常的问题 + +## v1.3.0 + +* (2020.03.11) 发布`v1.3.0`版本 +* (2020.03.11) 优化`LineChart`的`label`偏移显示 +* (2020.03.11) 优化清空并重新添加数据后的自动刷新问题 +* (2020.03.10) 增加`LineChart`的普通折线图可通过`ignore`参数设置忽略数据的支持 +* (2020.03.09) 增加`BarChart`可通过`ItemStyle`配置边框的支持 +* (2020.03.08) 增加`RingChart`环形图 +* (2020.03.05) 调整`Serie`的`arcShaped`参数重命名为`roundCap` +* (2020.03.05) 增加运行时和非运行时参数变更自动刷新图表 +* (2020.02.26) 重构`Legend`图例,改变样式,增加自定义图标等设置 +* (2020.02.23) 增加`BaseChart.AnimationFadeOut()`渐出动画,重构动画系统 +* (2020.02.13) 增加`BaseChart.RefreshTooltip()`接口立即重新初始化`Tooltip`组件 +* (2020.02.13) 增加`Tooltip`的`textStyle`参数配置内容文本样式,去掉`fontSize`和`fontStyle`参数 +* (2020.02.13) 增加`TextStyle`的`lineSpacing`参数配置行间距 +* (2020.02.11) 增加`Radar`的`splitLine`参数配置分割线,去掉`lineStyle`参数 +* (2020.02.11) 增加`Tooltip`的`backgroundImage`参数配置背景图 +* (2020.02.11) 增加`Tooltip`的`paddingLeftRight`和`paddingTopBottom`参数配置文字和边框的间距 +* (2020.02.11) 增加`Tooltip`的`lineStyle`参数配置指示线样式 +* (2020.02.11) 增加`Axis`的`splitLine`参数控制分割线,去掉`showSplitLine`和`splitLineType`参数(更新时需要重新设置分割线相关设置) +* (2020.02.10) 增加`Serie`的`clip`参数控制是否超出坐标系外裁剪(只适用于折线图、柱状图、散点图) +* (2020.02.08) 增加`SerieSymbol`的`gap`参数控制图形标记的外留白距离 +* (2020.01.26) 增加`TextLimit`组件可以设置`AxisLabel`的文本自适应 +* (2020.01.20) 优化`Tooltip`设置`itemFormatter`时显示系列颜色 +* (2020.01.20) 增加`Radar`雷达图在`inspector`配置`areaStyle`的支持 + +## v1.2.0 + +* (2020.01.15) 发布`v1.2.0`版本 +* (2020.01.15) 增加`AxisLabel`格式化为整数的支持(`{value:f0}`) +* (2020.01.15) 增加折线图对数轴`Log`的支持 +* (2020.01.09) 修复当设置`DataZoom`的`minShowNum`时可能异常的问题 +* (2020.01.08) 修复当设置`AxisLine`的`onZero`时刻度显示异常的问题 +* (2020.01.08) 增加`Mask`遮罩遮挡支持 +* (2019.12.21) 增加`Tooltip`的单个数据项和标题的字符串模版格式器 +* (2019.12.21) 增加`DataZoom`的最小显示数据个数`minShowNum` +* (2019.12.20) 增加`Demo40_Radar.cs`雷达图代码操作`Demo` +* (2019.12.20) 添加`RadarChart`相关API接口 + +## v1.1.0 + +* (2019.12.17) 发布`v1.1.0`版本 +* (2019.12.16) 修复`Overlay`模式下不显示`Tooltip`的问题 +* (2019.12.15) 增加`Title`的`TextStyle`支持 +* (2019.12.11) 修复`Legend`都隐藏时`Value轴`还显示数值的问题 +* (2019.12.11) 修复`Series->Data->Size`重置为0后设置无效的问题 +* (2019.12.06) 修复数据过小时`AxisLabel`直接科学计数法显示的问题 +* (2019.12.04) 优化和完善数据更新`UpdateData`接口 +* (2019.12.03) 增加圆环饼图的圆角支持,参数:`serie.arcShaped` +* (2019.12.03) 增加数据更新动画,参数:`serie.animation.dataChangeEnable` +* (2019.11.30) 增加`GaugeChart`仪表盘 +* (2019.11.22) 修复`BarChart`清空数据重新赋值后`SerieLabel`显示异常的问题 +* (2019.11.16) 修复`SerieLabel`设置`color`等参数不生效的问题 + +## v1.0.5 + +* (2019.11.12) 发布`v1.0.5`版本 +* (2019.11.12) 修复`2018.3`以下版本打开项目报错的问题 +* (2019.11.12) 增加`IconStyle`子组件,优化`SerieData`的图标配置 +* (2019.11.11) 修复`Serie`的图标显示在上层遮挡`Label`的问题 +* (2019.11.11) 修复饼图当数据过小时视觉引导线会穿透的的问题 +* (2019.11.09) 修复饼图添加数据时`Label`异常的问题 +* (2019.11.09) 优化结构,分离为`XCharts`和`XChartsDemo`两部分 + +## v1.0.4 + +* (2019.11.05) 发布`v1.0.4`版本 +* (2019.11.05) 增加`Radar`雷达组件文本样式参数配置支持 +* (2019.11.04) 修复`Unity2018.3`以下版本代码不兼容的问题 +* (2019.11.04) 优化`SerieLabel`过多时引起的性能问题 + +## v1.0.3 + +* (2019.11.03) 发布`v1.0.3`版本 +* (2019.11.03) 增加`Editor`快捷添加图表:`Hierarchy`试图下右键`XCharts->LineChart` +* (2019.11.02) 优化非配置参数变量命名和访问权限,简化`API` + +## v1.0.2 + +* (2019.10.31) 发布`v1.0.2`版本 +* (2019.10.31) 修复`prefab`预设制作报错的问题 +* (2019.10.31) 增加访问主题组件API:`BaseChart.theme` + +## v1.0.1 + +* (2019.10.26) 发布`v1.0.1`版本 +* (2019.10.26) 修复版本检查功能在非运行时异常的问题 +* (2019.10.26) 增加科学计数法显示数值的支持(查阅`forceENotation`参数) +* (2019.10.26) 增加`Axis`类目轴数据为空时的默认显示支持 +* (2019.10.26) 增加`Axis`数值轴的最大最小值可设置为小数的支持,优化极小数图表的表现效果 + +## v1.0.0 + +* (2019.10.25) 发布`v1.0.0`版本 +* (2019.10.23) 增加版本检测功能:`Component -> XCharts -> Check For Update` +* (2019.10.22) 增加`Package Manager`安装的支持 +* (2019.10.20) 增加`Demo`首页`BarChart`的代码动态控制效果 +* (2019.10.18) 增加`Serie`的`barType`参数,可配置`斑马柱状图` +* (2019.10.18) 增加`Serie`的`barPercentStack`参数,可配置`百分比堆叠柱状图` +* (2019.10.16) 增加`Demo`首页`LineChart`的代码动态控制效果 +* (2019.10.15) 移除`Pie`组件,相关参数放到`Settings`中配置 +* (2019.10.15) 增加`Demo`首页,展示代码动态控制效果 +* (2019.10.14) 增加`RadarChart`、`ScatterChart`和`HeatmapChart`的起始动画效果 +* (2019.10.14) 增加`SerieData`的`radius`自定义数据项的半径 +* (2019.10.14) 增加`HeatmapChart`热力图 +* (2019.10.14) 增加`VisualMap`视觉映射组件 +* (2019.10.14) 增加`ItemStyle`数据项样式组件 +* (2019.10.14) 增加`Emphasis`高亮样式组件 +* (2019.10.10) 增加`Settings`全局参数配置组件,开放更多参数可配置 +* (2019.10.09) 增加`AreaStyle`的高亮相关参数配置鼠标悬浮时高亮之前区域 +* (2019.10.09) 优化`DataZoom`组件,增加双指缩放 +* (2019.10.05) 增加`SerieLabel`的`LineType`给饼图配置不同类型的视觉引导线 +* (2019.10.02) 增加`ScatterChart`同时对`Scatter`和`Line`的支持,实现折线图和散点图的组合图 +* (2019.10.01) 重构代码,废弃`Series.series`接口,用`Series.list`代替 +* (2019.10.01) 增加`customDrawCallback`自定义绘制回调 +* (2019.10.01) 增加`SmoothDash`平滑虚线的支持 +* (2019.09.30) 增加`Serie`采样类型`sampleType`的相关配置 +* (2019.09.29) 增加`SerieSymbol`关于显示间隔的相关配置 +* (2019.09.29) 重构代码: + * `BaseChart`的`sampleDist`删除,`Serie`增加`lineSampleDist` + * `BaseChart`的`minShowDataNumber`删除,`Serie`增加`minShow` + * `BaseChart`的`maxShowDataNumber`删除,`Serie`增加`maxShow` + * `BaseChart`的`maxCacheDataNumber`删除,`Serie`增加`maxCache` + * `BaseChart`的`AddSerie()`接口参数调整 + * `BaseChart`的`UpdateData()`接口参数调整 + * `Axis`增加`maxCache` +* (2019.09.28) 增加`LineChart`和`BarChart`同时对`Line`、`Bar`类型`Serie`的支持,实现折线图和柱状图的组合图 +* (2019.09.27) 增加`Axis`的`splitNumber`设置为`0`时表示绘制所有类目数据 +* (2019.09.27) 增加`SampleDist`采样距离的配置,对过密的曲线开启采样,优化绘制效率 +* (2019.09.27) 增加`XCharts问答`、`XChartsAPI接口`、`XCharts配置项手册`等文档 +* (2019.09.26) 增加`AnimationReset()`重置初始化动画接口 +* (2019.09.26) 优化`LineChart`的密集数据的曲线效果 +* (2019.09.25) 优化`SerieData`的自定义图标不与`SerieLabel`关联,可单独控制是否显示 +* (2019.09.24) 增加`SerieData`的自定义图标相关配置支持 +* (2019.09.23) 增加`Formatter`配置`Axis`的`AxisLabel`的格式化输出 +* (2019.09.23) 增加`Tooltip`的`FontSize`、`FontStyle`配置字体大小和样式 +* (2019.09.23) 增加`Formatter`配置`SerieLabel`、`Legend`、`Tooltip`的格式化输出 +* (2019.09.19) 增加`LineArrow`配置带箭头曲线 +* (2019.09.19) 增加`Tooltip`的`FixedWidth`、`FixedHeight`、`MinWidth`、`MinHeight`设置支持 +* (2019.09.18) 增加单条堆叠柱状图 +* (2019.09.18) 增加虚线`Dash`、点线`Dot`、点划线`DashDot`、双点划线`DashDotDot`等类型的折线图支持 +* (2019.09.17) 增加`AnimationEnabel()`启用或取消起始动画接口 +* (2019.09.17) 增加`Axis`的`Interval`强制设置坐标轴分割间隔 +* (2019.09.16) 去掉`Serie`中的旧版本数据兼容,不再支持`xData`和`yData` +* (2019.09.06) 增加`Animation`在重新初始化数据时自启动功能 +* (2019.09.06) 增加`SerieLabel`的`Border`边框相关配置支持 +* (2019.09.05) 增加`PieChart`的`Animation`初始化动画配置支持 +* (2019.09.03) 增加`BarChart`的`Animation`初始化动画配置支持 +* (2019.09.02) 增加`LineChart`的`Animation`初始化动画配置支持 +* (2019.08.22) 增加`AxisName`的`Offset`偏移配置支持 +* (2019.08.22) 增加`AxisLine`的`Width`配置支持 +* (2019.08.20) 增加`SerieLabel`的背景宽高、文字边距、文字旋转的配置 +* (2019.08.20) 增加`BarChart`的`Label`配置支持 +* (2019.08.15) 增加`LineChart`的`Label`配置 +* (2019.08.15) 重构`BarChart`,移除`Bar`组件,相关参数统一放到`Serie`中配置 +* (2019.08.15) 重构`LineChart`,移除`Line`组件,相关参数统一放到`Serie`中配置 + +## v0.8.3 + +* (2019.08.15) 发布`v0.8.3`版本 +* (2019.08.14) 修复`PieChart`的`Label`无法自动更新的问题 +* (2019.08.13) 修复`UpdateData`接口无法更新数据的问题 +* (2019.08.07) 增加`SerieSymbol`的`Color`、`Opacity`配置 + +## v0.8.2 + +* (2019.08.07) 发布`v0.8.2`版本 +* (2019.08.07) 修复区域平滑折线图显示异常的问题 +* (2019.08.06) 修复`serie`系列数超过调色盘颜色数时获取的颜色异常的问题 +* (2019.08.06) 修复当`Axis`的`minMaxType`为`Custom`时`max`设置为`100`不生效的问题 + +## v0.8.1 + +* (2019.08.04) 发布`v0.8.1`版本 +* (2019.08.04) 修复`Inspector`中修改数据不生效的问题 + +## v0.8.0 + +* (2019.08.04) 发布`v0.8.0`版本 +* (2019.08.04) 优化`RadarChart`雷达图,增加多雷达图支持 +* (2019.08.01) 增加代码API注释文档,整理代码 +* (2019.07.29) 增加`Radius`、`Area`两种南丁格尔玫瑰图展示类型 +* (2019.07.29) 增加`SerieLabel`配置饼图标签,支持`Center`、`Inside`、`Outside`等显示位置 +* (2019.07.28) 增加`PieChart`多饼图支持 +* (2019.07.23) 优化`Theme`主题的自定义,切换主题时自定义配置不受影响 +* (2019.07.22) 增加`EffectScatter`类型的散点图 +* (2019.07.21) 增加`ScatterChart`散点图 +* (2019.07.21) 增加`SerieData`支持多维数据配置 +* (2019.07.20) 增加`Symbol`配置`Serie`标志图形的显示 +* (2019.07.19) 增加用代码添加动态正弦曲线的示例`Demo11_AddSinCurve` +* (2019.07.19) 优化`Legend`的显示和控制 +* (2019.07.18) 优化抗锯齿,曲线更平滑 +* (2019.07.18) 增加`Tooltip`指示器类型,优化显示控制 +* (2019.07.15) 增加`Size`设置图表尺寸 +* (2019.07.14) 增加`二维数据`支持,XY轴都可以设置为数值轴 +* (2019.07.13) 增加`双坐标轴`支持,代码改动较大 + +## v0.5.0 + +* (2019.07.10) 发布`v0.5.0`版本 +* (2019.07.09) 增加`AxisLine`配置坐标轴轴线和箭头 +* (2019.07.03) 增加`AxisLabel`配置坐标轴`刻度标签` +* (2019.07.02) 增加`selected`等相关参数配置`PieChart`的选中效果 +* (2019.06.30) 增加`SplitArea`配置坐标轴`分割区域` +* (2019.06.29) 增加`AxisName`配置坐标轴`名称` +* (2019.06.20) 增加`AreaAlpha`控制`RadarChart`的`Area`透明度 +* (2019.06.13) 增加`DataZoom`实现`区域缩放` +* (2019.06.01) 增加`stepType`实现`LineChart`的`阶梯线图` +* (2019.05.29) 增加`InSameBar`实现`BarChart`的`非堆叠同柱` +* (2019.05.29) 增加`crossLabel`控制`Tooltip`的`十字准星指示器` +* (2019.05.24) 增加`堆叠区域图` +* (2019.05.16) 增加`AxisMinMaxType`控制坐标轴最大最小刻度 +* (2019.05.15) 完善数据接口 +* (2019.05.14) 增加X轴`AxisType.Value`模式支持 +* (2019.05.13) 增加负数数值轴支持 +* (2019.05.11) 增加自定义`Editor`编辑 +* (2019.03.21) 增加`Tooltip` +* (2018.11.01) 增加`Default`、`Light`、`Dark`三种默认主题 + +## v0.1.0 + +* (2018.09.05) 发布`v0.1.0`版本 diff --git a/Assets/XCharts/CHANGELOG.md.meta b/Assets/XCharts/CHANGELOG.md.meta new file mode 100644 index 0000000..1582ca4 --- /dev/null +++ b/Assets/XCharts/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e66d91d4c396b46bf87034c47ca3b43d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation.meta b/Assets/XCharts/Documentation.meta new file mode 100644 index 0000000..2cab140 --- /dev/null +++ b/Assets/XCharts/Documentation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0793c29ff7adb422fb93f9f4e29d5a06 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/CHANGELOG-EN.md b/Assets/XCharts/Documentation/CHANGELOG-EN.md new file mode 100644 index 0000000..443f195 --- /dev/null +++ b/Assets/XCharts/Documentation/CHANGELOG-EN.md @@ -0,0 +1,570 @@ + +# 更新日志 + +[master](#master) +[v3.0.1](#v3.0.1) +[v3.0.0](#v3.0.0) +[v2.3.0](#v2.3.0) +[v2.2.3](#v2.2.3) +[v2.2.2](#v2.2.2) +[v2.2.1](#v2.2.1) +[v2.2.0](#v2.2.0) +[v2.1.1](#v2.1.1) +[v2.1.0](#v2.1.0) +[v2.0.1](#v2.0.1) +[v2.0.0](#v2.0.0) +[v2.0.0-preview.2](#v2.0.0-preview.2) +[v2.0.0-preview.1](#v2.0.0-preview.1) +[v1.6.3](#v1.6.3) +[v1.6.1](#v1.6.1) +[v1.6.0](#v1.6.0) +[v1.5.2](#v1.5.2) +[v1.5.1](#v1.5.1) +[v1.5.0](#v1.5.0) +[v1.4.0](#v1.4.0) +[v1.3.1](#v1.3.1) +[v1.3.0](#v1.3.0) +[v1.2.0](#v1.2.0) +[v1.1.0](#v1.1.0) +[v1.0.5](#v1.0.5) +[v1.0.4](#v1.0.4) +[v1.0.3](#v1.0.3) +[v1.0.2](#v1.0.2) +[v1.0.1](#v1.0.1) +[v1.0.0](#v1.0.0) +[v0.8.3](#v0.8.3) +[v0.8.2](#v0.8.2) +[v0.8.1](#v0.8.1) +[v0.8.0](#v0.8.0) +[v0.5.0](#v0.5.0) +[v0.1.0](#v0.1.0) + +## v3.0.1 + +* (2022.06.16) Release `v3.0.1` version +* (2022.06.16) Fixed an issue where the `foldout` arrow on `Inspector` could not be expanded +* (2022.06.15) Optimized `Doc` auto-generation, improved code comments and configuration item manual documentation +* (2022.06.14) Optimized `SerieLabelStyle` to support dynamic adjustment of `Icon` +* (2022.06.13) Optimized `Background` setting +* (2022.06.10) Added `Legend` AxisLabel support for `autoColor` +* (2022.06.08) Fixed issue where `Axis` `AxisLabel` still shows the first and last two labels when not displayed + +## v3.0.0 + +* More robust underlying framework. +* More powerful performance. +* Smaller serialized files. +* Better interactive experience. +* More component support. +* More powerful ability to self-report text. +* More reasonable component adjustments. +* More flexible component insertion and removal. +* More efficient secondary development. +* Richer Demo examples. +* Added `Time` axis. +* Added `SingleAxis`. +* Added multiple coordinate systems: `Grid`, `Polar`, `Radar`, `SingleAxis`. +* Added multiple animation methods. +* Added multiple chart interactions. +* Added internationalization support. +* Added `Widgets`. +* Added multiple extension charts. + +## v2.3.0 + +### Main points + +* Data store upgraded from `float` to `double` +* Added `MarkLine` +* `Serie` can use `IconStyle` to configure ICONS uniformly +* `Label` supports custom display styles with code +* `DataZoom` is perfect +* `PieChart` optimization +* Problem fixes + +### Upgrade Note + +Since the data type is upgraded to `double`, the implicit conversion of `float` to `double` may have precision problems, so it is recommended that all previous data types of `float` be manually changed to `double`. + +### Details + +* (2021.07.24) Release `v2.3.0` version +* (2021.07.22) Improved `SerieSymbol` to support `PictorialBarchart` extension +* (2021.07.19) Fixed issue where `Tooltip` was not displayed on `WdbGL` platform +* (2021.07.18) Added `iconStyle` for serie +* (2021.07.15) Added `MarkLine` (#142) +* (2021.07.09) Optimize `BarChart` to set whether to show bars via `seriedata.show` +* (2021.07.08) Optimize data storage type from `float` to `double` +* (2021.07.05) Fixed `Piechart` `avoidLabelOverlap` parameter not working +* (2021.07.04) Fixed incorrect mouse area indication after `PieChart` selected sector +* (2021.07.04) Optimize when the `Label` of `PieChart` is `Inside`, the offset can be adjusted by the parameter `Margin` +* (2021.07.01) Added `DataZoom` arguments to `supportInsideScroll` and `supportInsideDrag` to set whether scrolling and dragging are supported in the coordinate system +* (2021.06.27) Add `showStartLabel` and `showEndLabel` arguments to `AxisLabel` to set whether the `Label` should be displayed at the beginning and end of the `AxisLabel` +* (2021.06.27) Added `formatter` delegate method to `AxisLabel` and `SerieLabel` (#145) +* (2021.06.27) Added `DataZoom`'s `orient` parameter to set horizontal or vertical styles +* (2021.06.21) Added `iconStyle`'s `AutoHideWhenLabelEmpty` to set whether the icon is automatically hidden when `label` is empty + +# # v2.2.3 + +* (2021.06.20) Release `v2.2.3` version +* (2021.06.20) Fixed the default display of `Icon` in `Axis` + +## v2.2.2 + +* (2021.06.18) Release `v2.2.2` version +* (2021.06.18) Optimize `Axis` to automatically hide `Icon` when `Label` is empty +* (2021.06.17) Fixed an issue where `maxCache` was set to one more number of actual data +* (2021.06.17) Fixed an issue where `TextMeshPro` could not be opened and closed in time to refresh +* (2021.06.17) Fixed an issue where `XCharts` always pops up when importing `XCharts` + +## v2.2.1 + +* (2021.06.13) Release `v2.2.1` version +* (2021.06.13) Improved support for multiple screens +* (2021.06.12) Added `iconStyle` `align` parameter to set the horizontal alignment of the icon +* (2021.06.12) Improve `Theme` import (#148) +* (2021.06.10) Fixed compatibility issues with `Unity` version (#154) +* (2021.06.05) Improved Candlestickchart support for inverse (#152) +* (2021.06.04) Fixed `Gauge` having an abnormal pointer position when the minimum value is negative (#153) + +## v2.2.0 + +* (2021.05.30) Release `v2.2.0` version +* (2021.05.25) Improved `TextStyle` support for `alignment` +* (2021.05.24) Fixed the problem that `Label` could not display properly when `PieChart` data were all `0` +* (2021.05.24) Fixed an issue where `Serie Name` was not working on the `Add Serie` panel (#149) +* (2021.05.23) Added `TextStyle` `autoWrap` to set whether to wrap lines +* (2021.05.23) Added `TextStyle` `autoAlign` whether to set alignment automatically +* (2021.05.23) Added `width` and `height` of `axisLabel` to support custom text length and width +* (2021.05.23) Added `Axis` `iconStyle` and `icons` to support setting coordinate Axis labels to display icons +* (2021.05.20) Added the `insertDataHead` parameter to `Serie` and `Axis` to control whether data is inserted into the head or tail +* (2021.05.18) Optimize chart creation under `Editor` #147 +* (2021.05.16) Pull out the `Ganttchart` chart and provide it as an extension module +* (2021.05.11) Added support for `VisualMap` to set color by `Piecewise` +* (2021.05.09) Fixed an issue where `RingChart` could not set the background color of the ring #141 +* (2021.05.08) Added `Liquidchart` support for `Rect` shape +* (2021.05.07) Improved the `Axis` scale performance #135 +* (2021.05.01) Added `Settings` parameters for painter's material #140 +* (2021.05.01) Fixed an issue where some super large or super small values could not be properly represented +* (2021.04.29) Fixed an issue with `Radar` switching to `Circle` anomaly #139 +* (2021.04.29) Added `Settings`'s `reversePainter` to set whether or not `Serie` is drawn in reverse order +* (2021.04.28) Fixed bug where `AxisLabel` displayed incorrectly with `DataRoom` (#138) +* (2021.04.26) Fixed dynamically creating chart at runtime would be abnormal #137 +* (2021.04.26) Added support for `Barchart` to draw gradient borders +* (2021.04.23) Added support for custom charts +* (2021.04.22) Fixed bug where `Gauge` `axisLabel`'s text color could not be adjusted +* (2021.04.13) Add the `ShowStarttick` and '`ShowEndTick` parameters of 'AxisTick' to control whether the first and last ticks are displayed +* (2021.04.13) Improved multi-axis support #132 + +## v2.1.1 + +* (2021.04.13) Define the code and clear `Warning` +* (2021.04.13) Fixed compatibility issues with `Unity` version +* (2021.04.12) Fixed problem `missing class attribute 'ExtensionOfNativeClass'` after Theme refactoring #131 + +## v2.1.0 + +* (2021.04.07) Release `v2.1.0` version +* (2021.03.31) Optimized and refactor `Theme` to solve problems with the same or missing references #118 +* (2021.03.30) Optimized `Tooltip` to support setting different category axis data #129 +* (2021.03.29) Optimized the custom draw callback API +* (2021.03.25) Added `Ganttchart` +* (2021.03.22) Added `Theme` `Unbind` button to unbind theme when copying chart #118 +* (2021.03.18) Fixed an issue where the check box after `Foldout` in `Inspector` could not be checked +* (2021.03.18) Fixed an issue with `BarChart` displaying an exception in the `0` value +* (2021.03.14) Fixed `Tooltip` indicator was not indicating the correct location in some cases +* (2021.03.13) Optimized the editing experience and component refresh after `MulticomponentMode` is enabled #128 +* (2021.03.10) Added `CandlestickChart` #124 +* (2021.03.06) Added `PieChart`'s `minAngle` parameter to support setting minimum sector angle #117 +* (2021.03.05) Added support for `Legend` for several built-in ICONS #90 +* (2021.03.02) Added `DataRoom` support for value axes #71 +* (2021.03.02) Optimized `TextMeshPro` compatibility issue #125 +* (2021.03.01) Fixed display exception of hidden gameObjects when enabling and disabling a chart #125 + +## v2.0.1 + +* (2021.02.26) Fixed incorrect position of `Tooltip` in `HeatmapChart` #123 +* (2021.02.22) Fixed compatibility issues with `Unity` version +* (2021.02.21) Added `Tooltip` parameter `ignoreDataShow` +* (2021.02.19) Fixed an issue where charts could appear abnormal when under `LayoutGroup` control #121 +* (2021.02.18) Fixed an issue where the `Radar` could not refresh itself after parameter changing #122 + +## v2.0.0 + +* (2021.02.05) Release `v2.0.0` version +* (2021.02.03) Fixed an issue where `Axisline` `OnZero` did not work on `YAxis` #116 +* (2021.01.29) Fixed incorrect display of `Tick` on `Category` axis when `BoundaryGap` and `alignWithLabel` are `True` #115 +* (2021.01.25) Optimized some details +* (2021.01.22) Fixed a `Inpsector` displayed error + +## v2.0.0-preview.2 + +* (2021.01.21) Release `v2.0.0-preview.2` version +* (2021.01.21) Fixed an error about `AxisTick` in `Inpsector` +* (2021.01.21) Fixed a build compatibility error +* (2021.01.19) Added `XChartsSettings` `editorShowAllListData` parameter to configure whether to display all the list's data in Inspector + +## v2.0.0-preview.1 + +* (2021.01.19) Release `v2.0.0-preview.1` version + +## v1.6.3 + +* (2021.01.02) Release `v1.6.3` version +* (2020.12.18) fixed an issue where updating data when `Animation` was not enabled caused the chart to keep refreshing +* (2020.12.01) fixed an issue where a newly created chart on `Unity2020` could not be drawn properly + +## v1.6.2 + +* (2020.11.22) Release `v1.6.2` version +* (2020.11.22) Fixed an issue where `LineChart` draws an exception when the data is too dense #99 +* (2020.11.21) Fixed an issue where the scale position of `LineChart` could be abnormal if `alignWithLabel` was `true` +* (2020.11.21) Fixed `Unity5` compatibility error reporting problem +* (2020.11.13) Improved `RadarChart` `Indicator` support for `\n` line feed +* (2020.11.12) Fixed `LineChart` reporting errors when the type was `Smooth` when the data was too secure #100 +* (2020.10.22) Optimized the support of `VisualMap` for `Piecewise` in `HeatmapChart` +* (2020.09.22) Fixed `PieChart` inconsistent border size +* (2020.09.18) Added `Remove All Chart Object` to Remove All child nodes under the Chart (automatically reinitialized) +* (2020.09.18) Fixed `SerieLabel` also displayed after hided `Serie` by clicked the legend #94 +* (2020.09.18) Optimized coordinate axis calibration and text display #93 +* (2020.09.17) Fixed `Package` import missing `meta` file causing failure #92 +* (2020.09.08) Optimized the color of `Legend` to automatically match the custom color of `ItemStyle` +* (2020.09.05) Optimized `LineChart` to display `XAxis1` without using `XAxis1`. +* (2020.08.29) Added `toColor` and `toColor2` of `LineStyle` to set the horizontal gradient of `LineChart`. Cancel `ItemStyle` to set the horizontal gradient of `LineChart`. +* (2020.08.29) Added the `onPointerClickPie` of `PieChart`, a callback function of click pie area. +* (2020.08.29) Added the `onPointerClickBar` of `BarChart`, a callback function of click bar. + +## v1.6.0 + +* (2020.08.24) Release `v1.6.0` version +* (2020.08.23) Refactor code, replace `Color` with `Color32` for reduce implicit conversion (Can cause custom colors to lose, reference [FAQ 29](https://github.com/XCharts-Team/XCharts/blob/master/Assets/XCharts/Documentation/XChartsFAQ-ZH.md) to upgrade) +* (2020.08.15) Optimized `PieChart` drawing performance effect #85 +* (2020.08.11) Added `LiquidChart` data change animation#83 +* (2020.08.11) Optimized `PieChart` text stack and lead line effects#85 +* (2020.08.08) Optimized `LineChart` the rendering performance of dense data +* (2020.07.30) Added `LineChart` to configure gradient through `VisualMap` or `ItemStyle`#78 +* (2020.07.25) Fixed a problem with `LineChart` emerging abnormal in animation drawing#79 +* (2020.07.25) Fixed a problem with gradual discoloration on `LiquidChart` at `100%`#80 +* (2020.07.25) Added `RadarChart` support for `formatter` of `Tooltip`#77 +* (2020.07.23) Added `RingChart` ring gradient support#75 +* (2020.07.21) Added `formatter` of `AxisLabel` and `SerieLabel` to configure numeric formatting separately. +* (2020.07.17) Added animation completion callback interface for `SerieAnimation`. +* (2020.07.17) Optimized `Chart` under `ScrollView` without affecting the scrolling and dragging of `ScrollView`. +* (2020.07.16) Fixed a problem with `Tooltip` that would also show up if it was blocked on top. #74 +* (2020.07.07) Fixed issue where `SerieLabel` position was out of order +* (2020.07.07) Added `Tooltip` to the `offset` parameter +* (2020.07.06) Added `Liquidchart` +* (2020.07.01) Added `PolarChart` + +## v1.5.2 + +* (2020.06.25) Fixed an issue where `BarChart` would draw a small number of bars when the value was `0` +* (2020.06.24) Fixed an issue where `PieChart` was drawing abnormally after setting `Clockwise` #65 +* (2020.06.23) Optimized the drawing effect of `LineChart` when the difference between peak and valley is too large #64 +* (2020.06.18) Fixed an issue where `SerieLabel` might not be displayed when adding data again +* (2020.06.17) Added `SerieData` to `serieSymbol` #66 +* (2020.06.17) Fixed `Check For Update` bug in `Unity 2018` version #63 +* (2020.06.16) Added `Serie` `avoidLabelOverlap` parameter to avoid pie chart TAB stacking #56 +* (2020.06.15) Fixed an issue where the `SerieLabel` control display could be deranged +* (2020.06.11) Fixed `Check warning` not working +* (2020.06.11) Fixed issue where `Piechart` and `Ringchart` were not displayed when data fraction was very small +* (2020.06.11) Added `Tooltip` to `titleFormatter` to support configuration placeholder `{i}` to ignore not showing titles +* (2020.06.07) Added `customFadeInDelay` and other custom data item delay and duration callback function #58 +* (2020.06.07) Optimized `Piechart` to display equal parts when all the data are `0` #59 +* (2020.06.04) Added `autoOffset` parameter setting for `SerieLabel` to determine whether the up and down offset is automatically determined +* (2020.06.04) Added `Tooltip` to `AlwayShow` parameter setting to always show after triggering +* (2020.06.04) Tooltip's `formatter` supports `{.1}` wildcards +* (2020.06.04) Optimizes the number of `Legend` to automatically wrap to display #53 + +## v1.5.1 + +* (2020.06.03) 发布`v1.5.1`版本 +* (2020.06.02) 增加`Radar`的`ceilRate`,设置最大最小值的取整倍率 +* (2020.06.02) 优化`Tooltip`的`formatter`,支持`{c1:1-1:f1}`格式配置 +* (2020.05.31) 优化`Background`组件的生效条件,需要有单独的父节点(升级前需要自己处理旧的背景节点) +* (2020.05.30) 优化`PieChart`支持设置`ignoreValue`不显示指定数据 +* (2020.05.30) 修复`RadarChart`为`Circle`时不绘制`SplitArea`的问题 +* (2020.05.30) 优化`RadarChart`在设置`max`为`0`时可自动刷新最大值 +* (2020.05.29) 修复`PieChart`设置`gap`时只有一个数据时绘制异常的问题 +* (2020.05.27) 修复调用`UpdateDataName()`接口时不会自动刷新的问题 +* (2020.05.27) 优化`柱状图`的渐变色效果 +* (2020.05.24) 修复`Axis`同时设置`boundaryGap`和`alignWithLabel`时`Tick`绘制异常的问题 +* (2020.05.24) 优化版本更新检测 +* (2020.06.25) release `v1.5.2` + + +## v1.5.0 + +* (2020.05.22) 发布`v1.5.0`版本 +* (2020.05.21) 增加`圆角柱图`支持渐变 +* (2020.05.21) 增加`Background`背景组件 +* (2020.05.19) 隐藏`Hierarchy`试图下自动生成的子节点 +* (2020.05.18) 增加`chartName`属性可指定图表的别称,可通过`XChartMgr.Instance.GetChart(chartName)`获取图表 +* (2020.05.16) 增加部分鼠标事件回调 +* (2020.05.15) 优化自带例子,`Demo`改名为`Example` +* (2020.05.13) 增加`Serie`的`large`和`largeThreshold`参数配置折线图和柱状图的性能模式 +* (2020.05.13) 完善Demo,增加性能演示Demo +* (2020.05.13) 优化性能,优化大数据绘制,重构代码 +* (2020.05.04) 增加`numericFormatter`参数可配置数值格式化显示,去掉`forceENotation`参数 +* (2020.04.28) 增加`自由锚点`支持,任意对齐方式 +* (2020.04.23) 优化`ScatterChart`的`Tooltip`显示效果 +* (2020.04.23) 增加`Tooltip`的`formatter`对`{.}`、`{c:0}`、`{c1:1}`的支持 +* (2020.04.19) 优化`LineChart`折线图的区域填充渐变效果 +* (2020.04.19) 增加`AxisLabel`的`onZero`参数可将`Label`显示在`0`刻度上 +* (2020.04.19) 增加`Serie`和`AxisLabel`的`showAsPositiveNumber`参数将负数数值显示为正数 +* (2020.04.18) 增加`Covert XY Axis`互换XY轴配置 +* (2020.04.17) 增加`Axis`可通过`inverse`参数设置坐标轴反转 +* (2020.04.16) 修复`Check warning`在`Unity2019.3`上的显示问题 +* (2020.04.16) 修复`PieChart`在设置`Space`参数后动画绘制异常的问题 + +## v1.4.0 + +* (2020.04.11) 发布`v1.4.0`版本 +* (2020.04.11) 增加`Check warning`检测功能 +* (2020.04.09) 修复`Legend`初始化异常的问题 +* (2020.04.08) 增加`PieChart`通过`ItemStyle`设置边框的支持 +* (2020.03.29) 增加`Axis`的`ceilRate`设置最大最小值的取整倍率 +* (2020.03.29) 增加`BarChart`可通过`itemStyle`的`cornerRadius`设置`圆角柱图` +* (2020.03.29) 增加`itemStyle`的`cornerRadius`支持圆角矩形 +* (2020.03.24) 优化`Editor`参数编辑,兼容`Unity2019.3`及以上版本 +* (2020.03.24) 增加`Serie`在`inspector`上可进行调整顺序、添加和删除操作 +* (2020.03.23) 修复`Title`的`textStyle`和`subTextStyle`无效的问题 +* (2020.03.22) 增加`BarChart`通过`barType`参数设置`胶囊柱状图` +* (2020.03.21) 增加`BarChart`和`HeatmapChart`可通过`ignore`参数设置忽略数据的支持 +* (2020.03.21) 增加`ItemStyle`的`tooltipFormatter`参数可单独配置`Serie`的`Tooltip`显示 +* (2020.03.20) 修复`X Axis 1`和`Y Axis 1`配置变更时不会自动刷新的问题 +* (2020.03.20) 增加`AxisTick`的`width`参数可单独设置坐标轴刻度的宽度 +* (2020.03.20) 增加`Serie`的`radarType`参数设置`多圈`和`单圈`雷达图 +* (2020.03.17) 增加`BarChart`可用`ItemStyle`的`backgroundColor`设置数据项背景颜色 +* (2020.03.17) 增加`SerieData`的`ItemStyle`和`Emphasis`可单独配置数据项样式的支持 +* (2020.03.15) 重构`EmptyCricle`类型的`Symbol`边宽取自`ItemStyle`的`borderWidth`参数 +* (2020.03.15) 重构`SerieSymbol`,去掉`color`和`opacity`参数,取自`ItemStyle` + +## v1.3.1 + +* (2020.03.14) 发布`v1.3.1`版本 +* (2020.03.14) 修复`LineChart`开启`ingore`时部分数据可能绘制异常的问题 +* (2020.03.13) 修复`LineChart`的`label`偏移显示异常的问题 + +## v1.3.0 + +* (2020.03.11) 发布`v1.3.0`版本 +* (2020.03.11) 优化`LineChart`的`label`偏移显示 +* (2020.03.11) 优化清空并重新添加数据后的自动刷新问题 +* (2020.03.10) 增加`LineChart`的普通折线图可通过`ignore`参数设置忽略数据的支持 +* (2020.03.09) 增加`BarChart`可通过`ItemStyle`配置边框的支持 +* (2020.03.08) 增加`RingChart`环形图 +* (2020.03.05) 调整`Serie`的`arcShaped`参数重命名为`roundCap` +* (2020.03.05) 增加运行时和非运行时参数变更自动刷新图表 +* (2020.02.26) 重构`Legend`图例,改变样式,增加自定义图标等设置 +* (2020.02.23) 增加`BaseChart.AnimationFadeOut()`渐出动画,重构动画系统 +* (2020.02.13) 增加`BaseChart.RefreshTooltip()`接口立即重新初始化`Tooltip`组件 +* (2020.02.13) 增加`Tooltip`的`textStyle`参数配置内容文本样式,去掉`fontSize`和`fontStyle`参数 +* (2020.02.13) 增加`TextStyle`的`lineSpacing`参数配置行间距 +* (2020.02.11) 增加`Radar`的`splitLine`参数配置分割线,去掉`lineStyle`参数 +* (2020.02.11) 增加`Tooltip`的`backgroundImage`参数配置背景图 +* (2020.02.11) 增加`Tooltip`的`paddingLeftRight`和`paddingTopBottom`参数配置文字和边框的间距 +* (2020.02.11) 增加`Tooltip`的`lineStyle`参数配置指示线样式 +* (2020.02.11) 增加`Axis`的`splitLine`参数控制分割线,去掉`showSplitLine`和`splitLineType`参数(更新时需要重新设置分割线相关设置) +* (2020.02.10) 增加`Serie`的`clip`参数控制是否超出坐标系外裁剪(只适用于折线图、柱状图、散点图) +* (2020.02.08) 增加`SerieSymbol`的`gap`参数控制图形标记的外留白距离 +* (2020.01.26) 增加`TextLimit`组件可以设置`AxisLabel`的文本自适应 +* (2020.01.20) 优化`Tooltip`设置`itemFormatter`时显示系列颜色 +* (2020.01.20) 增加`Radar`雷达图在`inspector`配置`areaStyle`的支持 + +## v1.2.0 + +* (2020.01.15) 发布`v1.2.0`版本 +* (2020.01.15) 增加`AxisLabel`格式化为整数的支持(`{value:f0}`) +* (2020.01.15) 增加折线图对数轴`Log`的支持 +* (2020.01.09) 修复当设置`DataZoom`的`minShowNum`时可能异常的问题 +* (2020.01.08) 修复当设置`AxisLine`的`onZero`时刻度显示异常的问题 +* (2020.01.08) 增加`Mask`遮罩遮挡支持 +* (2019.12.21) 增加`Tooltip`的单个数据项和标题的字符串模版格式器 +* (2019.12.21) 增加`DataZoom`的最小显示数据个数`minShowNum` +* (2019.12.20) 增加`Demo40_Radar.cs`雷达图代码操作`Demo` +* (2019.12.20) 添加`RadarChart`相关API接口 + +## v1.1.0 + +* (2019.12.17) 发布`v1.1.0`版本 +* (2019.12.16) 修复`Overlay`模式下不显示`Tooltip`的问题 +* (2019.12.15) 增加`Title`的`TextStyle`支持 +* (2019.12.11) 修复`Legend`都隐藏时`Value轴`还显示数值的问题 +* (2019.12.11) 修复`Series->Data->Size`重置为0后设置无效的问题 +* (2019.12.06) 修复数据过小时`AxisLabel`直接科学计数法显示的问题 +* (2019.12.04) 优化和完善数据更新`UpdateData`接口 +* (2019.12.03) 增加圆环饼图的圆角支持,参数:`serie.arcShaped` +* (2019.12.03) 增加数据更新动画,参数:`serie.animation.dataChangeEnable` +* (2019.11.30) 增加`GaugeChart`仪表盘 +* (2019.11.22) 修复`BarChart`清空数据重新赋值后`SerieLabel`显示异常的问题 +* (2019.11.16) 修复`SerieLabel`设置`color`等参数不生效的问题 + +## v1.0.5 + +* (2019.11.12) 发布`v1.0.5`版本 +* (2019.11.12) 修复`2018.3`以下版本打开项目报错的问题 +* (2019.11.12) 增加`IconStyle`子组件,优化`SerieData`的图标配置 +* (2019.11.11) 修复`Serie`的图标显示在上层遮挡`Label`的问题 +* (2019.11.11) 修复饼图当数据过小时视觉引导线会穿透的的问题 +* (2019.11.09) 修复饼图添加数据时`Label`异常的问题 +* (2019.11.09) 优化结构,分离为`XCharts`和`XChartsDemo`两部分 + +## v1.0.4 + +* (2019.11.05) 发布`v1.0.4`版本 +* (2019.11.05) 增加`Radar`雷达组件文本样式参数配置支持 +* (2019.11.04) 修复`Unity2018.3`以下版本代码不兼容的问题 +* (2019.11.04) 优化`SerieLabel`过多时引起的性能问题 + +## v1.0.3 + +* (2019.11.03) 发布`v1.0.3`版本 +* (2019.11.03) 增加`Editor`快捷添加图表:`Hierarchy`试图下右键`XCharts->LineChart` +* (2019.11.02) 优化非配置参数变量命名和访问权限,简化`API` + +## v1.0.2 + +* (2019.10.31) 发布`v1.0.2`版本 +* (2019.10.31) 修复`prefab`预设制作报错的问题 +* (2019.10.31) 增加访问主题组件API:`BaseChart.theme` + +## v1.0.1 + +* (2019.10.26) 发布`v1.0.1`版本 +* (2019.10.26) 修复版本检查功能在非运行时异常的问题 +* (2019.10.26) 增加科学计数法显示数值的支持(查阅`forceENotation`参数) +* (2019.10.26) 增加`Axis`类目轴数据为空时的默认显示支持 +* (2019.10.26) 增加`Axis`数值轴的最大最小值可设置为小数的支持,优化极小数图表的表现效果 + +## v1.0.0 + +* (2019.10.25) 发布`v1.0.0`版本 +* (2019.10.23) 增加版本检测功能:`Component -> XCharts -> Check For Update` +* (2019.10.22) 增加`Package Manager`安装的支持 +* (2019.10.20) 增加`Demo`首页`BarChart`的代码动态控制效果 +* (2019.10.18) 增加`Serie`的`barType`参数,可配置`斑马柱状图` +* (2019.10.18) 增加`Serie`的`barPercentStack`参数,可配置`百分比堆叠柱状图` +* (2019.10.16) 增加`Demo`首页`LineChart`的代码动态控制效果 +* (2019.10.15) 移除`Pie`组件,相关参数放到`Settings`中配置 +* (2019.10.15) 增加`Demo`首页,展示代码动态控制效果 +* (2019.10.14) 增加`RadarChart`、`ScatterChart`和`HeatmapChart`的起始动画效果 +* (2019.10.14) 增加`SerieData`的`radius`自定义数据项的半径 +* (2019.10.14) 增加`HeatmapChart`热力图 +* (2019.10.14) 增加`VisualMap`视觉映射组件 +* (2019.10.14) 增加`ItemStyle`数据项样式组件 +* (2019.10.14) 增加`Emphasis`高亮样式组件 +* (2019.10.10) 增加`Settings`全局参数配置组件,开放更多参数可配置 +* (2019.10.09) 增加`AreaStyle`的高亮相关参数配置鼠标悬浮时高亮之前区域 +* (2019.10.09) 优化`DataZoom`组件,增加双指缩放 +* (2019.10.05) 增加`SerieLabel`的`LineType`给饼图配置不同类型的视觉引导线 +* (2019.10.02) 增加`ScatterChart`同时对`Scatter`和`Line`的支持,实现折线图和散点图的组合图 +* (2019.10.01) 重构代码,废弃`Series.series`接口,用`Series.list`代替 +* (2019.10.01) 增加`customDrawCallback`自定义绘制回调 +* (2019.10.01) 增加`SmoothDash`平滑虚线的支持 +* (2019.09.30) 增加`Serie`采样类型`sampleType`的相关配置 +* (2019.09.29) 增加`SerieSymbol`关于显示间隔的相关配置 +* (2019.09.29) 重构代码: + * `BaseChart`的`sampleDist`删除,`Serie`增加`lineSampleDist` + * `BaseChart`的`minShowDataNumber`删除,`Serie`增加`minShow` + * `BaseChart`的`maxShowDataNumber`删除,`Serie`增加`maxShow` + * `BaseChart`的`maxCacheDataNumber`删除,`Serie`增加`maxCache` + * `BaseChart`的`AddSerie()`接口参数调整 + * `BaseChart`的`UpdateData()`接口参数调整 + * `Axis`增加`maxCache` +* (2019.09.28) 增加`LineChart`和`BarChart`同时对`Line`、`Bar`类型`Serie`的支持,实现折线图和柱状图的组合图 +* (2019.09.27) 增加`Axis`的`splitNumber`设置为`0`时表示绘制所有类目数据 +* (2019.09.27) 增加`SampleDist`采样距离的配置,对过密的曲线开启采样,优化绘制效率 +* (2019.09.27) 增加`XCharts问答`、`XChartsAPI接口`、`XCharts配置项手册`等文档 +* (2019.09.26) 增加`AnimationReset()`重置初始化动画接口 +* (2019.09.26) 优化`LineChart`的密集数据的曲线效果 +* (2019.09.25) 优化`SerieData`的自定义图标不与`SerieLabel`关联,可单独控制是否显示 +* (2019.09.24) 增加`SerieData`的自定义图标相关配置支持 +* (2019.09.23) 增加`Formatter`配置`Axis`的`AxisLabel`的格式化输出 +* (2019.09.23) 增加`Tooltip`的`FontSize`、`FontStyle`配置字体大小和样式 +* (2019.09.23) 增加`Formatter`配置`SerieLabel`、`Legend`、`Tooltip`的格式化输出 +* (2019.09.19) 增加`LineArrow`配置带箭头曲线 +* (2019.09.19) 增加`Tooltip`的`FixedWidth`、`FixedHeight`、`MinWidth`、`MinHeight`设置支持 +* (2019.09.18) 增加单条堆叠柱状图 +* (2019.09.18) 增加虚线`Dash`、点线`Dot`、点划线`DashDot`、双点划线`DashDotDot`等类型的折线图支持 +* (2019.09.17) 增加`AnimationEnabel()`启用或取消起始动画接口 +* (2019.09.17) 增加`Axis`的`Interval`强制设置坐标轴分割间隔 +* (2019.09.16) 去掉`Serie`中的旧版本数据兼容,不再支持`xData`和`yData` +* (2019.09.06) 增加`Animation`在重新初始化数据时自启动功能 +* (2019.09.06) 增加`SerieLabel`的`Border`边框相关配置支持 +* (2019.09.05) 增加`PieChart`的`Animation`初始化动画配置支持 +* (2019.09.03) 增加`BarChart`的`Animation`初始化动画配置支持 +* (2019.09.02) 增加`LineChart`的`Animation`初始化动画配置支持 +* (2019.08.22) 增加`AxisName`的`Offset`偏移配置支持 +* (2019.08.22) 增加`AxisLine`的`Width`配置支持 +* (2019.08.20) 增加`SerieLabel`的背景宽高、文字边距、文字旋转的配置 +* (2019.08.20) 增加`BarChart`的`Label`配置支持 +* (2019.08.15) 增加`LineChart`的`Label`配置 +* (2019.08.15) 重构`BarChart`,移除`Bar`组件,相关参数统一放到`Serie`中配置 +* (2019.08.15) 重构`LineChart`,移除`Line`组件,相关参数统一放到`Serie`中配置 + +## v0.8.3 + +* (2019.08.15) 发布`v0.8.3`版本 +* (2019.08.14) 修复`PieChart`的`Label`无法自动更新的问题 +* (2019.08.13) 修复`UpdateData`接口无法更新数据的问题 +* (2019.08.07) 增加`SerieSymbol`的`Color`、`Opacity`配置 + +## v0.8.2 + +* (2019.08.07) 发布`v0.8.2`版本 +* (2019.08.07) 修复区域平滑折线图显示异常的问题 +* (2019.08.06) 修复`serie`系列数超过调色盘颜色数时获取的颜色异常的问题 +* (2019.08.06) 修复当`Axis`的`minMaxType`为`Custom`时`max`设置为`100`不生效的问题 + +## v0.8.1 + +* (2019.08.04) 发布`v0.8.1`版本 +* (2019.08.04) 修复`Inspector`中修改数据不生效的问题 + +## v0.8.0 + +* (2019.08.04) 发布`v0.8.0`版本 +* (2019.08.04) 优化`RadarChart`雷达图,增加多雷达图支持 +* (2019.08.01) 增加代码API注释文档,整理代码 +* (2019.07.29) 增加`Radius`、`Area`两种南丁格尔玫瑰图展示类型 +* (2019.07.29) 增加`SerieLabel`配置饼图标签,支持`Center`、`Inside`、`Outside`等显示位置 +* (2019.07.28) 增加`PieChart`多饼图支持 +* (2019.07.23) 优化`Theme`主题的自定义,切换主题时自定义配置不受影响 +* (2019.07.22) 增加`EffectScatter`类型的散点图 +* (2019.07.21) 增加`ScatterChart`散点图 +* (2019.07.21) 增加`SerieData`支持多维数据配置 +* (2019.07.20) 增加`Symbol`配置`Serie`标志图形的显示 +* (2019.07.19) 增加用代码添加动态正弦曲线的示例`Demo11_AddSinCurve` +* (2019.07.19) 优化`Legend`的显示和控制 +* (2019.07.18) 优化抗锯齿,曲线更平滑 +* (2019.07.18) 增加`Tooltip`指示器类型,优化显示控制 +* (2019.07.15) 增加`Size`设置图表尺寸 +* (2019.07.14) 增加`二维数据`支持,XY轴都可以设置为数值轴 +* (2019.07.13) 增加`双坐标轴`支持,代码改动较大 + +## v0.5.0 + +* (2019.07.10) 发布`v0.5.0`版本 +* (2019.07.09) 增加`AxisLine`配置坐标轴轴线和箭头 +* (2019.07.03) 增加`AxisLabel`配置坐标轴`刻度标签` +* (2019.07.02) 增加`selected`等相关参数配置`PieChart`的选中效果 +* (2019.06.30) 增加`SplitArea`配置坐标轴`分割区域` +* (2019.06.29) 增加`AxisName`配置坐标轴`名称` +* (2019.06.20) 增加`AreaAlpha`控制`RadarChart`的`Area`透明度 +* (2019.06.13) 增加`DataZoom`实现`区域缩放` +* (2019.06.01) 增加`stepType`实现`LineChart`的`阶梯线图` +* (2019.05.29) 增加`InSameBar`实现`BarChart`的`非堆叠同柱` +* (2019.05.29) 增加`crossLabel`控制`Tooltip`的`十字准星指示器` +* (2019.05.24) 增加`堆叠区域图` +* (2019.05.16) 增加`AxisMinMaxType`控制坐标轴最大最小刻度 +* (2019.05.15) 完善数据接口 +* (2019.05.14) 增加X轴`AxisType.Value`模式支持 +* (2019.05.13) 增加负数数值轴支持 +* (2019.05.11) 增加自定义`Editor`编辑 +* (2019.03.21) 增加`Tooltip` +* (2018.11.01) 增加`Default`、`Light`、`Dark`三种默认主题 + +## v0.1.0 + +* (2018.09.05) 发布`v0.1.0`版本 diff --git a/Assets/XCharts/Documentation/CHANGELOG-EN.md.meta b/Assets/XCharts/Documentation/CHANGELOG-EN.md.meta new file mode 100644 index 0000000..979167c --- /dev/null +++ b/Assets/XCharts/Documentation/CHANGELOG-EN.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 01f7eaa065d094f1f8955111a9bc447b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/README-EN.md b/Assets/XCharts/Documentation/README-EN.md new file mode 100644 index 0000000..6f989d3 --- /dev/null +++ b/Assets/XCharts/Documentation/README-EN.md @@ -0,0 +1,141 @@ +

+ + + +

+

XCharts

+

+ A powerful, easy-to-use, configurable charting and data visualization library for Unity. +
+ Unity数据可视化图表插件。 +
+ 中文 +

+

+ + + + + + + + + + + + + + + + + + +

+

+ + + + + + + + + +

+ +A powerful, easy-to-use, configurable charting and data visualization library for Unity. Supporting line, bar, pie, radar, scatter, heatmap, ring, candlestick, polar, liquid and other common chart. Also support 3d pie, 3d bar, 3d pyramid, funnel, gauge, liquid, pictorialbar, gantt, treemap and ther extended chart. + +[XCharts3.0 Tutorial](XChartsTutorial01-EN.md) +[XCharts3.0 API](XChartsAPI-EN.md) +[XCharts3.0 FAQ](XChartsFAQ-EN.md) +[XCharts3.0 Configurate](XChartsConfiguration-EN.md) +[XCharts3.0 Changelog](../CHANGELOG.md) +[XCharts3.0 Support](SUPPORT.md) + +## Features + +* Rich built-in examples and templates, parameter visualization configuration, effect real-time preview, pure code drawing. +* Support line, bar, pie, radar, scatter, heatmaps, gauge, ring, polar, liquid and other common chart. +* Support line graph, curve graph, area graph, step graph and other LineChart. +* Support parallel bar, stack bar, stack percentage bar, zebra bar and other BarChart. +* Support ring, rose and other PieChart. +* Support line-bar chart, scatter-line chart and other combination chart. +* Support solid line, curve, ladder line, dotted line, dash line, dot line, double dot line and other lines. +* Support custom theme, built-in theme switching. +* Support custom chart content drawing, drawing points, line, curve, triangle, quadrilateral, circle, ring, sector, border, arrow and other drawing API. +* Support interactive operations such as data filtering, view zooming and detail display on PC and mobile terminals. +* Support 10,000-level big data rendering. +* Support TextMeshPro. + +## XCharts3.0 new feature + +* Added `Time` axis. +* Added `SingleAxis`. +* Added multiple coordinate systems: `Grid`, `Polar`, `Radar`, `SingleAxis`. +* Added multiple animation methods. +* Added multiple chart interactions. +* Added internationalization support. +* Added `Widgets`. +* Added multiple extension charts. + +## XCharts3.0 improvements over XCharts2.0 + +* More robust underlying framework. +* More powerful performance. +* Smaller serialized files. +* Better interactive experience. +* More component support. +* More powerful ability to self-report text. +* More reasonable component adjustments. +* More flexible component insertion and removal. +* More efficient secondary development. +* Richer Demo examples. + +## XCharts3.0 and 2.0 data comparison + +| Case | XCharts2.0 | XCharts3.0 | Note | +| -- | -- | -- | -- | +| Fps of 2000 data line chart | ` 20 ` | ` 83 ` | Performance improvements `3` times | +| Vertices of 2000 data line chart | ` 36.5 k ` | ` 6.7 k ` | Vertices reduce `4` times | +| Prefab size of 2000 data line chart | ` 11.1 MB ` | ` 802 KB ` | Serialized file size to reduce `10` times | +| Max data of a single line chart | ` 4.1 k ` | ` 19 k ` | Single Serie data capacity improvement `4` times | +| Num of chart support | ` 11 ` | ` 23 ` | More than `1` times as many chart are supported | + +## Screenshots + +![buildinchart](https://github.com/XCharts-Team/XCharts-Demo/blob/master/buildinchart.png) + +![extendchart](https://github.com/XCharts-Team/XCharts-Demo/blob/master/extendchart.png) + +For more examples, see [XCharts-Demo](https://github.com/XCharts-Team/XCharts-Demo), You can also go to [Online Demo](https://xcharts-team.github.io/demo/) to see the running effect of `WebGL`. + +## Use + +1. Import `XCharts` unitypackage or source code into the project. +2. Right-click `Hierarchy` view and choose `XCharts->LineChart` to create a default LineChart. +3. You can adjust the parameters of each component in `Inspector` and see the real-time effects in `Game` view. + +See more tutorial: [XCharts tutorial: 5 minutes overhand tutorial](XChartsTutorial01-EN.md) + +## FAQ + +1. Is `XCharts` free to use? +A: `XCharts` uses the `MIT` licence and is free to use. You can also subscribe to `VIP` to enjoy more value-added services. + +2. Does `XCharts` support code to dynamically add and modify data? Does it support getting data from `Excel` or a database? +A: Support code to dynamically add and modify data, but data needs to be parsed or retrieved by itself, and then added to `XCharts` by calling the public interface of `XCharts`. + +3. Does this plugin work on other platforms (e.g. Winform or WPF) besides Unity? +A: It is currently only supported on Unity. Theoretically any version of Unity that supports `UGUI` can run `XCharts`. + +## Changelog + +[Changelog](CHANGELOG.md) + +## Licenses + +[MIT License](LICENSE.md) + +## Other + +email: `monitor1394@gmail.com` \ No newline at end of file diff --git a/Assets/XCharts/Documentation/README-EN.md.meta b/Assets/XCharts/Documentation/README-EN.md.meta new file mode 100644 index 0000000..9f88656 --- /dev/null +++ b/Assets/XCharts/Documentation/README-EN.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 29f30ecf23bb44bc5b0820dc5ee7a23e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/SUPPORT.md b/Assets/XCharts/Documentation/SUPPORT.md new file mode 100644 index 0000000..585df8e --- /dev/null +++ b/Assets/XCharts/Documentation/SUPPORT.md @@ -0,0 +1,76 @@ +# 订阅服务 + +如需技术支持,可订阅`个人VIP`服务。扫后面的二维码后可加VIP群`867291970`,验证信息请输入付费的账号。 企业商务合作可联系QQ:3525422251(XCharts技术支持)。 + +## 订阅VIP服务 + +订阅服务分个人订阅和企业订阅: + +- 个人订阅:个人VIP属于个人,不可转让,`XCharts`团队只服务于订阅当事人。 +- 企业订阅:企业VIP属于企业,席位内可安排固定职员,职员离职可重新安排,`XCharts`团队通过专属企业群为企业服务。 + +订阅服务的优势? + +- 提高工作效率,节省时间成本。一方面,`XCharts`功能强大,相关配置项非常多,`VIP`服务可快速帮您定位,节省去查找和核对的时间;另一方面,`VIP`的即时回答服务可快速为您答疑解惑,避免中断开发流程。总之,订阅`VIP`可让您能快速上手,快速处理问题,至少能提高`10`倍以上的工作效率。 +- 更多技术交流,更多经验交流。`XCharts`团队成员从业多年,有丰富的技术和工作经验。`VIP`服务不仅可以交流`XCharts`相关的内容,也可以咨询其他方面的技术。`VIP`群也有更多的交流。 +- 扩展图表的需要订阅`VIP`服务后才能购买,扩展图表超过1年后的更新支持也需要持续订阅`VIP`服务。 +- `VIP`用户可加入`XCharts`的`GitHub`组织,参与`XCharts`社区构建,访问专有仓库。 + +| |免费用户|付费咨询|个人`VIP` | 个人`SVIP` | 企业`VIP` | +| ----- |--|--|--|--|--| +| 订阅费用 | -- | `98`¥ | `298`¥ | 首年`1298`¥
后续`298¥`* | `联系我们` | +| 订阅时长 | -- | `7`天* | `1`年 | `1`年* | `1`年 +| 订阅席位 | -- | `1`个席位 | `1`个席位 |`1`个席位|`5`个以上席位| +| __`服务方式:`__| +| 官方QQ群交流 | √ | √ | √ | √ | √ | +| 即时一对一交流 | | √ | √ | √ | √ | +| 专属VIP群交流 | | | √ | √ | √(专属企业群) | +| __`服务内容:`__| +| 可商用 | √ | √ | √ | √ | √ | +| 可二次开发 | √ | √ | √ | √ | √ | +| 有问必答 | | √ | √ | √ | √ | +| 即时回答 | | √ | √ | √ | √ | +| 新手指导 | | √ | √ | √ | √ | +| 开发指导 | | √ | √ | √ | √ | +| 优化指导 | | √ | √ | √ | √ | +| 其他技术支持 | | | √ | √ | √ | +| 问题及时处理 | | | √ | √ | √ | +| 需求优先考虑 | | | √ | √ | √ | +| 可另付费定制 | | | √ | √ | √ | +| 可另付费加急 | | | √ | √ | √ | +| VIP专有功能教程和文档 | | | √待开放 | √待开放 | √待开放 | +| 扩展图表购买 | | | 按需购买 | 全部免费 | 按需购买 | +| 扩展图表源码 | | | 永久持有 | 永久持有 | 永久持有 | +| 扩展图表更新 | | | 1年持续更新
1年后需订阅 | 1年持续更新
1年后需订阅 | 1年持续更新
1年后需订阅 | + +## 购买扩展图表 + +扩展图表为另付费购买图表,只对订阅了`VIP`服务的用户开放购买。对于`SVIP`的订阅用户,所有扩展图表仓库可免费使用,不用再单独购买。 + +对所有已购买的扩展图表,源码可永久持有,并获得持续一年的更新支持,超过一年后想要更新支持需要继续订阅`VIP`服务,如不继续订阅`VIP`服务,会从`GitHub`的`Team`中移除,不再能访问扩展图表的源码仓库。 + +|编号|扩展图表|价格|备注| +|--|--|--|--| +| 101 | PictorialBarChart | 98¥ | 象形柱图 | +| 102 | FunnelChart | 98¥ | 漏斗图 | +| 103 | PyramidChart | 98¥ | 3D金字塔 | +| 104 | TreemapChart | 98¥ | 树形矩图 | +| 201 | Bar3DChart | 198¥ | 3D柱图 | +| 202 | Pie3DChart | 198¥ | 3D饼图 | +| 203 | GanttChart | 198¥ | 甘特图 | +| 204 | GaugeChart | 198¥ | 仪表盘 | +| 205 | LiquidChart | 198¥ | 水位图 | + +## 备注说明 + +1. __`付费定制`__ 是指用户可根据自己的需求定制不同的图表或新功能,只有`VIP`用户才享有`付费定制`权利。 +2. __`付费加急`__ 是指用户可对自己非常紧急的需求进行付费,将开发优先级提到最高,并可要求在`Deadline`内交付,只有`VIP`用户才享有`付费加急`权利。 +3. __`付费咨询`__ 付费咨询有效期`7`天,且总咨询时长不超过`7`个小时。 +4. __`扩展图表`__ 购买后代码可永久持有和商用,更新支持1年。超过1年后还需要更新支持的话,需要订阅`VIP`服务。 + +## 捐助支持 + +如果这个项目对您有帮助,请右上方点 `Star` 予以支持!也欢迎任意金额的捐助,非常您的支持! + +![alipay-qrcode](res/alipay.png) +![wechat-qrcode](res/wechat.png) diff --git a/Assets/XCharts/Documentation/SUPPORT.md.meta b/Assets/XCharts/Documentation/SUPPORT.md.meta new file mode 100644 index 0000000..588d0ee --- /dev/null +++ b/Assets/XCharts/Documentation/SUPPORT.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 40051c210ea1244a99317f3264ac567f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsAPI-EN.md b/Assets/XCharts/Documentation/XChartsAPI-EN.md new file mode 100644 index 0000000..17c7136 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsAPI-EN.md @@ -0,0 +1,1075 @@ +# Chart API + +[XCharts Homepage](https://github.com/XCharts-Team/XCharts)
+[XCharts Configuration](XChartsConfiguration-EN.md)
+[XCharts FAQ](XChartsFAQ-EN.md) + +## Class + +- [AnimationStyleHelper](#AnimationStyleHelper) +- [AxisContext](#AxisContext) +- [AxisHandler](#AxisHandler) +- [AxisHelper](#AxisHelper) +- [BarChart](#BarChart) +- [BaseChart](#BaseChart) +- [BaseGraph](#BaseGraph) +- [CandlestickChart](#CandlestickChart) +- [ChartCached](#ChartCached) +- [ChartConst](#ChartConst) +- [ChartDrawer](#ChartDrawer) +- [ChartHelper](#ChartHelper) +- [ChartLabel](#ChartLabel) +- [ChartObject](#ChartObject) +- [CheckHelper](#CheckHelper) +- [ColorUtil](#ColorUtil) +- [ComponentHandlerAttribute](#ComponentHandlerAttribute) +- [ComponentHelper](#ComponentHelper) +- [CoordOptionsAttribute](#CoordOptionsAttribute) +- [DataZoomContext](#DataZoomContext) +- [DataZoomHelper](#DataZoomHelper) +- [DateTimeUtil](#DateTimeUtil) +- [DefaultAnimationAttribute](#DefaultAnimationAttribute) +- [DefineSymbolsUtil](#DefineSymbolsUtil) +- [FormatterHelper](#FormatterHelper) +- [GridCoordContext](#GridCoordContext) +- [HeatmapChart](#HeatmapChart) +- [IgnoreDoc](#IgnoreDoc) +- [InteractData](#InteractData) +- [LayerHelper](#LayerHelper) +- [LegendContext](#LegendContext) +- [LegendHelper](#LegendHelper) +- [LegendItem](#LegendItem) +- [LineChart](#LineChart) +- [ListFor](#ListFor) +- [ListForComponent](#ListForComponent) +- [ListForSerie](#ListForSerie) +- [MainComponentContext](#MainComponentContext) +- [MainComponentHandler](#MainComponentHandler) +- [MainComponentHandler](#MainComponentHandler) +- [MathUtil](#MathUtil) +- [ObjectPool where T](#ObjectPool where T) +- [Painter](#Painter) +- [ParallelChart](#ParallelChart) +- [ParallelCoordContext](#ParallelCoordContext) +- [PieChart](#PieChart) +- [PolarChart](#PolarChart) +- [PolarCoordContext](#PolarCoordContext) +- [ProgressBar](#ProgressBar) +- [PropertyUtil](#PropertyUtil) +- [RadarChart](#RadarChart) +- [RadarCoordContext](#RadarCoordContext) +- [ReflectionUtil](#ReflectionUtil) +- [RequireChartComponentAttribute](#RequireChartComponentAttribute) +- [RingChart](#RingChart) +- [RuntimeUtil](#RuntimeUtil) +- [ScatterChart](#ScatterChart) +- [SerieContext](#SerieContext) +- [SerieConvertAttribute](#SerieConvertAttribute) +- [SerieDataContext](#SerieDataContext) +- [SerieDataExtraComponentAttribute](#SerieDataExtraComponentAttribute) +- [SerieDataExtraFieldAttribute](#SerieDataExtraFieldAttribute) +- [SerieExtraComponentAttribute](#SerieExtraComponentAttribute) +- [SerieHandler](#SerieHandler) +- [SerieHandler](#SerieHandler) +- [SerieHandlerAttribute](#SerieHandlerAttribute) +- [SerieHelper](#SerieHelper) +- [SerieLabelHelper](#SerieLabelHelper) +- [SerieLabelPool](#SerieLabelPool) +- [SerieParams](#SerieParams) +- [SeriesHelper](#SeriesHelper) +- [SimplifiedBarChart](#SimplifiedBarChart) +- [SimplifiedCandlestickChart](#SimplifiedCandlestickChart) +- [SimplifiedLineChart](#SimplifiedLineChart) +- [SVG](#SVG) +- [SVGImage](#SVGImage) +- [SVGPath](#SVGPath) +- [SVGPathSeg](#SVGPathSeg) +- [TooltipContext](#TooltipContext) +- [TooltipData](#TooltipData) +- [TooltipHelper](#TooltipHelper) +- [TooltipView](#TooltipView) +- [TooltipViewItem](#TooltipViewItem) +- [UGL](#UGL) +- [UGLExample](#UGLExample) +- [UGLHelper](#UGLHelper) +- [VisualMapContext](#VisualMapContext) +- [VisualMapHelper](#VisualMapHelper) +- [XChartsMgr](#XChartsMgr) +- [XCResourceImporterWindow](#XCResourceImporterWindow) +- [XCThemeMgr](#XCThemeMgr) + +## `AnimationStyleHelper` + +|public method|description| +|--|--| +| `CheckDataAnimation()` |public static float CheckDataAnimation(BaseChart chart, Serie serie, int dataIndex, float destProgress, float startPorgress = 0)
| +| `GetAnimationPosition()` |public static bool GetAnimationPosition(AnimationStyle animation, bool isY, Vector3 lp, Vector3 cp, float progress, ref Vector3 ip)
| +| `UpdateAnimationType()` |public static void UpdateAnimationType(AnimationStyle animation, AnimationType defaultType)
| +| `UpdateSerieAnimation()` |public static void UpdateSerieAnimation(Serie serie)
| + +## `AxisContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `AxisHandler` + +Inherits or Implemented: [MainComponentHandler](#MainComponentHandler) + +## `AxisHelper` + +|public method|description| +|--|--| +| `AdjustCircleLabelPos()` |public static void AdjustCircleLabelPos(ChartLabel txt, Vector3 pos, Vector3 cenPos, float txtHig, Vector3 offset)
| +| `AdjustMinMaxValue()` |public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, int ceilRate = 0)
调整最大最小值 | +| `AdjustRadiusAxisLabelPos()` |public static void AdjustRadiusAxisLabelPos(ChartLabel txt, Vector3 pos, Vector3 cenPos, float txtHig, Vector3 offset)
| +| `GetAxisLineArrowOffset()` |public static float GetAxisLineArrowOffset(Axis axis)
包含箭头偏移的轴线长度 | +| `GetAxisPosition()` |public static float GetAxisPosition(GridCoord grid, Axis axis, double value, int dataCount = 0, DataZoom dataZoom = null)
| +| `GetAxisPositionValue()` |public static double GetAxisPositionValue(float xy, float axisLength, double axisRange, float axisStart, float axisOffset)
| +| `GetAxisPositionValue()` |public static double GetAxisPositionValue(GridCoord grid, Axis axis, Vector3 pos)
| +| `GetAxisValueDistance()` |public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value)
获得数值value在坐标轴上相对起点的距离 | +| `GetAxisValueLength()` |public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value)
获得数值value在坐标轴上对应的长度 | +| `GetAxisValuePosition()` |public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value)
获得数值value在坐标轴上的坐标位置 | +| `GetDataWidth()` |public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom)
获得一个类目数据在坐标系中代表的宽度 | +| `GetEachWidth()` |public static float GetEachWidth(Axis axis, float coordinateWidth, DataZoom dataZoom = null)
| +| `GetScaleNumber()` |public static int GetScaleNumber(Axis axis, float coordinateWidth, DataZoom dataZoom = null)
获得分割线条数 | +| `GetScaleWidth()` |public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null)
获得分割段宽度 | +| `GetSplitNumber()` |public static int GetSplitNumber(Axis axis, float coordinateWid, DataZoom dataZoom)
获得分割段数 | +| `NeedShowSplit()` |public static bool NeedShowSplit(Axis axis)
| + +## `BarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `BaseChart` + +Inherits or Implemented: [BaseGraph](#BaseGraph),[ISerializationCallbackReceiver](#ISerializationCallbackReceiver) + +|public method|description| +|--|--| +| `AddChartComponent()` |public MainComponent AddChartComponent(Type type)
| +| `AddData()` |public SerieData AddData(int serieIndex, DateTime time, double yValue, string dataName = null, string dataId = null)
Add a (time,y) data to serie. | +| `AddData()` |public SerieData AddData(int serieIndex, double data, string dataName = null, string dataId = null)
Add a data to serie. | +| `AddData()` |public SerieData AddData(int serieIndex, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
| +| `AddData()` |public SerieData AddData(int serieIndex, double xValue, double yValue, string dataName = null, string dataId = null)
Add a (x,y) data to serie. | +| `AddData()` |public SerieData AddData(int serieIndex, List multidimensionalData, string dataName = null, string dataId = null)
Add an arbitray dimension data to serie,such as (x,y,z,...). | +| `AddData()` |public SerieData AddData(string serieName, DateTime time, double yValue, string dataName = null, string dataId = null)
Add a (time,y) data to serie. | +| `AddData()` |public SerieData AddData(string serieName, double data, string dataName = null, string dataId = null)
Add a data to serie. | +| `AddData()` |public SerieData AddData(string serieName, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
| +| `AddData()` |public SerieData AddData(string serieName, double xValue, double yValue, string dataName = null, string dataId = null)
Add a (x,y) data to serie. | +| `AddData()` |public SerieData AddData(string serieName, List multidimensionalData, string dataName = null, string dataId = null)
Add an arbitray dimension data to serie,such as (x,y,z,...). | +| `AddXAxisData()` |public void AddXAxisData(string category, int xAxisIndex = 0)
Add a category data to xAxis. | +| `AddXAxisIcon()` |public void AddXAxisIcon(Sprite icon, int xAxisIndex = 0)
Add an icon to xAxis. | +| `AddYAxisData()` |public void AddYAxisData(string category, int yAxisIndex = 0)
Add a category data to yAxis. | +| `AddYAxisIcon()` |public void AddYAxisIcon(Sprite icon, int yAxisIndex = 0)
Add an icon to yAxis. | +| `AnimationEnable()` |public void AnimationEnable(bool flag)
Whether series animation enabel. | +| `AnimationFadeIn()` |public void AnimationFadeIn()
fadeIn animation. | +| `AnimationFadeOut()` |public void AnimationFadeOut()
fadeIn animation. | +| `AnimationPause()` |public void AnimationPause()
Pause animation. | +| `AnimationReset()` |public void AnimationReset()
Reset animation. | +| `AnimationResume()` |public void AnimationResume()
Stop play animation. | +| `CanAddChartComponent()` |public bool CanAddChartComponent(Type type)
| +| `CanAddSerie()` |public bool CanAddSerie(Type type)
| +| `CanMultipleComponent()` |public bool CanMultipleComponent(Type type)
| +| `ClampInChart()` |public void ClampInChart(ref Vector3 pos)
| +| `ClampInGrid()` |public Vector3 ClampInGrid(GridCoord grid, Vector3 pos)
| +| `ClearData()` |public virtual void ClearData()
Remove all series and legend data. | +| `ClickLegendButton()` |public void ClickLegendButton(int legendIndex, string legendName, bool show)
点击图例按钮 | +| `CovertSerie()` |public bool CovertSerie(Serie serie, Type type)
| +| `CovertXYAxis()` |public void CovertXYAxis(int index)
转换X轴和Y轴的配置 | +| `GenerateDefaultSerieName()` |public string GenerateDefaultSerieName()
| +| `GetAllSerieDataCount()` |public int GetAllSerieDataCount()
| +| `GetChartBackgroundColor()` |public Color32 GetChartBackgroundColor()
| +| `GetChartComponentNum()` |public int GetChartComponentNum(Type type)
| +| `GetData()` |public double GetData(int serieIndex, int dataIndex, int dimension = 1)
| +| `GetData()` |public double GetData(string serieName, int dataIndex, int dimension = 1)
| +| `GetDataZoomOfAxis()` |public DataZoom GetDataZoomOfAxis(Axis axis)
| +| `GetDataZoomOfSerie()` |public void GetDataZoomOfSerie(Serie serie, out DataZoom xDataZoom, out DataZoom yDataZoom)
| +| `GetGrid()` |public GridCoord GetGrid(Vector2 local)
| +| `GetGridOfDataZoom()` |public GridCoord GetGridOfDataZoom(DataZoom dataZoom)
| +| `GetItemColor()` |public Color32 GetItemColor(Serie serie, bool highlight = false)
| +| `GetItemColor()` |public Color32 GetItemColor(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetLegendRealShowNameColor()` |public Color32 GetLegendRealShowNameColor(string name)
| +| `GetLegendRealShowNameIndex()` |public int GetLegendRealShowNameIndex(string name)
| +| `GetPainter()` |public Painter GetPainter(int index)
| +| `GetSerie()` |public Serie GetSerie(int serieIndex)
| +| `GetSerie()` |public Serie GetSerie(string serieName)
| +| `GetSeriesMinMaxValue()` |public virtual void GetSeriesMinMaxValue(Axis axis, int axisIndex, out double tempMinValue, out double tempMaxValue)
| +| `GetTitlePosition()` |public Vector3 GetTitlePosition(Title title)
| +| `GetVisualMapOfSerie()` |public VisualMap GetVisualMapOfSerie(Serie serie)
| +| `GetXLerpColor()` |public Color32 GetXLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
| +| `GetYLerpColor()` |public Color32 GetYLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
| +| `HasChartComponent()` |public bool HasChartComponent(Type type)
| +| `HasChartComponent()` |public bool HasChartComponent()
| +| `HasSerie()` |public bool HasSerie(Type type)
| +| `Init()` |public void Init(bool defaultChart = true)
| +| `InitAxisRuntimeData()` |public virtual void InitAxisRuntimeData(Axis axis)
| +| `InsertSerie()` |public void InsertSerie(Serie serie, int index = -1, bool addToHead = false)
| +| `Internal_CheckAnimation()` |public void Internal_CheckAnimation()
| +| `IsActiveByLegend()` |public virtual bool IsActiveByLegend(string legendName)
Whether serie is activated. | +| `IsAllAxisCategory()` |public bool IsAllAxisCategory()
纯类目轴。 | +| `IsAllAxisValue()` |public bool IsAllAxisValue()
reutrn true when all the show axis is `Value` type. | +| `IsInAnyGrid()` |public bool IsInAnyGrid(Vector2 local)
| +| `IsInChart()` |public bool IsInChart(float x, float y)
| +| `IsInChart()` |public bool IsInChart(Vector2 local)
坐标是否在图表范围内 | +| `IsSerieName()` |public bool IsSerieName(string name)
| +| `MoveDownSerie()` |public bool MoveDownSerie(int serieIndex)
| +| `MoveUpSerie()` |public bool MoveUpSerie(int serieIndex)
| +| `OnAfterDeserialize()` |public void OnAfterDeserialize()
| +| `OnBeforeSerialize()` |public void OnBeforeSerialize()
| +| `OnBeginDrag()` |public override void OnBeginDrag(PointerEventData eventData)
| +| `OnDataZoomRangeChanged()` |public virtual void OnDataZoomRangeChanged(DataZoom dataZoom)
| +| `OnDrag()` |public override void OnDrag(PointerEventData eventData)
| +| `OnEndDrag()` |public override void OnEndDrag(PointerEventData eventData)
| +| `OnLegendButtonClick()` |public virtual void OnLegendButtonClick(int index, string legendName, bool show)
| +| `OnLegendButtonEnter()` |public virtual void OnLegendButtonEnter(int index, string legendName)
| +| `OnLegendButtonExit()` |public virtual void OnLegendButtonExit(int index, string legendName)
| +| `OnPointerClick()` |public override void OnPointerClick(PointerEventData eventData)
| +| `OnPointerDown()` |public override void OnPointerDown(PointerEventData eventData)
| +| `OnPointerEnter()` |public override void OnPointerEnter(PointerEventData eventData)
| +| `OnPointerExit()` |public override void OnPointerExit(PointerEventData eventData)
| +| `OnPointerUp()` |public override void OnPointerUp(PointerEventData eventData)
| +| `OnScroll()` |public override void OnScroll(PointerEventData eventData)
| +| `RefreshBasePainter()` |public void RefreshBasePainter()
| +| `RefreshChart()` |public void RefreshChart()
Redraw chart in next frame. | +| `RefreshChart()` |public void RefreshChart(int serieIndex)
Redraw chart serie in next frame. | +| `RefreshChart()` |public void RefreshChart(Serie serie)
Redraw chart serie in next frame. | +| `RefreshDataZoom()` |public void RefreshDataZoom()
在下一帧刷新DataZoom | +| `RefreshPainter()` |public void RefreshPainter(int index)
| +| `RefreshPainter()` |public void RefreshPainter(Serie serie)
| +| `RefreshTopPainter()` |public void RefreshTopPainter()
| +| `RemoveAllChartComponent()` |public void RemoveAllChartComponent()
| +| `RemoveChartComponent()` |public bool RemoveChartComponent(MainComponent component)
| +| `RemoveChartComponent()` |public bool RemoveChartComponent(Type type, int index = 0)
| +| `RemoveChartComponent()` |public bool RemoveChartComponent(int index = 0)
| +| `RemoveChartComponents()` |public int RemoveChartComponents(Type type)
| +| `RemoveChartComponents()` |public int RemoveChartComponents()
| +| `RemoveData()` |public virtual void RemoveData()
Remove all data from series and legend. | +| `RemoveData()` |public virtual void RemoveData(string serieName)
Remove legend and serie by name. | +| `RemoveSerie()` |public void RemoveSerie(int serieIndex)
| +| `RemoveSerie()` |public void RemoveSerie(Serie serie)
| +| `RemoveSerie()` |public void RemoveSerie(string serieName)
| +| `ReplaceSerie()` |public bool ReplaceSerie(Serie oldSerie, Serie newSerie)
| +| `SetBasePainterMaterial()` |public void SetBasePainterMaterial(Material material)
设置Base Painter的材质球 | +| `SetMaxCache()` |public void SetMaxCache(int maxCache)
设置可缓存的最大数据量。当数据量超过该值时,会自动删除第一个值再加入最新值。 | +| `SetPainterActive()` |public void SetPainterActive(int index, bool flag)
| +| `SetSerieActive()` |public void SetSerieActive(int serieIndex, bool active)
Whether to show serie. | +| `SetSerieActive()` |public void SetSerieActive(Serie serie, bool active)
| +| `SetSerieActive()` |public void SetSerieActive(string serieName, bool active)
Whether to show serie. | +| `SetSeriePainterMaterial()` |public void SetSeriePainterMaterial(Material material)
设置Serie Painter的材质球 | +| `SetTopPainterMaterial()` |public void SetTopPainterMaterial(Material material)
设置Top Painter的材质球 | +| `TryAddChartComponent()` |public bool TryAddChartComponent(Type type)
| +| `TryGetChartComponent()` |public bool TryGetChartComponent(out T component, int index = 0)
| +| `UdpateXAxisIcon()` |public void UdpateXAxisIcon(int index, Sprite icon, int xAxisIndex = 0)
Update xAxis icon. | +| `UpdateData()` |public bool UpdateData(int serieIndex, int dataIndex, double value)
Update serie data by serie index. | +| `UpdateData()` |public bool UpdateData(int serieIndex, int dataIndex, int dimension, double value)
更新指定系列指定索引指定维数的数据。维数从0开始。 | +| `UpdateData()` |public bool UpdateData(int serieIndex, int dataIndex, List multidimensionalData)
更新指定系列指定索引的数据项的多维数据。 | +| `UpdateData()` |public bool UpdateData(string serieName, int dataIndex, double value)
Update serie data by serie name. | +| `UpdateData()` |public bool UpdateData(string serieName, int dataIndex, int dimension, double value)
更新指定系列指定索引指定维数的数据。维数从0开始。 | +| `UpdateData()` |public bool UpdateData(string serieName, int dataIndex, List multidimensionalData)
更新指定系列指定索引的数据项的多维数据。 | +| `UpdateDataName()` |public bool UpdateDataName(int serieIndex, int dataIndex, string dataName)
Update serie data name. | +| `UpdateDataName()` |public bool UpdateDataName(string serieName, int dataIndex, string dataName)
Update serie data name. | +| `UpdateLegendColor()` |public virtual void UpdateLegendColor(string legendName, bool active)
| +| `UpdateTheme()` |public bool UpdateTheme(ThemeType theme)
Update chart theme. | +| `UpdateTheme()` |public void UpdateTheme(Theme theme)
Update chart theme info. | +| `UpdateXAxisData()` |public void UpdateXAxisData(int index, string category, int xAxisIndex = 0)
Update category data. | +| `UpdateYAxisData()` |public void UpdateYAxisData(int index, string category, int yAxisIndex = 0)
Update category data. | +| `UpdateYAxisIcon()` |public void UpdateYAxisIcon(int index, Sprite icon, int yAxisIndex = 0)
更新Y轴图标。 | + +## `BaseGraph` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic),[IPointerDownHandler](#IPointerDownHandler),[IPointerUpHandler](#IPointerUpHandler),[](#) + +|public method|description| +|--|--| +| `CheckWarning()` |public string CheckWarning()
检测警告信息。 | +| `OnBeginDrag()` |public virtual void OnBeginDrag(PointerEventData eventData)
| +| `OnDrag()` |public virtual void OnDrag(PointerEventData eventData)
| +| `OnEndDrag()` |public virtual void OnEndDrag(PointerEventData eventData)
| +| `OnPointerClick()` |public virtual void OnPointerClick(PointerEventData eventData)
| +| `OnPointerDown()` |public virtual void OnPointerDown(PointerEventData eventData)
| +| `OnPointerEnter()` |public virtual void OnPointerEnter(PointerEventData eventData)
| +| `OnPointerExit()` |public virtual void OnPointerExit(PointerEventData eventData)
| +| `OnPointerUp()` |public virtual void OnPointerUp(PointerEventData eventData)
| +| `OnScroll()` |public virtual void OnScroll(PointerEventData eventData)
| +| `RebuildChartObject()` |public void RebuildChartObject()
移除并重新创建所有图表的Object。 | +| `RefreshAllComponent()` |public void RefreshAllComponent()
| +| `RefreshGraph()` |public void RefreshGraph()
Redraw graph in next frame. | +| `ScreenPointToChartPoint()` |public bool ScreenPointToChartPoint(Vector2 screenPoint, out Vector2 chartPoint)
| +| `SetPainterDirty()` |public void SetPainterDirty()
重新初始化Painter | +| `SetSize()` |public virtual void SetSize(float width, float height)
设置图形的宽高(在非stretch pivot下才有效,其他情况需要自己调整RectTransform) | + +## `CandlestickChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `ChartCached` + +|public method|description| +|--|--| +| `ColorToDotStr()` |public static string ColorToDotStr(Color color)
| +| `ColorToStr()` |public static string ColorToStr(Color color)
| +| `FloatToStr()` |public static string FloatToStr(double value, string numericFormatter = "F", int precision = 0)
| +| `GetSerieLabelName()` |public static string GetSerieLabelName(string prefix, int i, int j)
| +| `IntToStr()` |public static string IntToStr(int value, string numericFormatter = "")
| +| `NumberToStr()` |public static string NumberToStr(double value, string formatter)
| + +## `ChartConst` + +## `ChartDrawer` + +## `ChartHelper` + +|public method|description| +|--|--| +| `ActiveAllObject()` |public static void ActiveAllObject(Transform parent, bool active, string match = null)
| +| `AddIcon()` |public static Image AddIcon(string name, Transform parent, IconStyle iconStyle)
| +| `Cancat()` |public static string Cancat(string str1, int i)
| +| `Cancat()` |public static string Cancat(string str1, string str2)
| +| `ClearEventListener()` |public static void ClearEventListener(GameObject obj)
| +| `CopyArray()` |public static bool CopyArray(T[] toList, T[] fromList)
| +| `CopyList()` |public static bool CopyList(List toList, List fromList)
| +| `DestoryGameObject()` |public static void DestoryGameObject(GameObject go)
| +| `DestoryGameObject()` |public static void DestoryGameObject(Transform parent, string childName)
| +| `DestoryGameObjectByMatch()` |public static void DestoryGameObjectByMatch(Transform parent, string match)
| +| `DestroyAllChildren()` |public static void DestroyAllChildren(Transform parent)
| +| `GetActualValue()` |public static float GetActualValue(float valueOrRate, float total, float maxRate = 1.5f)
| +| `GetAngle360()` |public static float GetAngle360(Vector2 from, Vector2 to)
获得0-360的角度(12点钟方向为0度) | +| `GetColor()` |public static Color32 GetColor(string hexColorStr)
| +| `GetDire()` |public static Vector3 GetDire(float angle, bool isDegree = false)
| +| `GetFloatAccuracy()` |public static int GetFloatAccuracy(double value)
| +| `GetFullName()` |public static string GetFullName(Transform transform)
| +| `GetHighlightColor()` |public static Color32 GetHighlightColor(Color32 color, float rate = 0.8f)
| +| `GetLastValue()` |public static Vector3 GetLastValue(List list)
| +| `GetMaxDivisibleValue()` |public static double GetMaxDivisibleValue(double max, int ceilRate)
| +| `GetMaxLogValue()` |public static double GetMaxLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber)
| +| `GetMinDivisibleValue()` |public static double GetMinDivisibleValue(double min, int ceilRate)
| +| `GetMinLogValue()` |public static double GetMinLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber)
| +| `GetPointList()` |public static void GetPointList(ref List posList, Vector3 sp, Vector3 ep, float k = 30f)
| +| `GetPos()` |public static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false)
| +| `GetPosition()` |public static Vector3 GetPosition(Vector3 center, float angle, float radius)
| +| `GetVertialDire()` |public static Vector3 GetVertialDire(Vector3 dire)
| +| `HideAllObject()` |public static void HideAllObject(GameObject obj, string match = null)
| +| `HideAllObject()` |public static void HideAllObject(Transform parent, string match = null)
| +| `IsClearColor()` |public static bool IsClearColor(Color color)
| +| `IsClearColor()` |public static bool IsClearColor(Color32 color)
| +| `IsColorAlphaZero()` |public static bool IsColorAlphaZero(Color color)
| +| `IsEquals()` |public static bool IsEquals(double d1, double d2)
| +| `IsEquals()` |public static bool IsEquals(float d1, float d2)
| +| `IsIngore()` |public static bool IsIngore(Vector3 pos)
| +| `IsInRect()` |public static bool IsInRect(Vector3 pos, float xMin, float xMax, float yMin, float yMax)
| +| `IsPointInQuadrilateral()` |public static bool IsPointInQuadrilateral(Vector3 P, Vector3 A, Vector3 B, Vector3 C, Vector3 D)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color color1, Color color2)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color32 color1, Color32 color2)
| +| `IsValueEqualsList()` |public static bool IsValueEqualsList(List list1, List list2)
| +| `IsValueEqualsString()` |public static bool IsValueEqualsString(string str1, string str2)
| +| `IsValueEqualsVector2()` |public static bool IsValueEqualsVector2(Vector2 v1, Vector2 v2)
| +| `IsValueEqualsVector3()` |public static bool IsValueEqualsVector3(Vector3 v1, Vector3 v2)
| +| `IsZeroVector()` |public static bool IsZeroVector(Vector3 pos)
| +| `ParseFloatFromString()` |public static List ParseFloatFromString(string jsonData)
| +| `ParseStringFromString()` |public static List ParseStringFromString(string jsonData)
| +| `RemoveComponent()` |public static void RemoveComponent(GameObject gameObject)
| +| `RotateRound()` |public static Vector3 RotateRound(Vector3 position, Vector3 center, Vector3 axis, float angle)
| +| `SetActive()` |public static void SetActive(GameObject gameObject, bool active)
| +| `SetActive()` |public static void SetActive(Image image, bool active)
| +| `SetActive()` |public static void SetActive(Text text, bool active)
| +| `SetActive()` |public static void SetActive(Transform transform, bool active)
通过设置scale实现是否显示,优化性能,减少GC | +| `SetColorOpacity()` |public static void SetColorOpacity(ref Color32 color, float opacity)
| + +## `ChartLabel` + +Inherits or Implemented: [Image](#Image) + +|public method|description| +|--|--| +| `GetHeight()` |public float GetHeight()
| +| `GetPosition()` |public Vector3 GetPosition()
| +| `GetTextHeight()` |public float GetTextHeight()
| +| `GetTextWidth()` |public float GetTextWidth()
| +| `GetWidth()` |public float GetWidth()
| +| `SetActive()` |public void SetActive(bool flag)
| +| `SetIcon()` |public void SetIcon(Image image)
| +| `SetIconActive()` |public void SetIconActive(bool flag)
| +| `SetIconSize()` |public void SetIconSize(float width, float height)
| +| `SetIconSprite()` |public void SetIconSprite(Sprite sprite)
| +| `SetPadding()` |public void SetPadding(float[] padding)
| +| `SetPosition()` |public void SetPosition(Vector3 position)
| +| `SetRectPosition()` |public void SetRectPosition(Vector3 position)
| +| `SetSize()` |public void SetSize(float width, float height)
| +| `SetText()` |public bool SetText(string text)
| +| `SetTextActive()` |public void SetTextActive(bool flag)
| +| `SetTextColor()` |public void SetTextColor(Color color)
| +| `SetTextPadding()` |public void SetTextPadding(TextPadding padding)
| +| `SetTextRotate()` |public void SetTextRotate(float rotate)
| +| `UpdateIcon()` |public void UpdateIcon(IconStyle iconStyle, Sprite sprite = null)
| + +## `ChartObject` + +|public method|description| +|--|--| +| `Destroy()` |public virtual void Destroy()
| + +## `CheckHelper` + +|public method|description| +|--|--| +| `CheckChart()` |public static string CheckChart(BaseChart chart)
| +| `CheckChart()` |public static string CheckChart(BaseGraph chart)
| + +## `ColorUtil` + +|public method|description| +|--|--| +| `GetColor()` |public static Color32 GetColor(string hexColorStr)
Convert the html string to color. | + +## `ComponentHandlerAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `ComponentHandlerAttribute()` |public ComponentHandlerAttribute(Type handler)
| +| `ComponentHandlerAttribute()` |public ComponentHandlerAttribute(Type handler, bool allowMultiple)
| + +## `ComponentHelper` + +|public method|description| +|--|--| +| `GetAngleAxis()` |public static AngleAxis GetAngleAxis(List components, int polarIndex)
| +| `GetRadiusAxis()` |public static RadiusAxis GetRadiusAxis(List components, int polarIndex)
| +| `GetXAxisOnZeroOffset()` |public static float GetXAxisOnZeroOffset(List components, XAxis axis)
| +| `GetYAxisOnZeroOffset()` |public static float GetYAxisOnZeroOffset(List components, YAxis axis)
| +| `IsAnyCategoryOfYAxis()` |public static bool IsAnyCategoryOfYAxis(List components)
| + +## `CoordOptionsAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord)
| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord, Type coord2)
| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord, Type coord2, Type coord3)
| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord, Type coord2, Type coord3, Type coord4)
| + +## `DataZoomContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `DataZoomHelper` + +|public method|description| +|--|--| +| `UpdateDataZoomRuntimeStartEndValue()` |public static void UpdateDataZoomRuntimeStartEndValue(DataZoom dataZoom, Serie serie)
| + +## `DateTimeUtil` + +|public method|description| +|--|--| +| `GetDateTime()` |public static DateTime GetDateTime(int timestamp)
| +| `GetTimestamp()` |public static int GetTimestamp()
| +| `GetTimestamp()` |public static int GetTimestamp(DateTime time)
| + +## `DefaultAnimationAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `DefaultAnimationAttribute()` |public DefaultAnimationAttribute(AnimationType handler)
| + +## `DefineSymbolsUtil` + +|public method|description| +|--|--| +| `AddGlobalDefine()` |public static void AddGlobalDefine(string symbol)
| +| `RemoveGlobalDefine()` |public static void RemoveGlobalDefine(string symbol)
| + +## `FormatterHelper` + +|public method|description| +|--|--| +| `NeedFormat()` |public static bool NeedFormat(string content)
| +| `ReplaceAxisLabelContent()` |public static void ReplaceAxisLabelContent(ref string content, string numericFormatter, double value)
| +| `ReplaceAxisLabelContent()` |public static void ReplaceAxisLabelContent(ref string content, string value)
| +| `TrimAndReplaceLine()` |public static string TrimAndReplaceLine(string content)
| +| `TrimAndReplaceLine()` |public static string TrimAndReplaceLine(StringBuilder sb)
| + +## `GridCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `HeatmapChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `IgnoreDoc` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `IgnoreDoc()` |public IgnoreDoc()
| + +## `InteractData` + +|public method|description| +|--|--| +| `Reset()` |public void Reset()
| +| `SetColor()` |public void SetColor(ref bool needInteract, Color32 color)
| +| `SetColor()` |public void SetColor(ref bool needInteract, Color32 color, Color32 toColor)
| +| `SetValue()` |public void SetValue(ref bool needInteract, float size)
| +| `SetValue()` |public void SetValue(ref bool needInteract, float size, bool highlight, float rate = 1.3f)
| +| `SetValueAndColor()` |public void SetValueAndColor(ref bool needInteract, float value, Color32 color)
| +| `SetValueAndColor()` |public void SetValueAndColor(ref bool needInteract, float value, Color32 color, Color32 toColor)
| +| `TryGetColor()` |public bool TryGetColor(ref Color32 color, ref bool interacting, float animationDuration = 250)
| +| `TryGetColor()` |public bool TryGetColor(ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250)
| +| `TryGetValue()` |public bool TryGetValue(ref float value, ref bool interacting, float animationDuration = 250)
| +| `TryGetValueAndColor()` |public bool TryGetValueAndColor(ref float value, ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250)
| + +## `LayerHelper` + +|public method|description| +|--|--| +| `IsFixedWidthHeight()` |public static bool IsFixedWidthHeight(RectTransform rt)
| +| `IsStretchPivot()` |public static bool IsStretchPivot(RectTransform rt)
| + +## `LegendContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `LegendHelper` + +|public method|description| +|--|--| +| `CheckDataHighlighted()` |public static bool CheckDataHighlighted(Serie serie, string legendName, bool heighlight)
| +| `CheckDataShow()` |public static bool CheckDataShow(Serie serie, string legendName, bool show)
| +| `GetContentColor()` |public static Color GetContentColor(BaseChart chart, int legendIndex, string legendName, Legend legend, ThemeStyle theme, bool active)
| +| `GetIconColor()` |public static Color GetIconColor(BaseChart chart, Legend legend, int readIndex, string legendName, bool active)
| +| `ResetItemPosition()` |public static void ResetItemPosition(Legend legend, Vector3 chartPos, float chartWidth, float chartHeight)
| + +## `LegendItem` + +|public method|description| +|--|--| +| `GetIconColor()` |public Color GetIconColor()
| +| `GetIconRect()` |public Rect GetIconRect()
| +| `SetActive()` |public void SetActive(bool active)
| +| `SetButton()` |public void SetButton(Button button)
| +| `SetContent()` |public bool SetContent(string content)
| +| `SetContentBackgroundColor()` |public void SetContentBackgroundColor(Color color)
| +| `SetContentColor()` |public void SetContentColor(Color color)
| +| `SetContentPosition()` |public void SetContentPosition(Vector3 offset)
| +| `SetIcon()` |public void SetIcon(Image icon)
| +| `SetIconActive()` |public void SetIconActive(bool active)
| +| `SetIconColor()` |public void SetIconColor(Color color)
| +| `SetIconImage()` |public void SetIconImage(Sprite image)
| +| `SetIconSize()` |public void SetIconSize(float width, float height)
| +| `SetObject()` |public void SetObject(GameObject obj)
| +| `SetPosition()` |public void SetPosition(Vector3 position)
| +| `SetText()` |public void SetText(ChartText text)
| +| `SetTextBackground()` |public void SetTextBackground(Image image)
| + +## `LineChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `ListFor` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `ListFor()` |public ListFor(Type type)
| + +## `ListForComponent` + +Inherits or Implemented: [ListFor](#ListFor) + +|public method|description| +|--|--| +| `ListForComponent()` |public ListForComponent(Type type) : base(type)
| + +## `ListForSerie` + +Inherits or Implemented: [ListFor](#ListFor) + +|public method|description| +|--|--| +| `ListForSerie()` |public ListForSerie(Type type) : base(type)
| + +## `MainComponentContext` + +## `MainComponentHandler` + +## `MainComponentHandler` + +Inherits or Implemented: [MainComponentHandler](#MainComponentHandler) + +## `MathUtil` + +|public method|description| +|--|--| +| `Abs()` |public static double Abs(double d)
| +| `Approximately()` |public static bool Approximately(double a, double b)
| +| `Clamp()` |public static double Clamp(double d, double min, double max)
| +| `Clamp01()` |public static double Clamp01(double value)
| +| `Lerp()` |public static double Lerp(double a, double b, double t)
| + +## `ObjectPool where T` + +Inherits or Implemented: [new()](#new()) + +|public method|description| +|--|--| +| `ClearAll()` |public void ClearAll()
| +| `Get()` |public T Get()
| +| `new()` |public class ObjectPool where T : new()
| +| `ObjectPool()` |public ObjectPool(UnityAction actionOnGet, UnityAction actionOnRelease, bool newIfEmpty = true)
| +| `Release()` |public void Release(T element)
| + +## `Painter` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic) + +|public method|description| +|--|--| +| `Init()` |public void Init()
| +| `Refresh()` |public void Refresh()
| +| `SetActive()` |public void SetActive(bool flag, bool isDebugMode = false)
| + +## `ParallelChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `ParallelCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `PieChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `PolarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `PolarCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `ProgressBar` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `PropertyUtil` + +|public method|description| +|--|--| +| `SetColor()` |public static bool SetColor(ref Color currentValue, Color newValue)
| +| `SetColor()` |public static bool SetColor(ref Color32 currentValue, Color32 newValue)
| + +## `RadarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `RadarCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `ReflectionUtil` + +|public method|description| +|--|--| +| `DeepCloneSerializeField()` |public static object DeepCloneSerializeField(object obj)
| +| `InvokeListAdd()` |public static void InvokeListAdd(object obj, FieldInfo field, object item)
| +| `InvokeListAddTo()` |public static void InvokeListAddTo(object obj, FieldInfo field, Action callback)
| +| `InvokeListClear()` |public static void InvokeListClear(object obj, FieldInfo field)
| +| `InvokeListCount()` |public static int InvokeListCount(object obj, FieldInfo field)
| +| `InvokeListGet()` |public static T InvokeListGet(object obj, FieldInfo field, int i)
| + +## `RequireChartComponentAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `RequireChartComponentAttribute()` |public RequireChartComponentAttribute(Type requiredComponent)
| +| `RequireChartComponentAttribute()` |public RequireChartComponentAttribute(Type requiredComponent, Type requiredComponent2)
| +| `RequireChartComponentAttribute()` |public RequireChartComponentAttribute(Type requiredComponent, Type requiredComponent2, Type requiredComponent3)
| + +## `RingChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `RuntimeUtil` + +|public method|description| +|--|--| +| `GetAllAssemblyTypes()` |public static IEnumerable GetAllAssemblyTypes()
| +| `GetAllTypesDerivedFrom()` |public static IEnumerable GetAllTypesDerivedFrom(Type type)
| +| `GetAllTypesDerivedFrom()` |public static IEnumerable GetAllTypesDerivedFrom()
| +| `HasSubclass()` |public static bool HasSubclass(Type type)
| + +## `ScatterChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SerieContext` + +## `SerieConvertAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(Type type)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie, Type serie2)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie, Type serie2, Type serie3)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie, Type serie2, Type serie3, Type serie4)
| + +## `SerieDataContext` + +|public method|description| +|--|--| +| `Reset()` |public void Reset()
| + +## `SerieDataExtraComponentAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(Type type)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute()
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7)
| + +## `SerieDataExtraFieldAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(string field)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute()
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6, string field7)
| + +## `SerieExtraComponentAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(Type type)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute()
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7)
| + +## `SerieHandler` + +## `SerieHandler` + +Inherits or Implemented: [SerieHandler where T](#SerieHandler where T),[Serie](#Serie) + +|public method|description| +|--|--| +| `GetSerieDataAutoColor()` |public virtual Color GetSerieDataAutoColor(SerieData serieData)
| +| `GetSerieDataLabelOffset()` |public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label)
| +| `GetSerieDataLabelPosition()` |public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)
| +| `GetSerieDataTitlePosition()` |public virtual Vector3 GetSerieDataTitlePosition(SerieData serieData, TitleStyle titleStyle)
| +| `InitComponent()` |public override void InitComponent()
| +| `OnLegendButtonClick()` |public override void OnLegendButtonClick(int index, string legendName, bool show)
| +| `OnLegendButtonEnter()` |public override void OnLegendButtonEnter(int index, string legendName)
| +| `OnLegendButtonExit()` |public override void OnLegendButtonExit(int index, string legendName)
| +| `RefreshEndLabelInternal()` |public virtual void RefreshEndLabelInternal()
| +| `RefreshLabelInternal()` |public override void RefreshLabelInternal()
| +| `RefreshLabelNextFrame()` |public override void RefreshLabelNextFrame()
| +| `RemoveComponent()` |public override void RemoveComponent()
| +| `Update()` |public override void Update()
| + +## `SerieHandlerAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `SerieHandlerAttribute()` |public SerieHandlerAttribute(Type handler)
| +| `SerieHandlerAttribute()` |public SerieHandlerAttribute(Type handler, bool allowMultiple)
| + +## `SerieHelper` + +|public method|description| +|--|--| +| `CopySerie()` |public static void CopySerie(Serie oldSerie, Serie newSerie)
| +| `GetAllMinMaxData()` |public static void GetAllMinMaxData(Serie serie, int ceilRate = 0, DataZoom dataZoom = null)
| +| `GetAreaColor()` |public static Color32 GetAreaColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
| +| `GetAreaStyle()` |public static AreaStyle GetAreaStyle(Serie serie, SerieData serieData)
| +| `GetAreaToColor()` |public static Color32 GetAreaToColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
| +| `GetAverageData()` |public static double GetAverageData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetItemColor()` |public static Color32 GetItemColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight, bool opacity = true)
| +| `GetItemColor0()` |public static Color32 GetItemColor0(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight, Color32 defaultColor)
| +| `GetItemFormatter()` |public static string GetItemFormatter(Serie serie, SerieData serieData, string defaultFormatter = null)
| +| `GetItemMarker()` |public static string GetItemMarker(Serie serie, SerieData serieData, string defaultMarker = null)
| +| `GetItemStyle()` |public static ItemStyle GetItemStyle(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetItemStyleEmphasis()` |public static ItemStyle GetItemStyleEmphasis(Serie serie, SerieData serieData)
| +| `GetItemToColor()` |public static Color32 GetItemToColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight, bool opacity = true)
| +| `GetLineColor()` |public static Color32 GetLineColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
| +| `GetLineStyle()` |public static LineStyle GetLineStyle(Serie serie, SerieData serieData)
| +| `GetMaxData()` |public static double GetMaxData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMaxSerieData()` |public static SerieData GetMaxSerieData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMedianData()` |public static double GetMedianData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMinData()` |public static double GetMinData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMinMaxData()` |public static void GetMinMaxData(Serie serie, out double min, out double max, DataZoom dataZoom = null, int dimension = 0)
Gets the maximum and minimum values of all data in the serie. | +| `GetMinSerieData()` |public static SerieData GetMinSerieData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetNumericFormatter()` |public static string GetNumericFormatter(Serie serie, SerieData serieData, string defaultFormatter = null)
| +| `GetSerieEmphasisLabel()` |public static LabelStyle GetSerieEmphasisLabel(Serie serie, SerieData serieData)
| +| `GetSerieLabel()` |public static LabelStyle GetSerieLabel(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetSerieLabelLine()` |public static LabelLine GetSerieLabelLine(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetSerieSymbol()` |public static SerieSymbol GetSerieSymbol(Serie serie, SerieData serieData)
| +| `GetSymbolBorder()` |public static float GetSymbolBorder(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight)
| +| `GetSymbolBorder()` |public static float GetSymbolBorder(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight, float defaultWidth)
| +| `GetSymbolBorderColor()` |public static Color32 GetSymbolBorderColor(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight)
| +| `GetSymbolCornerRadius()` |public static float[] GetSymbolCornerRadius(Serie serie, SerieData serieData, bool highlight)
| +| `GetTitleStyle()` |public static TitleStyle GetTitleStyle(Serie serie, SerieData serieData)
| +| `IsAllZeroValue()` |public static bool IsAllZeroValue(Serie serie, int dimension = 1)
Whether the data for the specified dimension of serie are all 0. | +| `IsDownPoint()` |public static bool IsDownPoint(Serie serie, int index)
| +| `UpdateCenter()` |public static void UpdateCenter(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight)
更新运行时中心点和半径 | +| `UpdateFilterData()` |public static void UpdateFilterData(Serie serie, DataZoom dataZoom)
根据dataZoom更新数据列表缓存 | +| `UpdateMinMaxData()` |public static void UpdateMinMaxData(Serie serie, int dimension, int ceilRate = 0, DataZoom dataZoom = null)
获得指定维数的最大最小值 | +| `UpdateRect()` |public static void UpdateRect(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight)
| +| `UpdateSerieRuntimeFilterData()` |public static void UpdateSerieRuntimeFilterData(Serie serie, bool filterInvisible = true)
| + +## `SerieLabelHelper` + +|public method|description| +|--|--| +| `AvoidLabelOverlap()` |public static void AvoidLabelOverlap(Serie serie, ComponentTheme theme)
| +| `CanShowLabel()` |public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
| +| `GetLabelColor()` |public static Color GetLabelColor(Serie serie, ThemeStyle theme, int index)
| +| `GetRealLabelPosition()` |public static Vector3 GetRealLabelPosition(Serie serie, SerieData serieData, LabelStyle label, LabelLine labelLine)
| +| `SetGaugeLabelText()` |public static void SetGaugeLabelText(Serie serie)
| +| `UpdatePieLabelPosition()` |public static void UpdatePieLabelPosition(Serie serie, SerieData serieData)
| + +## `SerieLabelPool` + +|public method|description| +|--|--| +| `ClearAll()` |public static void ClearAll()
| +| `Release()` |public static void Release(GameObject element)
| +| `ReleaseAll()` |public static void ReleaseAll(Transform parent)
| + +## `SerieParams` + +## `SeriesHelper` + +|public method|description| +|--|--| +| `GetLastStackSerie()` |public static Serie GetLastStackSerie(List series, Serie serie)
获得上一个同堆叠且显示的serie。 | +| `GetLegalSerieNameList()` |public static List GetLegalSerieNameList(List series)
| +| `GetMaxSerieDataCount()` |public static int GetMaxSerieDataCount(List series)
| +| `GetNameColor()` |public static Color GetNameColor(BaseChart chart, int index, string name)
| +| `GetSerieByVesselIndex()` |public static Serie GetSerieByVesselIndex(List series, int vesselIndex)
| +| `GetStackSeries()` |public static void GetStackSeries(List series, ref Dictionary> stackSeries)
获得堆叠系列列表 | +| `IsAnyClipSerie()` |public static bool IsAnyClipSerie(List series)
是否有需裁剪的serie。 | +| `IsLegalLegendName()` |public static bool IsLegalLegendName(string name)
| +| `IsStack()` |public static bool IsStack(List series)
是否由数据堆叠 | +| `UpdateSerieNameList()` |public static void UpdateSerieNameList(BaseChart chart, ref List serieNameList)
获得所有系列名,不包含空名字。 | +| `UpdateStackDataList()` |public static void UpdateStackDataList(List series, Serie currSerie, DataZoom dataZoom, List> dataList)
| + +## `SimplifiedBarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SimplifiedCandlestickChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SimplifiedLineChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SVG` + +|public method|description| +|--|--| +| `DrawPath()` |public static void DrawPath(VertexHelper vh, string path)
| +| `DrawPath()` |public static void DrawPath(VertexHelper vh, SVGPath path)
| +| `Test()` |public static void Test(VertexHelper vh)
| + +## `SVGImage` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic) + +## `SVGPath` + +|public method|description| +|--|--| +| `AddSegment()` |public void AddSegment(SVGPathSeg seg)
| +| `Draw()` |public void Draw(VertexHelper vh)
| +| `Parse()` |public static SVGPath Parse(string path)
| + +## `SVGPathSeg` + +|public method|description| +|--|--| +| `SVGPathSeg()` |public SVGPathSeg(SVGPathSegType type)
| + +## `TooltipContext` + +## `TooltipData` + +## `TooltipHelper` + +|public method|description| +|--|--| +| `GetItemNumericFormatter()` |public static string GetItemNumericFormatter(Tooltip tooltip, Serie serie, SerieData serieData)
| +| `GetLineColor()` |public static Color32 GetLineColor(Tooltip tooltip, ThemeStyle theme)
| +| `IsIgnoreItemFormatter()` |public static bool IsIgnoreItemFormatter(string itemFormatter)
| +| `LimitInRect()` |public static void LimitInRect(Tooltip tooltip, Rect chartRect)
| + +## `TooltipView` + +|public method|description| +|--|--| +| `CreateView()` |public static TooltipView CreateView(Tooltip tooltip, ThemeStyle theme, Transform parent)
| +| `GetCurrentPos()` |public Vector3 GetCurrentPos()
| +| `GetTargetPos()` |public Vector3 GetTargetPos()
| +| `Refresh()` |public void Refresh()
| +| `SetActive()` |public void SetActive(bool flag)
| +| `Update()` |public void Update()
| +| `UpdatePosition()` |public void UpdatePosition(Vector3 pos)
| + +## `TooltipViewItem` + +## `UGL` + +|public method|description| +|--|--| +| `DrawDiamond()` |public static void DrawDiamond(VertexHelper vh, Vector3 center, float size, Color32 color)
Draw a diamond. 画菱形(钻石形状) | +| `DrawDiamond()` |public static void DrawDiamond(VertexHelper vh, Vector3 center, float size, Color32 color, Color32 toColor)
Draw a diamond. 画菱形(钻石形状) | +| `DrawEllipse()` |public static void DrawEllipse(VertexHelper vh, Vector3 center, float w, float h, Color32 color, float smoothness = 1)
| +| `DrawLine()` |public static void DrawLine(VertexHelper vh, List points, float width, Color32 color, bool smooth, bool closepath = false)
| +| `DrawLine()` |public static void DrawLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, Color32 color)
Draw a line. 画直线 | +| `DrawLine()` |public static void DrawLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, Color32 color, Color32 toColor)
Draw a line. 画直线 | +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, Color32 color)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, Color32 color, Color32 toColor)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, float border, Color32 color)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, float border, Color32 color, Color32 toColor)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Vector3 p1, Vector3 p2, float radius, Color32 color)
Draw a rectangle. 画带长方形 | +| `DrawSquare()` |public static void DrawSquare(VertexHelper vh, Vector3 center, float radius, Color32 color)
Draw a square. 画正方形 | +| `DrawSvgPath()` |public static void DrawSvgPath(VertexHelper vh, string path)
| +| `DrawTriangle()` |public static void DrawTriangle(VertexHelper vh, Vector3 pos, float size, Color32 color)
| +| `DrawTriangle()` |public static void DrawTriangle(VertexHelper vh, Vector3 pos, float size, Color32 color, Color32 toColor)
| + +## `UGLExample` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic) + +## `UGLHelper` + +|public method|description| +|--|--| +| `GetAngle360()` |public static float GetAngle360(Vector2 from, Vector2 to)
获得0-360的角度(12点钟方向为0度) | +| `GetBezier()` |public static Vector3 GetBezier(float t, Vector3 sp, Vector3 cp, Vector3 ep)
| +| `GetBezier2()` |public static Vector3 GetBezier2(float t, Vector3 sp, Vector3 p1, Vector3 p2, Vector3 ep)
| +| `GetBezierList()` |public static List GetBezierList(Vector3 sp, Vector3 ep, int segment, Vector3 cp)
| +| `GetDire()` |public static Vector3 GetDire(float angle, bool isDegree = false)
| +| `GetIntersection()` |public static bool GetIntersection(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, ref Vector3 intersection)
获得两直线的交点 | +| `GetPos()` |public static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false)
| +| `GetVertialDire()` |public static Vector3 GetVertialDire(Vector3 dire)
| +| `IsClearColor()` |public static bool IsClearColor(Color color)
| +| `IsClearColor()` |public static bool IsClearColor(Color32 color)
| +| `IsPointInPolygon()` |public static bool IsPointInPolygon(Vector3 p, List polyons)
| +| `IsPointInPolygon()` |public static bool IsPointInPolygon(Vector3 p, List polyons)
| +| `IsPointInTriangle()` |public static bool IsPointInTriangle(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 check)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color color1, Color color2)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color32 color1, Color32 color2)
| +| `IsValueEqualsList()` |public static bool IsValueEqualsList(List list1, List list2)
| +| `IsValueEqualsString()` |public static bool IsValueEqualsString(string str1, string str2)
| +| `IsValueEqualsVector2()` |public static bool IsValueEqualsVector2(Vector2 v1, Vector2 v2)
| +| `IsValueEqualsVector3()` |public static bool IsValueEqualsVector3(Vector3 v1, Vector2 v2)
| +| `IsValueEqualsVector3()` |public static bool IsValueEqualsVector3(Vector3 v1, Vector3 v2)
| +| `IsZeroVector()` |public static bool IsZeroVector(Vector3 pos)
| +| `RotateRound()` |public static Vector3 RotateRound(Vector3 position, Vector3 center, Vector3 axis, float angle)
| + +## `VisualMapContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `VisualMapHelper` + +|public method|description| +|--|--| +| `AutoSetLineMinMax()` |public static void AutoSetLineMinMax(VisualMap visualMap, Serie serie, bool isY, Axis axis, Axis relativedAxis)
| +| `GetDimension()` |public static int GetDimension(VisualMap visualMap, int serieDataCount)
| +| `IsNeedAreaGradient()` |public static bool IsNeedAreaGradient(VisualMap visualMap)
| +| `IsNeedGradient()` |public static bool IsNeedGradient(VisualMap visualMap)
| +| `IsNeedLineGradient()` |public static bool IsNeedLineGradient(VisualMap visualMap)
| +| `SetMinMax()` |public static void SetMinMax(VisualMap visualMap, double min, double max)
| + +## `XChartsMgr` + +|public method|description| +|--|--| +| `AddChart()` |public static void AddChart(BaseChart chart)
| +| `ContainsChart()` |public static bool ContainsChart(BaseChart chart)
| +| `ContainsChart()` |public static bool ContainsChart(string chartName)
| +| `DisableTextMeshPro()` |public static void DisableTextMeshPro()
| +| `EnableTextMeshPro()` |public static void EnableTextMeshPro()
| +| `GetChart()` |public static BaseChart GetChart(string chartName)
| +| `GetCharts()` |public static List GetCharts(string chartName)
| +| `GetPackageFullPath()` |public static string GetPackageFullPath()
| +| `GetRepeatChartNameInfo()` |public static string GetRepeatChartNameInfo(BaseChart chart, string chartName)
| +| `IsExistTMPAssembly()` |public static bool IsExistTMPAssembly()
| +| `IsRepeatChartName()` |public static bool IsRepeatChartName(BaseChart chart, string chartName = null)
| +| `ModifyTMPRefence()` |public static bool ModifyTMPRefence(bool removeTMP = false)
| +| `RemoveAllChartObject()` |public static void RemoveAllChartObject()
| +| `RemoveChart()` |public static void RemoveChart(string chartName)
| + +## `XCResourceImporterWindow` + +Inherits or Implemented: [UnityEditor.EditorWindow](#UnityEditor.EditorWindow) + +|public method|description| +|--|--| +| `ShowPackageImporterWindow()` |public static void ShowPackageImporterWindow()
| + +## `XCThemeMgr` + +|public method|description| +|--|--| +| `AddTheme()` |public static void AddTheme(Theme theme)
| +| `CheckReloadTheme()` |public static void CheckReloadTheme()
| +| `ContainsTheme()` |public static bool ContainsTheme(string themeName)
| +| `ExportTheme()` |public static bool ExportTheme(Theme theme)
| +| `ExportTheme()` |public static bool ExportTheme(Theme theme, string themeNewName)
| +| `GetAllThemeNames()` |public static List GetAllThemeNames()
| +| `GetTheme()` |public static Theme GetTheme(string themeName)
| +| `GetTheme()` |public static Theme GetTheme(ThemeType type)
| +| `GetThemeAssetPath()` |public static string GetThemeAssetPath(string themeName)
| +| `GetThemeList()` |public static List GetThemeList()
| +| `LoadTheme()` |public static Theme LoadTheme(string themeName)
| +| `LoadTheme()` |public static Theme LoadTheme(ThemeType type)
| +| `ReloadThemeList()` |public static void ReloadThemeList()
重新加载主题列表 | +| `SwitchTheme()` |public static void SwitchTheme(BaseChart chart, string themeName)
| + +[XCharts Homepage](https://github.com/XCharts-Team/XCharts)
+[XCharts Configuration](XChartsConfiguration-EN.md)
+[XCharts FAQ](XChartsFAQ-EN.md) diff --git a/Assets/XCharts/Documentation/XChartsAPI-EN.md.meta b/Assets/XCharts/Documentation/XChartsAPI-EN.md.meta new file mode 100644 index 0000000..335be9a --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsAPI-EN.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 002217c6b4b5348bd86b5a6b881d2622 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsAPI-ZH.md b/Assets/XCharts/Documentation/XChartsAPI-ZH.md new file mode 100644 index 0000000..f7603f0 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsAPI-ZH.md @@ -0,0 +1,1075 @@ +# API + +[XCharts主页](https://github.com/XCharts-Team/XCharts)
+[XCharts配置项手册](XChartsConfiguration-ZH.md)
+[XCharts问答](XChartsFAQ-ZH.md) + +## Class + +- [AnimationStyleHelper](#AnimationStyleHelper) +- [AxisContext](#AxisContext) +- [AxisHandler](#AxisHandler) +- [AxisHelper](#AxisHelper) +- [BarChart](#BarChart) +- [BaseChart](#BaseChart) +- [BaseGraph](#BaseGraph) +- [CandlestickChart](#CandlestickChart) +- [ChartCached](#ChartCached) +- [ChartConst](#ChartConst) +- [ChartDrawer](#ChartDrawer) +- [ChartHelper](#ChartHelper) +- [ChartLabel](#ChartLabel) +- [ChartObject](#ChartObject) +- [CheckHelper](#CheckHelper) +- [ColorUtil](#ColorUtil) +- [ComponentHandlerAttribute](#ComponentHandlerAttribute) +- [ComponentHelper](#ComponentHelper) +- [CoordOptionsAttribute](#CoordOptionsAttribute) +- [DataZoomContext](#DataZoomContext) +- [DataZoomHelper](#DataZoomHelper) +- [DateTimeUtil](#DateTimeUtil) +- [DefaultAnimationAttribute](#DefaultAnimationAttribute) +- [DefineSymbolsUtil](#DefineSymbolsUtil) +- [FormatterHelper](#FormatterHelper) +- [GridCoordContext](#GridCoordContext) +- [HeatmapChart](#HeatmapChart) +- [IgnoreDoc](#IgnoreDoc) +- [InteractData](#InteractData) +- [LayerHelper](#LayerHelper) +- [LegendContext](#LegendContext) +- [LegendHelper](#LegendHelper) +- [LegendItem](#LegendItem) +- [LineChart](#LineChart) +- [ListFor](#ListFor) +- [ListForComponent](#ListForComponent) +- [ListForSerie](#ListForSerie) +- [MainComponentContext](#MainComponentContext) +- [MainComponentHandler](#MainComponentHandler) +- [MainComponentHandler](#MainComponentHandler) +- [MathUtil](#MathUtil) +- [ObjectPool where T](#ObjectPool where T) +- [Painter](#Painter) +- [ParallelChart](#ParallelChart) +- [ParallelCoordContext](#ParallelCoordContext) +- [PieChart](#PieChart) +- [PolarChart](#PolarChart) +- [PolarCoordContext](#PolarCoordContext) +- [ProgressBar](#ProgressBar) +- [PropertyUtil](#PropertyUtil) +- [RadarChart](#RadarChart) +- [RadarCoordContext](#RadarCoordContext) +- [ReflectionUtil](#ReflectionUtil) +- [RequireChartComponentAttribute](#RequireChartComponentAttribute) +- [RingChart](#RingChart) +- [RuntimeUtil](#RuntimeUtil) +- [ScatterChart](#ScatterChart) +- [SerieContext](#SerieContext) +- [SerieConvertAttribute](#SerieConvertAttribute) +- [SerieDataContext](#SerieDataContext) +- [SerieDataExtraComponentAttribute](#SerieDataExtraComponentAttribute) +- [SerieDataExtraFieldAttribute](#SerieDataExtraFieldAttribute) +- [SerieExtraComponentAttribute](#SerieExtraComponentAttribute) +- [SerieHandler](#SerieHandler) +- [SerieHandler](#SerieHandler) +- [SerieHandlerAttribute](#SerieHandlerAttribute) +- [SerieHelper](#SerieHelper) +- [SerieLabelHelper](#SerieLabelHelper) +- [SerieLabelPool](#SerieLabelPool) +- [SerieParams](#SerieParams) +- [SeriesHelper](#SeriesHelper) +- [SimplifiedBarChart](#SimplifiedBarChart) +- [SimplifiedCandlestickChart](#SimplifiedCandlestickChart) +- [SimplifiedLineChart](#SimplifiedLineChart) +- [SVG](#SVG) +- [SVGImage](#SVGImage) +- [SVGPath](#SVGPath) +- [SVGPathSeg](#SVGPathSeg) +- [TooltipContext](#TooltipContext) +- [TooltipData](#TooltipData) +- [TooltipHelper](#TooltipHelper) +- [TooltipView](#TooltipView) +- [TooltipViewItem](#TooltipViewItem) +- [UGL](#UGL) +- [UGLExample](#UGLExample) +- [UGLHelper](#UGLHelper) +- [VisualMapContext](#VisualMapContext) +- [VisualMapHelper](#VisualMapHelper) +- [XChartsMgr](#XChartsMgr) +- [XCResourceImporterWindow](#XCResourceImporterWindow) +- [XCThemeMgr](#XCThemeMgr) + +## `AnimationStyleHelper` + +|public method|description| +|--|--| +| `CheckDataAnimation()` |public static float CheckDataAnimation(BaseChart chart, Serie serie, int dataIndex, float destProgress, float startPorgress = 0)
| +| `GetAnimationPosition()` |public static bool GetAnimationPosition(AnimationStyle animation, bool isY, Vector3 lp, Vector3 cp, float progress, ref Vector3 ip)
| +| `UpdateAnimationType()` |public static void UpdateAnimationType(AnimationStyle animation, AnimationType defaultType)
| +| `UpdateSerieAnimation()` |public static void UpdateSerieAnimation(Serie serie)
| + +## `AxisContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `AxisHandler` + +Inherits or Implemented: [MainComponentHandler](#MainComponentHandler) + +## `AxisHelper` + +|public method|description| +|--|--| +| `AdjustCircleLabelPos()` |public static void AdjustCircleLabelPos(ChartLabel txt, Vector3 pos, Vector3 cenPos, float txtHig, Vector3 offset)
| +| `AdjustMinMaxValue()` |public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, int ceilRate = 0)
调整最大最小值 | +| `AdjustRadiusAxisLabelPos()` |public static void AdjustRadiusAxisLabelPos(ChartLabel txt, Vector3 pos, Vector3 cenPos, float txtHig, Vector3 offset)
| +| `GetAxisLineArrowOffset()` |public static float GetAxisLineArrowOffset(Axis axis)
包含箭头偏移的轴线长度 | +| `GetAxisPosition()` |public static float GetAxisPosition(GridCoord grid, Axis axis, double value, int dataCount = 0, DataZoom dataZoom = null)
| +| `GetAxisPositionValue()` |public static double GetAxisPositionValue(float xy, float axisLength, double axisRange, float axisStart, float axisOffset)
| +| `GetAxisPositionValue()` |public static double GetAxisPositionValue(GridCoord grid, Axis axis, Vector3 pos)
| +| `GetAxisValueDistance()` |public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value)
获得数值value在坐标轴上相对起点的距离 | +| `GetAxisValueLength()` |public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value)
获得数值value在坐标轴上对应的长度 | +| `GetAxisValuePosition()` |public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value)
获得数值value在坐标轴上的坐标位置 | +| `GetDataWidth()` |public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom)
获得一个类目数据在坐标系中代表的宽度 | +| `GetEachWidth()` |public static float GetEachWidth(Axis axis, float coordinateWidth, DataZoom dataZoom = null)
| +| `GetScaleNumber()` |public static int GetScaleNumber(Axis axis, float coordinateWidth, DataZoom dataZoom = null)
获得分割线条数 | +| `GetScaleWidth()` |public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null)
获得分割段宽度 | +| `GetSplitNumber()` |public static int GetSplitNumber(Axis axis, float coordinateWid, DataZoom dataZoom)
获得分割段数 | +| `NeedShowSplit()` |public static bool NeedShowSplit(Axis axis)
| + +## `BarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `BaseChart` + +Inherits or Implemented: [BaseGraph](#BaseGraph),[ISerializationCallbackReceiver](#ISerializationCallbackReceiver) + +|public method|description| +|--|--| +| `AddChartComponent()` |public MainComponent AddChartComponent(Type type)
| +| `AddData()` |public SerieData AddData(int serieIndex, DateTime time, double yValue, string dataName = null, string dataId = null)
添加(time,y)数据到指定的系列中。 | +| `AddData()` |public SerieData AddData(int serieIndex, double data, string dataName = null, string dataId = null)
添加一个数据到指定的系列中。 | +| `AddData()` |public SerieData AddData(int serieIndex, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
| +| `AddData()` |public SerieData AddData(int serieIndex, double xValue, double yValue, string dataName = null, string dataId = null)
添加(x,y)数据到指定系列中。 | +| `AddData()` |public SerieData AddData(int serieIndex, List multidimensionalData, string dataName = null, string dataId = null)
添加多维数据(x,y,z...)到指定的系列中。 | +| `AddData()` |public SerieData AddData(string serieName, DateTime time, double yValue, string dataName = null, string dataId = null)
添加(time,y)数据到指定的系列中。 | +| `AddData()` |public SerieData AddData(string serieName, double data, string dataName = null, string dataId = null)
If serieName doesn't exist in legend,will be add to legend. | +| `AddData()` |public SerieData AddData(string serieName, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
| +| `AddData()` |public SerieData AddData(string serieName, double xValue, double yValue, string dataName = null, string dataId = null)
添加(x,y)数据到指定系列中。 | +| `AddData()` |public SerieData AddData(string serieName, List multidimensionalData, string dataName = null, string dataId = null)
添加多维数据(x,y,z...)到指定的系列中。 | +| `AddXAxisData()` |public void AddXAxisData(string category, int xAxisIndex = 0)
添加一个类目数据到指定的x轴。 | +| `AddXAxisIcon()` |public void AddXAxisIcon(Sprite icon, int xAxisIndex = 0)
添加一个图标到指定的x轴。 | +| `AddYAxisData()` |public void AddYAxisData(string category, int yAxisIndex = 0)
添加一个类目数据到指定的y轴。 | +| `AddYAxisIcon()` |public void AddYAxisIcon(Sprite icon, int yAxisIndex = 0)
添加一个图标到指定的y轴。 | +| `AnimationEnable()` |public void AnimationEnable(bool flag)
启用或关闭起始动画。 | +| `AnimationFadeIn()` |public void AnimationFadeIn()
开始渐入动画。 | +| `AnimationFadeOut()` |public void AnimationFadeOut()
开始渐出动画。 | +| `AnimationPause()` |public void AnimationPause()
暂停动画。 | +| `AnimationReset()` |public void AnimationReset()
重置动画。 | +| `AnimationResume()` |public void AnimationResume()
继续动画。 | +| `CanAddChartComponent()` |public bool CanAddChartComponent(Type type)
| +| `CanAddSerie()` |public bool CanAddSerie(Type type)
| +| `CanMultipleComponent()` |public bool CanMultipleComponent(Type type)
| +| `ClampInChart()` |public void ClampInChart(ref Vector3 pos)
| +| `ClampInGrid()` |public Vector3 ClampInGrid(GridCoord grid, Vector3 pos)
| +| `ClearData()` |public virtual void ClearData()
It just emptying all of serie's data without emptying the list of series. | +| `ClickLegendButton()` |public void ClickLegendButton(int legendIndex, string legendName, bool show)
点击图例按钮 | +| `CovertSerie()` |public bool CovertSerie(Serie serie, Type type)
| +| `CovertXYAxis()` |public void CovertXYAxis(int index)
转换X轴和Y轴的配置 | +| `GenerateDefaultSerieName()` |public string GenerateDefaultSerieName()
| +| `GetAllSerieDataCount()` |public int GetAllSerieDataCount()
| +| `GetChartBackgroundColor()` |public Color32 GetChartBackgroundColor()
| +| `GetChartComponentNum()` |public int GetChartComponentNum(Type type)
| +| `GetData()` |public double GetData(int serieIndex, int dataIndex, int dimension = 1)
| +| `GetData()` |public double GetData(string serieName, int dataIndex, int dimension = 1)
| +| `GetDataZoomOfAxis()` |public DataZoom GetDataZoomOfAxis(Axis axis)
| +| `GetDataZoomOfSerie()` |public void GetDataZoomOfSerie(Serie serie, out DataZoom xDataZoom, out DataZoom yDataZoom)
| +| `GetGrid()` |public GridCoord GetGrid(Vector2 local)
| +| `GetGridOfDataZoom()` |public GridCoord GetGridOfDataZoom(DataZoom dataZoom)
| +| `GetItemColor()` |public Color32 GetItemColor(Serie serie, bool highlight = false)
| +| `GetItemColor()` |public Color32 GetItemColor(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetLegendRealShowNameColor()` |public Color32 GetLegendRealShowNameColor(string name)
| +| `GetLegendRealShowNameIndex()` |public int GetLegendRealShowNameIndex(string name)
| +| `GetPainter()` |public Painter GetPainter(int index)
| +| `GetSerie()` |public Serie GetSerie(int serieIndex)
| +| `GetSerie()` |public Serie GetSerie(string serieName)
| +| `GetSeriesMinMaxValue()` |public virtual void GetSeriesMinMaxValue(Axis axis, int axisIndex, out double tempMinValue, out double tempMaxValue)
| +| `GetTitlePosition()` |public Vector3 GetTitlePosition(Title title)
| +| `GetVisualMapOfSerie()` |public VisualMap GetVisualMapOfSerie(Serie serie)
| +| `GetXLerpColor()` |public Color32 GetXLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
| +| `GetYLerpColor()` |public Color32 GetYLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
| +| `HasChartComponent()` |public bool HasChartComponent(Type type)
| +| `HasChartComponent()` |public bool HasChartComponent()
| +| `HasSerie()` |public bool HasSerie(Type type)
| +| `Init()` |public void Init(bool defaultChart = true)
| +| `InitAxisRuntimeData()` |public virtual void InitAxisRuntimeData(Axis axis)
| +| `InsertSerie()` |public void InsertSerie(Serie serie, int index = -1, bool addToHead = false)
| +| `Internal_CheckAnimation()` |public void Internal_CheckAnimation()
| +| `IsActiveByLegend()` |public virtual bool IsActiveByLegend(string legendName)
获得指定图例名字的系列是否显示。 | +| `IsAllAxisCategory()` |public bool IsAllAxisCategory()
纯类目轴。 | +| `IsAllAxisValue()` |public bool IsAllAxisValue()
纯数值坐标轴(数值轴或对数轴)。 | +| `IsInAnyGrid()` |public bool IsInAnyGrid(Vector2 local)
| +| `IsInChart()` |public bool IsInChart(float x, float y)
| +| `IsInChart()` |public bool IsInChart(Vector2 local)
坐标是否在图表范围内 | +| `IsSerieName()` |public bool IsSerieName(string name)
| +| `MoveDownSerie()` |public bool MoveDownSerie(int serieIndex)
| +| `MoveUpSerie()` |public bool MoveUpSerie(int serieIndex)
| +| `OnAfterDeserialize()` |public void OnAfterDeserialize()
| +| `OnBeforeSerialize()` |public void OnBeforeSerialize()
| +| `OnBeginDrag()` |public override void OnBeginDrag(PointerEventData eventData)
| +| `OnDataZoomRangeChanged()` |public virtual void OnDataZoomRangeChanged(DataZoom dataZoom)
| +| `OnDrag()` |public override void OnDrag(PointerEventData eventData)
| +| `OnEndDrag()` |public override void OnEndDrag(PointerEventData eventData)
| +| `OnLegendButtonClick()` |public virtual void OnLegendButtonClick(int index, string legendName, bool show)
| +| `OnLegendButtonEnter()` |public virtual void OnLegendButtonEnter(int index, string legendName)
| +| `OnLegendButtonExit()` |public virtual void OnLegendButtonExit(int index, string legendName)
| +| `OnPointerClick()` |public override void OnPointerClick(PointerEventData eventData)
| +| `OnPointerDown()` |public override void OnPointerDown(PointerEventData eventData)
| +| `OnPointerEnter()` |public override void OnPointerEnter(PointerEventData eventData)
| +| `OnPointerExit()` |public override void OnPointerExit(PointerEventData eventData)
| +| `OnPointerUp()` |public override void OnPointerUp(PointerEventData eventData)
| +| `OnScroll()` |public override void OnScroll(PointerEventData eventData)
| +| `RefreshBasePainter()` |public void RefreshBasePainter()
| +| `RefreshChart()` |public void RefreshChart()
在下一帧刷新整个图表。 | +| `RefreshChart()` |public void RefreshChart(int serieIndex)
在下一帧刷新图表的指定serie。 | +| `RefreshChart()` |public void RefreshChart(Serie serie)
在下一帧刷新图表的指定serie。 | +| `RefreshDataZoom()` |public void RefreshDataZoom()
在下一帧刷新DataZoom | +| `RefreshPainter()` |public void RefreshPainter(int index)
| +| `RefreshPainter()` |public void RefreshPainter(Serie serie)
| +| `RefreshTopPainter()` |public void RefreshTopPainter()
| +| `RemoveAllChartComponent()` |public void RemoveAllChartComponent()
| +| `RemoveChartComponent()` |public bool RemoveChartComponent(MainComponent component)
| +| `RemoveChartComponent()` |public bool RemoveChartComponent(Type type, int index = 0)
| +| `RemoveChartComponent()` |public bool RemoveChartComponent(int index = 0)
| +| `RemoveChartComponents()` |public int RemoveChartComponents(Type type)
| +| `RemoveChartComponents()` |public int RemoveChartComponents()
| +| `RemoveData()` |public virtual void RemoveData()
The series list is also cleared. | +| `RemoveData()` |public virtual void RemoveData(string serieName)
清除指定系列名称的数据。 | +| `RemoveSerie()` |public void RemoveSerie(int serieIndex)
| +| `RemoveSerie()` |public void RemoveSerie(Serie serie)
| +| `RemoveSerie()` |public void RemoveSerie(string serieName)
| +| `ReplaceSerie()` |public bool ReplaceSerie(Serie oldSerie, Serie newSerie)
| +| `SetBasePainterMaterial()` |public void SetBasePainterMaterial(Material material)
设置Base Painter的材质球 | +| `SetMaxCache()` |public void SetMaxCache(int maxCache)
设置可缓存的最大数据量。当数据量超过该值时,会自动删除第一个值再加入最新值。 | +| `SetPainterActive()` |public void SetPainterActive(int index, bool flag)
| +| `SetSerieActive()` |public void SetSerieActive(int serieIndex, bool active)
设置指定系列是否显示。 | +| `SetSerieActive()` |public void SetSerieActive(Serie serie, bool active)
| +| `SetSerieActive()` |public void SetSerieActive(string serieName, bool active)
设置指定系列是否显示。 | +| `SetSeriePainterMaterial()` |public void SetSeriePainterMaterial(Material material)
设置Serie Painter的材质球 | +| `SetTopPainterMaterial()` |public void SetTopPainterMaterial(Material material)
设置Top Painter的材质球 | +| `TryAddChartComponent()` |public bool TryAddChartComponent(Type type)
| +| `TryGetChartComponent()` |public bool TryGetChartComponent(out T component, int index = 0)
| +| `UdpateXAxisIcon()` |public void UdpateXAxisIcon(int index, Sprite icon, int xAxisIndex = 0)
更新X轴图标。 | +| `UpdateData()` |public bool UpdateData(int serieIndex, int dataIndex, double value)
更新指定系列中的指定索引数据。 | +| `UpdateData()` |public bool UpdateData(int serieIndex, int dataIndex, int dimension, double value)
更新指定系列指定索引指定维数的数据。维数从0开始。 | +| `UpdateData()` |public bool UpdateData(int serieIndex, int dataIndex, List multidimensionalData)
更新指定系列指定索引的数据项的多维数据。 | +| `UpdateData()` |public bool UpdateData(string serieName, int dataIndex, double value)
更新指定系列中的指定索引数据。 | +| `UpdateData()` |public bool UpdateData(string serieName, int dataIndex, int dimension, double value)
更新指定系列指定索引指定维数的数据。维数从0开始。 | +| `UpdateData()` |public bool UpdateData(string serieName, int dataIndex, List multidimensionalData)
更新指定系列指定索引的数据项的多维数据。 | +| `UpdateDataName()` |public bool UpdateDataName(int serieIndex, int dataIndex, string dataName)
更新指定系列中的指定索引数据名称。 | +| `UpdateDataName()` |public bool UpdateDataName(string serieName, int dataIndex, string dataName)
更新指定系列中的指定索引数据名称。 | +| `UpdateLegendColor()` |public virtual void UpdateLegendColor(string legendName, bool active)
| +| `UpdateTheme()` |public bool UpdateTheme(ThemeType theme)
切换内置主题。 | +| `UpdateTheme()` |public void UpdateTheme(Theme theme)
切换图表主题。 | +| `UpdateXAxisData()` |public void UpdateXAxisData(int index, string category, int xAxisIndex = 0)
更新X轴类目数据。 | +| `UpdateYAxisData()` |public void UpdateYAxisData(int index, string category, int yAxisIndex = 0)
更新Y轴类目数据。 | +| `UpdateYAxisIcon()` |public void UpdateYAxisIcon(int index, Sprite icon, int yAxisIndex = 0)
更新Y轴图标。 | + +## `BaseGraph` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic),[IPointerDownHandler](#IPointerDownHandler),[IPointerUpHandler](#IPointerUpHandler),[](#) + +|public method|description| +|--|--| +| `CheckWarning()` |public string CheckWarning()
检测警告信息。 | +| `OnBeginDrag()` |public virtual void OnBeginDrag(PointerEventData eventData)
| +| `OnDrag()` |public virtual void OnDrag(PointerEventData eventData)
| +| `OnEndDrag()` |public virtual void OnEndDrag(PointerEventData eventData)
| +| `OnPointerClick()` |public virtual void OnPointerClick(PointerEventData eventData)
| +| `OnPointerDown()` |public virtual void OnPointerDown(PointerEventData eventData)
| +| `OnPointerEnter()` |public virtual void OnPointerEnter(PointerEventData eventData)
| +| `OnPointerExit()` |public virtual void OnPointerExit(PointerEventData eventData)
| +| `OnPointerUp()` |public virtual void OnPointerUp(PointerEventData eventData)
| +| `OnScroll()` |public virtual void OnScroll(PointerEventData eventData)
| +| `RebuildChartObject()` |public void RebuildChartObject()
移除并重新创建所有图表的Object。 | +| `RefreshAllComponent()` |public void RefreshAllComponent()
| +| `RefreshGraph()` |public void RefreshGraph()
在下一帧刷新图形。 | +| `ScreenPointToChartPoint()` |public bool ScreenPointToChartPoint(Vector2 screenPoint, out Vector2 chartPoint)
| +| `SetPainterDirty()` |public void SetPainterDirty()
重新初始化Painter | +| `SetSize()` |public virtual void SetSize(float width, float height)
设置图形的宽高(在非stretch pivot下才有效,其他情况需要自己调整RectTransform) | + +## `CandlestickChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `ChartCached` + +|public method|description| +|--|--| +| `ColorToDotStr()` |public static string ColorToDotStr(Color color)
| +| `ColorToStr()` |public static string ColorToStr(Color color)
| +| `FloatToStr()` |public static string FloatToStr(double value, string numericFormatter = "F", int precision = 0)
| +| `GetSerieLabelName()` |public static string GetSerieLabelName(string prefix, int i, int j)
| +| `IntToStr()` |public static string IntToStr(int value, string numericFormatter = "")
| +| `NumberToStr()` |public static string NumberToStr(double value, string formatter)
| + +## `ChartConst` + +## `ChartDrawer` + +## `ChartHelper` + +|public method|description| +|--|--| +| `ActiveAllObject()` |public static void ActiveAllObject(Transform parent, bool active, string match = null)
| +| `AddIcon()` |public static Image AddIcon(string name, Transform parent, IconStyle iconStyle)
| +| `Cancat()` |public static string Cancat(string str1, int i)
| +| `Cancat()` |public static string Cancat(string str1, string str2)
| +| `ClearEventListener()` |public static void ClearEventListener(GameObject obj)
| +| `CopyArray()` |public static bool CopyArray(T[] toList, T[] fromList)
| +| `CopyList()` |public static bool CopyList(List toList, List fromList)
| +| `DestoryGameObject()` |public static void DestoryGameObject(GameObject go)
| +| `DestoryGameObject()` |public static void DestoryGameObject(Transform parent, string childName)
| +| `DestoryGameObjectByMatch()` |public static void DestoryGameObjectByMatch(Transform parent, string match)
| +| `DestroyAllChildren()` |public static void DestroyAllChildren(Transform parent)
| +| `GetActualValue()` |public static float GetActualValue(float valueOrRate, float total, float maxRate = 1.5f)
| +| `GetAngle360()` |public static float GetAngle360(Vector2 from, Vector2 to)
获得0-360的角度(12点钟方向为0度) | +| `GetColor()` |public static Color32 GetColor(string hexColorStr)
| +| `GetDire()` |public static Vector3 GetDire(float angle, bool isDegree = false)
| +| `GetFloatAccuracy()` |public static int GetFloatAccuracy(double value)
| +| `GetFullName()` |public static string GetFullName(Transform transform)
| +| `GetHighlightColor()` |public static Color32 GetHighlightColor(Color32 color, float rate = 0.8f)
| +| `GetLastValue()` |public static Vector3 GetLastValue(List list)
| +| `GetMaxDivisibleValue()` |public static double GetMaxDivisibleValue(double max, int ceilRate)
| +| `GetMaxLogValue()` |public static double GetMaxLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber)
| +| `GetMinDivisibleValue()` |public static double GetMinDivisibleValue(double min, int ceilRate)
| +| `GetMinLogValue()` |public static double GetMinLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber)
| +| `GetPointList()` |public static void GetPointList(ref List posList, Vector3 sp, Vector3 ep, float k = 30f)
| +| `GetPos()` |public static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false)
| +| `GetPosition()` |public static Vector3 GetPosition(Vector3 center, float angle, float radius)
| +| `GetVertialDire()` |public static Vector3 GetVertialDire(Vector3 dire)
| +| `HideAllObject()` |public static void HideAllObject(GameObject obj, string match = null)
| +| `HideAllObject()` |public static void HideAllObject(Transform parent, string match = null)
| +| `IsClearColor()` |public static bool IsClearColor(Color color)
| +| `IsClearColor()` |public static bool IsClearColor(Color32 color)
| +| `IsColorAlphaZero()` |public static bool IsColorAlphaZero(Color color)
| +| `IsEquals()` |public static bool IsEquals(double d1, double d2)
| +| `IsEquals()` |public static bool IsEquals(float d1, float d2)
| +| `IsIngore()` |public static bool IsIngore(Vector3 pos)
| +| `IsInRect()` |public static bool IsInRect(Vector3 pos, float xMin, float xMax, float yMin, float yMax)
| +| `IsPointInQuadrilateral()` |public static bool IsPointInQuadrilateral(Vector3 P, Vector3 A, Vector3 B, Vector3 C, Vector3 D)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color color1, Color color2)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color32 color1, Color32 color2)
| +| `IsValueEqualsList()` |public static bool IsValueEqualsList(List list1, List list2)
| +| `IsValueEqualsString()` |public static bool IsValueEqualsString(string str1, string str2)
| +| `IsValueEqualsVector2()` |public static bool IsValueEqualsVector2(Vector2 v1, Vector2 v2)
| +| `IsValueEqualsVector3()` |public static bool IsValueEqualsVector3(Vector3 v1, Vector3 v2)
| +| `IsZeroVector()` |public static bool IsZeroVector(Vector3 pos)
| +| `ParseFloatFromString()` |public static List ParseFloatFromString(string jsonData)
| +| `ParseStringFromString()` |public static List ParseStringFromString(string jsonData)
| +| `RemoveComponent()` |public static void RemoveComponent(GameObject gameObject)
| +| `RotateRound()` |public static Vector3 RotateRound(Vector3 position, Vector3 center, Vector3 axis, float angle)
| +| `SetActive()` |public static void SetActive(GameObject gameObject, bool active)
| +| `SetActive()` |public static void SetActive(Image image, bool active)
| +| `SetActive()` |public static void SetActive(Text text, bool active)
| +| `SetActive()` |public static void SetActive(Transform transform, bool active)
通过设置scale实现是否显示,优化性能,减少GC | +| `SetColorOpacity()` |public static void SetColorOpacity(ref Color32 color, float opacity)
| + +## `ChartLabel` + +Inherits or Implemented: [Image](#Image) + +|public method|description| +|--|--| +| `GetHeight()` |public float GetHeight()
| +| `GetPosition()` |public Vector3 GetPosition()
| +| `GetTextHeight()` |public float GetTextHeight()
| +| `GetTextWidth()` |public float GetTextWidth()
| +| `GetWidth()` |public float GetWidth()
| +| `SetActive()` |public void SetActive(bool flag)
| +| `SetIcon()` |public void SetIcon(Image image)
| +| `SetIconActive()` |public void SetIconActive(bool flag)
| +| `SetIconSize()` |public void SetIconSize(float width, float height)
| +| `SetIconSprite()` |public void SetIconSprite(Sprite sprite)
| +| `SetPadding()` |public void SetPadding(float[] padding)
| +| `SetPosition()` |public void SetPosition(Vector3 position)
| +| `SetRectPosition()` |public void SetRectPosition(Vector3 position)
| +| `SetSize()` |public void SetSize(float width, float height)
| +| `SetText()` |public bool SetText(string text)
| +| `SetTextActive()` |public void SetTextActive(bool flag)
| +| `SetTextColor()` |public void SetTextColor(Color color)
| +| `SetTextPadding()` |public void SetTextPadding(TextPadding padding)
| +| `SetTextRotate()` |public void SetTextRotate(float rotate)
| +| `UpdateIcon()` |public void UpdateIcon(IconStyle iconStyle, Sprite sprite = null)
| + +## `ChartObject` + +|public method|description| +|--|--| +| `Destroy()` |public virtual void Destroy()
| + +## `CheckHelper` + +|public method|description| +|--|--| +| `CheckChart()` |public static string CheckChart(BaseChart chart)
| +| `CheckChart()` |public static string CheckChart(BaseGraph chart)
| + +## `ColorUtil` + +|public method|description| +|--|--| +| `GetColor()` |public static Color32 GetColor(string hexColorStr)
将字符串颜色值转成Color。 | + +## `ComponentHandlerAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `ComponentHandlerAttribute()` |public ComponentHandlerAttribute(Type handler)
| +| `ComponentHandlerAttribute()` |public ComponentHandlerAttribute(Type handler, bool allowMultiple)
| + +## `ComponentHelper` + +|public method|description| +|--|--| +| `GetAngleAxis()` |public static AngleAxis GetAngleAxis(List components, int polarIndex)
| +| `GetRadiusAxis()` |public static RadiusAxis GetRadiusAxis(List components, int polarIndex)
| +| `GetXAxisOnZeroOffset()` |public static float GetXAxisOnZeroOffset(List components, XAxis axis)
| +| `GetYAxisOnZeroOffset()` |public static float GetYAxisOnZeroOffset(List components, YAxis axis)
| +| `IsAnyCategoryOfYAxis()` |public static bool IsAnyCategoryOfYAxis(List components)
| + +## `CoordOptionsAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord)
| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord, Type coord2)
| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord, Type coord2, Type coord3)
| +| `CoordOptionsAttribute()` |public CoordOptionsAttribute(Type coord, Type coord2, Type coord3, Type coord4)
| + +## `DataZoomContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `DataZoomHelper` + +|public method|description| +|--|--| +| `UpdateDataZoomRuntimeStartEndValue()` |public static void UpdateDataZoomRuntimeStartEndValue(DataZoom dataZoom, Serie serie)
| + +## `DateTimeUtil` + +|public method|description| +|--|--| +| `GetDateTime()` |public static DateTime GetDateTime(int timestamp)
| +| `GetTimestamp()` |public static int GetTimestamp()
| +| `GetTimestamp()` |public static int GetTimestamp(DateTime time)
| + +## `DefaultAnimationAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `DefaultAnimationAttribute()` |public DefaultAnimationAttribute(AnimationType handler)
| + +## `DefineSymbolsUtil` + +|public method|description| +|--|--| +| `AddGlobalDefine()` |public static void AddGlobalDefine(string symbol)
| +| `RemoveGlobalDefine()` |public static void RemoveGlobalDefine(string symbol)
| + +## `FormatterHelper` + +|public method|description| +|--|--| +| `NeedFormat()` |public static bool NeedFormat(string content)
| +| `ReplaceAxisLabelContent()` |public static void ReplaceAxisLabelContent(ref string content, string numericFormatter, double value)
| +| `ReplaceAxisLabelContent()` |public static void ReplaceAxisLabelContent(ref string content, string value)
| +| `TrimAndReplaceLine()` |public static string TrimAndReplaceLine(string content)
| +| `TrimAndReplaceLine()` |public static string TrimAndReplaceLine(StringBuilder sb)
| + +## `GridCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `HeatmapChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `IgnoreDoc` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `IgnoreDoc()` |public IgnoreDoc()
| + +## `InteractData` + +|public method|description| +|--|--| +| `Reset()` |public void Reset()
| +| `SetColor()` |public void SetColor(ref bool needInteract, Color32 color)
| +| `SetColor()` |public void SetColor(ref bool needInteract, Color32 color, Color32 toColor)
| +| `SetValue()` |public void SetValue(ref bool needInteract, float size)
| +| `SetValue()` |public void SetValue(ref bool needInteract, float size, bool highlight, float rate = 1.3f)
| +| `SetValueAndColor()` |public void SetValueAndColor(ref bool needInteract, float value, Color32 color)
| +| `SetValueAndColor()` |public void SetValueAndColor(ref bool needInteract, float value, Color32 color, Color32 toColor)
| +| `TryGetColor()` |public bool TryGetColor(ref Color32 color, ref bool interacting, float animationDuration = 250)
| +| `TryGetColor()` |public bool TryGetColor(ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250)
| +| `TryGetValue()` |public bool TryGetValue(ref float value, ref bool interacting, float animationDuration = 250)
| +| `TryGetValueAndColor()` |public bool TryGetValueAndColor(ref float value, ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250)
| + +## `LayerHelper` + +|public method|description| +|--|--| +| `IsFixedWidthHeight()` |public static bool IsFixedWidthHeight(RectTransform rt)
| +| `IsStretchPivot()` |public static bool IsStretchPivot(RectTransform rt)
| + +## `LegendContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `LegendHelper` + +|public method|description| +|--|--| +| `CheckDataHighlighted()` |public static bool CheckDataHighlighted(Serie serie, string legendName, bool heighlight)
| +| `CheckDataShow()` |public static bool CheckDataShow(Serie serie, string legendName, bool show)
| +| `GetContentColor()` |public static Color GetContentColor(BaseChart chart, int legendIndex, string legendName, Legend legend, ThemeStyle theme, bool active)
| +| `GetIconColor()` |public static Color GetIconColor(BaseChart chart, Legend legend, int readIndex, string legendName, bool active)
| +| `ResetItemPosition()` |public static void ResetItemPosition(Legend legend, Vector3 chartPos, float chartWidth, float chartHeight)
| + +## `LegendItem` + +|public method|description| +|--|--| +| `GetIconColor()` |public Color GetIconColor()
| +| `GetIconRect()` |public Rect GetIconRect()
| +| `SetActive()` |public void SetActive(bool active)
| +| `SetButton()` |public void SetButton(Button button)
| +| `SetContent()` |public bool SetContent(string content)
| +| `SetContentBackgroundColor()` |public void SetContentBackgroundColor(Color color)
| +| `SetContentColor()` |public void SetContentColor(Color color)
| +| `SetContentPosition()` |public void SetContentPosition(Vector3 offset)
| +| `SetIcon()` |public void SetIcon(Image icon)
| +| `SetIconActive()` |public void SetIconActive(bool active)
| +| `SetIconColor()` |public void SetIconColor(Color color)
| +| `SetIconImage()` |public void SetIconImage(Sprite image)
| +| `SetIconSize()` |public void SetIconSize(float width, float height)
| +| `SetObject()` |public void SetObject(GameObject obj)
| +| `SetPosition()` |public void SetPosition(Vector3 position)
| +| `SetText()` |public void SetText(ChartText text)
| +| `SetTextBackground()` |public void SetTextBackground(Image image)
| + +## `LineChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `ListFor` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `ListFor()` |public ListFor(Type type)
| + +## `ListForComponent` + +Inherits or Implemented: [ListFor](#ListFor) + +|public method|description| +|--|--| +| `ListForComponent()` |public ListForComponent(Type type) : base(type)
| + +## `ListForSerie` + +Inherits or Implemented: [ListFor](#ListFor) + +|public method|description| +|--|--| +| `ListForSerie()` |public ListForSerie(Type type) : base(type)
| + +## `MainComponentContext` + +## `MainComponentHandler` + +## `MainComponentHandler` + +Inherits or Implemented: [MainComponentHandler](#MainComponentHandler) + +## `MathUtil` + +|public method|description| +|--|--| +| `Abs()` |public static double Abs(double d)
| +| `Approximately()` |public static bool Approximately(double a, double b)
| +| `Clamp()` |public static double Clamp(double d, double min, double max)
| +| `Clamp01()` |public static double Clamp01(double value)
| +| `Lerp()` |public static double Lerp(double a, double b, double t)
| + +## `ObjectPool where T` + +Inherits or Implemented: [new()](#new()) + +|public method|description| +|--|--| +| `ClearAll()` |public void ClearAll()
| +| `Get()` |public T Get()
| +| `new()` |public class ObjectPool where T : new()
| +| `ObjectPool()` |public ObjectPool(UnityAction actionOnGet, UnityAction actionOnRelease, bool newIfEmpty = true)
| +| `Release()` |public void Release(T element)
| + +## `Painter` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic) + +|public method|description| +|--|--| +| `Init()` |public void Init()
| +| `Refresh()` |public void Refresh()
| +| `SetActive()` |public void SetActive(bool flag, bool isDebugMode = false)
| + +## `ParallelChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `ParallelCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `PieChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `PolarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `PolarCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `ProgressBar` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `PropertyUtil` + +|public method|description| +|--|--| +| `SetColor()` |public static bool SetColor(ref Color currentValue, Color newValue)
| +| `SetColor()` |public static bool SetColor(ref Color32 currentValue, Color32 newValue)
| + +## `RadarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `RadarCoordContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `ReflectionUtil` + +|public method|description| +|--|--| +| `DeepCloneSerializeField()` |public static object DeepCloneSerializeField(object obj)
| +| `InvokeListAdd()` |public static void InvokeListAdd(object obj, FieldInfo field, object item)
| +| `InvokeListAddTo()` |public static void InvokeListAddTo(object obj, FieldInfo field, Action callback)
| +| `InvokeListClear()` |public static void InvokeListClear(object obj, FieldInfo field)
| +| `InvokeListCount()` |public static int InvokeListCount(object obj, FieldInfo field)
| +| `InvokeListGet()` |public static T InvokeListGet(object obj, FieldInfo field, int i)
| + +## `RequireChartComponentAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `RequireChartComponentAttribute()` |public RequireChartComponentAttribute(Type requiredComponent)
| +| `RequireChartComponentAttribute()` |public RequireChartComponentAttribute(Type requiredComponent, Type requiredComponent2)
| +| `RequireChartComponentAttribute()` |public RequireChartComponentAttribute(Type requiredComponent, Type requiredComponent2, Type requiredComponent3)
| + +## `RingChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `RuntimeUtil` + +|public method|description| +|--|--| +| `GetAllAssemblyTypes()` |public static IEnumerable GetAllAssemblyTypes()
| +| `GetAllTypesDerivedFrom()` |public static IEnumerable GetAllTypesDerivedFrom(Type type)
| +| `GetAllTypesDerivedFrom()` |public static IEnumerable GetAllTypesDerivedFrom()
| +| `HasSubclass()` |public static bool HasSubclass(Type type)
| + +## `ScatterChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SerieContext` + +## `SerieConvertAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(Type type)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie, Type serie2)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie, Type serie2, Type serie3)
| +| `SerieConvertAttribute()` |public SerieConvertAttribute(Type serie, Type serie2, Type serie3, Type serie4)
| + +## `SerieDataContext` + +|public method|description| +|--|--| +| `Reset()` |public void Reset()
| + +## `SerieDataExtraComponentAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(Type type)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute()
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6)
| +| `SerieDataExtraComponentAttribute()` |public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7)
| + +## `SerieDataExtraFieldAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(string field)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute()
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6)
| +| `SerieDataExtraFieldAttribute()` |public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6, string field7)
| + +## `SerieExtraComponentAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `Contains()` |public bool Contains(Type type)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute()
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6)
| +| `SerieExtraComponentAttribute()` |public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7)
| + +## `SerieHandler` + +## `SerieHandler` + +Inherits or Implemented: [SerieHandler where T](#SerieHandler where T),[Serie](#Serie) + +|public method|description| +|--|--| +| `GetSerieDataAutoColor()` |public virtual Color GetSerieDataAutoColor(SerieData serieData)
| +| `GetSerieDataLabelOffset()` |public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label)
| +| `GetSerieDataLabelPosition()` |public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)
| +| `GetSerieDataTitlePosition()` |public virtual Vector3 GetSerieDataTitlePosition(SerieData serieData, TitleStyle titleStyle)
| +| `InitComponent()` |public override void InitComponent()
| +| `OnLegendButtonClick()` |public override void OnLegendButtonClick(int index, string legendName, bool show)
| +| `OnLegendButtonEnter()` |public override void OnLegendButtonEnter(int index, string legendName)
| +| `OnLegendButtonExit()` |public override void OnLegendButtonExit(int index, string legendName)
| +| `RefreshEndLabelInternal()` |public virtual void RefreshEndLabelInternal()
| +| `RefreshLabelInternal()` |public override void RefreshLabelInternal()
| +| `RefreshLabelNextFrame()` |public override void RefreshLabelNextFrame()
| +| `RemoveComponent()` |public override void RemoveComponent()
| +| `Update()` |public override void Update()
| + +## `SerieHandlerAttribute` + +Inherits or Implemented: [Attribute](#Attribute) + +|public method|description| +|--|--| +| `SerieHandlerAttribute()` |public SerieHandlerAttribute(Type handler)
| +| `SerieHandlerAttribute()` |public SerieHandlerAttribute(Type handler, bool allowMultiple)
| + +## `SerieHelper` + +|public method|description| +|--|--| +| `CopySerie()` |public static void CopySerie(Serie oldSerie, Serie newSerie)
| +| `GetAllMinMaxData()` |public static void GetAllMinMaxData(Serie serie, int ceilRate = 0, DataZoom dataZoom = null)
| +| `GetAreaColor()` |public static Color32 GetAreaColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
| +| `GetAreaStyle()` |public static AreaStyle GetAreaStyle(Serie serie, SerieData serieData)
| +| `GetAreaToColor()` |public static Color32 GetAreaToColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
| +| `GetAverageData()` |public static double GetAverageData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetItemColor()` |public static Color32 GetItemColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight, bool opacity = true)
| +| `GetItemColor0()` |public static Color32 GetItemColor0(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight, Color32 defaultColor)
| +| `GetItemFormatter()` |public static string GetItemFormatter(Serie serie, SerieData serieData, string defaultFormatter = null)
| +| `GetItemMarker()` |public static string GetItemMarker(Serie serie, SerieData serieData, string defaultMarker = null)
| +| `GetItemStyle()` |public static ItemStyle GetItemStyle(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetItemStyleEmphasis()` |public static ItemStyle GetItemStyleEmphasis(Serie serie, SerieData serieData)
| +| `GetItemToColor()` |public static Color32 GetItemToColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight, bool opacity = true)
| +| `GetLineColor()` |public static Color32 GetLineColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
| +| `GetLineStyle()` |public static LineStyle GetLineStyle(Serie serie, SerieData serieData)
| +| `GetMaxData()` |public static double GetMaxData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMaxSerieData()` |public static SerieData GetMaxSerieData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMedianData()` |public static double GetMedianData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMinData()` |public static double GetMinData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetMinMaxData()` |public static void GetMinMaxData(Serie serie, out double min, out double max, DataZoom dataZoom = null, int dimension = 0)
获得系列所有数据的最大最小值。 | +| `GetMinSerieData()` |public static SerieData GetMinSerieData(Serie serie, int dimension = 1, DataZoom dataZoom = null)
| +| `GetNumericFormatter()` |public static string GetNumericFormatter(Serie serie, SerieData serieData, string defaultFormatter = null)
| +| `GetSerieEmphasisLabel()` |public static LabelStyle GetSerieEmphasisLabel(Serie serie, SerieData serieData)
| +| `GetSerieLabel()` |public static LabelStyle GetSerieLabel(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetSerieLabelLine()` |public static LabelLine GetSerieLabelLine(Serie serie, SerieData serieData, bool highlight = false)
| +| `GetSerieSymbol()` |public static SerieSymbol GetSerieSymbol(Serie serie, SerieData serieData)
| +| `GetSymbolBorder()` |public static float GetSymbolBorder(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight)
| +| `GetSymbolBorder()` |public static float GetSymbolBorder(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight, float defaultWidth)
| +| `GetSymbolBorderColor()` |public static Color32 GetSymbolBorderColor(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight)
| +| `GetSymbolCornerRadius()` |public static float[] GetSymbolCornerRadius(Serie serie, SerieData serieData, bool highlight)
| +| `GetTitleStyle()` |public static TitleStyle GetTitleStyle(Serie serie, SerieData serieData)
| +| `IsAllZeroValue()` |public static bool IsAllZeroValue(Serie serie, int dimension = 1)
系列指定维数的数据是否全部为0。 | +| `IsDownPoint()` |public static bool IsDownPoint(Serie serie, int index)
| +| `UpdateCenter()` |public static void UpdateCenter(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight)
更新运行时中心点和半径 | +| `UpdateFilterData()` |public static void UpdateFilterData(Serie serie, DataZoom dataZoom)
根据dataZoom更新数据列表缓存 | +| `UpdateMinMaxData()` |public static void UpdateMinMaxData(Serie serie, int dimension, int ceilRate = 0, DataZoom dataZoom = null)
获得指定维数的最大最小值 | +| `UpdateRect()` |public static void UpdateRect(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight)
| +| `UpdateSerieRuntimeFilterData()` |public static void UpdateSerieRuntimeFilterData(Serie serie, bool filterInvisible = true)
| + +## `SerieLabelHelper` + +|public method|description| +|--|--| +| `AvoidLabelOverlap()` |public static void AvoidLabelOverlap(Serie serie, ComponentTheme theme)
| +| `CanShowLabel()` |public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
| +| `GetLabelColor()` |public static Color GetLabelColor(Serie serie, ThemeStyle theme, int index)
| +| `GetRealLabelPosition()` |public static Vector3 GetRealLabelPosition(Serie serie, SerieData serieData, LabelStyle label, LabelLine labelLine)
| +| `SetGaugeLabelText()` |public static void SetGaugeLabelText(Serie serie)
| +| `UpdatePieLabelPosition()` |public static void UpdatePieLabelPosition(Serie serie, SerieData serieData)
| + +## `SerieLabelPool` + +|public method|description| +|--|--| +| `ClearAll()` |public static void ClearAll()
| +| `Release()` |public static void Release(GameObject element)
| +| `ReleaseAll()` |public static void ReleaseAll(Transform parent)
| + +## `SerieParams` + +## `SeriesHelper` + +|public method|description| +|--|--| +| `GetLastStackSerie()` |public static Serie GetLastStackSerie(List series, Serie serie)
获得上一个同堆叠且显示的serie。 | +| `GetLegalSerieNameList()` |public static List GetLegalSerieNameList(List series)
| +| `GetMaxSerieDataCount()` |public static int GetMaxSerieDataCount(List series)
| +| `GetNameColor()` |public static Color GetNameColor(BaseChart chart, int index, string name)
| +| `GetSerieByVesselIndex()` |public static Serie GetSerieByVesselIndex(List series, int vesselIndex)
| +| `GetStackSeries()` |public static void GetStackSeries(List series, ref Dictionary> stackSeries)
获得堆叠系列列表 | +| `IsAnyClipSerie()` |public static bool IsAnyClipSerie(List series)
是否有需裁剪的serie。 | +| `IsLegalLegendName()` |public static bool IsLegalLegendName(string name)
| +| `IsStack()` |public static bool IsStack(List series)
是否由数据堆叠 | +| `UpdateSerieNameList()` |public static void UpdateSerieNameList(BaseChart chart, ref List serieNameList)
获得所有系列名,不包含空名字。 | +| `UpdateStackDataList()` |public static void UpdateStackDataList(List series, Serie currSerie, DataZoom dataZoom, List> dataList)
| + +## `SimplifiedBarChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SimplifiedCandlestickChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SimplifiedLineChart` + +Inherits or Implemented: [BaseChart](#BaseChart) + +## `SVG` + +|public method|description| +|--|--| +| `DrawPath()` |public static void DrawPath(VertexHelper vh, string path)
| +| `DrawPath()` |public static void DrawPath(VertexHelper vh, SVGPath path)
| +| `Test()` |public static void Test(VertexHelper vh)
| + +## `SVGImage` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic) + +## `SVGPath` + +|public method|description| +|--|--| +| `AddSegment()` |public void AddSegment(SVGPathSeg seg)
| +| `Draw()` |public void Draw(VertexHelper vh)
| +| `Parse()` |public static SVGPath Parse(string path)
| + +## `SVGPathSeg` + +|public method|description| +|--|--| +| `SVGPathSeg()` |public SVGPathSeg(SVGPathSegType type)
| + +## `TooltipContext` + +## `TooltipData` + +## `TooltipHelper` + +|public method|description| +|--|--| +| `GetItemNumericFormatter()` |public static string GetItemNumericFormatter(Tooltip tooltip, Serie serie, SerieData serieData)
| +| `GetLineColor()` |public static Color32 GetLineColor(Tooltip tooltip, ThemeStyle theme)
| +| `IsIgnoreItemFormatter()` |public static bool IsIgnoreItemFormatter(string itemFormatter)
| +| `LimitInRect()` |public static void LimitInRect(Tooltip tooltip, Rect chartRect)
| + +## `TooltipView` + +|public method|description| +|--|--| +| `CreateView()` |public static TooltipView CreateView(Tooltip tooltip, ThemeStyle theme, Transform parent)
| +| `GetCurrentPos()` |public Vector3 GetCurrentPos()
| +| `GetTargetPos()` |public Vector3 GetTargetPos()
| +| `Refresh()` |public void Refresh()
| +| `SetActive()` |public void SetActive(bool flag)
| +| `Update()` |public void Update()
| +| `UpdatePosition()` |public void UpdatePosition(Vector3 pos)
| + +## `TooltipViewItem` + +## `UGL` + +|public method|description| +|--|--| +| `DrawDiamond()` |public static void DrawDiamond(VertexHelper vh, Vector3 center, float size, Color32 color)
Draw a diamond. 画菱形(钻石形状) | +| `DrawDiamond()` |public static void DrawDiamond(VertexHelper vh, Vector3 center, float size, Color32 color, Color32 toColor)
Draw a diamond. 画菱形(钻石形状) | +| `DrawEllipse()` |public static void DrawEllipse(VertexHelper vh, Vector3 center, float w, float h, Color32 color, float smoothness = 1)
| +| `DrawLine()` |public static void DrawLine(VertexHelper vh, List points, float width, Color32 color, bool smooth, bool closepath = false)
| +| `DrawLine()` |public static void DrawLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, Color32 color)
Draw a line. 画直线 | +| `DrawLine()` |public static void DrawLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, Color32 color, Color32 toColor)
Draw a line. 画直线 | +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, Color32 color)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, Color32 color, Color32 toColor)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, float border, Color32 color)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Rect rect, float border, Color32 color, Color32 toColor)
| +| `DrawRectangle()` |public static void DrawRectangle(VertexHelper vh, Vector3 p1, Vector3 p2, float radius, Color32 color)
Draw a rectangle. 画带长方形 | +| `DrawSquare()` |public static void DrawSquare(VertexHelper vh, Vector3 center, float radius, Color32 color)
Draw a square. 画正方形 | +| `DrawSvgPath()` |public static void DrawSvgPath(VertexHelper vh, string path)
| +| `DrawTriangle()` |public static void DrawTriangle(VertexHelper vh, Vector3 pos, float size, Color32 color)
| +| `DrawTriangle()` |public static void DrawTriangle(VertexHelper vh, Vector3 pos, float size, Color32 color, Color32 toColor)
| + +## `UGLExample` + +Inherits or Implemented: [MaskableGraphic](#MaskableGraphic) + +## `UGLHelper` + +|public method|description| +|--|--| +| `GetAngle360()` |public static float GetAngle360(Vector2 from, Vector2 to)
获得0-360的角度(12点钟方向为0度) | +| `GetBezier()` |public static Vector3 GetBezier(float t, Vector3 sp, Vector3 cp, Vector3 ep)
| +| `GetBezier2()` |public static Vector3 GetBezier2(float t, Vector3 sp, Vector3 p1, Vector3 p2, Vector3 ep)
| +| `GetBezierList()` |public static List GetBezierList(Vector3 sp, Vector3 ep, int segment, Vector3 cp)
| +| `GetDire()` |public static Vector3 GetDire(float angle, bool isDegree = false)
| +| `GetIntersection()` |public static bool GetIntersection(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, ref Vector3 intersection)
获得两直线的交点 | +| `GetPos()` |public static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false)
| +| `GetVertialDire()` |public static Vector3 GetVertialDire(Vector3 dire)
| +| `IsClearColor()` |public static bool IsClearColor(Color color)
| +| `IsClearColor()` |public static bool IsClearColor(Color32 color)
| +| `IsPointInPolygon()` |public static bool IsPointInPolygon(Vector3 p, List polyons)
| +| `IsPointInPolygon()` |public static bool IsPointInPolygon(Vector3 p, List polyons)
| +| `IsPointInTriangle()` |public static bool IsPointInTriangle(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 check)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color color1, Color color2)
| +| `IsValueEqualsColor()` |public static bool IsValueEqualsColor(Color32 color1, Color32 color2)
| +| `IsValueEqualsList()` |public static bool IsValueEqualsList(List list1, List list2)
| +| `IsValueEqualsString()` |public static bool IsValueEqualsString(string str1, string str2)
| +| `IsValueEqualsVector2()` |public static bool IsValueEqualsVector2(Vector2 v1, Vector2 v2)
| +| `IsValueEqualsVector3()` |public static bool IsValueEqualsVector3(Vector3 v1, Vector2 v2)
| +| `IsValueEqualsVector3()` |public static bool IsValueEqualsVector3(Vector3 v1, Vector3 v2)
| +| `IsZeroVector()` |public static bool IsZeroVector(Vector3 pos)
| +| `RotateRound()` |public static Vector3 RotateRound(Vector3 position, Vector3 center, Vector3 axis, float angle)
| + +## `VisualMapContext` + +Inherits or Implemented: [MainComponentContext](#MainComponentContext) + +## `VisualMapHelper` + +|public method|description| +|--|--| +| `AutoSetLineMinMax()` |public static void AutoSetLineMinMax(VisualMap visualMap, Serie serie, bool isY, Axis axis, Axis relativedAxis)
| +| `GetDimension()` |public static int GetDimension(VisualMap visualMap, int serieDataCount)
| +| `IsNeedAreaGradient()` |public static bool IsNeedAreaGradient(VisualMap visualMap)
| +| `IsNeedGradient()` |public static bool IsNeedGradient(VisualMap visualMap)
| +| `IsNeedLineGradient()` |public static bool IsNeedLineGradient(VisualMap visualMap)
| +| `SetMinMax()` |public static void SetMinMax(VisualMap visualMap, double min, double max)
| + +## `XChartsMgr` + +|public method|description| +|--|--| +| `AddChart()` |public static void AddChart(BaseChart chart)
| +| `ContainsChart()` |public static bool ContainsChart(BaseChart chart)
| +| `ContainsChart()` |public static bool ContainsChart(string chartName)
| +| `DisableTextMeshPro()` |public static void DisableTextMeshPro()
| +| `EnableTextMeshPro()` |public static void EnableTextMeshPro()
| +| `GetChart()` |public static BaseChart GetChart(string chartName)
| +| `GetCharts()` |public static List GetCharts(string chartName)
| +| `GetPackageFullPath()` |public static string GetPackageFullPath()
| +| `GetRepeatChartNameInfo()` |public static string GetRepeatChartNameInfo(BaseChart chart, string chartName)
| +| `IsExistTMPAssembly()` |public static bool IsExistTMPAssembly()
| +| `IsRepeatChartName()` |public static bool IsRepeatChartName(BaseChart chart, string chartName = null)
| +| `ModifyTMPRefence()` |public static bool ModifyTMPRefence(bool removeTMP = false)
| +| `RemoveAllChartObject()` |public static void RemoveAllChartObject()
| +| `RemoveChart()` |public static void RemoveChart(string chartName)
| + +## `XCResourceImporterWindow` + +Inherits or Implemented: [UnityEditor.EditorWindow](#UnityEditor.EditorWindow) + +|public method|description| +|--|--| +| `ShowPackageImporterWindow()` |public static void ShowPackageImporterWindow()
| + +## `XCThemeMgr` + +|public method|description| +|--|--| +| `AddTheme()` |public static void AddTheme(Theme theme)
| +| `CheckReloadTheme()` |public static void CheckReloadTheme()
| +| `ContainsTheme()` |public static bool ContainsTheme(string themeName)
| +| `ExportTheme()` |public static bool ExportTheme(Theme theme)
| +| `ExportTheme()` |public static bool ExportTheme(Theme theme, string themeNewName)
| +| `GetAllThemeNames()` |public static List GetAllThemeNames()
| +| `GetTheme()` |public static Theme GetTheme(string themeName)
| +| `GetTheme()` |public static Theme GetTheme(ThemeType type)
| +| `GetThemeAssetPath()` |public static string GetThemeAssetPath(string themeName)
| +| `GetThemeList()` |public static List GetThemeList()
| +| `LoadTheme()` |public static Theme LoadTheme(string themeName)
| +| `LoadTheme()` |public static Theme LoadTheme(ThemeType type)
| +| `ReloadThemeList()` |public static void ReloadThemeList()
重新加载主题列表 | +| `SwitchTheme()` |public static void SwitchTheme(BaseChart chart, string themeName)
| + +[XCharts主页](https://github.com/XCharts-Team/XCharts)
+[XCharts配置项手册](XChartsConfiguration-ZH.md)
+[XCharts问答](XChartsFAQ-ZH.md) diff --git a/Assets/XCharts/Documentation/XChartsAPI-ZH.md.meta b/Assets/XCharts/Documentation/XChartsAPI-ZH.md.meta new file mode 100644 index 0000000..79944bc --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsAPI-ZH.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2c38d275e62c6471ea2f4ef69b87b220 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsConfiguration-EN.md b/Assets/XCharts/Documentation/XChartsConfiguration-EN.md new file mode 100644 index 0000000..8a251fc --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsConfiguration-EN.md @@ -0,0 +1,1528 @@ +# Chart Configuration + +[XCharts Homepage](https://github.com/XCharts-Team/XCharts)
+[XCharts API](XChartsAPI-EN.md)
+[XCharts FAQ](XChartsFAQ-EN.md) + +## Serie + +- [Bar](#Bar) +- [BaseScatter](#BaseScatter) +- [Candlestick](#Candlestick) +- [EffectScatter](#EffectScatter) +- [Heatmap](#Heatmap) +- [Line](#Line) +- [Parallel](#Parallel) +- [Pie](#Pie) +- [Radar](#Radar) +- [Ring](#Ring) +- [Scatter](#Scatter) +- [Serie](#Serie) +- [SimplifiedBar](#SimplifiedBar) +- [SimplifiedCandlestick](#SimplifiedCandlestick) +- [SimplifiedLine](#SimplifiedLine) + +## Theme + +- [AngleAxisTheme](#AngleAxisTheme) +- [AxisTheme](#AxisTheme) +- [BaseAxisTheme](#BaseAxisTheme) +- [ComponentTheme](#ComponentTheme) +- [DataZoomTheme](#DataZoomTheme) +- [LegendTheme](#LegendTheme) +- [PolarAxisTheme](#PolarAxisTheme) +- [RadarAxisTheme](#RadarAxisTheme) +- [RadiusAxisTheme](#RadiusAxisTheme) +- [SerieTheme](#SerieTheme) +- [SubTitleTheme](#SubTitleTheme) +- [Theme](#Theme) +- [ThemeStyle](#ThemeStyle) +- [TitleTheme](#TitleTheme) +- [TooltipTheme](#TooltipTheme) +- [VisualMapTheme](#VisualMapTheme) + +## MainComponent + +- [AngleAxis](#AngleAxis) +- [Axis](#Axis) +- [Background](#Background) +- [CalendarCoord](#CalendarCoord) +- [Comment](#Comment) +- [CoordSystem](#CoordSystem) +- [DataZoom](#DataZoom) +- [GridCoord](#GridCoord) +- [Legend](#Legend) +- [MarkArea](#MarkArea) +- [MarkLine](#MarkLine) +- [ParallelAxis](#ParallelAxis) +- [ParallelCoord](#ParallelCoord) +- [PolarCoord](#PolarCoord) +- [RadarCoord](#RadarCoord) +- [RadiusAxis](#RadiusAxis) +- [Settings](#Settings) +- [SingleAxis](#SingleAxis) +- [SingleAxisCoord](#SingleAxisCoord) +- [Title](#Title) +- [Tooltip](#Tooltip) +- [VisualMap](#VisualMap) +- [XAxis](#XAxis) +- [YAxis](#YAxis) + +## ChildComponent + +- [AngleAxisTheme](#AngleAxisTheme) +- [AnimationStyle](#AnimationStyle) +- [AreaStyle](#AreaStyle) +- [ArrowStyle](#ArrowStyle) +- [AxisLabel](#AxisLabel) +- [AxisLine](#AxisLine) +- [AxisName](#AxisName) +- [AxisSplitArea](#AxisSplitArea) +- [AxisSplitLine](#AxisSplitLine) +- [AxisTheme](#AxisTheme) +- [AxisTick](#AxisTick) +- [BaseAxisTheme](#BaseAxisTheme) +- [BaseLine](#BaseLine) +- [CommentItem](#CommentItem) +- [CommentMarkStyle](#CommentMarkStyle) +- [ComponentTheme](#ComponentTheme) +- [DataZoomTheme](#DataZoomTheme) +- [Emphasis](#Emphasis) +- [EmphasisItemStyle](#EmphasisItemStyle) +- [EmphasisLabelLine](#EmphasisLabelLine) +- [EmphasisLabelStyle](#EmphasisLabelStyle) +- [EndLabelStyle](#EndLabelStyle) +- [IconStyle](#IconStyle) +- [ImageStyle](#ImageStyle) +- [ItemStyle](#ItemStyle) +- [LabelLine](#LabelLine) +- [LabelStyle](#LabelStyle) +- [LegendTheme](#LegendTheme) +- [Level](#Level) +- [LevelStyle](#LevelStyle) +- [LineArrow](#LineArrow) +- [LineStyle](#LineStyle) +- [Location](#Location) +- [MarkAreaData](#MarkAreaData) +- [MarkLineData](#MarkLineData) +- [PolarAxisTheme](#PolarAxisTheme) +- [RadarAxisTheme](#RadarAxisTheme) +- [RadiusAxisTheme](#RadiusAxisTheme) +- [SerieData](#SerieData) +- [SerieSymbol](#SerieSymbol) +- [SerieTheme](#SerieTheme) +- [StageColor](#StageColor) +- [SubTitleTheme](#SubTitleTheme) +- [SymbolStyle](#SymbolStyle) +- [TextLimit](#TextLimit) +- [TextPadding](#TextPadding) +- [TextStyle](#TextStyle) +- [ThemeStyle](#ThemeStyle) +- [TitleStyle](#TitleStyle) +- [TitleTheme](#TitleTheme) +- [TooltipTheme](#TooltipTheme) +- [VisualMapRange](#VisualMapRange) +- [VisualMapTheme](#VisualMapTheme) + +## ISerieExtraComponent + +- [AreaStyle](#AreaStyle) +- [Emphasis](#Emphasis) +- [EmphasisItemStyle](#EmphasisItemStyle) +- [EmphasisLabelLine](#EmphasisLabelLine) +- [EmphasisLabelStyle](#EmphasisLabelStyle) +- [ImageStyle](#ImageStyle) +- [LabelLine](#LabelLine) +- [LabelStyle](#LabelStyle) +- [LineArrow](#LineArrow) +- [TitleStyle](#TitleStyle) + +## ISerieDataComponent + +- [AreaStyle](#AreaStyle) +- [Emphasis](#Emphasis) +- [EmphasisItemStyle](#EmphasisItemStyle) +- [EmphasisLabelLine](#EmphasisLabelLine) +- [EmphasisLabelStyle](#EmphasisLabelStyle) +- [ImageStyle](#ImageStyle) +- [ItemStyle](#ItemStyle) +- [LabelLine](#LabelLine) +- [LabelStyle](#LabelStyle) +- [LineStyle](#LineStyle) +- [SerieSymbol](#SerieSymbol) +- [TitleStyle](#TitleStyle) + +## Other + +- [BaseSerie](#BaseSerie) +- [ChartText](#ChartText) +- [ChildComponent](#ChildComponent) +- [DebugInfo](#DebugInfo) +- [Indicator](#Indicator) +- [Lang](#Lang) +- [LangCandlestick](#LangCandlestick) +- [LangTime](#LangTime) +- [MainComponent](#MainComponent) +- [XCResourcesImporter](#XCResourcesImporter) +- [XCSettings](#XCSettings) + +## `AngleAxis` + +Inherits or Implemented: [Axis](#Axis) + +Angle axis of Polar Coordinate. + +|field|default|comment| +|--|--|--| +| `startAngle` |0 | Starting angle of axis. 0 degrees by default, standing for right position of center. | + +## `AngleAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `AnimationStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +the animation of serie. + +|field|default|comment| +|--|--|--| +| `enable` |true | Whether to enable animation. | +| `type` | | The type of animation.
`AnimationType`:
- `Default`: he default. An animation playback mode will be selected according to the actual situation.
- `LeftToRight`: Play the animation from left to right.
- `BottomToTop`: Play the animation from bottom to top.
- `InsideOut`: Play animations from the inside out.
- `AlongPath`: Play the animation along the path.
- `Clockwise`: Play the animation clockwise.
| +| `easting` | | Easing method used for the first animation.
`AnimationEasing`:
- `Linear`:
| +| `threshold` |2000 | Whether to set graphic number threshold to animation. Animation will be disabled when graphic number is larger than threshold. | +| `fadeInDuration` |1000 | The milliseconds duration of the fadeIn animation. | +| `fadeInDelay` |0 | The milliseconds delay before updating the first animation. | +| `fadeOutDuration` |1000f | The milliseconds duration of the fadeOut animation. | +| `fadeOutDelay` |0 | 渐出动画延时(毫秒)。如果要设置单个数据项的延时,可以用代码定制:customFadeOutDelay。 | +| `dataChangeEnable` |true | 是否开启数据变更动画。 | +| `dataChangeDuration` |500 | The milliseconds duration of the data change animation. | +| `actualDuration` | | The milliseconds actual duration of the first animation. | + +## `AreaStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +The style of area. + +|field|default|comment| +|--|--|--| +| `show` |true | Set this to false to prevent the areafrom showing. | +| `origin` | | the origin of area.
`AreaStyle.AreaOrigin`:
- `Auto`: to fill between axis line to data.
- `Start`: to fill between min axis value (when not inverse) to data.
- `End`: to fill between max axis value (when not inverse) to data.
| +| `color` | | the color of area,default use serie color. | +| `toColor` | | Gradient color, start color to toColor. | +| `opacity` |0.6f | Opacity of the component. Supports value from 0 to 1, and the component will not be drawn when set to 0. | +| `highlightColor` | | the color of area,default use serie color. | +| `highlightToColor` | | Gradient color, start highlightColor to highlightToColor. | + +## `ArrowStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `width` |10 | The widht of arrow. | +| `height` |15 | The height of arrow. | +| `offset` |0 | The offset of arrow. | +| `dent` |3 | The dent of arrow. | +| `color` |Color.clear | the color of arrow. | + +## `Axis` + +Inherits or Implemented: [MainComponent](#MainComponent) + +The axis in rectangular coordinate. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to show axis. | +| `type` | | the type of axis.
`Axis.AxisType`:
- `Value`: Numerical axis, suitable for continuous data.
- `Category`: Category axis, suitable for discrete category data. Data should only be set via data for this type.
- `Log`: Log axis, suitable for log data.
- `Time`: Time axis, suitable for continuous time series data.
| +| `minMaxType` | | the type of axis minmax.
`Axis.AxisMinMaxType`:
- `Default`: 0 - maximum.
- `MinMax`: minimum - maximum.
- `Custom`: Customize the minimum and maximum.
| +| `gridIndex` | | The index of the grid on which the axis are located, by default, is in the first grid. | +| `polarIndex` | | The index of the polar on which the axis are located, by default, is in the first polar. | +| `parallelIndex` | | The index of the parallel on which the axis are located, by default, is in the first parallel. | +| `position` | | the position of axis in grid.
`Axis.AxisPosition`:
- `Left`: the position of axis in grid.
- `Right`: the position of axis in grid.
- `Bottom`: the position of axis in grid.
- `Top`: the position of axis in grid.
| +| `offset` | | the offset of axis from the default position. Useful when the same position has multiple axes. | +| `min` | | The minimun value of axis.Valid when `minMaxType` is `Custom` | +| `max` | | The maximum value of axis.Valid when `minMaxType` is `Custom` | +| `splitNumber` |0 | Number of segments that the axis is split into. | +| `interval` |0 | Compulsively set segmentation interval for axis.This is unavailable for category axis. | +| `boundaryGap` |true | The boundary gap on both sides of a coordinate axis, which is valid only for category axis with type: 'Category'. | +| `maxCache` |0 | The max number of axis data cache. | +| `logBase` |10 | Base of logarithm, which is valid only for numeric axes with type: 'Log'. | +| `logBaseE` |false | On the log axis, if base e is the natural number, and is true, logBase fails. | +| `ceilRate` |0 | The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated. | +| `inverse` |false | Whether the axis are reversed or not. Invalid in `Category` axis. | +| `clockwise` |true | Whether the positive position of axis is in clockwise. True for clockwise by default. | +| `insertDataToHead` | | Whether to add new data at the head or at the end of the list. | +| `icons` | | 类目数据对应的图标。 | +| `data` | | Category data, available in type: 'Category' axis. | +| `axisLine` | | axis Line. [AxisLine](AxisLine)| +| `axisName` | | axis name. [AxisName](AxisName)| +| `axisTick` | | axis tick. [AxisTick](AxisTick)| +| `axisLabel` | | axis label. [AxisLabel](AxisLabel)| +| `splitLine` | | axis split line. [AxisSplitLine](AxisSplitLine)| +| `splitArea` | | axis split area. [AxisSplitArea](AxisSplitArea)| + +## `AxisLabel` + +Inherits or Implemented: [LabelStyle](#LabelStyle) + +Settings related to axis label. + +|field|default|comment| +|--|--|--| +| `interval` |0 | The display interval of the axis label. | +| `inside` |false | Set this to true so the axis labels face the inside direction. | +| `showAsPositiveNumber` |false | Show negative number as positive number. | +| `onZero` |false | 刻度标签显示在0刻度上。 | +| `showStartLabel` |true | Whether to display the first label. | +| `showEndLabel` |true | Whether to display the last label. | +| `textLimit` | | 文本限制。 [TextLimit](TextLimit)| + +## `AxisLine` + +Inherits or Implemented: [BaseLine](#BaseLine) + +Settings related to axis line. + +|field|default|comment| +|--|--|--| +| `onZero` | | When mutiple axes exists, this option can be used to specify which axis can be "onZero" to. | +| `showArrow` | | Whether to show the arrow symbol of axis. | +| `arrow` | | the arrow of line. [ArrowStyle](ArrowStyle)| + +## `AxisName` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +the name of axis. + +|field|default|comment| +|--|--|--| +| `show` | | Whether to show axis name. | +| `name` | | the name of axis. | +| `labelStyle` | | The text style of axis name. [LabelStyle](LabelStyle)| + +## `AxisSplitArea` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +Split area of axis in grid area, not shown by default. + +|field|default|comment| +|--|--|--| +| `show` | | Set this to true to show the splitArea. | +| `color` | | Color of split area. SplitArea color could also be set in color array, which the split lines would take as their colors in turns. Dark and light colors in turns are used by default. | + +## `AxisSplitLine` + +Inherits or Implemented: [BaseLine](#BaseLine) + +Split line of axis in grid area. + +|field|default|comment| +|--|--|--| +| `interval` | | Interval of Axis splitLine. | +| `distance` | | The distance between the split line and axis line. | +| `autoColor` | | auto color. | + +## `AxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `AxisTick` + +Inherits or Implemented: [BaseLine](#BaseLine) + +Settings related to axis tick. + +|field|default|comment| +|--|--|--| +| `alignWithLabel` | | Align axis tick with label, which is available only when boundaryGap is set to be true in category axis. | +| `inside` | | Set this to true so the axis labels face the inside direction. | +| `showStartTick` | | Whether to display the first tick. | +| `showEndTick` | | Whether to display the last tick. | +| `distance` | | The distance between the tick line and axis line. | +| `splitNumber` |0 | Number of segments that the axis is split into. | +| `autoColor` | | | + +## `Background` + +Inherits or Implemented: [MainComponent](#MainComponent) + +Background component. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to enable the background component. | +| `image` | | the image of background. | +| `imageType` | | the fill type of background image. | +| `imageColor` | | 背景图颜色。 | +| `autoColor` |true | Whether to use theme background color for component color when the background component is on. | + +## `Bar` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `BaseAxisTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `lineType` | | the type of line. | +| `lineWidth` |1f | the width of line. | +| `lineLength` |0f | the length of line. | +| `lineColor` | | the color of line. | +| `splitLineType` | | the type of split line. | +| `splitLineWidth` |1f | the width of split line. | +| `splitLineLength` |0f | the length of split line. | +| `splitLineColor` | | the color of line. | +| `tickWidth` |1f | the width of tick. | +| `tickLength` |5f | the length of tick. | +| `tickColor` | | the color of tick. | +| `splitAreaColors` | | | + +## `BaseLine` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +Settings related to base line. + +|field|default|comment| +|--|--|--| +| `show` | | Set this to false to prevent the axis line from showing. | +| `lineStyle` | | 线条样式 [LineStyle](LineStyle)| + +## `BaseScatter` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `BaseSerie` + + +## `CalendarCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[IUpdateRuntimeData](#IUpdateRuntimeData),[ISerieContainer](#ISerieContainer) + + +## `Candlestick` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `ChartText` + + +## `ChildComponent` + + +## `Comment` + +Inherits or Implemented: [MainComponent](#MainComponent) + +comment of chart. + +|field|default|comment| +|--|--|--| +| `show` |true | Set this to false to prevent the comment from showing. | +| `labelStyle` | | The text style of all comments. [LabelStyle](LabelStyle)| +| `markStyle` | | The text style of all comments. [CommentMarkStyle](CommentMarkStyle)| +| `items` | | | + +## `CommentItem` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +comment of chart. + +|field|default|comment| +|--|--|--| +| `show` |true | Set this to false to prevent this comment item from showing. | +| `content` | | content of comment. | +| `position` | | position of comment. | +| `markRect` | | the mark rect of comment. | +| `markStyle` | | the mark rect style. [CommentMarkStyle](CommentMarkStyle)| +| `labelStyle` | | The text style of all comments. [LabelStyle](LabelStyle)| + +## `CommentMarkStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +the comment mark style. + +|field|default|comment| +|--|--|--| +| `show` |true | Set this to false to prevent this comment item from showing. | +| `lineStyle` | | line style of comment mark area. [LineStyle](LineStyle)| + +## `ComponentTheme` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `font` | | the font of text. | +| `textColor` | | the color of text. | +| `textBackgroundColor` | | the color of text. | +| `fontSize` |18 | the font size of text. | +| `tMPFont` | | the font of chart text。 | + +## `CoordSystem` + +Inherits or Implemented: [MainComponent](#MainComponent) + +Coordinate system component. + + +## `DataZoom` + +Inherits or Implemented: [MainComponent](#MainComponent),[IUpdateRuntimeData](#IUpdateRuntimeData) + +DataZoom component is used for zooming a specific area, which enables user to investigate data in detail, or get an overview of the data, or get rid of outlier points. + +|field|default|comment| +|--|--|--| +| `enable` |true | Whether to show dataZoom. | +| `filterMode` | | The mode of data filter.
`DataZoom.FilterMode`:
- `Filter`: data that outside the window will be filtered, which may lead to some changes of windows of other axes. For each data item, it will be filtered if one of the relevant dimensions is out of the window.
- `WeakFilter`: data that outside the window will be filtered, which may lead to some changes of windows of other axes. For each data item, it will be filtered only if all of the relevant dimensions are out of the same side of the window.
- `Empty`: data that outside the window will be set to NaN, which will not lead to changes of windows of other axes.
- `None`: Do not filter data.
| +| `xAxisIndexs` | | Specify which xAxis is controlled by the dataZoom. | +| `yAxisIndexs` | | Specify which yAxis is controlled by the dataZoom. | +| `supportInside` | | Whether built-in support is supported. Built into the coordinate system to allow the user to zoom in and out of the coordinate system by mouse dragging, mouse wheel, finger swiping (on the touch screen). | +| `supportInsideScroll` |true | 是否支持坐标系内滚动 | +| `supportInsideDrag` |true | 是否支持坐标系内拖拽 | +| `supportSlider` | | Whether a slider is supported. There are separate sliders on which the user zooms or roams. | +| `supportSelect` | | 是否支持框选。提供一个选框进行数据区域缩放。 | +| `showDataShadow` | | Whether to show data shadow, to indicate the data tendency in brief. | +| `showDetail` | | Whether to show detail, that is, show the detailed data information when dragging. | +| `zoomLock` | | Specify whether to lock the size of window (selected area). | +| `fillerColor` | | the color of dataZoom data area. | +| `borderColor` | | the color of dataZoom border. | +| `borderWidth` | | 边框宽。 | +| `backgroundColor` | | The background color of the component. | +| `left` | | Distance between dataZoom component and the left side of the container. left value is a instant pixel value like 10 or float value [0-1]. | +| `right` | | Distance between dataZoom component and the right side of the container. right value is a instant pixel value like 10 or float value [0-1]. | +| `top` | | Distance between dataZoom component and the top side of the container. top value is a instant pixel value like 10 or float value [0-1]. | +| `bottom` | | Distance between dataZoom component and the bottom side of the container. bottom value is a instant pixel value like 10 or float value [0-1]. | +| `rangeMode` | | Use absolute value or percent value in DataZoom.start and DataZoom.end.
`DataZoom.RangeMode`:
- `//Value`: The value type of start and end.取值类型
- `Percent`: percent value.
| +| `start` | | The start percentage of the window out of the data extent, in the range of 0 ~ 100. | +| `end` | | The end percentage of the window out of the data extent, in the range of 0 ~ 100. | +| `minShowNum` |1 | Minimum number of display data. Minimum number of data displayed when DataZoom is enlarged to maximum. | +| `scrollSensitivity` |1.1f | The sensitivity of dataZoom scroll. The larger the number, the more sensitive it is. | +| `orient` | | Specify whether the layout of dataZoom component is horizontal or vertical. What's more, it indicates whether the horizontal axis or vertical axis is controlled by default in catesian coordinate system.
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `labelStyle` | | label style. [LabelStyle](LabelStyle)| +| `lineStyle` | | 阴影线条样式。 [LineStyle](LineStyle)| +| `areaStyle` | | 阴影填充样式。 [AreaStyle](AreaStyle)| + +## `DataZoomTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `borderWidth` | | the width of border line. | +| `dataLineWidth` | | the width of data line. | +| `fillerColor` | | the color of dataZoom data area. | +| `borderColor` | | the color of dataZoom border. | +| `dataLineColor` | | the color of data area line. | +| `dataAreaColor` | | the color of data area line. | +| `backgroundColor` | | the background color of datazoom. | + +## `DebugInfo` + +|field|default|comment| +|--|--|--| +| `show` |true | | +| `showDebugInfo` |false | | +| `showAllChartObject` |false | | +| `foldSeries` |false | | +| `labelStyle` | | [LabelStyle](LabelStyle)| + +## `EffectScatter` + +Inherits or Implemented: [BaseScatter](#BaseScatter) + + +## `Emphasis` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的图形样式和文本标签样式。 + +|field|default|comment| +|--|--|--| +| `show` | | 是否启用高亮样式。 | +| `label` | | 图形文本标签。 [LabelStyle](LabelStyle)| +| `labelLine` | | 图形文本引导线样式。 [LabelLine](LabelLine)| +| `itemStyle` | | 图形样式。 [ItemStyle](ItemStyle)| + +## `EmphasisItemStyle` + +Inherits or Implemented: [ItemStyle](#ItemStyle),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的图形样式 + + +## `EmphasisLabelLine` + +Inherits or Implemented: [LabelLine](#LabelLine),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的标签引导线样式 + + +## `EmphasisLabelStyle` + +Inherits or Implemented: [LabelStyle](#LabelStyle),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的标签样式 + + +## `EndLabelStyle` + +Inherits or Implemented: [LabelStyle](#LabelStyle) + + +## `GridCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[IUpdateRuntimeData](#IUpdateRuntimeData),[ISerieContainer](#ISerieContainer) + +Grid component. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to show the grid in rectangular coordinate. | +| `left` |0.1f | Distance between grid component and the left side of the container. | +| `right` |0.08f | Distance between grid component and the right side of the container. | +| `top` |0.22f | Distance between grid component and the top side of the container. | +| `bottom` |0.12f | Distance between grid component and the bottom side of the container. | +| `backgroundColor` | | Background color of grid, which is transparent by default. | +| `showBorder` |false | Whether to show the grid border. | +| `borderWidth` |0f | Border width of grid. | +| `borderColor` | | The color of grid border. | + +## `Heatmap` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `IconStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `show` |false | Whether the data icon is show. | +| `layer` | | 显示在上层还是在下层。
`IconStyle.Layer`:
- `UnderText`: The icon is display under the label text. 图标在标签文字下
- `AboveText`: The icon is display above the label text. 图标在标签文字上
| +| `align` | | 水平方向对齐方式。
`Align`:
- `Center`: 对齐方式
- `Left`: 对齐方式
- `Right`: 对齐方式
| +| `sprite` | | The image of icon. | +| `type` | | How to display the icon. | +| `color` | | 图标颜色。 | +| `width` |20 | 图标宽。 | +| `height` |20 | 图标高。 | +| `offset` | | 图标偏移。 | +| `autoHideWhenLabelEmpty` |false | 当label内容为空时是否自动隐藏图标 | + +## `ImageStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +|field|default|comment| +|--|--|--| +| `show` |true | Whether the data icon is show. | +| `sprite` | | The image of icon. | +| `type` | | How to display the image. | +| `autoColor` | | 是否自动颜色。 | +| `color` | | 图标颜色。 | +| `width` |0 | 图标宽。 | +| `height` |0 | 图标高。 | + +## `Indicator` + +Indicator of radar chart, which is used to assign multiple variables(dimensions) in radar chart. + +|field|default|comment| +|--|--|--| +| `name` | | | +| `max` | | The maximum value of indicator, with default value of 0, but we recommend to set it manually. | +| `min` | | The minimum value of indicator, with default value of 0. | +| `range` | | Normal range. When the value is outside this range, the display color is automatically changed. | +| `show` | | [default:true] Set this to false to prevent the radar from showing. | +| `shape` | | Radar render type, in which 'Polygon' and 'Circle' are supported.
`RadarCoord.Shape`:
- `Polygon`: Radar render type, in which 'Polygon' and 'Circle' are supported.
- `Circle`: Radar render type, in which 'Polygon' and 'Circle' are supported.
| +| `radius` |100 | the radius of radar. | +| `splitNumber` |5 | Segments of indicator axis. | +| `center` | | the center of radar chart. | +| `axisLine` | | axis line. [AxisLine](AxisLine)| +| `axisName` | | Name options for radar indicators. [AxisName](AxisName)| +| `splitLine` | | split line. [AxisSplitLine](AxisSplitLine)| +| `splitArea` | | Split area of axis in grid area. [AxisSplitArea](AxisSplitArea)| +| `indicator` |true | Whether to show indicator. | +| `positionType` | | The position type of indicator.
`RadarCoord.PositionType`:
- `Vertice`: Display at the vertex.
- `Between`: Display at the middle of line.
| +| `indicatorGap` |10 | The gap of indicator and radar. | +| `ceilRate` |0 | The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated. | +| `isAxisTooltip` | | 是否Tooltip显示轴线上的所有数据。 | +| `outRangeColor` |Color.red | The color displayed when data out of range. | +| `connectCenter` |false | Whether serie data connect to radar center with line. | +| `lineGradient` |true | Whether need gradient for data line. | +| `indicatorList` | | the indicator list. | + +## `ItemStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieDataComponent](#ISerieDataComponent) + +图形样式。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否启用。 | +| `color` | | 数据项颜色。 | +| `color0` | | 数据项颜色。 | +| `toColor` | | Gradient color1. | +| `toColor2` | | Gradient color2.Only valid in line diagrams. | +| `backgroundColor` | | 数据项背景颜色。 | +| `backgroundWidth` | | 数据项背景宽度。 | +| `centerColor` | | 中心区域颜色。 | +| `centerGap` | | 中心区域间隙。 | +| `borderWidth` |0 | 边框宽。 | +| `borderGap` |0 | 边框间隙。 | +| `borderColor` | | 边框的颜色。 | +| `borderColor0` | | 边框的颜色。 | +| `borderToColor` | | 边框的渐变色。 | +| `opacity` |1 | 透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 | +| `itemMarker` | | 提示框单项的字符标志。用在Tooltip中。 | +| `itemFormatter` | | 提示框单项的字符串模版格式器。具体配置参考`Tooltip`的`formatter` | +| `numericFormatter` | | Standard numeric format strings. | +| `cornerRadius` | | The radius of rounded corner. Its unit is px. Use array to respectively specify the 4 corner radiuses((clockwise upper left, upper right, bottom right and bottom left)). | + +## `LabelLine` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +标签的引导线 + +|field|default|comment| +|--|--|--| +| `show` |true | Whether the label line is showed. | +| `lineType` | | the type of visual guide line.
`LineType`:
- `Normal`: the normal line chart,
- `Smooth`: the smooth line chart,
- `StepStart`: step line.
- `StepMiddle`: step line.
- `StepEnd`: step line.
| +| `lineColor` |ChartConst.clearColor32 | the color of visual guild line. | +| `lineAngle` |0 | the angle of visual guild line. | +| `lineWidth` |1.0f | the width of visual guild line. | +| `lineGap` |1.0f | the gap of container and guild line. | +| `lineLength1` |25f | The length of the first segment of visual guide line. | +| `lineLength2` |15f | The length of the second segment of visual guide line. | +| `startSymbol` | | The symbol of the start point of labelline. [SymbolStyle](SymbolStyle)| +| `endSymbol` | | The symbol of the end point of labelline. [SymbolStyle](SymbolStyle)| + +## `LabelStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +Text label of chart, to explain some data information about graphic item like value, name and so on. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether the label is showed. | +| `Position` | | The position of label. | +| `autoOffset` |false | 是否开启自动偏移。当开启时,Y的偏移会自动判断曲线的开口来决定向上还是向下偏移。 | +| `offset` | | offset to the host graphic element. | +| `rotate` | | Rotation of label. | +| `distance` | | 距离轴线的距离。 | +| `formatter` | | formatter of label. | +| `numericFormatter` | | Standard numeric format strings. | +| `width` |0 | the width of label. If set as default value 0, it means than the label width auto set as the text width. | +| `height` |0 | the height of label. If set as default value 0, it means than the label height auto set as the text height. | +| `icon` | | the sytle of icon. [IconStyle](IconStyle)| +| `background` | | the sytle of background. [ImageStyle](ImageStyle)| +| `textPadding` | | the text padding of label. [TextPadding](TextPadding)| +| `textStyle` | | the sytle of text. [TextStyle](TextStyle)| + +## `Lang` + +Inherits or Implemented: [ScriptableObject](#ScriptableObject) + +Language. + + +## `LangCandlestick` + + +## `LangTime` + + +## `Legend` + +Inherits or Implemented: [MainComponent](#MainComponent),[IPropertyChanged](#IPropertyChanged) + +Legend component.The legend component shows different sets of tags, colors, and names. You can control which series are not displayed by clicking on the legend. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to show legend component. | +| `iconType` | | Type of legend.
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `selectedMode` | | Selected mode of legend, which controls whether series can be toggled displaying by clicking legends.
`VisualMap.SelectedMode`:
- `Multiple`: 多选。
- `Single`: 单选。
| +| `orient` | | Specify whether the layout of legend component is horizontal or vertical.
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `location` | | The location of legend. [Location](Location)| +| `itemWidth` |25.0f | Image width of legend symbol. | +| `itemHeight` |12.0f | Image height of legend symbol. | +| `itemGap` |10f | The distance between each legend, horizontal distance in horizontal layout, and vertical distance in vertical layout. | +| `itemAutoColor` |true | Whether the legend symbol matches the color automatically. | +| `itemOpacity` |1 | the opacity of item color. | +| `formatter` | | Legend content string template formatter. Support for wrapping lines with \n. Template:{value}. | +| `numericFormatter` | | Standard numeric format strings. | +| `labelStyle` | | the style of text. [LabelStyle](LabelStyle)| +| `data` | | Data array of legend. An array item is usually a name representing string. (If it is a pie chart, it could also be the name of a single data in the pie chart) of a series. | +| `icons` | | 自定义的图例标记图形。 | +| `colors` | | the colors of legend item. 图例标记的颜色列表。 | + +## `LegendTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `unableColor` | | the color of text. | + +## `Level` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `label` | | 文本标签样式。 [LabelStyle](LabelStyle)| +| `upperLabel` | | 上方的文本标签样式。 [LabelStyle](LabelStyle)| +| `itemStyle` | | 数据项样式。 [ItemStyle](ItemStyle)| + +## `LevelStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `show` |false | 是否启用LevelStyle | +| `levels` | | 各层节点对应的配置。当enableLevels为true时生效,levels[0]对应的第一层的配置,levels[1]对应第二层,依次类推。当levels中没有对应层时用默认的设置。 | + +## `Line` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `LineArrow` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent) + +|field|default|comment| +|--|--|--| +| `show` | | Whether to show the arrow. | +| `position` | | The position of arrow.
`LabelStyle.Position`:
- `Default`: The position of label.
- `Outside`: Outside of sectors of pie chart, which relates to corresponding sector through visual guide line.
- `Inside`: Inside the sectors of pie chart.
- `Center`: In the center of pie chart.
- `Top`: top of symbol.
- `Bottom`: the bottom of symbol.
- `Left`: the left of symbol.
- `Right`: the right of symbol.
- `Start`: the start of line.
- `Middle`: the middle of line.
- `End`: the end of line.
| +| `arrow` | | the arrow of line. [ArrowStyle](ArrowStyle)| + +## `LineStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieDataComponent](#ISerieDataComponent) + +The style of line. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether show line. | +| `type` | | the type of line.
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `color` | | the color of line, default use serie color. | +| `toColor` | | the middle color of line, default use serie color. | +| `toColor2` | | the end color of line, default use serie color. | +| `width` |0 | the width of line. | +| `length` |0 | the length of line. | +| `opacity` |1 | Opacity of the line. Supports value from 0 to 1, and the line will not be drawn when set to 0. | + +## `Location` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[IPropertyChanged](#IPropertyChanged) + +Location type. Quick to set the general location. + +|field|default|comment| +|--|--|--| +| `align` | | 对齐方式。
`Align`:
- `Center`: 对齐方式
- `Left`: 对齐方式
- `Right`: 对齐方式
| +| `left` | | Distance between component and the left side of the container. | +| `right` | | Distance between component and the left side of the container. | +| `top` | | Distance between component and the left side of the container. | +| `bottom` | | Distance between component and the left side of the container. | + +## `MainComponent` + +Inherits or Implemented: [IComparable](#IComparable) + + +## `MarkArea` + +Inherits or Implemented: [MainComponent](#MainComponent) + +Used to mark an area in chart. For example, mark a time interval. + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示标域。 | +| `text` | | The text of markArea. 标域显示的文本。 | +| `serieIndex` |0 | Serie index of markArea. 标域影响的Serie索引。 | +| `start` | | 标域范围的起始数据。 [MarkAreaData](MarkAreaData)| +| `end` | | 标域范围的结束数据。 [MarkAreaData](MarkAreaData)| +| `itemStyle` | | 标域样式。 [ItemStyle](ItemStyle)| +| `label` | | 标域文本样式。 [LabelStyle](LabelStyle)| + +## `MarkAreaData` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +标域的数据。 + +|field|default|comment| +|--|--|--| +| `type` | | Special markArea types, are used to label maximum value, minimum value and so on.
`MarkAreaType`:
- `None`: 标域类型
- `Min`: 最小值。
- `Max`: 最大值。
- `Average`: 平均值。
- `Median`: 中位数。
| +| `name` | | Name of the marker, which will display as a label. | +| `dimension` |1 | From which dimension of data to calculate the maximum and minimum value and so on. | +| `xPosition` | | The x coordinate relative to the origin, in pixels. | +| `yPosition` | | The y coordinate relative to the origin, in pixels. | +| `xValue` | | The value specified on the X-axis. A value specified when the X-axis is the category axis represents the index of the category axis data, otherwise a specific value. | +| `yValue` | | That's the value on the Y-axis. The value specified when the Y axis is the category axis represents the index of the category axis data, otherwise the specific value. | + +## `MarkLine` + +Inherits or Implemented: [MainComponent](#MainComponent) + +Use a line in the chart to illustrate. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to display the marking line. | +| `serieIndex` |0 | The serie index of markLine. | +| `animation` | | The animation of markline. [AnimationStyle](AnimationStyle)| +| `data` | | A list of marked data. When the group of data item is 0, each data item represents a line; When the group is not 0, two data items of the same group represent the starting point and the ending point of the line respectively to form a line. In this case, the relevant style parameters of the line are the parameters of the starting point. | + +## `MarkLineData` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +Data of marking line. + +|field|default|comment| +|--|--|--| +| `type` | | Special label types, are used to label maximum value, minimum value and so on.
`MarkLineType`:
- `None`: 标线类型
- `Min`: 最小值。
- `Max`: 最大值。
- `Average`: 平均值。
- `Median`: 中位数。
| +| `name` | | Name of the marker, which will display as a label. | +| `dimension` |1 | From which dimension of data to calculate the maximum and minimum value and so on. | +| `xPosition` | | The x coordinate relative to the origin, in pixels. | +| `yPosition` | | The y coordinate relative to the origin, in pixels. | +| `xValue` | | The value specified on the X-axis. A value specified when the X-axis is the category axis represents the index of the category axis data, otherwise a specific value. | +| `yValue` | | That's the value on the Y-axis. The value specified when the Y axis is the category axis represents the index of the category axis data, otherwise the specific value. | +| `group` |0 | Grouping. When the group is not 0, it means that this data is the starting point or end point of the marking line. Data consistent with the group form a marking line. | +| `zeroPosition` |false | Is the origin of the coordinate system. | +| `startSymbol` | | The symbol of the start point of markline. [SymbolStyle](SymbolStyle)| +| `endSymbol` | | The symbol of the end point of markline. [SymbolStyle](SymbolStyle)| +| `lineStyle` | | The line style of markline. [LineStyle](LineStyle)| +| `label` | | Text styles of label. You can set position to Start, Middle, and End to display text in different locations. [LabelStyle](LabelStyle)| + +## `Parallel` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `ParallelAxis` + +Inherits or Implemented: [Axis](#Axis) + + +## `ParallelCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[IUpdateRuntimeData](#IUpdateRuntimeData),[ISerieContainer](#ISerieContainer) + +Grid component. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to show the grid in rectangular coordinate. | +| `orient` | | Orientation of the axis. By default, it's 'Vertical'. You can set it to be 'Horizonal' to make a vertical axis.
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `left` |0.1f | Distance between grid component and the left side of the container. | +| `right` |0.08f | Distance between grid component and the right side of the container. | +| `top` |0.22f | Distance between grid component and the top side of the container. | +| `bottom` |0.12f | Distance between grid component and the bottom side of the container. | +| `backgroundColor` | | Background color of grid, which is transparent by default. | + +## `Pie` + +Inherits or Implemented: [Serie](#Serie) + + +## `PolarAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `PolarCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[ISerieContainer](#ISerieContainer) + +Polar coordinate can be used in scatter and line chart. Every polar coordinate has an angleAxis and a radiusAxis. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to show the polor component. | +| `center` | | The center of ploar. The center[0] is the x-coordinate, and the center[1] is the y-coordinate. When value between 0 and 1 represents a percentage relative to the chart. | +| `radius` |0.35f | the radius of polar. | +| `backgroundColor` | | Background color of polar, which is transparent by default. | + +## `Radar` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `RadarAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `RadarCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[ISerieContainer](#ISerieContainer) + +Radar coordinate conponnet for radar charts. 雷达图坐标系组件,只适用于雷达图。 + + +## `RadiusAxis` + +Inherits or Implemented: [Axis](#Axis) + +Radial axis of polar coordinate. + + +## `RadiusAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `Ring` + +Inherits or Implemented: [Serie](#Serie) + + +## `Scatter` + +Inherits or Implemented: [BaseScatter](#BaseScatter) + + +## `Serie` + +Inherits or Implemented: [BaseSerie](#BaseSerie),[IComparable](#IComparable) + +系列。 + +|field|default|comment| +|--|--|--| +| `index` | | The index of serie. | +| `show` |true | Whether to show serie in chart. | +| `coordSystem` | | the chart coord system of serie. | +| `serieType` | | the type of serie. | +| `serieName` | | Series name used for displaying in tooltip and filtering with legend. | +| `stack` | | If stack the value. On the same category axis, the series with the same stack name would be put on top of each other. | +| `xAxisIndex` |0 | the index of XAxis. | +| `yAxisIndex` |0 | the index of YAxis. | +| `radarIndex` |0 | Index of radar component that radar chart uses. | +| `vesselIndex` |0 | Index of vesel component that liquid chart uses. | +| `polarIndex` |0 | Index of polar component that serie uses. | +| `singleAxisIndex` |0 | Index of single axis component that serie uses. | +| `parallelIndex` |0 | Index of parallel coord component that serie uses. | +| `minShow` | | The min number of data to show in chart. | +| `maxShow` | | The max number of data to show in chart. | +| `maxCache` | | The max number of serie data cache. The first data will be remove when the size of serie data is larger then maxCache. | +| `sampleDist` |0 | the min pixel dist of sample. | +| `sampleType` | | the type of sample.
`SampleType`:
- `Peak`: Take a peak. When the average value of the filter point is greater than or equal to 'sampleAverage', take the maximum value; If you do it the other way around, you get the minimum.
- `Average`: Take the average of the filter points.
- `Max`: Take the maximum value of the filter point.
- `Min`: Take the minimum value of the filter point.
- `Sum`: Take the sum of the filter points.
| +| `sampleAverage` |0 | 设定的采样平均值。当sampleType 为 Peak 时,用于和过滤数据的平均值做对比是取最大值还是最小值。默认为0时会实时计算所有数据的平均值。 | +| `lineType` | | The type of line chart.
`LineType`:
- `Normal`: the normal line chart,
- `Smooth`: the smooth line chart,
- `StepStart`: step line.
- `StepMiddle`: step line.
- `StepEnd`: step line.
| +| `barType` | | 柱形图类型。
`BarType`:
- `Normal`: normal bar.
- `Zebra`: zebra bar.
- `Capsule`: capsule bar.
| +| `barPercentStack` |false | 柱形图是否为百分比堆积。相同stack的serie只要有一个barPercentStack为true,则就显示成百分比堆叠柱状图。 | +| `barWidth` |0 | The width of the bar. Adaptive when default 0. | +| `barGap` |0.1f | The gap between bars between different series, is a percent value like '0.3f' , which means 30% of the bar width, can be set as a fixed value. Set barGap as '-1' can overlap bars that belong to different series, which is useful when making a series of bar be background. In a single coodinate system, this attribute is shared by multiple 'bar' series. This attribute should be set on the last 'bar' series in the coodinate system, then it will be adopted by all 'bar' series in the coordinate system. | +| `barZebraWidth` |4f | 斑马线的粗细。 | +| `barZebraGap` |2f | 斑马线的间距。 | +| `min` | | 最小值。 | +| `max` | | 最大值。 | +| `minSize` |0f | 数据最小值 min 映射的宽度。 | +| `maxSize` |1f | 数据最大值 max 映射的宽度。 | +| `startAngle` | | 起始角度。和时钟一样,12点钟位置是0度,顺时针到360度。 | +| `endAngle` | | 结束角度。和时钟一样,12点钟位置是0度,顺时针到360度。 | +| `minAngle` | | The minimum angle of sector(0-360). It prevents some sector from being too small when value is small. | +| `clockwise` |true | 是否顺时针。 | +| `roundCap` | | 是否开启圆弧效果。 | +| `splitNumber` | | 刻度分割段数。最大可设置36。 | +| `clickOffset` |true | Whether offset when mouse click pie chart item. | +| `roseType` | | Whether to show as Nightingale chart.
`RoseType`:
- `None`: Don't show as Nightingale chart.
- `Radius`: Use central angle to show the percentage of data, radius to show data size.
- `Area`: All the sectors will share the same central angle, the data size is shown only through radiuses.
| +| `gap` | | gap of item. | +| `center` | | the center of chart. | +| `radius` | | the radius of chart. | +| `showDataDimension` | | 数据项里的数据维数。 | +| `showDataName` | | 在Editor的inpsector上是否显示name参数 | +| `clip` |false | If clip the overflow on the coordinate system. | +| `ignore` |false | 是否开启忽略数据。当为 true 时,数据值为 ignoreValue 时不进行绘制。 | +| `ignoreValue` |0 | 忽略数据的默认值。当ignore为true才有效。 | +| `ignoreLineBreak` |false | 忽略数据时折线是断开还是连接。默认false为连接。 | +| `showAsPositiveNumber` |false | Show negative number as positive number. | +| `large` |true | 是否开启大数据量优化,在数据图形特别多而出现卡顿时候可以开启。 开启后配合 largeThreshold 在数据量大于指定阈值的时候对绘制进行优化。 缺点:优化后不能自定义设置单个数据项的样式,不能显示Label。 | +| `largeThreshold` |200 | 开启大数量优化的阈值。只有当开启了large并且数据量大于该阀值时才进入性能模式。 | +| `avoidLabelOverlap` |false | 在饼图且标签外部显示的情况下,是否启用防止标签重叠策略,默认关闭,在标签拥挤重叠的情况下会挪动各个标签的位置,防止标签间的重叠。 | +| `radarType` | | 雷达图类型。
`RadarType`:
- `Multiple`: multiple radar.
- `Single`: single radar.
| +| `placeHolder` |false | 占位模式。占位模式时,数据有效但不参与渲染和显示。 | +| `dataSortType` | | 组件的数据排序。
`SerieDataSortType`:
- `None`: 按 data 的顺序
- `Ascending`: 升序
- `Descending`: 降序
| +| `orient` | | 组件的朝向。
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `align` | | 组件水平方向对齐方式。
`Align`:
- `Center`: 对齐方式
- `Left`: 对齐方式
- `Right`: 对齐方式
| +| `left` | | Distance between component and the left side of the container. | +| `right` | | Distance between component and the right side of the container. | +| `top` | | Distance between component and the top side of the container. | +| `bottom` | | Distance between component and the bottom side of the container. | +| `insertDataToHead` | | Whether to add new data at the head or at the end of the list. | +| `lineStyle` | | The style of line. [LineStyle](LineStyle)| +| `symbol` | | the symbol of serie data item. [SerieSymbol](SerieSymbol)| +| `animation` | | The start animation. [AnimationStyle](AnimationStyle)| +| `itemStyle` | | The style of data item. [ItemStyle](ItemStyle)| +| `data` | | 系列中的数据内容数组。SerieData可以设置1到n维数据。 | + +## `SerieData` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +A data item of serie. + +|field|default|comment| +|--|--|--| +| `index` | | the index of SerieData. | +| `name` | | the name of data item. | +| `id` | | the id of data. | +| `parentId` | | the id of parent SerieData. | +| `ignore` | | 是否忽略数据。当为 true 时,数据不进行绘制。 | +| `selected` | | Whether the data item is selected. | +| `radius` | | 自定义半径。可用在饼图中自定义某个数据项的半径。 | +| `data` | | An arbitrary dimension data list of data item. | + +## `SerieSymbol` + +Inherits or Implemented: [SymbolStyle](#SymbolStyle),[ISerieDataComponent](#ISerieDataComponent) + +系列数据项的标记的图形 + +|field|default|comment| +|--|--|--| +| `sizeType` | | the type of symbol size.
`SymbolSizeType`:
- `Custom`: Specify constant for symbol size.
- `FromData`: Specify the dataIndex and dataScale to calculate symbol size.
- `Function`: Specify function for symbol size.
| +| `selectedSize` |0f | the size of selected symbol. | +| `dataIndex` |1 | whitch data index is when the sizeType assined as FromData. | +| `dataScale` |1 | the scale of data when sizeType assined as FromData. | +| `selectedDataScale` |1.5f | the scale of selected data when sizeType assined as FromData. | +| `sizeFunction` | | the function of size when sizeType assined as Function. | +| `selectedSizeFunction` | | the function of size when sizeType assined as Function. | +| `startIndex` | | the index start to show symbol. | +| `interval` | | the interval of show symbol. | +| `forceShowLast` |false | whether to show the last symbol. | +| `repeat` |false | 图形是否重复。 | + +## `SerieTheme` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `lineWidth` | | the color of text. | +| `lineSymbolSize` | | | +| `scatterSymbolSize` | | | +| `pieTooltipExtraRadius` | | 饼图鼠标移到高亮时的额外半径 | +| `selectedRate` |1.3f | | +| `pieSelectedOffset` | | 饼图选中时的中心点偏移 | +| `candlestickColor` |Color32(235, 84, 84, 255) | K线图阳线(涨)填充色 | +| `candlestickColor0` |Color32(71, 178, 98, 255) | K线图阴线(跌)填充色 | +| `candlestickBorderWidth` |1 | K线图边框宽度 | +| `candlestickBorderColor` |Color32(235, 84, 84, 255) | K线图阳线(跌)边框色 | +| `candlestickBorderColor0` |Color32(71, 178, 98, 255) | K线图阴线(跌)边框色 | + +## `Settings` + +Inherits or Implemented: [MainComponent](#MainComponent) + +Global parameter setting component. The default value can be used in general, and can be adjusted when necessary. + +|field|default|comment| +|--|--|--| +| `show` |true | | +| `maxPainter` |10 | max painter. | +| `reversePainter` |false | Painter是否逆序。逆序时index大的serie最先绘制。 | +| `basePainterMaterial` | | Base Pointer 材质球,设置后会影响Axis等。 | +| `seriePainterMaterial` | | Serie Pointer 材质球,设置后会影响所有Serie。 | +| `topPainterMaterial` | | Top Pointer 材质球,设置后会影响Tooltip等。 | +| `lineSmoothStyle` |3f | Curve smoothing factor. By adjusting the smoothing coefficient, the curvature of the curve can be changed, and different curves with slightly different appearance can be obtained. | +| `lineSmoothness` |2f | Smoothness of curve. The smaller the value, the smoother the curve, but the number of vertices will increase. | +| `lineSegmentDistance` |3f | The partition distance of a line segment. A line in a normal line chart is made up of many segments, the number of which is determined by the change in value. The smaller the number of segments, the higher the number of vertices. When the area with gradient is filled, the larger the value, the worse the transition effect. | +| `cicleSmoothness` |2f | the smoothess of cricle. | +| `legendIconLineWidth` |2 | the width of line serie legend. | +| `legendIconCornerRadius` | | The radius of rounded corner. Its unit is px. Use array to respectively specify the 4 corner radiuses((clockwise upper left, upper right, bottom right and bottom left)). | + +## `SimplifiedBar` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer),[ISimplifiedSerie](#ISimplifiedSerie) + + +## `SimplifiedCandlestick` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer),[ISimplifiedSerie](#ISimplifiedSerie) + + +## `SimplifiedLine` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer),[ISimplifiedSerie](#ISimplifiedSerie) + + +## `SingleAxis` + +Inherits or Implemented: [Axis](#Axis),[IUpdateRuntimeData](#IUpdateRuntimeData) + +Single axis. + +|field|default|comment| +|--|--|--| +| `orient` | | Orientation of the axis. By default, it's 'Horizontal'. You can set it to be 'Vertical' to make a vertical axis.
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `left` |0.1f | Distance between component and the left side of the container. | +| `right` |0.1f | Distance between component and the right side of the container. | +| `top` |0f | Distance between component and the top side of the container. | +| `bottom` |0.2f | Distance between component and the bottom side of the container. | +| `width` |0 | width of axis. | +| `height` |50 | height of axis. | + +## `SingleAxisCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem) + + +## `StageColor` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `percent` | | 结束位置百分比。 | +| `color` | | 颜色。 | + +## `SubTitleTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + + +## `SymbolStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +系列数据项的标记的图形 + +|field|default|comment| +|--|--|--| +| `show` |true | Whether the symbol is showed. | +| `type` | | the type of symbol.
`SymbolType`:
- `None`: 不显示标记。
- `Custom`: 自定义标记。
- `Circle`: 圆形。
- `EmptyCircle`: 空心圆。
- `Rect`: 正方形。可通过设置`itemStyle`的`cornerRadius`变成圆角矩形。
- `EmptyRect`: 空心正方形。
- `Triangle`: 三角形。
- `EmptyTriangle`: 空心三角形。
- `Diamond`: 菱形。
- `EmptyDiamond`: 空心菱形。
- `Arrow`: 箭头。
- `EmptyArrow`: 空心箭头。
| +| `size` |0f | the size of symbol. | +| `gap` |0 | the gap of symbol and line segment. | +| `width` |0f | 图形的宽。 | +| `height` |0f | 图形的高。 | +| `offset` |Vector2.zero | 图形的偏移。 | +| `image` | | 自定义的标记图形。 | +| `imageType` | | the fill type of image. | +| `color` | | 图形的颜色。 | + +## `TextLimit` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +Text character limitation and adaptation component. When the length of the text exceeds the set length, it is cropped and suffixes are appended to the end.Only valid in the category axis. + +|field|default|comment| +|--|--|--| +| `enable` |false | Whether to enable text limit. | +| `maxWidth` |0 | Set the maximum width. A default of 0 indicates automatic fetch; otherwise, custom. | +| `gap` |1 | White pixel distance at both ends. | +| `suffix` | | Suffixes when the length exceeds. | + +## `TextPadding` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +Settings related to text. + +|field|default|comment| +|--|--|--| +| `show` |true | show padding. 是否显示。 | +| `top` |2 | padding of top. | +| `right` |4 | padding of right. | +| `left` |4 | padding of left. | +| `bottom` |2 | padding of bottom. | + +## `TextStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +Settings related to text. + +|field|default|comment| +|--|--|--| +| `show` |true | Settings related to text. | +| `font` | | the font of text. When `null`, the theme's font is used by default. | +| `autoWrap` |false | 是否自动换行。 | +| `autoAlign` |true | 文本是否让系统自动选对齐方式。为false时才会用alignment。 | +| `rotate` |0 | Rotation of text. | +| `autoColor` |false | 是否开启自动颜色。当开启时,会自动设置颜色。 | +| `color` | | the color of text. | +| `fontSize` |0 | font size. | +| `fontStyle` | | font style. | +| `lineSpacing` |1f | text line spacing. | +| `alignment` | | 对齐方式。 | +| `tMPFont` | | the font of textmeshpro. | +| `tMPFontStyle` | | | +| `tMPAlignment` | | | + +## `Theme` + +Inherits or Implemented: [ScriptableObject](#ScriptableObject) + +Theme. + +|field|default|comment| +|--|--|--| +| `themeType` | | the theme of chart.
`ThemeType`:
- `Default`: 默认主题。
- `Light`: 亮主题。
- `Dark`: 暗主题。
- `Custom`: 自定义主题。
| +| `themeName` | | the name of theme. | +| `font` | | the font of chart text。 | +| `tMPFont` | | the font of chart text。 | +| `contrastColor` | | the contrast color of chart. | +| `backgroundColor` | | the background color of chart. | +| `colorPalette` | | The color list of palette. If no color is set in series, the colors would be adopted sequentially and circularly from this list as the colors of series. | +| `common` | | [ComponentTheme](ComponentTheme)| +| `title` | | [TitleTheme](TitleTheme)| +| `subTitle` | | [SubTitleTheme](SubTitleTheme)| +| `legend` | | [LegendTheme](LegendTheme)| +| `axis` | | [AxisTheme](AxisTheme)| +| `tooltip` | | [TooltipTheme](TooltipTheme)| +| `dataZoom` | | [DataZoomTheme](DataZoomTheme)| +| `visualMap` | | [VisualMapTheme](VisualMapTheme)| +| `serie` | | [SerieTheme](SerieTheme)| + +## `ThemeStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +Theme. + +|field|default|comment| +|--|--|--| +| `show` |true | | +| `sharedTheme` | | [Theme](Theme)| +| `transparentBackground` |false | Whether the background color is transparent. When true, the background color is not drawn. |是否透明背景颜色。当设置为true时,不绘制背景颜色。 | +| `enableCustomTheme` |false | Whether to customize theme colors. When set to true, you can use 'sync color to custom' to synchronize the theme color to the custom color. It can also be set manually. | +| `customFont` | | | +| `customBackgroundColor` | | the custom background color of chart. | +| `customColorPalette` | | | + +## `Title` + +Inherits or Implemented: [MainComponent](#MainComponent),[IPropertyChanged](#IPropertyChanged) + +Title component, including main title and subtitle. + +|field|default|comment| +|--|--|--| +| `show` |true | [default:true] Set this to false to prevent the title from showing. | +| `text` | | The main title text, supporting \n for newlines. | +| `subText` | | Subtitle text, supporting for \n for newlines. | +| `labelStyle` | | The text style of main title. [LabelStyle](LabelStyle)| +| `subLabelStyle` | | The text style of sub title. [LabelStyle](LabelStyle)| +| `itemGap` |0 | [default:8] The gap between the main title and subtitle. | +| `location` | | The location of title component. [Location](Location)| + +## `TitleStyle` + +Inherits or Implemented: [LabelStyle](#LabelStyle),[ISerieDataComponent](#ISerieDataComponent),[ISerieExtraComponent](#ISerieExtraComponent) + +the title of serie. + + +## `TitleTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + + +## `Tooltip` + +Inherits or Implemented: [MainComponent](#MainComponent) + +Tooltip component. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to show the tooltip component. | +| `type` | | Indicator type.
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `trigger` | | Type of triggering.
`Tooltip.Trigger`:
- `Item`: Triggered by data item, which is mainly used for charts that don't have a category axis like scatter charts or pie charts.
- `Axis`: Triggered by axes, which is mainly used for charts that have category axes, like bar charts or line charts.
- `None`: Trigger nothing.
| +| `itemFormatter` | | a string template formatter for a single Serie or data item content. Support for wrapping lines with \n. Template variables are {.}, {a}, {b}, {c}, {d}.
{.} is the dot of the corresponding color of a Serie that is currently indicated or whose index is 0.
{a} is the series name of the serie that is currently indicated or whose index is 0.
{b} is the name of the data item serieData that is currently indicated or whose index is 0, or a category value (such as the X-axis of a line chart).
{c} is the value of a Y-dimension (dimesion is 1) from a Serie that is currently indicated or whose index is 0.
{d} is the percentage value of Y-dimensions (dimesion is 1) from serie that is currently indicated or whose index is 0, with no % sign.
{e} is the name of the data item serieData that is currently indicated or whose index is 0.
{f} is sum of data.
{.1} represents a dot from serie corresponding color that specifies index as 1.
1 in {a1}, {b1}, {c1} represents a serie that specifies an index of 1.
{c1:2} represents the third data from serie's current indication data item indexed to 1 (a data item has multiple data, index 2 represents the third data).
{c1:2-2} represents the third data item from serie's third data item indexed to 1 (i.e., which data item must be specified to specify).
{d1:2: F2} indicates that a formatted string with a value specified separately is F2 (numericFormatter is used when numericFormatter is not specified).
{d:0.##} indicates that a formatted string with a value specified separately is 0.## (used for percentage, reserved 2 valid digits while avoiding the situation similar to "100.00%" when using f2 ).
Example: "{a}, {c}", "{a1}, {c1: f1}", "{a1}, {c1:0: f1}", "{a1} : {c1:1-1: f1}"
| +| `titleFormatter` | | The string template formatter for the tooltip title content. Support for wrapping lines with \n. The placeholder {I} can be set separately to indicate that the title is ignored and not displayed. Template see itemFormatter. | +| `marker` | | the marker of serie. | +| `fixedWidth` |0 | Fixed width. Higher priority than minWidth. | +| `fixedHeight` |0 | Fixed height. Higher priority than minHeight. | +| `minWidth` |0 | Minimum width. If fixedWidth has a value, get fixedWidth first. | +| `minHeight` |0 | Minimum height. If fixedHeight has a value, take priority over fixedHeight. | +| `numericFormatter` | | Standard numeric format string. Used to format numeric values to display as strings. Using 'Axx' form: 'A' is the single character of the format specifier, supporting 'C' currency, 'D' decimal, 'E' exponent, 'F' number of vertices, 'G' regular, 'N' digits, 'P' percentage, 'R' round tripping, 'X' hex etc. 'XX' is the precision specification, from '0' - '99'. | +| `paddingLeftRight` |10 | the text padding of left and right. defaut:5. | +| `paddingTopBottom` |10 | the text padding of top and bottom. defaut:5. | +| `ignoreDataShow` |false | Whether to show ignored data on tooltip. | +| `ignoreDataDefaultContent` | | The default display character information for ignored data. | +| `showContent` |true | Whether to show the tooltip floating layer, whose default value is true. It should be configurated to be false, if you only need tooltip to trigger the event or show the axisPointer without content. | +| `alwayShowContent` |false | Whether to trigger after always display. | +| `offset` |Vector2(18f, -25f) | The position offset of tooltip relative to the mouse position. | +| `backgroundImage` | | The background image of tooltip. | +| `backgroundType` | | The background type of tooltip. | +| `backgroundColor` | | The background color of tooltip. | +| `borderWidth` |2f | the width of tooltip border. | +| `fixedXEnable` |false | enable fixedX. | +| `fixedX` |0f | the x positionn of fixedX. | +| `fixedYEnable` |false | enable fixedY. | +| `fixedY` |0f | the y position of fixedY. | +| `titleHeight` |25f | height of title text. | +| `itemHeight` |25f | height of content text. | +| `borderColor` |Color32(230, 230, 230, 255) | the color of tooltip border. | +| `lineStyle` | | the line style of indicator line. [LineStyle](LineStyle)| +| `indicatorLabelStyle` | | the label style of tooltip axis indicator label. [LabelStyle](LabelStyle)| +| `titleLabelStyle` | | the textstyle of title. [LabelStyle](LabelStyle)| +| `contentLabelStyles` | | the textstyle list of content. | + +## `TooltipTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `lineType` | | the type of line. | +| `lineWidth` |1f | the width of line. | +| `lineColor` | | the color of line. | +| `areaColor` | | the color of line. | +| `labelTextColor` | | the text color of tooltip cross indicator's axis label. | +| `labelBackgroundColor` | | the background color of tooltip cross indicator's axis label. | + +## `VisualMap` + +Inherits or Implemented: [MainComponent](#MainComponent) + +VisualMap component. Mapping data to visual elements such as colors. + +|field|default|comment| +|--|--|--| +| `show` |true | Whether to enable components. | +| `showUI` |false | Whether to display components. If set to false, it will not show up, but the data mapping function still exists. | +| `type` | | the type of visualmap component.
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `selectedMode` | | the selected mode for Piecewise visualMap.
`VisualMap.SelectedMode`:
- `Multiple`: 多选。
- `Single`: 单选。
| +| `serieIndex` |0 | the serie index of visualMap. | +| `min` |0 | 范围最小值 | +| `max` |100 | 范围最大值 | +| `range` | | Specifies the position of the numeric value corresponding to the handle. Range should be within the range of [min,max]. | +| `text` | | Text on both ends. | +| `textGap` | | The distance between the two text bodies. | +| `splitNumber` |5 | For continuous data, it is automatically evenly divided into several segments and automatically matches the size of inRange color list when the default is 0. | +| `calculable` |false | Whether the handle used for dragging is displayed (the handle can be dragged to adjust the selected range). | +| `realtime` |true | Whether to update in real time while dragging. | +| `itemWidth` |20f | The width of the figure, that is, the width of the color bar. | +| `itemHeight` |140f | The height of the figure, that is, the height of the color bar. | +| `itemGap` |10f | 每个图元之间的间隔距离。 | +| `borderWidth` |0 | Border line width. | +| `dimension` |-1 | Specifies "which dimension" of the data to map to the visual element. "Data" is series.data. | +| `hoverLink` |true | When the hoverLink function is turned on, when the mouse hovers over the visualMap component, the corresponding value of the mouse position is highlighted in the corresponding graphic element in the diagram. | +| `autoMinMax` |true | Automatically set min, Max value 自动设置min,max的值 | +| `orient` | | Specify whether the layout of component is horizontal or vertical.
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `location` | | The location of component. [Location](Location)| +| `workOnLine` |true | Whether the visualmap is work on linestyle of linechart. | +| `workOnArea` |false | Whether the visualmap is work on areaStyle of linechart. | +| `outOfRange` | | Defines a visual color outside of the selected range. | +| `inRange` | | 分段式每一段的相关配置。 | + +## `VisualMapRange` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `min` | | 范围最小值 | +| `max` | | 范围最大值 | +| `label` | | 文字描述 | +| `color` | | 颜色 | + +## `VisualMapTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `borderWidth` | | the width of border. | +| `borderColor` | | the color of dataZoom border. | +| `backgroundColor` | | the background color of visualmap. | +| `triangeLen` |20f | 可视化组件的调节三角形边长。 | + +## `XAxis` + +Inherits or Implemented: [Axis](#Axis) + +The x axis in cartesian(rectangular) coordinate. + + +## `XCResourcesImporter` + + +## `XCSettings` + +Inherits or Implemented: [ScriptableObject](#ScriptableObject) + +|field|default|comment| +|--|--|--| +| `lang` | | [Lang](Lang)| +| `font` | | | +| `tMPFont` | | | +| `fontSizeLv1` |28 | 一级字体大小。 | +| `fontSizeLv2` |24 | | +| `fontSizeLv3` |20 | | +| `fontSizeLv4` |18 | | +| `axisLineType` | | | +| `axisLineWidth` |0.8f | | +| `axisSplitLineType` | | | +| `axisSplitLineWidth` |0.8f | | +| `axisTickWidth` |0.8f | | +| `axisTickLength` |5f | | +| `gaugeAxisLineWidth` |15f | | +| `gaugeAxisSplitLineWidth` |0.8f | | +| `gaugeAxisSplitLineLength` |15f | | +| `gaugeAxisTickWidth` |0.8f | | +| `gaugeAxisTickLength` |5f | | +| `tootipLineWidth` |0.8f | | +| `dataZoomBorderWidth` |0.5f | | +| `dataZoomDataLineWidth` |0.5f | | +| `visualMapBorderWidth` |0f | | +| `serieLineWidth` |1.8f | | +| `serieLineSymbolSize` |5f | | +| `serieScatterSymbolSize` |20f | | +| `serieSelectedRate` |1.3f | | +| `serieCandlestickBorderWidth` |1f | | +| `editorShowAllListData` |false | | +| `maxPainter` |10 | | +| `lineSmoothStyle` |3f | | +| `lineSmoothness` |2f | | +| `lineSegmentDistance` |3f | | +| `cicleSmoothness` |2f | | +| `visualMapTriangeLen` |20f | | +| `pieTooltipExtraRadius` |8f | | +| `pieSelectedOffset` |8f | | +| `customThemes` | | | + +## `YAxis` + +Inherits or Implemented: [Axis](#Axis) + +The x axis in cartesian(rectangular) coordinate. + + +[XCharts Homepage](https://github.com/XCharts-Team/XCharts)
+[XCharts API](XChartsAPI-EN.md)
+[XCharts FAQ](XChartsFAQ-EN.md) diff --git a/Assets/XCharts/Documentation/XChartsConfiguration-EN.md.meta b/Assets/XCharts/Documentation/XChartsConfiguration-EN.md.meta new file mode 100644 index 0000000..68d7840 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsConfiguration-EN.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1fdd2e77324c84364bf033ffefa41123 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsConfiguration-ZH.md b/Assets/XCharts/Documentation/XChartsConfiguration-ZH.md new file mode 100644 index 0000000..dd7d5d4 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsConfiguration-ZH.md @@ -0,0 +1,1528 @@ +# 配置项手册 + +[XCharts主页](https://github.com/XCharts-Team/XCharts)
+[XChartsAPI接口](XChartsAPI-ZH.md)
+[XCharts问答](XChartsFAQ-ZH.md) + +## Serie 系列 + +- [Bar](#Bar) +- [BaseScatter](#BaseScatter) +- [Candlestick](#Candlestick) +- [EffectScatter](#EffectScatter) +- [Heatmap](#Heatmap) +- [Line](#Line) +- [Parallel](#Parallel) +- [Pie](#Pie) +- [Radar](#Radar) +- [Ring](#Ring) +- [Scatter](#Scatter) +- [Serie](#Serie) +- [SimplifiedBar](#SimplifiedBar) +- [SimplifiedCandlestick](#SimplifiedCandlestick) +- [SimplifiedLine](#SimplifiedLine) + +## Theme 主题 + +- [AngleAxisTheme](#AngleAxisTheme) +- [AxisTheme](#AxisTheme) +- [BaseAxisTheme](#BaseAxisTheme) +- [ComponentTheme](#ComponentTheme) +- [DataZoomTheme](#DataZoomTheme) +- [LegendTheme](#LegendTheme) +- [PolarAxisTheme](#PolarAxisTheme) +- [RadarAxisTheme](#RadarAxisTheme) +- [RadiusAxisTheme](#RadiusAxisTheme) +- [SerieTheme](#SerieTheme) +- [SubTitleTheme](#SubTitleTheme) +- [Theme](#Theme) +- [ThemeStyle](#ThemeStyle) +- [TitleTheme](#TitleTheme) +- [TooltipTheme](#TooltipTheme) +- [VisualMapTheme](#VisualMapTheme) + +## MainComponent 主组件 + +- [AngleAxis](#AngleAxis) +- [Axis](#Axis) +- [Background](#Background) +- [CalendarCoord](#CalendarCoord) +- [Comment](#Comment) +- [CoordSystem](#CoordSystem) +- [DataZoom](#DataZoom) +- [GridCoord](#GridCoord) +- [Legend](#Legend) +- [MarkArea](#MarkArea) +- [MarkLine](#MarkLine) +- [ParallelAxis](#ParallelAxis) +- [ParallelCoord](#ParallelCoord) +- [PolarCoord](#PolarCoord) +- [RadarCoord](#RadarCoord) +- [RadiusAxis](#RadiusAxis) +- [Settings](#Settings) +- [SingleAxis](#SingleAxis) +- [SingleAxisCoord](#SingleAxisCoord) +- [Title](#Title) +- [Tooltip](#Tooltip) +- [VisualMap](#VisualMap) +- [XAxis](#XAxis) +- [YAxis](#YAxis) + +## ChildComponent 子组件 + +- [AngleAxisTheme](#AngleAxisTheme) +- [AnimationStyle](#AnimationStyle) +- [AreaStyle](#AreaStyle) +- [ArrowStyle](#ArrowStyle) +- [AxisLabel](#AxisLabel) +- [AxisLine](#AxisLine) +- [AxisName](#AxisName) +- [AxisSplitArea](#AxisSplitArea) +- [AxisSplitLine](#AxisSplitLine) +- [AxisTheme](#AxisTheme) +- [AxisTick](#AxisTick) +- [BaseAxisTheme](#BaseAxisTheme) +- [BaseLine](#BaseLine) +- [CommentItem](#CommentItem) +- [CommentMarkStyle](#CommentMarkStyle) +- [ComponentTheme](#ComponentTheme) +- [DataZoomTheme](#DataZoomTheme) +- [Emphasis](#Emphasis) +- [EmphasisItemStyle](#EmphasisItemStyle) +- [EmphasisLabelLine](#EmphasisLabelLine) +- [EmphasisLabelStyle](#EmphasisLabelStyle) +- [EndLabelStyle](#EndLabelStyle) +- [IconStyle](#IconStyle) +- [ImageStyle](#ImageStyle) +- [ItemStyle](#ItemStyle) +- [LabelLine](#LabelLine) +- [LabelStyle](#LabelStyle) +- [LegendTheme](#LegendTheme) +- [Level](#Level) +- [LevelStyle](#LevelStyle) +- [LineArrow](#LineArrow) +- [LineStyle](#LineStyle) +- [Location](#Location) +- [MarkAreaData](#MarkAreaData) +- [MarkLineData](#MarkLineData) +- [PolarAxisTheme](#PolarAxisTheme) +- [RadarAxisTheme](#RadarAxisTheme) +- [RadiusAxisTheme](#RadiusAxisTheme) +- [SerieData](#SerieData) +- [SerieSymbol](#SerieSymbol) +- [SerieTheme](#SerieTheme) +- [StageColor](#StageColor) +- [SubTitleTheme](#SubTitleTheme) +- [SymbolStyle](#SymbolStyle) +- [TextLimit](#TextLimit) +- [TextPadding](#TextPadding) +- [TextStyle](#TextStyle) +- [ThemeStyle](#ThemeStyle) +- [TitleStyle](#TitleStyle) +- [TitleTheme](#TitleTheme) +- [TooltipTheme](#TooltipTheme) +- [VisualMapRange](#VisualMapRange) +- [VisualMapTheme](#VisualMapTheme) + +## ISerieExtraComponent Serie额外组件 + +- [AreaStyle](#AreaStyle) +- [Emphasis](#Emphasis) +- [EmphasisItemStyle](#EmphasisItemStyle) +- [EmphasisLabelLine](#EmphasisLabelLine) +- [EmphasisLabelStyle](#EmphasisLabelStyle) +- [ImageStyle](#ImageStyle) +- [LabelLine](#LabelLine) +- [LabelStyle](#LabelStyle) +- [LineArrow](#LineArrow) +- [TitleStyle](#TitleStyle) + +## ISerieDataComponent SerieData额外组件 + +- [AreaStyle](#AreaStyle) +- [Emphasis](#Emphasis) +- [EmphasisItemStyle](#EmphasisItemStyle) +- [EmphasisLabelLine](#EmphasisLabelLine) +- [EmphasisLabelStyle](#EmphasisLabelStyle) +- [ImageStyle](#ImageStyle) +- [ItemStyle](#ItemStyle) +- [LabelLine](#LabelLine) +- [LabelStyle](#LabelStyle) +- [LineStyle](#LineStyle) +- [SerieSymbol](#SerieSymbol) +- [TitleStyle](#TitleStyle) + +## Other 其他 + +- [BaseSerie](#BaseSerie) +- [ChartText](#ChartText) +- [ChildComponent](#ChildComponent) +- [DebugInfo](#DebugInfo) +- [Indicator](#Indicator) +- [Lang](#Lang) +- [LangCandlestick](#LangCandlestick) +- [LangTime](#LangTime) +- [MainComponent](#MainComponent) +- [XCResourcesImporter](#XCResourcesImporter) +- [XCSettings](#XCSettings) + +## `AngleAxis` + +Inherits or Implemented: [Axis](#Axis) + +极坐标系的角度轴。 + +|field|default|comment| +|--|--|--| +| `startAngle` |0 | 起始刻度的角度,默认为 0 度,即圆心的正右方。 | + +## `AngleAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `AnimationStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +动画表现。 + +|field|default|comment| +|--|--|--| +| `enable` |true | 是否开启动画效果。 | +| `type` | | 动画类型。
`AnimationType`:
- `Default`: 默认。内部会根据实际情况选择一种动画播放方式。
- `LeftToRight`: 从左往右播放动画。
- `BottomToTop`: 从下往上播放动画。
- `InsideOut`: 由内到外播放动画。
- `AlongPath`: 沿着路径播放动画。
- `Clockwise`: 顺时针播放动画。
| +| `easting` | | 动画的缓动效果。
`AnimationEasing`:
- `Linear`:
| +| `threshold` |2000 | 是否开启动画的阈值,当单个系列显示的图形数量大于这个阈值时会关闭动画。 | +| `fadeInDuration` |1000 | 设定的渐入动画时长(毫秒)。如果要设置单个数据项的渐入时长,可以用代码定制:customFadeInDuration。 | +| `fadeInDelay` |0 | 渐入动画延时(毫秒)。如果要设置单个数据项的延时,可以用代码定制:customFadeInDelay。 | +| `fadeOutDuration` |1000f | 设定的渐出动画时长(毫秒)。如果要设置单个数据项的渐出时长,可以用代码定制:customFadeOutDuration。 | +| `fadeOutDelay` |0 | 渐出动画延时(毫秒)。如果要设置单个数据项的延时,可以用代码定制:customFadeOutDelay。 | +| `dataChangeEnable` |true | 是否开启数据变更动画。 | +| `dataChangeDuration` |500 | 数据变更的动画时长(毫秒)。 | +| `actualDuration` | | 实际的动画时长(毫秒)。 | + +## `AreaStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +区域填充样式。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示区域填充。 | +| `origin` | | 区域填充的起始位置。
`AreaStyle.AreaOrigin`:
- `Auto`: 填充坐标轴轴线到数据间的区域。
- `Start`: 填充坐标轴底部到数据间的区域。
- `End`: 填充坐标轴顶部到数据间的区域。
| +| `color` | | 区域填充的颜色,如果toColor不是默认值,则表示渐变色的起点颜色。 | +| `toColor` | | 渐变色的终点颜色。 | +| `opacity` |0.6f | 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 | +| `highlightColor` | | 高亮时区域填充的颜色,如果highlightToColor不是默认值,则表示渐变色的起点颜色。 | +| `highlightToColor` | | 高亮时渐变色的终点颜色。 | + +## `ArrowStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `width` |10 | 箭头宽。 | +| `height` |15 | 箭头高。 | +| `offset` |0 | 箭头偏移。 | +| `dent` |3 | 箭头的凹度。 | +| `color` |Color.clear | 箭头颜色。 | + +## `Axis` + +Inherits or Implemented: [MainComponent](#MainComponent) + +直角坐标系的坐标轴组件。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示坐标轴。 | +| `type` | | 坐标轴类型。
`Axis.AxisType`:
- `Value`:
- `Category`:
- `Log`: 对数轴。适用于对数数据。
- `Time`: 时间轴。适用于连续的时序数据。
| +| `minMaxType` | | 坐标轴刻度最大最小值显示类型。
`Axis.AxisMinMaxType`:
- `Default`: 0-最大值。
- `MinMax`: 最小值-最大值。
- `Custom`: 自定义最小值最大值。
| +| `gridIndex` | | 坐标轴所在的 grid 的索引,默认位于第一个 grid。 | +| `polarIndex` | | 坐标轴所在的 ploar 的索引,默认位于第一个 polar。 | +| `parallelIndex` | | 坐标轴所在的 parallel 的索引,默认位于第一个 parallel。 | +| `position` | | 坐标轴在Grid中的位置。
`Axis.AxisPosition`:
- `Left`: 坐标轴在Grid中的位置
- `Right`: 坐标轴在Grid中的位置
- `Bottom`: 坐标轴在Grid中的位置
- `Top`: 坐标轴在Grid中的位置
| +| `offset` | | 坐标轴相对默认位置的偏移。在相同position有多个坐标轴时有用。 | +| `min` | | 设定的坐标轴刻度最小值,当minMaxType为Custom时有效。 | +| `max` | | 设定的坐标轴刻度最大值,当minMaxType为Custom时有效。 | +| `splitNumber` |0 | 坐标轴的期望的分割段数。默认为0表示自动分割。 | +| `interval` |0 | 强制设置坐标轴分割间隔。无法在类目轴中使用。 | +| `boundaryGap` |true | 坐标轴两边是否留白。只对类目轴有效。 | +| `maxCache` |0 | The first data will be remove when the size of axis data is larger then maxCache. | +| `logBase` |10 | 对数轴的底数,只在对数轴(type:'Log')中有效。 | +| `logBaseE` |false | 对数轴是否以自然数 e 为底数,为 true 时 logBase 失效。 | +| `ceilRate` |0 | 最大最小值向上取整的倍率。默认为0时自动计算。 | +| `inverse` |false | 是否反向坐标轴。在类目轴中无效。 | +| `clockwise` |true | 刻度增长是否按顺时针,默认顺时针。 | +| `insertDataToHead` | | 添加新数据时是在列表的头部还是尾部加入。 | +| `icons` | | 类目数据对应的图标。 | +| `data` | | 类目数据,在类目轴(type: 'category')中有效。 | +| `axisLine` | | 坐标轴轴线。 [AxisLine](AxisLine)| +| `axisName` | | 坐标轴名称。 [AxisName](AxisName)| +| `axisTick` | | 坐标轴刻度。 [AxisTick](AxisTick)| +| `axisLabel` | | 坐标轴刻度标签。 [AxisLabel](AxisLabel)| +| `splitLine` | | 坐标轴分割线。 [AxisSplitLine](AxisSplitLine)| +| `splitArea` | | 坐标轴分割区域。 [AxisSplitArea](AxisSplitArea)| + +## `AxisLabel` + +Inherits or Implemented: [LabelStyle](#LabelStyle) + +坐标轴刻度标签的相关设置。 + +|field|default|comment| +|--|--|--| +| `interval` |0 | 坐标轴刻度标签的显示间隔,在类目轴中有效。0表示显示所有标签,1表示隔一个隔显示一个标签,以此类推。 | +| `inside` |false | 刻度标签是否朝内,默认朝外。 | +| `showAsPositiveNumber` |false | 将负数数值显示为正数。一般和`Serie`的`showAsPositiveNumber`配合使用。 | +| `onZero` |false | 刻度标签显示在0刻度上。 | +| `showStartLabel` |true | 是否显示第一个文本。 | +| `showEndLabel` |true | 是否显示最后一个文本。 | +| `textLimit` | | 文本限制。 [TextLimit](TextLimit)| + +## `AxisLine` + +Inherits or Implemented: [BaseLine](#BaseLine) + +坐标轴轴线。 + +|field|default|comment| +|--|--|--| +| `onZero` | | X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。 | +| `showArrow` | | 是否显示箭头。 | +| `arrow` | | 轴线箭头。 [ArrowStyle](ArrowStyle)| + +## `AxisName` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +坐标轴名称。 + +|field|default|comment| +|--|--|--| +| `show` | | 是否显示坐标名称。 | +| `name` | | 坐标轴名称。 | +| `labelStyle` | | 文本样式。 [LabelStyle](LabelStyle)| + +## `AxisSplitArea` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +坐标轴在 grid 区域中的分隔区域,默认不显示。 + +|field|default|comment| +|--|--|--| +| `show` | | 是否显示分隔区域。 | +| `color` | | 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。 | + +## `AxisSplitLine` + +Inherits or Implemented: [BaseLine](#BaseLine) + +坐标轴在 grid 区域中的分隔线。 + +|field|default|comment| +|--|--|--| +| `interval` | | 坐标轴分隔线的显示间隔。 | +| `distance` | | 刻度线与轴线的距离。 | +| `autoColor` | | 自动设置颜色。 | + +## `AxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `AxisTick` + +Inherits or Implemented: [BaseLine](#BaseLine) + +坐标轴刻度相关设置。 + +|field|default|comment| +|--|--|--| +| `alignWithLabel` | | 类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。 | +| `inside` | | 坐标轴刻度是否朝内,默认朝外。 | +| `showStartTick` | | 是否显示第一个刻度。 | +| `showEndTick` | | 是否显示最后一个刻度。 | +| `distance` | | 刻度线与轴线的距离。 | +| `splitNumber` |0 | 分隔线之间分割的刻度数。 | +| `autoColor` | | | + +## `Background` + +Inherits or Implemented: [MainComponent](#MainComponent) + +背景组件。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否启用背景组件。 | +| `image` | | 背景图。 | +| `imageType` | | 背景图填充类型。 | +| `imageColor` | | 背景图颜色。 | +| `autoColor` |true | 当background组件开启时,是否自动使用主题背景色作为backgrounnd组件的颜色。当设置为false时,用imageColor作为颜色。 | + +## `Bar` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `BaseAxisTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `lineType` | | 坐标轴线类型。 | +| `lineWidth` |1f | 坐标轴线宽。 | +| `lineLength` |0f | 坐标轴线长。 | +| `lineColor` | | 坐标轴线颜色。 | +| `splitLineType` | | 分割线线类型。 | +| `splitLineWidth` |1f | 分割线线宽。 | +| `splitLineLength` |0f | 分割线线长。 | +| `splitLineColor` | | 分割线线颜色。 | +| `tickWidth` |1f | 刻度线线宽。 | +| `tickLength` |5f | 刻度线线长。 | +| `tickColor` | | 坐标轴线颜色。 | +| `splitAreaColors` | | | + +## `BaseLine` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +线条基础配置。 + +|field|default|comment| +|--|--|--| +| `show` | | 是否显示坐标轴轴线。 | +| `lineStyle` | | 线条样式 [LineStyle](LineStyle)| + +## `BaseScatter` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `BaseSerie` + + +## `CalendarCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[IUpdateRuntimeData](#IUpdateRuntimeData),[ISerieContainer](#ISerieContainer) + + +## `Candlestick` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `ChartText` + + +## `ChildComponent` + + +## `Comment` + +Inherits or Implemented: [MainComponent](#MainComponent) + +图表注解组件。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示注解组件。 | +| `labelStyle` | | 所有组件的文本样式。 [LabelStyle](LabelStyle)| +| `markStyle` | | 所有组件的文本样式。 [CommentMarkStyle](CommentMarkStyle)| +| `items` | | | + +## `CommentItem` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +注解项。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示当前注解项。 | +| `content` | | 注解的文本内容。支持模板参数,可以参考Tooltip的itemFormatter。 | +| `position` | | 注解项的位置坐标。 | +| `markRect` | | 注解区域。 | +| `markStyle` | | 注解标记区域样式。 [CommentMarkStyle](CommentMarkStyle)| +| `labelStyle` | | 注解项的文本样式。 [LabelStyle](LabelStyle)| + +## `CommentMarkStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +注解项区域样式。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示当前注解项。 | +| `lineStyle` | | 线条样式。 [LineStyle](LineStyle)| + +## `ComponentTheme` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `font` | | 字体。 | +| `textColor` | | 文本颜色。 | +| `textBackgroundColor` | | 文本颜色。 | +| `fontSize` |18 | 文本字体大小。 | +| `tMPFont` | | 字体。 | + +## `CoordSystem` + +Inherits or Implemented: [MainComponent](#MainComponent) + +坐标系系统。 + + +## `DataZoom` + +Inherits or Implemented: [MainComponent](#MainComponent),[IUpdateRuntimeData](#IUpdateRuntimeData) + +DataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。 + +|field|default|comment| +|--|--|--| +| `enable` |true | 是否显示缩放区域。 | +| `filterMode` | | 数据过滤类型。
`DataZoom.FilterMode`:
- `Filter`: 当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只要有一个维度在数据窗口外,整个数据项就会被过滤掉。
- `WeakFilter`: 当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉。
- `Empty`: 当前数据窗口外的数据,被 设置为空。即 不会 影响其他轴的数据范围。
- `None`: 不过滤数据,只改变数轴范围。
| +| `xAxisIndexs` | | 控制的 x 轴索引列表。 | +| `yAxisIndexs` | | 控制的 y 轴索引列表。 | +| `supportInside` | | 是否支持内置。内置于坐标系中,使用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系。 | +| `supportInsideScroll` |true | 是否支持坐标系内滚动 | +| `supportInsideDrag` |true | 是否支持坐标系内拖拽 | +| `supportSlider` | | 是否支持滑动条。有单独的滑动条,用户在滑动条上进行缩放或漫游。 | +| `supportSelect` | | 是否支持框选。提供一个选框进行数据区域缩放。 | +| `showDataShadow` | | 是否显示数据阴影。数据阴影可以简单地反应数据走势。 | +| `showDetail` | | 是否显示detail,即拖拽时候显示详细数值信息。 | +| `zoomLock` | | 是否锁定选择区域(或叫做数据窗口)的大小。 如果设置为 true 则锁定选择区域的大小,也就是说,只能平移,不能缩放。 | +| `fillerColor` | | 数据区域颜色。 | +| `borderColor` | | 边框颜色。 | +| `borderWidth` | | 边框宽。 | +| `backgroundColor` | | 组件的背景颜色。 | +| `left` | | 组件离容器左侧的距离。 | +| `right` | | 组件离容器右侧的距离。 | +| `top` | | 组件离容器上侧的距离。 | +| `bottom` | | 组件离容器下侧的距离。 | +| `rangeMode` | | 取绝对值还是百分比。
`DataZoom.RangeMode`:
- `//Value`: The value type of start and end.取值类型
- `Percent`: 百分比。
| +| `start` | | 数据窗口范围的起始百分比。范围是:0 ~ 100。 | +| `end` | | 数据窗口范围的结束百分比。范围是:0 ~ 100。 | +| `minShowNum` |1 | 最小显示数据个数。当DataZoom放大到最大时,最小显示的数据个数。 | +| `scrollSensitivity` |1.1f | 缩放区域组件的敏感度。值越高每次缩放所代表的数据越多。 | +| `orient` | | 布局方式是横还是竖。不仅是布局方式,对于直角坐标系而言,也决定了,缺省情况控制横向数轴还是纵向数轴。
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `labelStyle` | | 文本标签格式。 [LabelStyle](LabelStyle)| +| `lineStyle` | | 阴影线条样式。 [LineStyle](LineStyle)| +| `areaStyle` | | 阴影填充样式。 [AreaStyle](AreaStyle)| + +## `DataZoomTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `borderWidth` | | 边框线宽。 | +| `dataLineWidth` | | 数据阴影线宽。 | +| `fillerColor` | | 数据区域颜色。 | +| `borderColor` | | 边框颜色。 | +| `dataLineColor` | | 数据阴影的线条颜色。 | +| `dataAreaColor` | | 数据阴影的填充颜色。 | +| `backgroundColor` | | 背景颜色。 | + +## `DebugInfo` + +|field|default|comment| +|--|--|--| +| `show` |true | | +| `showDebugInfo` |false | | +| `showAllChartObject` |false | | +| `foldSeries` |false | | +| `labelStyle` | | [LabelStyle](LabelStyle)| + +## `EffectScatter` + +Inherits or Implemented: [BaseScatter](#BaseScatter) + + +## `Emphasis` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的图形样式和文本标签样式。 + +|field|default|comment| +|--|--|--| +| `show` | | 是否启用高亮样式。 | +| `label` | | 图形文本标签。 [LabelStyle](LabelStyle)| +| `labelLine` | | 图形文本引导线样式。 [LabelLine](LabelLine)| +| `itemStyle` | | 图形样式。 [ItemStyle](ItemStyle)| + +## `EmphasisItemStyle` + +Inherits or Implemented: [ItemStyle](#ItemStyle),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的图形样式 + + +## `EmphasisLabelLine` + +Inherits or Implemented: [LabelLine](#LabelLine),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的标签引导线样式 + + +## `EmphasisLabelStyle` + +Inherits or Implemented: [LabelStyle](#LabelStyle),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +高亮的标签样式 + + +## `EndLabelStyle` + +Inherits or Implemented: [LabelStyle](#LabelStyle) + + +## `GridCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[IUpdateRuntimeData](#IUpdateRuntimeData),[ISerieContainer](#ISerieContainer) + +Drawing grid in rectangular coordinate. Line chart, bar chart, and scatter chart can be drawn in grid. + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示直角坐标系网格。 | +| `left` |0.1f | grid 组件离容器左侧的距离。 | +| `right` |0.08f | grid 组件离容器右侧的距离。 | +| `top` |0.22f | grid 组件离容器上侧的距离。 | +| `bottom` |0.12f | grid 组件离容器下侧的距离。 | +| `backgroundColor` | | 网格背景色,默认透明。 | +| `showBorder` |false | 是否显示网格边框。 | +| `borderWidth` |0f | 网格边框宽。 | +| `borderColor` | | 网格边框颜色。 | + +## `Heatmap` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `IconStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `show` |false | 是否显示图标。 | +| `layer` | | 显示在上层还是在下层。
`IconStyle.Layer`:
- `UnderText`: The icon is display under the label text. 图标在标签文字下
- `AboveText`: The icon is display above the label text. 图标在标签文字上
| +| `align` | | 水平方向对齐方式。
`Align`:
- `Center`: 对齐方式
- `Left`: 对齐方式
- `Right`: 对齐方式
| +| `sprite` | | 图标的图片。 | +| `type` | | 图片的显示类型。 | +| `color` | | 图标颜色。 | +| `width` |20 | 图标宽。 | +| `height` |20 | 图标高。 | +| `offset` | | 图标偏移。 | +| `autoHideWhenLabelEmpty` |false | 当label内容为空时是否自动隐藏图标 | + +## `ImageStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示图标。 | +| `sprite` | | 图标的图片。 | +| `type` | | 图片的显示类型。 | +| `autoColor` | | 是否自动颜色。 | +| `color` | | 图标颜色。 | +| `width` |0 | 图标宽。 | +| `height` |0 | 图标高。 | + +## `Indicator` + +雷达图的指示器,用来指定雷达图中的多个变量(维度)。 + +|field|default|comment| +|--|--|--| +| `name` | | | +| `max` | | 指示器的最大值,默认为 0 无限制。 | +| `min` | | 指示器的最小值,默认为 0 无限制。 | +| `range` | | 正常值范围。当数值不在这个范围时,会自动变更显示颜色。 | +| `show` | | 是否显示雷达坐标系组件。 | +| `shape` | | 雷达图绘制类型,支持 'Polygon' 和 'Circle'。
`RadarCoord.Shape`:
- `Polygon`: 雷达图绘制类型,支持 'Polygon' 和 'Circle'。
- `Circle`: 雷达图绘制类型,支持 'Polygon' 和 'Circle'。
| +| `radius` |100 | 雷达图的半径。 | +| `splitNumber` |5 | 指示器轴的分割段数。 | +| `center` | | 雷达图的中心点。数组的第一项是横坐标,第二项是纵坐标。 当值为0-1之间时表示百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度。 | +| `axisLine` | | 轴线。 [AxisLine](AxisLine)| +| `axisName` | | 雷达图每个指示器名称的配置项。 [AxisName](AxisName)| +| `splitLine` | | 分割线。 [AxisSplitLine](AxisSplitLine)| +| `splitArea` | | 分割区域。 [AxisSplitArea](AxisSplitArea)| +| `indicator` |true | 是否显示指示器。 | +| `positionType` | | 显示位置类型。
`RadarCoord.PositionType`:
- `Vertice`: 显示在顶点处。
- `Between`: 显示在两者之间。
| +| `indicatorGap` |10 | 指示器和雷达的间距。 | +| `ceilRate` |0 | 最大最小值向上取整的倍率。默认为0时自动计算。 | +| `isAxisTooltip` | | 是否Tooltip显示轴线上的所有数据。 | +| `outRangeColor` |Color.red | 数值超出范围时显示的颜色。 | +| `connectCenter` |false | 数值是否连线到中心点。 | +| `lineGradient` |true | 数值线段是否需要渐变。 | +| `indicatorList` | | 指示器列表。 | + +## `ItemStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieDataComponent](#ISerieDataComponent) + +图形样式。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否启用。 | +| `color` | | 数据项颜色。 | +| `color0` | | 数据项颜色。 | +| `toColor` | | 渐变色的颜色1。 | +| `toColor2` | | 渐变色的颜色2。只在折线图中有效。 | +| `backgroundColor` | | 数据项背景颜色。 | +| `backgroundWidth` | | 数据项背景宽度。 | +| `centerColor` | | 中心区域颜色。 | +| `centerGap` | | 中心区域间隙。 | +| `borderWidth` |0 | 边框宽。 | +| `borderGap` |0 | 边框间隙。 | +| `borderColor` | | 边框的颜色。 | +| `borderColor0` | | 边框的颜色。 | +| `borderToColor` | | 边框的渐变色。 | +| `opacity` |1 | 透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 | +| `itemMarker` | | 提示框单项的字符标志。用在Tooltip中。 | +| `itemFormatter` | | 提示框单项的字符串模版格式器。具体配置参考`Tooltip`的`formatter` | +| `numericFormatter` | | 标准数字格式字符串。用于将数值格式化显示为字符串。 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings | +| `cornerRadius` | | 圆角半径。用数组分别指定4个圆角半径(顺时针左上,右上,右下,左下)。 | + +## `LabelLine` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +标签的引导线 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示视觉引导线。 | +| `lineType` | | 视觉引导线类型。
`LineType`:
- `Normal`: 普通折线图。
- `Smooth`: 平滑曲线。
- `StepStart`: 阶梯线图:当前点。
- `StepMiddle`: 阶梯线图:当前点和下一个点的中间。
- `StepEnd`: 阶梯线图:下一个拐点。
| +| `lineColor` |ChartConst.clearColor32 | 视觉引导线颜色。默认和serie一致取自调色板。 | +| `lineAngle` |0 | 视觉引导线的固定角度。对折线和曲线有效。 | +| `lineWidth` |1.0f | 视觉引导线的宽度。 | +| `lineGap` |1.0f | 视觉引导线和容器的间距。 | +| `lineLength1` |25f | 视觉引导线第一段的长度。 | +| `lineLength2` |15f | 视觉引导线第二段的长度。 | +| `startSymbol` | | 起始点的图形标记。 [SymbolStyle](SymbolStyle)| +| `endSymbol` | | 结束点的图形标记。 [SymbolStyle](SymbolStyle)| + +## `LabelStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent),[ISerieDataComponent](#ISerieDataComponent) + +图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示文本标签。 | +| `Position` | | 标签的位置。 | +| `autoOffset` |false | 是否开启自动偏移。当开启时,Y的偏移会自动判断曲线的开口来决定向上还是向下偏移。 | +| `offset` | | 距离图形元素的偏移 | +| `rotate` | | 文本的旋转。 | +| `distance` | | 距离轴线的距离。 | +| `formatter` | | 标签内容字符串模版格式器。支持用 \n 换行。 模板变量有: {.}:圆点标记。 {a}:系列名。 {a}:系列名。 {b}:类目值或数据名。 {c}:数据值。 {d}:百分比。 {e}:数据名。 {f}:数据和。 示例:“{b}:{c}” | +| `numericFormatter` | | 标准数字格式字符串。用于将数值格式化显示为字符串。 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings | +| `width` |0 | 标签的宽度。一般不用指定,不指定时则自动是文字的宽度。 | +| `height` |0 | 标签的高度。一般不用指定,不指定时则自动是文字的高度。 | +| `icon` | | 图标样式。 [IconStyle](IconStyle)| +| `background` | | 背景图样式。 [ImageStyle](ImageStyle)| +| `textPadding` | | 文本的边距。 [TextPadding](TextPadding)| +| `textStyle` | | 文本样式。 [TextStyle](TextStyle)| + +## `Lang` + +Inherits or Implemented: [ScriptableObject](#ScriptableObject) + +国际化语言表。 + + +## `LangCandlestick` + + +## `LangTime` + + +## `Legend` + +Inherits or Implemented: [MainComponent](#MainComponent),[IPropertyChanged](#IPropertyChanged) + +图例组件。 图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示图例组件。 | +| `iconType` | | 图例类型。 [default:Type.Auto]
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `selectedMode` | | 选择模式。控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 None 关闭。 [default:SelectedMode.Multiple]
`VisualMap.SelectedMode`:
- `Multiple`: 多选。
- `Single`: 单选。
| +| `orient` | | 布局方式是横还是竖。 [default:Orient.Horizonal]
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `location` | | 图例显示的位置。 [default:Location.defaultTop] [Location](Location)| +| `itemWidth` |25.0f | 图例标记的图形宽度。 [default:24f] | +| `itemHeight` |12.0f | 图例标记的图形高度。 [default:12f] | +| `itemGap` |10f | 图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。 [default:10f] | +| `itemAutoColor` |true | 图例标记的图形是否自动匹配颜色。 [default:true] | +| `itemOpacity` |1 | 图例标记的图形的颜色透明度。 | +| `formatter` | | 图例内容字符串模版格式器。支持用 \n 换行。 模板变量为图例名称 {value}。其他模板变量参考Toolip的itemFormatter。 | +| `numericFormatter` | | 标准数字格式字符串。用于将数值格式化显示为字符串。 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings | +| `labelStyle` | | 文本样式。 [LabelStyle](LabelStyle)| +| `data` | | If data is not specified, it will be auto collected from series. | +| `icons` | | 自定义的图例标记图形。 | +| `colors` | | the colors of legend item. 图例标记的颜色列表。 | + +## `LegendTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `unableColor` | | 文本颜色。 | + +## `Level` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `label` | | 文本标签样式。 [LabelStyle](LabelStyle)| +| `upperLabel` | | 上方的文本标签样式。 [LabelStyle](LabelStyle)| +| `itemStyle` | | 数据项样式。 [ItemStyle](ItemStyle)| + +## `LevelStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `show` |false | 是否启用LevelStyle | +| `levels` | | 各层节点对应的配置。当enableLevels为true时生效,levels[0]对应的第一层的配置,levels[1]对应第二层,依次类推。当levels中没有对应层时用默认的设置。 | + +## `Line` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `LineArrow` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieExtraComponent](#ISerieExtraComponent) + +|field|default|comment| +|--|--|--| +| `show` | | 是否显示箭头。 | +| `position` | | 箭头位置。
`LabelStyle.Position`:
- `Default`: 标签的位置。
- `Outside`: 饼图扇区外侧,通过视觉引导线连到相应的扇区。
- `Inside`: 饼图扇区内部。
- `Center`: 在饼图中心位置。
- `Top`: 图形标志的顶部。
- `Bottom`: 图形标志的底部。
- `Left`: 图形标志的左边。
- `Right`: 图形标志的右边。
- `Start`: 线的起始点。
- `Middle`: 线的中点。
- `End`: 线的结束点。
| +| `arrow` | | 箭头。 [ArrowStyle](ArrowStyle)| + +## `LineStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[ISerieDataComponent](#ISerieDataComponent) + +线条样式。 注: 修改 lineStyle 中的颜色不会影响图例颜色,如果需要图例颜色和折线图颜色一致,需修改 itemStyle.color,线条颜色默认也会取该颜色。 toColor,toColor2可设置水平方向的渐变,如需要设置垂直方向的渐变,可使用VisualMap。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示线条。当作为子组件,它的父组件有参数控制是否显示时,改参数无效。 | +| `type` | | 线的类型。
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `color` | | 线的颜色。 | +| `toColor` | | 线的渐变颜色(需要水平方向渐变时)。 | +| `toColor2` | | 线的渐变颜色2(需要水平方向三个渐变色的渐变时)。 | +| `width` |0 | 线宽。 | +| `length` |0 | 线长。 | +| `opacity` |1 | 线的透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 | + +## `Location` + +Inherits or Implemented: [ChildComponent](#ChildComponent),[IPropertyChanged](#IPropertyChanged) + +位置类型。通过Align快速设置大体位置,再通过left,right,top,bottom微调具体位置。 + +|field|default|comment| +|--|--|--| +| `align` | | 对齐方式。
`Align`:
- `Center`: 对齐方式
- `Left`: 对齐方式
- `Right`: 对齐方式
| +| `left` | | 离容器左侧的距离。 | +| `right` | | 离容器右侧的距离。 | +| `top` | | 离容器上侧的距离。 | +| `bottom` | | 离容器下侧的距离。 | + +## `MainComponent` + +Inherits or Implemented: [IComparable](#IComparable) + + +## `MarkArea` + +Inherits or Implemented: [MainComponent](#MainComponent) + +图表标域,常用于标记图表中某个范围的数据。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示标域。 | +| `text` | | The text of markArea. 标域显示的文本。 | +| `serieIndex` |0 | Serie index of markArea. 标域影响的Serie索引。 | +| `start` | | 标域范围的起始数据。 [MarkAreaData](MarkAreaData)| +| `end` | | 标域范围的结束数据。 [MarkAreaData](MarkAreaData)| +| `itemStyle` | | 标域样式。 [ItemStyle](ItemStyle)| +| `label` | | 标域文本样式。 [LabelStyle](LabelStyle)| + +## `MarkAreaData` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +标域的数据。 + +|field|default|comment| +|--|--|--| +| `type` | | 特殊的标域类型,用于标注最大值最小值等。
`MarkAreaType`:
- `None`: 标域类型
- `Min`: 最小值。
- `Max`: 最大值。
- `Average`: 平均值。
- `Median`: 中位数。
| +| `name` | | 标注名称。会作为文字显示。 | +| `dimension` |1 | 从哪个维度的数据计算最大最小值等。 | +| `xPosition` | | 相对原点的 x 坐标,单位像素。当type为None时有效。 | +| `yPosition` | | 相对原点的 y 坐标,单位像素。当type为None时有效。 | +| `xValue` | | X轴上的指定值。当X轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 | +| `yValue` | | Y轴上的指定值。当Y轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 | + +## `MarkLine` + +Inherits or Implemented: [MainComponent](#MainComponent) + +图表标线。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示标线。 | +| `serieIndex` |0 | 标线影响的Serie索引。 | +| `animation` | | 标线的动画样式。 [AnimationStyle](AnimationStyle)| +| `data` | | 标线的数据列表。当数据项的group为0时,每个数据项表示一条标线;当group不为0时,相同group的两个数据项分别表 示标线的起始点和终止点来组成一条标线,此时标线的相关样式参数取起始点的参数。 | + +## `MarkLineData` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +图表标线的数据。 + +|field|default|comment| +|--|--|--| +| `type` | | 特殊的标线类型,用于标注最大值最小值等。
`MarkLineType`:
- `None`: 标线类型
- `Min`: 最小值。
- `Max`: 最大值。
- `Average`: 平均值。
- `Median`: 中位数。
| +| `name` | | 标线名称,将会作为文字显示。label的formatter可通过{b}显示名称,通过{c}显示数值。 | +| `dimension` |1 | 从哪个维度的数据计算最大最小值等。 | +| `xPosition` | | 相对原点的 x 坐标,单位像素。当type为None时有效。 | +| `yPosition` | | 相对原点的 y 坐标,单位像素。当type为None时有效。 | +| `xValue` | | X轴上的指定值。当X轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 | +| `yValue` | | Y轴上的指定值。当Y轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 | +| `group` |0 | 分组。当group不为0时,表示这个data是标线的起点或终点,group一致的data组成一条标线。 | +| `zeroPosition` |false | 是否为坐标系原点。 | +| `startSymbol` | | 起始点的图形标记。 [SymbolStyle](SymbolStyle)| +| `endSymbol` | | 结束点的图形标记。 [SymbolStyle](SymbolStyle)| +| `lineStyle` | | 标线样式。 [LineStyle](LineStyle)| +| `label` | | 文本样式。可设置position为Start、Middle和End在不同的位置显示文本。 [LabelStyle](LabelStyle)| + +## `Parallel` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `ParallelAxis` + +Inherits or Implemented: [Axis](#Axis) + + +## `ParallelCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[IUpdateRuntimeData](#IUpdateRuntimeData),[ISerieContainer](#ISerieContainer) + +Drawing grid in rectangular coordinate. Line chart, bar chart, and scatter chart can be drawn in grid. + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示直角坐标系网格。 | +| `orient` | | 坐标轴朝向。默认为垂直朝向。
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `left` |0.1f | grid 组件离容器左侧的距离。 | +| `right` |0.08f | grid 组件离容器右侧的距离。 | +| `top` |0.22f | grid 组件离容器上侧的距离。 | +| `bottom` |0.12f | grid 组件离容器下侧的距离。 | +| `backgroundColor` | | 网格背景色,默认透明。 | + +## `Pie` + +Inherits or Implemented: [Serie](#Serie) + + +## `PolarAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `PolarCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[ISerieContainer](#ISerieContainer) + +极坐标系组件。 极坐标系,可以用于散点图和折线图。每个极坐标系拥有一个角度轴和一个半径轴。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示极坐标。 | +| `center` | | 极坐标的中心点。数组的第一项是横坐标,第二项是纵坐标。 当值为0-1之间时表示百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度。 | +| `radius` |0.35f | 极坐标的半径。 | +| `backgroundColor` | | 极坐标的背景色,默认透明。 | + +## `Radar` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer) + + +## `RadarAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `RadarCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem),[ISerieContainer](#ISerieContainer) + +Radar coordinate conponnet for radar charts. 雷达图坐标系组件,只适用于雷达图。 + + +## `RadiusAxis` + +Inherits or Implemented: [Axis](#Axis) + +极坐标系的径向轴。 + + +## `RadiusAxisTheme` + +Inherits or Implemented: [BaseAxisTheme](#BaseAxisTheme) + + +## `Ring` + +Inherits or Implemented: [Serie](#Serie) + + +## `Scatter` + +Inherits or Implemented: [BaseScatter](#BaseScatter) + + +## `Serie` + +Inherits or Implemented: [BaseSerie](#BaseSerie),[IComparable](#IComparable) + +系列。 + +|field|default|comment| +|--|--|--| +| `index` | | 系列索引。 | +| `show` |true | 系列是否显示在图表上。 | +| `coordSystem` | | 使用的坐标系。 | +| `serieType` | | 系列类型。 | +| `serieName` | | 系列名称,用于 tooltip 的显示,legend 的图例筛选。 | +| `stack` | | 数据堆叠,同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加。 | +| `xAxisIndex` |0 | 使用X轴的index。 | +| `yAxisIndex` |0 | 使用Y轴的index。 | +| `radarIndex` |0 | 雷达图所使用的 radar 组件的 index。 | +| `vesselIndex` |0 | 水位图所使用的 vessel 组件的 index。 | +| `polarIndex` |0 | 所使用的 polar 组件的 index。 | +| `singleAxisIndex` |0 | 所使用的 singleAxis 组件的 index。 | +| `parallelIndex` |0 | 所使用的 parallel coord 组件的 index。 | +| `minShow` | | 系列所显示数据的最小索引 | +| `maxShow` | | 系列所显示数据的最大索引 | +| `maxCache` | | 系列中可缓存的最大数据量。默认为0没有限制,大于0时超过指定值会移除旧数据再插入新数据。 | +| `sampleDist` |0 | 采样的最小像素距离,默认为0时不采样。当两个数据点间的水平距离小于改值时,开启采样,保证两点间的水平距离不小于改值。 | +| `sampleType` | | 采样类型。当sampleDist大于0时有效。
`SampleType`:
- `Peak`: 取峰值。
- `Average`: 取过滤点的平均值。
- `Max`: 取过滤点的最大值。
- `Min`: 取过滤点的最小值。
- `Sum`: 取过滤点的和。
| +| `sampleAverage` |0 | 设定的采样平均值。当sampleType 为 Peak 时,用于和过滤数据的平均值做对比是取最大值还是最小值。默认为0时会实时计算所有数据的平均值。 | +| `lineType` | | 折线图样式类型。
`LineType`:
- `Normal`: 普通折线图。
- `Smooth`: 平滑曲线。
- `StepStart`: 阶梯线图:当前点。
- `StepMiddle`: 阶梯线图:当前点和下一个点的中间。
- `StepEnd`: 阶梯线图:下一个拐点。
| +| `barType` | | 柱形图类型。
`BarType`:
- `Normal`: 普通柱形图。
- `Zebra`: 斑马柱形图。
- `Capsule`: 胶囊柱形图。
| +| `barPercentStack` |false | 柱形图是否为百分比堆积。相同stack的serie只要有一个barPercentStack为true,则就显示成百分比堆叠柱状图。 | +| `barWidth` |0 | 柱条的宽度,不设时自适应。支持设置成相对于类目宽度的百分比。 | +| `barGap` |0.1f | 不同系列的柱间距离。为百分比(如 '0.3f',表示柱子宽度的 30%) 如果想要两个系列的柱子重叠,可以设置 barGap 为 '-1f'。这在用柱子做背景的时候有用。 在同一坐标系上,此属性会被多个 'bar' 系列共享。此属性应设置于此坐标系中最后一个 'bar' 系列上才会生效,并且是对此坐标系中所有 'bar' 系列生效。 | +| `barZebraWidth` |4f | 斑马线的粗细。 | +| `barZebraGap` |2f | 斑马线的间距。 | +| `min` | | 最小值。 | +| `max` | | 最大值。 | +| `minSize` |0f | 数据最小值 min 映射的宽度。 | +| `maxSize` |1f | 数据最大值 max 映射的宽度。 | +| `startAngle` | | 起始角度。和时钟一样,12点钟位置是0度,顺时针到360度。 | +| `endAngle` | | 结束角度。和时钟一样,12点钟位置是0度,顺时针到360度。 | +| `minAngle` | | 最小的扇区角度(0-360)。用于防止某个值过小导致扇区太小影响交互。 | +| `clockwise` |true | 是否顺时针。 | +| `roundCap` | | 是否开启圆弧效果。 | +| `splitNumber` | | 刻度分割段数。最大可设置36。 | +| `clickOffset` |true | 鼠标点击时是否开启偏移,一般用在PieChart图表中。 | +| `roseType` | | 是否展示成南丁格尔图,通过半径区分数据大小。
`RoseType`:
- `None`: 不展示成南丁格尔玫瑰图。
- `Radius`: 扇区圆心角展现数据的百分比,半径展现数据的大小。
- `Area`: 所有扇区圆心角相同,仅通过半径展现数据大小。
| +| `gap` | | 间距。 | +| `center` | | 中心点。 | +| `radius` | | 半径。radius[0]表示内径,radius[1]表示外径。 | +| `showDataDimension` | | 数据项里的数据维数。 | +| `showDataName` | | 在Editor的inpsector上是否显示name参数 | +| `clip` |false | 是否裁剪超出坐标系部分的图形。 | +| `ignore` |false | 是否开启忽略数据。当为 true 时,数据值为 ignoreValue 时不进行绘制。 | +| `ignoreValue` |0 | 忽略数据的默认值。当ignore为true才有效。 | +| `ignoreLineBreak` |false | 忽略数据时折线是断开还是连接。默认false为连接。 | +| `showAsPositiveNumber` |false | 将负数数值显示为正数。一般和`AxisLabel`的`showAsPositiveNumber`配合使用。仅在折线图和柱状图中有效。 | +| `large` |true | 是否开启大数据量优化,在数据图形特别多而出现卡顿时候可以开启。 开启后配合 largeThreshold 在数据量大于指定阈值的时候对绘制进行优化。 缺点:优化后不能自定义设置单个数据项的样式,不能显示Label。 | +| `largeThreshold` |200 | 开启大数量优化的阈值。只有当开启了large并且数据量大于该阀值时才进入性能模式。 | +| `avoidLabelOverlap` |false | 在饼图且标签外部显示的情况下,是否启用防止标签重叠策略,默认关闭,在标签拥挤重叠的情况下会挪动各个标签的位置,防止标签间的重叠。 | +| `radarType` | | 雷达图类型。
`RadarType`:
- `Multiple`: 多圈雷达图。此时可一个雷达里绘制多个圈,一个serieData就可组成一个圈(多维数据)。
- `Single`: 单圈雷达图。此时一个雷达只能绘制一个圈,多个serieData组成一个圈,数据取自`data[1]`。
| +| `placeHolder` |false | 占位模式。占位模式时,数据有效但不参与渲染和显示。 | +| `dataSortType` | | 组件的数据排序。
`SerieDataSortType`:
- `None`: 按 data 的顺序
- `Ascending`: 升序
- `Descending`: 降序
| +| `orient` | | 组件的朝向。
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `align` | | 组件水平方向对齐方式。
`Align`:
- `Center`: 对齐方式
- `Left`: 对齐方式
- `Right`: 对齐方式
| +| `left` | | 组件离容器左侧的距离。 | +| `right` | | 组件离容器右侧的距离。 | +| `top` | | 组件离容器上侧的距离。 | +| `bottom` | | 组件离容器下侧的距离。 | +| `insertDataToHead` | | 添加新数据时是在列表的头部还是尾部加入。 | +| `lineStyle` | | 线条样式。 [LineStyle](LineStyle)| +| `symbol` | | 标记的图形。 [SerieSymbol](SerieSymbol)| +| `animation` | | 起始动画。 [AnimationStyle](AnimationStyle)| +| `itemStyle` | | 图形样式。 [ItemStyle](ItemStyle)| +| `data` | | 系列中的数据内容数组。SerieData可以设置1到n维数据。 | + +## `SerieData` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +系列中的一个数据项。可存储数据名和1-n维个数据。 + +|field|default|comment| +|--|--|--| +| `index` | | 数据项索引。 | +| `name` | | 数据项名称。 | +| `id` | | 数据项的唯一id。唯一id不是必须设置的。 | +| `parentId` | | 父节点id。父节点id不是必须设置的。 | +| `ignore` | | 是否忽略数据。当为 true 时,数据不进行绘制。 | +| `selected` | | 该数据项是否被选中。 | +| `radius` | | 自定义半径。可用在饼图中自定义某个数据项的半径。 | +| `data` | | 可指定任意维数的数值列表。 | + +## `SerieSymbol` + +Inherits or Implemented: [SymbolStyle](#SymbolStyle),[ISerieDataComponent](#ISerieDataComponent) + +系列数据项的标记的图形 + +|field|default|comment| +|--|--|--| +| `sizeType` | | 标记图形的大小获取方式。
`SymbolSizeType`:
- `Custom`: 自定义大小。
- `FromData`: 通过 dataIndex 从数据中获取,再乘以一个比例系数 dataScale 。
- `Function`: 通过委托函数获取。
| +| `selectedSize` |0f | 被选中的标记的大小。 | +| `dataIndex` |1 | 当sizeType指定为FromData时,指定的数据源索引。 | +| `dataScale` |1 | 当sizeType指定为FromData时,指定的倍数系数。 | +| `selectedDataScale` |1.5f | 当sizeType指定为FromData时,指定的高亮倍数系数。 | +| `sizeFunction` | | 当sizeType指定为Function时,指定的委托函数。 | +| `selectedSizeFunction` | | 当sizeType指定为Function时,指定的高亮委托函数。 | +| `startIndex` | | 开始显示图形标记的索引。 | +| `interval` | | 显示图形标记的间隔。0表示显示所有标签,1表示隔一个隔显示一个标签,以此类推。 | +| `forceShowLast` |false | 是否强制显示最后一个图形标记。 | +| `repeat` |false | 图形是否重复。 | + +## `SerieTheme` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `lineWidth` | | 文本颜色。 | +| `lineSymbolSize` | | | +| `scatterSymbolSize` | | | +| `pieTooltipExtraRadius` | | 饼图鼠标移到高亮时的额外半径 | +| `selectedRate` |1.3f | | +| `pieSelectedOffset` | | 饼图选中时的中心点偏移 | +| `candlestickColor` |Color32(235, 84, 84, 255) | K线图阳线(涨)填充色 | +| `candlestickColor0` |Color32(71, 178, 98, 255) | K线图阴线(跌)填充色 | +| `candlestickBorderWidth` |1 | K线图边框宽度 | +| `candlestickBorderColor` |Color32(235, 84, 84, 255) | K线图阳线(跌)边框色 | +| `candlestickBorderColor0` |Color32(71, 178, 98, 255) | K线图阴线(跌)边框色 | + +## `Settings` + +Inherits or Implemented: [MainComponent](#MainComponent) + +全局参数设置组件。一般情况下可使用默认值,当有需要时可进行调整。 + +|field|default|comment| +|--|--|--| +| `show` |true | | +| `maxPainter` |10 | 设定的painter数量。 | +| `reversePainter` |false | Painter是否逆序。逆序时index大的serie最先绘制。 | +| `basePainterMaterial` | | Base Pointer 材质球,设置后会影响Axis等。 | +| `seriePainterMaterial` | | Serie Pointer 材质球,设置后会影响所有Serie。 | +| `topPainterMaterial` | | Top Pointer 材质球,设置后会影响Tooltip等。 | +| `lineSmoothStyle` |3f | 曲线平滑系数。通过调整平滑系数可以改变曲线的曲率,得到外观稍微有变化的不同曲线。 | +| `lineSmoothness` |2f | When the area with gradient is filled, the larger the value, the worse the transition effect. | +| `lineSegmentDistance` |3f | 线段的分割距离。普通折线图的线是由很多线段组成,段数由该数值决定。值越小段数越多,但顶点数也会随之增加。当开启有渐变的区域填充时,数值越大渐变过渡效果越差。 | +| `cicleSmoothness` |2f | 圆形的平滑度。数越小圆越平滑,但顶点数也会随之增加。 | +| `legendIconLineWidth` |2 | Line类型图例图标的线条宽度。 | +| `legendIconCornerRadius` | | 图例圆角半径。用数组分别指定4个圆角半径(顺时针左上,右上,右下,左下)。 | + +## `SimplifiedBar` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer),[ISimplifiedSerie](#ISimplifiedSerie) + + +## `SimplifiedCandlestick` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer),[ISimplifiedSerie](#ISimplifiedSerie) + + +## `SimplifiedLine` + +Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer),[ISimplifiedSerie](#ISimplifiedSerie) + + +## `SingleAxis` + +Inherits or Implemented: [Axis](#Axis),[IUpdateRuntimeData](#IUpdateRuntimeData) + +单轴。 + +|field|default|comment| +|--|--|--| +| `orient` | | 坐标轴朝向。默认为水平朝向。
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `left` |0.1f | 组件离容器左侧的距离。 | +| `right` |0.1f | 组件离容器右侧的距离。 | +| `top` |0f | 组件离容器上侧的距离。 | +| `bottom` |0.2f | 组件离容器下侧的距离。 | +| `width` |0 | 坐标轴宽。 | +| `height` |50 | 坐标轴高。 | + +## `SingleAxisCoord` + +Inherits or Implemented: [CoordSystem](#CoordSystem) + + +## `StageColor` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `percent` | | 结束位置百分比。 | +| `color` | | 颜色。 | + +## `SubTitleTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + + +## `SymbolStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +系列数据项的标记的图形 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示标记。 | +| `type` | | 标记类型。
`SymbolType`:
- `None`: 不显示标记。
- `Custom`: 自定义标记。
- `Circle`: 圆形。
- `EmptyCircle`: 空心圆。
- `Rect`: 正方形。可通过设置`itemStyle`的`cornerRadius`变成圆角矩形。
- `EmptyRect`: 空心正方形。
- `Triangle`: 三角形。
- `EmptyTriangle`: 空心三角形。
- `Diamond`: 菱形。
- `EmptyDiamond`: 空心菱形。
- `Arrow`: 箭头。
- `EmptyArrow`: 空心箭头。
| +| `size` |0f | 标记的大小。 | +| `gap` |0 | 图形标记和线条的间隙距离。 | +| `width` |0f | 图形的宽。 | +| `height` |0f | 图形的高。 | +| `offset` |Vector2.zero | 图形的偏移。 | +| `image` | | 自定义的标记图形。 | +| `imageType` | | 图形填充类型。 | +| `color` | | 图形的颜色。 | + +## `TextLimit` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +文本字符限制和自适应。当文本长度超过设定的长度时进行裁剪,并将后缀附加在最后。 只在类目轴中有效。 + +|field|default|comment| +|--|--|--| +| `enable` |false | 是否启用文本自适应。 [default:true] | +| `maxWidth` |0 | Clipping occurs when the width of the text is greater than this value. | +| `gap` |1 | 两边留白像素距离。 [default:10f] | +| `suffix` | | 长度超出时的后缀。 [default: "..."] | + +## `TextPadding` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +文本的内边距设置。 + +|field|default|comment| +|--|--|--| +| `show` |true | show padding. 是否显示。 | +| `top` |2 | 顶部间距。 | +| `right` |4 | 右部间距。 | +| `left` |4 | 左边间距。 | +| `bottom` |2 | 底部间距。 | + +## `TextStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +文本的相关设置。 + +|field|default|comment| +|--|--|--| +| `show` |true | 文本的相关设置。 | +| `font` | | 文本字体。 [default: null] | +| `autoWrap` |false | 是否自动换行。 | +| `autoAlign` |true | 文本是否让系统自动选对齐方式。为false时才会用alignment。 | +| `rotate` |0 | 文本的旋转。 [default: `0f`] | +| `autoColor` |false | 是否开启自动颜色。当开启时,会自动设置颜色。 | +| `color` | | 文本的颜色。 [default: `Color.clear`] | +| `fontSize` |0 | 文本字体大小。 [default: 18] | +| `fontStyle` | | 文本字体的风格。 [default: FontStyle.Normal] | +| `lineSpacing` |1f | 行间距。 [default: 1f] | +| `alignment` | | 对齐方式。 | +| `tMPFont` | | TextMeshPro字体。 | +| `tMPFontStyle` | | | +| `tMPAlignment` | | | + +## `Theme` + +Inherits or Implemented: [ScriptableObject](#ScriptableObject) + +主题相关配置。 + +|field|default|comment| +|--|--|--| +| `themeType` | | 主题类型。
`ThemeType`:
- `Default`: 默认主题。
- `Light`: 亮主题。
- `Dark`: 暗主题。
- `Custom`: 自定义主题。
| +| `themeName` | | 主题名称。 | +| `font` | | 主题字体。 | +| `tMPFont` | | 主题字体。 | +| `contrastColor` | | 对比色。 | +| `backgroundColor` | | 背景颜色。 | +| `colorPalette` | | 调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。 | +| `common` | | [ComponentTheme](ComponentTheme)| +| `title` | | [TitleTheme](TitleTheme)| +| `subTitle` | | [SubTitleTheme](SubTitleTheme)| +| `legend` | | [LegendTheme](LegendTheme)| +| `axis` | | [AxisTheme](AxisTheme)| +| `tooltip` | | [TooltipTheme](TooltipTheme)| +| `dataZoom` | | [DataZoomTheme](DataZoomTheme)| +| `visualMap` | | [VisualMapTheme](VisualMapTheme)| +| `serie` | | [SerieTheme](SerieTheme)| + +## `ThemeStyle` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +主题相关配置。 + +|field|default|comment| +|--|--|--| +| `show` |true | | +| `sharedTheme` | | [Theme](Theme)| +| `transparentBackground` |false | Whether the background color is transparent. When true, the background color is not drawn. |是否透明背景颜色。当设置为true时,不绘制背景颜色。 | +| `enableCustomTheme` |false | 是否自定义主题颜色。当设置为true时,可以用‘sync color to custom’同步主题的颜色到自定义颜色。也可以手动设置。 | +| `customFont` | | | +| `customBackgroundColor` | | 自定义的背景颜色。 | +| `customColorPalette` | | | + +## `Title` + +Inherits or Implemented: [MainComponent](#MainComponent),[IPropertyChanged](#IPropertyChanged) + +标题组件,包含主标题和副标题。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示标题组件。 | +| `text` | | 主标题文本,支持使用 \n 换行。 | +| `subText` | | 副标题文本,支持使用 \n 换行。 | +| `labelStyle` | | 主标题文本样式。 [LabelStyle](LabelStyle)| +| `subLabelStyle` | | 副标题文本样式。 [LabelStyle](LabelStyle)| +| `itemGap` |0 | 主副标题之间的间距。 | +| `location` | | 标题显示位置。 [Location](Location)| + +## `TitleStyle` + +Inherits or Implemented: [LabelStyle](#LabelStyle),[ISerieDataComponent](#ISerieDataComponent),[ISerieExtraComponent](#ISerieExtraComponent) + +标题相关设置。 + + +## `TitleTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + + +## `Tooltip` + +Inherits or Implemented: [MainComponent](#MainComponent) + +提示框组件。 + +|field|default|comment| +|--|--|--| +| `show` |true | 是否显示提示框组件。 | +| `type` | | 提示框指示器类型。
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `trigger` | | 触发类型。
`Tooltip.Trigger`:
- `Item`: 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
- `Axis`: 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
- `None`: 什么都不触发。
| +| `itemFormatter` | | 提示框单个serie或数据项内容的字符串模版格式器。支持用 \n 换行。 模板变量有{.}、{a}、{b}、{c}、{d}、{e}。
{.}为当前所指示或index为0的serie的对应颜色的圆点。
{a}为当前所指示或index为0的serie的系列名name。
{b}为当前所指示或index为0的serie的数据项serieData的name,或者类目值(如折线图的X轴)。
{c}为当前所指示或index为0的serie的y维(dimesion为1)的数值。
{d}为当前所指示或index为0的serie的y维(dimesion为1)百分比值,注意不带%号。
{e}为当前所指示或index为0的serie的数据项serieData的name。
{f}为数据总和。
{.1}表示指定index为1的serie对应颜色的圆点。
{a1}、{b1}、{c1}中的1表示指定index为1的serie。
{c1:2}表示索引为1的serie的当前指示数据项的第3个数据(一个数据项有多个数据,index为2表示第3个数据)。
{c1:2-2}表示索引为1的serie的第3个数据项的第3个数据(也就是要指定第几个数据项时必须要指定第几个数据)。
{d1:2:f2}表示单独指定了数值的格式化字符串为f2(不指定时用numericFormatter)。
{d:0.##} 表示单独指定了数值的格式化字符串为 0.## (用于百分比,保留2位有效数同时又能避免使用 f2 而出现的类似于"100.00%"的情况 )。
示例:"{a}:{c}"、"{a1}:{c1:f1}"、"{a1}:{c1:0:f1}"、"{a1}:{c1:1-1:f1}" | +| `titleFormatter` | | 提示框标题内容的字符串模版格式器。支持用 \n 换行。可以单独设置占位符{i}表示忽略不显示title。 模板变量参考Toolip的itemFormatter。 | +| `marker` | | serie的符号标志。 | +| `fixedWidth` |0 | 固定宽度。比 minWidth 优先。 | +| `fixedHeight` |0 | 固定高度。比 minHeight 优先。 | +| `minWidth` |0 | 最小宽度。如若 fixedWidth 设有值,优先取 fixedWidth。 | +| `minHeight` |0 | 最小高度。如若 fixedHeight 设有值,优先取 fixedHeight。 | +| `numericFormatter` | | 标准数字格式字符串。用于将数值格式化显示为字符串。 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings | +| `paddingLeftRight` |10 | 左右边距。 | +| `paddingTopBottom` |10 | 上下边距。 | +| `ignoreDataShow` |false | 是否显示忽略数据在tooltip上。 | +| `ignoreDataDefaultContent` | | 被忽略数据的默认显示字符信息。 | +| `showContent` |true | 是否显示提示框浮层,默认显示。只需tooltip触发事件或显示axisPointer而不需要显示内容时可配置该项为false。 | +| `alwayShowContent` |false | 是否触发后一直显示提示框浮层。 | +| `offset` |Vector2(18f, -25f) | 提示框相对于鼠标位置的偏移。 | +| `backgroundImage` | | 提示框的背景图片。 | +| `backgroundType` | | 提示框的背景图片显示类型。 | +| `backgroundColor` | | 提示框的背景颜色。 | +| `borderWidth` |2f | 边框线宽。 | +| `fixedXEnable` |false | 是否固定X位置。 | +| `fixedX` |0f | 固定X位置的坐标。 | +| `fixedYEnable` |false | 是否固定Y位置。 | +| `fixedY` |0f | 固定Y位置的坐标。 | +| `titleHeight` |25f | 标题文本的高。 | +| `itemHeight` |25f | 数据项文本的高。 | +| `borderColor` |Color32(230, 230, 230, 255) | 边框颜色。 | +| `lineStyle` | | 指示线样式。 [LineStyle](LineStyle)| +| `indicatorLabelStyle` | | 提示框的坐标轴指示器文本的样式。 [LabelStyle](LabelStyle)| +| `titleLabelStyle` | | 标题的文本样式。 [LabelStyle](LabelStyle)| +| `contentLabelStyles` | | 内容部分的文本样式列表。和列一一对应。 | + +## `TooltipTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `lineType` | | 坐标轴线类型。 | +| `lineWidth` |1f | 指示线线宽。 | +| `lineColor` | | 指示线颜色。 | +| `areaColor` | | 区域指示的颜色。 | +| `labelTextColor` | | 十字指示器坐标轴标签的文本颜色。 | +| `labelBackgroundColor` | | 十字指示器坐标轴标签的背景颜色。 | + +## `VisualMap` + +Inherits or Implemented: [MainComponent](#MainComponent) + +视觉映射组件。用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)。 + +|field|default|comment| +|--|--|--| +| `show` |true | 组件是否生效。 | +| `showUI` |false | 是否显示组件。如果设置为 false,不会显示,但是数据映射的功能还存在。 | +| `type` | | 组件类型。
`Painter.Type`:
- `Base`:
- `Serie`:
- `Top`:
| +| `selectedMode` | | 选择模式。
`VisualMap.SelectedMode`:
- `Multiple`: 多选。
- `Single`: 单选。
| +| `serieIndex` |0 | 影响的serie索引。 | +| `min` |0 | 范围最小值 | +| `max` |100 | 范围最大值 | +| `range` | | 指定手柄对应数值的位置。range 应在[min,max]范围内。 | +| `text` | | 两端的文本,如 ['High', 'Low']。 | +| `textGap` | | 两端文字主体之间的距离,单位为px。 | +| `splitNumber` |5 | 对于连续型数据,自动平均切分成几段,默认为0时自动匹配inRange颜色列表大小。 | +| `calculable` |false | 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。 | +| `realtime` |true | 拖拽时,是否实时更新。 | +| `itemWidth` |20f | 图形的宽度,即颜色条的宽度。 | +| `itemHeight` |140f | 图形的高度,即颜色条的高度。 | +| `itemGap` |10f | 每个图元之间的间隔距离。 | +| `borderWidth` |0 | 边框线宽,单位px。 | +| `dimension` |-1 | Starting at 1, the default is 0 to take the last dimension in data. | +| `hoverLink` |true | Conversely, when the mouse hovers over a graphic element in a diagram, the corresponding value of the visualMap component is triangulated in the corresponding position. | +| `autoMinMax` |true | Automatically set min, Max value 自动设置min,max的值 | +| `orient` | | 布局方式是横还是竖。
`Orient`:
- `Horizonal`: 水平
- `Vertical`: 垂直
| +| `location` | | 组件显示的位置。 [Location](Location)| +| `workOnLine` |true | 组件是否对LineChart的LineStyle有效。 | +| `workOnArea` |false | 组件是否对LineChart的AreaStyle有效。 | +| `outOfRange` | | 定义 在选中范围外 的视觉颜色。 | +| `inRange` | | 分段式每一段的相关配置。 | + +## `VisualMapRange` + +Inherits or Implemented: [ChildComponent](#ChildComponent) + +|field|default|comment| +|--|--|--| +| `min` | | 范围最小值 | +| `max` | | 范围最大值 | +| `label` | | 文字描述 | +| `color` | | 颜色 | + +## `VisualMapTheme` + +Inherits or Implemented: [ComponentTheme](#ComponentTheme) + +|field|default|comment| +|--|--|--| +| `borderWidth` | | 边框线宽。 | +| `borderColor` | | 边框颜色。 | +| `backgroundColor` | | 背景颜色。 | +| `triangeLen` |20f | 可视化组件的调节三角形边长。 | + +## `XAxis` + +Inherits or Implemented: [Axis](#Axis) + +直角坐标系 grid 中的 x 轴。 + + +## `XCResourcesImporter` + + +## `XCSettings` + +Inherits or Implemented: [ScriptableObject](#ScriptableObject) + +|field|default|comment| +|--|--|--| +| `lang` | | [Lang](Lang)| +| `font` | | | +| `tMPFont` | | | +| `fontSizeLv1` |28 | 一级字体大小。 | +| `fontSizeLv2` |24 | | +| `fontSizeLv3` |20 | | +| `fontSizeLv4` |18 | | +| `axisLineType` | | | +| `axisLineWidth` |0.8f | | +| `axisSplitLineType` | | | +| `axisSplitLineWidth` |0.8f | | +| `axisTickWidth` |0.8f | | +| `axisTickLength` |5f | | +| `gaugeAxisLineWidth` |15f | | +| `gaugeAxisSplitLineWidth` |0.8f | | +| `gaugeAxisSplitLineLength` |15f | | +| `gaugeAxisTickWidth` |0.8f | | +| `gaugeAxisTickLength` |5f | | +| `tootipLineWidth` |0.8f | | +| `dataZoomBorderWidth` |0.5f | | +| `dataZoomDataLineWidth` |0.5f | | +| `visualMapBorderWidth` |0f | | +| `serieLineWidth` |1.8f | | +| `serieLineSymbolSize` |5f | | +| `serieScatterSymbolSize` |20f | | +| `serieSelectedRate` |1.3f | | +| `serieCandlestickBorderWidth` |1f | | +| `editorShowAllListData` |false | | +| `maxPainter` |10 | | +| `lineSmoothStyle` |3f | | +| `lineSmoothness` |2f | | +| `lineSegmentDistance` |3f | | +| `cicleSmoothness` |2f | | +| `visualMapTriangeLen` |20f | | +| `pieTooltipExtraRadius` |8f | | +| `pieSelectedOffset` |8f | | +| `customThemes` | | | + +## `YAxis` + +Inherits or Implemented: [Axis](#Axis) + +直角坐标系 grid 中的 y 轴。 + + +[XCharts主页](https://github.com/XCharts-Team/XCharts)
+[XChartsAPI接口](XChartsAPI-ZH.md)
+[XCharts问答](XChartsFAQ-ZH.md) diff --git a/Assets/XCharts/Documentation/XChartsConfiguration-ZH.md.meta b/Assets/XCharts/Documentation/XChartsConfiguration-ZH.md.meta new file mode 100644 index 0000000..597b60c --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsConfiguration-ZH.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1d5cdb90dc99540768bfb21ea8243d04 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsFAQ-EN.md b/Assets/XCharts/Documentation/XChartsFAQ-EN.md new file mode 100644 index 0000000..d3b00d5 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsFAQ-EN.md @@ -0,0 +1,150 @@ +# XCharts FAQ + +[XCharts Homepage](https://github.com/XCharts-Team/XCharts)
+[XCharts API](XChartsAPI-EN.md)
+[XCharts Configuration](XChartsConfiguration-EN.md) + +[QA 1: How to adjust the margin between the axis and the background?](#How-to-adjust-the-margin-between-the-axis-and-the=-background) +[QA 2: How to play agian the fadeIn animation?](#How-to-play-agian-the-fadeIn-animation) +[QA 3: How to customize the color of data item in line chart and pie chart?](#How-to-customize-the-color-of-data-item-in-line-chart-and-pie-chart) +[QA 4: How to formatter the text of axis label, such as add a units text?](#How-to-formatter-the-text-of-axis-label-such-as-add-a-units-text) +[QA 5: How to stack the bar of bar chart](#How-to-stack-the-bar-of-bar-chart) +[QA 6: How to make the bar serie in the same bar but not stack?](#How-to-make-the-bar-serie-in-the-same-bar-but-not-stack) +[QA 7: How to adjust the bar width and gap of barchart?](#How-to-adjust-the-bar-width-and-gap-of-barchart) +[QA 8: How to adjust the color of bar?](#How-to-adjust-the-color-of-bar) +[QA 9: Can I adjust the anchor of chart?](#Can-I-adjust-the-anchor-of-chart) +[QA 10: Can display more than 1000 data?](#Can-display-more-than-1000-data) +[QA 11: Can line chart drawing be dash, dot and dash-dot?](#Can-line-chart-drawing-be-dash-dot-and-dash-dot) +[QA 12: How to limit the value range of the Y-axis?](#How-to-limit-the-value-range-of-the-Y-axis) +[QA 13: How to customize the tick value range of value axis?](#How-to-customize-the-tick-value-range-of-value-axis) +[QA 14: How to display text at the top of data items?](#How-to-display-text-at-the-top-of-data-items) +[QA 15: How do I customize icons for data items?](#How-do-I-customize-icons-for-data-items) +[QA 16: How to anti-aliasing and make the chart smoother?](#How-to-anti-aliasing-and-make-the-chart-smoother) +[QA 17: Why does mouse over chart Tooltip not show?](#Why-does-mouse-over-chart-Tooltip-not-show) +[QA 18: How not to display the bar line of Tooltip?](#How-not-to-display-the-bar-line-of-Tooltip) +[QA 19: How do I customize the display of Tooltip?](#How-do-I-customize-the-display-of-Tooltip) +[QA 20: How do I get the Y-axis to display multiple decimal places?](#How-do-I-get-the-Y-axis-to-display-multiple-decimal-places) +[QA 21: How do I dynamically update data with code?](#How-do-I-dynamically-update-data-with-code) +[QA 22: How to display legend? Why are legends sometimes not displayed?](#How-to-display-legend?Why-are-legends-sometimes-not-displayed) +[QA 23: How to make chart as prefab?](#How-to-make-chart-as-prefab) +[QA 24: How do I draw custom graphic in chart,such as line or dot?](#How-do-I-draw-custom-content-in-chart-such-as-line-or-dot) +[QA 25: How to achieve similar data movement effect of ELECTRO cardiogram?](#How-to-achieve-similar-data-movement-effect-of-ELECTRO-cardiogram) +[QA 26: How do I use the background component? What are the conditions?](#How-do-I-use-the-background-component-What-are-the-conditions) +[QA 27: Mesh can not have more than 65000 vertices?](#Mesh-cannot-have-more-than-65000-vertices) +[QA 28: Why are the parameters set in Serie reset after they run?](#Why-are-the-parameters-set-in-Serie-reset-after-they-run) + +## How-to-adjust-the-margin-between-the-axis-and-the=-background + +A: `Grid` conponent,which can adjust the left, right, up, down margins of chart. + +## How-to-play-agian-the-fadeIn-animation + +A: call the `chart.AnimationReset()` API. + +## How-to-customize-the-color-of-data-item-in-line chart-and-pie-chart + +A: `Theme`->`colorPalette`, or the sub component `LineStyle` and `ItemStyle` of `Serie`. + +## How-to-formatter-the-text-of-axis-label-such-as-add-a-units-text + +A: Adjust `formatter` and `numericFormatter` parameter of `Legend`, `AxisLabel`, `Tooltop`, `SerieLabel`. + +## How-to-stack-the-bar-of-bar-chart + +A: Set the `stack` parameter of `Serie`, the series will stack in a bar with the same `stack`. + +## How-to-make-the-bar-serie-in-the-same-bar-but-not-stack + +A: Set the `barGap` of `Serie` to `-1`,`stack` to null. + +## How-to-adjust-the-bar-width-and-gap-of-barchart + +A: Adjust the `barWidth` and `barGap` parameter of `Serie`, the last `serie`'s `barWidth` and `barGap` are valid when multiple `serie`. + +## How-to-adjust-the-color-of-bar + +A: Adjust the `ItemStyle` of `Data` in `inspector`. + +## Can-I-adjust-the-anchor-of-chart + +A: Yes, you can set any one of 16 anchors but the value use default. + +## Can-display-more-than-1000-data + +A: Yes. But `UGUI` limits `65000` vertices to a single `Graphic`, so too much data may not be displayed completely. The sampling simplification curve can be turned on by setting the sampling distance `sampleDist`. You can also set some parameters to reduce the number of vertices in the chart to help show more data. Such as reducing the size of the chart, close or reduce the axis of the client drawing, close `Symbol` and `Label` display. A `Normal` line chart occupies fewer vertices than a `Smooth` line chart. The `1.5.0` and above versions can set `large` and `largeThreshold` parameters to enable performance mode. + +## Can-line-chart-drawing-be-dash-dot-and-dash-dot + +A: Yes. Adjust the `lineType` of `Serie`. + +## How-to-limit-the-value-range-of-the-Y-axis + +A: Select the `minMaxType` of `Axis` as `Custom`, then set `min` and `max` to the values you want. + +## How-to-customize-the-tick-value-range-of-value-axis + +A: By default, it is automatically split by the `splitNumber` of `Axis`. Also, you can customize the `interval` to the range you want. + +## How-to-display-text-at-the-top-of-data-items + +A: Adjust the `Label` of `Serie`. + +## How-do-I-customize-icons-for-data-items + +A: Set the `Icon` of `Data` in `Serie`. + +## How-to-anti-aliasing-and-make-the-chart-smoother + +A: Open the `Anti-Aliasing` setting in `Unity`. Selected the UI Canvas `Render Mode` as `Screen Space-Camera`, selected `MSAA`, set `4` times or higher anti-aliasing. The sawtooth can only be reduced and unavoidable. The higher the pixel, the less obvious the sawtooth is. + +## Why-does-mouse-over-chart-Tooltip-not-show + +A: Verify `Toolip` is opened. Verify that the parent node of chart has turned off mouse events. + +## How-not-to-display-the-bar-line-of-Tooltip + +A: Set the `type` of `Tooltup` as `None`. Or adjust the parameters of `lineStyle`. + +## How-do-I-customize-the-display-of-Tooltip + +A: See the `formatter`, `itemFormatter`, `titleFormatter` parameters of `Tooltip`. + +## How-do-I-get-the-Y-axis-to-display-multiple-decimal-places + +A: Set the `numericFormatter` parameter of `AxisLabel`. + +## How-do-I-dynamically-update-data-with-code + +A: See example: `Example01_UpdateData.cs` + +## How-to-display-legend?Why-are-legends-sometimes-not-displayed + +A: First, the `name` in `Serie` must have a value that is not null. Then set `Legend` is `show`, where `data` can be empty by default, indicating that all legends are displayed. If you only want to display part of the `Serie` legend, fill in `data` with the `name` of the legend you want to display. If none of the values in `data` are `name` of the series, the legend will not be displayed. + +## How-to-make-chart-as-prefab + +A: Before make prefab, please delete all sub gameObject under chart which auto-created by `XCharts`. + +## How-do-I-draw-custom-content-in-chart-such-as-line-or-dot + +A: Implement `onCustomDraw` of chart, see `Example12_CustomDrawing.cs`. + +## How-to-achieve-similar-data-movement-effect-of-ELECTRO-cardiogram + +A: See `Example_Dynamic.cs`. + +## How-do-I-use-the-background-component-What-are-the-conditions + +A: Setting `show` to `true` for the `background` component. + +## Mesh-cannot-have-more-than-65000-vertices + +A: This is the limit of `UGUI` on the number of vertices for a single `Graphic`. `XCharts` is draw chart on a single `Graphic`, so there is also this limitation. The solution can be referred to: [QA 10: Can display more than 1000 data](#Can-display-more-than-1000-data) + +## Why-are-the-parameters-set-in-Serie-reset-after-they-run + +A: Check whether `RemoveData()` and add new `Serie` in the code. If you want to keep the configuration of `Serie`, you can only `ClearData()` which just clear data and then readd the data to the old serie. + +[XCharts Homepage](https://github.com/XCharts-Team/XCharts)
+[XCharts API](XChartsAPI-EN.md)
+[XCharts Configuration](XChartsConfiguration-EN.md) \ No newline at end of file diff --git a/Assets/XCharts/Documentation/XChartsFAQ-EN.md.meta b/Assets/XCharts/Documentation/XChartsFAQ-EN.md.meta new file mode 100644 index 0000000..6474319 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsFAQ-EN.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e803ae0ae73794ec6891fed7551fe01d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsFAQ-ZH.md b/Assets/XCharts/Documentation/XChartsFAQ-ZH.md new file mode 100644 index 0000000..f9d051c --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsFAQ-ZH.md @@ -0,0 +1,154 @@ +# XCharts问答 + +[XCharts主页](https://github.com/XCharts-Team/XCharts) +[XChartsAPI](XChartsAPI-ZH.md) +[XCharts配置项手册](XChartsConfiguration-ZH.md) + +[QA 1:如何调整坐标轴与背景的边距?](#如何调整坐标轴与背景的边距) +[QA 2:如何让初始动画重新播放?](#如何让初始动画重新播放) +[QA 3:如何自定义折线图、饼图等数据项的颜色?](#如何自定义折线图_饼图等数据项的颜色) +[QA 4:如何格式化文字,如我想给坐标轴标签加上单位?](#如何格式化文字_如我想给坐标轴标签加上单位) +[QA 5:如何让柱形图的柱子堆叠显示?](#如何让柱形图的柱子堆叠显示) +[QA 6:如何让柱形图的柱子同柱但不重叠?](#如何让柱形图的柱子同柱但不重叠) +[QA 7:如何调整柱形图的柱子宽度和间距?](#如何调整柱形图的柱子宽度和间距) +[QA 8:如何调整柱形图单个柱子的颜色?](#如何调整柱形图单个柱子的颜色) +[QA 9:如何调整图表的对齐方式?](#如何调整图表的对齐方式) +[QA 10:可以显示超过1000以上的大数据吗?](#可以显示超过1000以上的大数据吗) +[QA 11:折线图可以画虚线、点线、点划线吗?](#折线图可以画虚线_点线_点划线吗) +[QA 12:如何限定Y轴(Value轴)的值范围?](#如何限定Y轴的值范围) +[QA 13:如何自定义数值轴刻度大小?](#如何自定义数值轴刻度大小) +[QA 14:如何在数据项顶上显示文本?](#如何在数据项顶上显示文本) +[QA 15:如何给数据项自定义图标?](#如何给数据项自定义图标) +[QA 16:锯齿太严重,如何让图表更顺滑?](#锯齿太严重_如何让图表更顺滑) +[QA 17:为什么鼠标移上图表 Tooltip 不显示?](#为什么鼠标移上图表Tooltip不显示) +[QA 18:如何取消 Tooltip 的竖线?](#如何取消Tooltip的竖线) +[QA 19:如何自定义 Tooltip 的显示内容?](#如何自定义Tooltip的显示内容) +[QA 20:如何让Y轴(数值轴)显示多位小数?](#如何让Y轴显示多位小数) +[QA 21:如何用代码动态更新数据?](#如何用代码动态更新数据) +[QA 22:如何显示图例?为什么有时候图例无法显示?](#如何显示图例_为什么有时候图例无法显示) +[QA 23:如何做成预设?](#如何做成预设) +[QA 24:如何在图表上画点画线等自定义内容?](#如何在图表上画点画线等自定义内容) +[QA 25:如何实现心电图类似的数据移动效果?](#如何实现心电图类似的数据移动效果) +[QA 26:如何使用背景组件?有什么条件限制?](#如何使用背景组件_有什么条件限制) +[QA 27:Mesh can not have more than 65000 vertices?](#Mesh_cannot_have_more_than_65000_vertices) +[QA 28:为什么serie里设置的参数运行后又被重置了?](#为什么serie里设置的参数运行后又被重置了) + +## 如何调整坐标轴与背景的边距 + +答:`Grid`组件,可调整上下左右边距。 + +## 如何让初始动画重新播放 + +答:调用`AnimationReset()`接口。 + +## 如何自定义折线图_饼图等数据项的颜色 + +答:通过`Theme`的`colorPalette`调整,或者部分`Serie`下的`LineStyle`和`ItemStyle`。 + +## 如何格式化文字_如我想给坐标轴标签加上单位 + +答:通过`formatter`和`numericFormatter`参数,在`Legend`、`Axis`的`AxisLabel`、`Tooltop`、`Serie`的`Label`都提供该参数的配置。 + +## 如何让柱形图的柱子堆叠显示 + +答:设置`Serie`下的`stack`,`stack`相同的`serie`会堆叠显示在一个柱子上。 + +## 如何让柱形图的柱子同柱但不重叠 + +答:设置`Serie`下的`barGap`为`-1`,`stack`为空。 + +## 如何调整柱形图的柱子宽度和间距 + +答:调整`Serie`下的`barWidth`和`barGap`,多个`serie`时最后一个`serie`的`barWidth`和`barGap`有效。 + +## 如何调整柱形图单个柱子的颜色 + +答:可通过调整单个`Data`下的`ItemStyle`调整,也可以通过两个`serie`同柱不堆叠来实现,通过设置数据项为`0`来达到类似效果。 + +## 如何调整图表的对齐方式 + +答:默认为左下角对齐,暂不支持调整。可以通过包一层parent来辅助控制。(最新版本`1.5.0`及以上已支持任意锚点,可和做UI一样任意调整对其方式)。 + +## 可以显示超过1000以上的大数据吗 + +答:可以。但`UGUI`对单个`Graphic`限制`65000`个顶点,所以太多的数据不一定能显示完全。可通过设置采样距离`sampleDist`开启采样简化过密曲线。也可以通过设置一些参数来减少图表的顶点数有助于显示更多数据。如缩小图表的尺寸,关闭或减少坐标轴的客户端绘制,关闭`Serie`的`symbol`和`label`显示等。折线图的普通线图`Normal`比平滑线图`Smooth`占用顶点数更少。`1.5.0`以上版本可以设置`large`和`largeThreshold`参数来开启性能模式。 + +## 折线图可以画虚线_点线_点划线吗 + +答:可以。通过`Serie`下的`lineType`选择线条样式。当要显示的数据过多(成千以上)数据间过密时建议使用`Normal`或者`Step`样式。 + +## 如何限定Y轴的值范围 + +答:设置`Axis`下的`minMaxType`为`Custom`,自定义`min`和`max`。 + +## 如何自定义数值轴刻度大小 + +答:默认时通过`Axis`下的`splitNumer`进行自动划分。也可以设置`interval`自定义刻度大小。 + +## 如何在数据项顶上显示文本 + +答:通过设置`Serie`下的`Label`。 + +## 如何给数据项自定义图标 + +答:通过设置`Serie`的`data`下的数据项可单独设置`icon`相关参数。 + +## 锯齿太严重_如何让图表更顺滑 + +答:开启抗锯齿设置(在`Unity`里设置)。调整UI渲染模式为`Camera`模式,开启`MSAA`,设置`4`倍或更高抗锯齿。 + +## 为什么鼠标移上图表Tooltip不显示 + +答:确认`Tooltip`是否开启;确认父节点是否关闭了鼠标事件。 + +## 如何取消Tooltip的竖线 + +答:设置`Tooltip`的`type`为`None`。或者调整`lineStyle`的参数。 + +## 如何自定义Tooltip的显示内容 + +答:自定义总的内容可以通过`Tooltip`的`formatter`。如果只是想调整所有的`serie`的显示格式可以用`itemFormatter`和`titleFormatter`结合。如果想每个`serie`的显示格式不一样,可以定制`serie`的`itemStyle`里的`tooltipFormatter`。具体的用法请查阅[XCharts配置项手册](XChartsConfiguration-ZH.md)。 + +## 如何让Y轴显示多位小数 + +答:设置`Axis`下的`AxisLabel`中的`formatter`为`{value:f1}`或`{value:f2}`。`1.5.0`及以上版本通过`numericFormatter`设置。 + +## 如何用代码动态更新数据 + +答:请查阅`Example`下的代码,`Example13_LineSimple.cs`就是一个简单添加数据构建折线图的例子,其他`Demo`也都是通过代码控制不同的组件实现不同的功能,相关API请查看文档:[XChartsAPI接口](XChartsAPI-ZH.md) 。 + +## 如何显示图例_为什么有时候图例无法显示 + +答:首先,你的`serie`里的`name`需有值不为空。然后开启`Legend`显示,里面的`data`可以默认为空,表示显示所有的图例。如果你只想显示部分`serie`的图例,在`data`中填入要显示的图例的`name`即可。如果`data`中的值都不是系列的`name`,那图例就不会显示。 + +## 如何做成预设 + +答:请删除chart下所有的子组件再拖成预设。 + +## 如何在图表上画点画线等自定义内容 + +答:`XCharts`有自定义绘制回调`onCustomDraw`,具体可参考`Example12_CustomDrawing.cs` + +## 如何实现心电图类似的数据移动效果 + +答:参考`Example`目录下的`Example_Dynamic.cs`。主要通过设置`maxCache`参数实现。`axis`和`serie`都设置相同的`maxCache`。`maxCache`可固定数据个数,当数据超过设定时会先删除第一个在添加新数据,实现数据移动效果。 + +## 如何使用背景组件_有什么条件限制 + +答:设置`background`组件的`show`为`true`。 + +## 区域折线图在用半透明颜色时有时候会一条叠加的线 + +答:这是区域折线图绘制的bug。可以用浅的不透的颜色替代半透明颜色。 + +## Mesh_cannot_have_more_than_65000_vertices + +答:这是`UGUI`对单个`Graphic`的顶点数限制。`XCharts`是将图形绘制在单个`Graphic`上,所以也会有这个限制。解决的办法可以参考:[QA 10:可以显示超过1000以上的大数据吗?](#可以显示超过1000以上的大数据吗) + +## 为什么serie里设置的参数运行后又被重置了 + +答:检测下代码里是否调用了`RemoveData()`并重新添加`Serie`了。如果想保留`Serie`的配置可以只`ClearData()`,然后重新添加数据。 + +[XCharts主页](https://github.com/XCharts-Team/XCharts) +[XChartsAPI](XChartsAPI-ZH.md) +[XCharts配置项手册](XChartsConfiguration-ZH.md) diff --git a/Assets/XCharts/Documentation/XChartsFAQ-ZH.md.meta b/Assets/XCharts/Documentation/XChartsFAQ-ZH.md.meta new file mode 100644 index 0000000..57f6035 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsFAQ-ZH.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4df833a2a1e6c4a7da37a08379dd2e18 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsTutorial01-EN.md b/Assets/XCharts/Documentation/XChartsTutorial01-EN.md new file mode 100644 index 0000000..216e3e8 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsTutorial01-EN.md @@ -0,0 +1,262 @@ +# 教程:5分钟上手 XCharts 3.0 + +[XCharts主页](https://github.com/XCharts-Team/XCharts)
+[XCharts问答](XChartsFAQ-ZH.md)
+[XChartsAPI接口](XChartsAPI-ZH.md)
+[XCharts配置项手册](XChartsConfiguration-ZH.md) + +## 获取和导入 XCharts + +XCharts可通过以下任意一种方式导入到项目: + +- 直接将XCharts源码到项目 + + 下载好XCharts源码后,直接将XCharts目录拷贝到Unity项目工程的Assets目录下。 + +- 通过`Assets/Import Package`导入XCharts + + 下载好XCharts的.unitypackage文件后,打开Unity,菜单栏 Assets-->Import Package-->选中.unitypackage导入即可开始使用XCharts。 + +- 通过`Package Manager`导入XCharts + + 对于Unity 2018.3以上版本,可通过 Package Manager来导入XCharts,打开Package Manager后,通过 `Add package form git URL...`,输入XCharts3.0的GitHub URL: `https://github.com/XCharts-Team/XCharts.git#3.0` 稍等片刻后即可使用XCharts。 + + 也可以直接将package加入到`manifest.json`文件:打开`Packages`目录下的`manifest.json`文件,在`dependencies`下加入: + + ``` json + "com.monitor1394.xcharts": "https://github.com/XCharts-Team/XCharts.git#3.0", + ``` + + 如需更新`XCharts`,删除`manifest.json`文件(部分Unity版本可能是packages-lock.json文件)的`lock`下的`com.monitor1394.xcharts`相关内容即会重新下载编译。 + +## 添加一个简单图表 + +在`Hierarchy`视图下右键或菜单栏`GameObject`下拉选择`XCharts->LineChart`,即可快速创建一个默认的折线图出来: + +![linechart1](res/linechart1.png) + +## 添加多个Seire + +在`Inspector`视图,找到`LineChart`的面板,通过`Add Serie`按钮,可以添加第二条`Line`折线: + +![op_addserie](res/op_addserie.png) +![linechart2](res/linechart2.png) + +## 添加其他组件 + +默认图表没有`Legend`,需要`Legend`组件可通过`Add Component`按钮添加: + +![op_addcomponent](res/op_addcomponent.png) + +## 添加Serie组件 + +Serie只自带了几个常见的组件,其他组件按需额外添加。比如,需要给折线图区域填充颜色,可单独给`Serie`添加`AreaStyle`组件: + +![op_addseriecomponent](res/op_addseriecomponent.png) +![linechart3](res/linechart3.png) + +## 添加SerieData组件 + +如果需要个性化定制每个数据项的配置,可以单独给每个`SerieData`添加`Component`。比如我们给折线图的第二个数据单独显示`Label`: + +![op_addseriedatacomponent](res/op_addseriedatacomponent.png) +![linechart4](res/linechart4.png) + +## 更多组件和配置参数 + +功能越丰富就越需要更多的组件和参数支持。XCharts有多达几十种的主组件和子组件,每个组件有几个至几十个不等的可配置参数,以支持各种灵活而复杂的功能。 + +首次接触XCharts者可在 `Inspector` 视图下可以添加和调整各个组件,`Game` 视图会实时反馈调整的效果,以熟悉各种组件实现的效果。各个组件的详细参数说明可查阅[XCharts配置项手册](XChartsConfiguration-ZH.md)。 + +## 如何快速调整参数 + +`XCharts`是配置参数驱动。想要什么效果,你只需要去调整对应组件下的配置参数就可以,不需要去改`Hierarchy`视图下的节点,因为那些节点是由`XCharts`内部根据配置参数生成的,即使改了也会在刷新时被还原回来。 + +快速定位你想要改的效果对应的组件。这就需要对组件有一定的了解。比如我们想要让X轴的轴线末端显示箭头,如何定位?第一步,X轴定位到`XAxis0`;第二步,轴线定位到`AxisLine`;最后,再去看`AxisLine`组件下有没有这样的参数可以实现这个效果。 + +`XCharts`提供从全局`Theme`、系列`Serie`、单个数据项`SerieData`全方位的参数配置。优先级从大到小为:`SerieData`->`Serie`->`Theme`。以`ItemStyle`的颜色为例: + +1. 如果`SerieData`的`ItemStyle`配置有非`0000`颜色值,则优先用这个颜色值。 +2. 如果`Serie`的`ItemStyle`配置有非`0000`颜色值,则优先用这个颜色值。 +3. 否则颜色值取自主题`Theme`的`Color Palette`。 + +通常颜色值为0000时表示用主题默认颜色,配置为0或null时表示用主题默认配置。 + +## 用代码添加折线图 + +给`gameObject`挂上`LineChart`脚本: + +```C# +var chart = gameObject.GetComponent(); +if (chart == null) +{ + chart = gameObject.AddComponent(); + chart.Init(); +} +``` + +调整大小: + +```C# +chart.SetSize(580, 300);//代码动态设置尺寸,或直接操作chart.rectTransform,或直接在Inspector上改 +``` + +设置标题: + +```C# +var title = chart.GetOrAddChartComponent(); +title.text = "Simple Line"; +``` + +设置提示框和图例是否显示: + +```C# +var tooltip = chart.GetOrAddChartComponent<Tooltip>(); +tooltip.show = true; + +var legend = chart.GetOrAddChartComponent<Legend>(); +legend.show = false; +``` + +设置坐标轴: + +```C# +var xAxis = chart.GetOrAddChartComponent<XAxis>(); +xAxis.splitNumber = 10; +xAxis.boundaryGap = true; +xAxis.type = Axis.AxisType.Category; + +var yAxis = chart.GetOrAddChartComponent<YAxis>(); +yAxis.type = Axis.AxisType.Value; +``` + +清空默认数据,添加`Line`类型的`Serie`用于接收数据: + +```C# +chart.RemoveData(); +chart.AddSerie<Line>("line"); +``` + +添加10个数据: + +```C# +for (int i = 0; i < 10; i++) +{ + chart.AddXAxisData("x" + i); + chart.AddData(0, Random.Range(10, 20)); +} +``` + +这样一个简单的折线图就出来了: + +![linechart-simple](res/linechart-simple.png) + +如果一个Chart里面有多个系列时,则Axis的data只需要加一次,不要多个循环加重复了。记住:Axis的数据个数要和Serie的数据个数一致。 + +完整代码请查阅`Examples`:`Example13_LineSimple.cs` + +你还可以用代码控制更多的参数,`Examples`下还有更多的其他例子,凡是`Inspector`上看到的可配置的参数,都可以通过代码来设置。[XCharts配置项手册](XChartsConfiguration-ZH.md)里面的所有参数都是可以通过代码控制的。 + +另外,除非定制,建议调用`Chart`下提供的`public`接口,特别是数据相关操作部分。这些接口内部会做一些关联处理,比如刷新图表等。常见的接口有: + +1. `chart.ClearData()`:清空图表数据(不移除Series) +2. `chart.RemoveData()`:清除图表数据(会移除所有Serie) +3. `chart.AddSerie()`:添加Serie +4. `chart.AddXAxisData()`:添加X轴数据 +5. `chart.AddData()`:添加Serie数据 +6. `chart.UpdateData()`:更新Serie数据 +7. `chart.UpdateXAxisData()`:更新X轴数据 +8. `chart.UpdateDataName()`:更新Serie数据的名字 + +XCharts内部有自动刷新机制,但也是在一定条件下。如果自己调用了内部组件的接口,碰到组件没有刷新,确实找不到原因的话,可以用以下两个接口强制刷新: + +1. `chart.RefreshAllComponent()`:刷新图表组件,会重新初始化所有组件,不建议频繁待用。 +2. `chart.RefreshChart()`:刷新图表绘制,只刷新绘制部分,不会刷新组件文本,位置等部分。 + +## 使用TextMeshPro + +XCharts支持TextMeshPro,但默认是不开启的,需要自己手动切换。可通过以下方式开启和关闭: + +![textmeshpro1](res/op_textmeshpro.png) + +开启后需要设置好TextMeshPro要用的全局字体,也可以在主题Theme里单独设置: + +![textmeshpro-font](res/op_textmeshpro3.png) + +建议在项目初就规划好是否使用TextMeshPro,并设置好字体。在已有很多图表的情况下切换TMP时,可能某些图表无法自动刷新,可以手动点击`Rebuild Chart Object`按钮来重建图表,即可正常初始化。 + +开启了TMP项目在更新XCharts时,可能会碰到丢失了TMP引用而无法编译通过的问题,可通过以下两种方式解决: + +1. 找到`XCharts.Runtime.asmdef`和`XCharts.Editor.asmdef`,手动加上 `TextMeshPro`的引用 +2. 移除`PlayerSetting`中`Scripting Define Symbols`的`dUI_TextMeshPro`宏 + +## 用代码改图表参数 + +`Inspector`上看到的所有参数都可以用代码来修改,关键是要定位好你要改的参数是在组件上、还是serie上、还是在具体的数据项上改。 + +### 改主组件上的参数 + +需要先获取组件,再修改里面的参数: + +```C# +var title = chart.GetOrAddChartComponent<Title>(); +title.text = "Simple LineChart"; +title.subText = "normal line"; + +var xAxis = chart.GetOrAddChartComponent<XAxis>(); +xAxis.splitNumber = 10; +xAxis.boundaryGap = true; +xAxis.type = Axis.AxisType.Category; +``` + +### 改Serie的参数 + +新添加的Serie: + +```C# +var serie = chart.AddSerie<Pie>(); +serie.center[0] = 0.5f; +serie.center[1] = 0.5f; +serie.radius[0] = 80; +serie.radius[1] = 90; +serie.animation.dataChangeEnable = true; +serie.roundCap = true; +``` + +已存在的Serie: + +```C# +var serie = chart.GetSerie<Pie>(); +serie.center[0] = 0.5f; +serie.center[1] = 0.5f; +serie.radius[0] = 80; +serie.radius[1] = 90; +serie.animation.dataChangeEnable = true; +serie.roundCap = true; +``` + +给Serie添加额外组件: + +```C# +serie.AddExtraComponent<AreaStyle>(); + +var label = serie1.AddExtraComponent<LabelStyle>(); +label.offset = new Vector3(0,20,0); +``` + +### 改数据项SerieData上的参数 + +```C# +var serieData = chart.AddData(0, 20); +//var serieData = serie.GetSerieData(0); //从已有数据中获取 +serieData.radius = 10; + +var itemStyle = serieData.GetOrAddComponent<ItemStyle>(); //给数据项添加ItemStyle组件 +itemStyle.color = Color.blue; + +``` + +[XCharts主页](https://github.com/XCharts-Team/XCharts)</br> +[XCharts问答](XChartsFAQ-ZH.md)</br> +[XChartsAPI接口](XChartsAPI-ZH.md)</br> +[XCharts配置项手册](XChartsConfiguration-ZH.md) diff --git a/Assets/XCharts/Documentation/XChartsTutorial01-EN.md.meta b/Assets/XCharts/Documentation/XChartsTutorial01-EN.md.meta new file mode 100644 index 0000000..2b2b77a --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsTutorial01-EN.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a772f2d2a3f994d439db4a07365b9554 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/XChartsTutorial01-ZH.md b/Assets/XCharts/Documentation/XChartsTutorial01-ZH.md new file mode 100644 index 0000000..216e3e8 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsTutorial01-ZH.md @@ -0,0 +1,262 @@ +# 教程:5分钟上手 XCharts 3.0 + +[XCharts主页](https://github.com/XCharts-Team/XCharts)</br> +[XCharts问答](XChartsFAQ-ZH.md)</br> +[XChartsAPI接口](XChartsAPI-ZH.md)</br> +[XCharts配置项手册](XChartsConfiguration-ZH.md) + +## 获取和导入 XCharts + +XCharts可通过以下任意一种方式导入到项目: + +- 直接将XCharts源码到项目 + + 下载好XCharts源码后,直接将XCharts目录拷贝到Unity项目工程的Assets目录下。 + +- 通过`Assets/Import Package`导入XCharts + + 下载好XCharts的.unitypackage文件后,打开Unity,菜单栏 Assets-->Import Package-->选中.unitypackage导入即可开始使用XCharts。 + +- 通过`Package Manager`导入XCharts + + 对于Unity 2018.3以上版本,可通过 Package Manager来导入XCharts,打开Package Manager后,通过 `Add package form git URL...`,输入XCharts3.0的GitHub URL: `https://github.com/XCharts-Team/XCharts.git#3.0` 稍等片刻后即可使用XCharts。 + + 也可以直接将package加入到`manifest.json`文件:打开`Packages`目录下的`manifest.json`文件,在`dependencies`下加入: + + ``` json + "com.monitor1394.xcharts": "https://github.com/XCharts-Team/XCharts.git#3.0", + ``` + + 如需更新`XCharts`,删除`manifest.json`文件(部分Unity版本可能是packages-lock.json文件)的`lock`下的`com.monitor1394.xcharts`相关内容即会重新下载编译。 + +## 添加一个简单图表 + +在`Hierarchy`视图下右键或菜单栏`GameObject`下拉选择`XCharts->LineChart`,即可快速创建一个默认的折线图出来: + +![linechart1](res/linechart1.png) + +## 添加多个Seire + +在`Inspector`视图,找到`LineChart`的面板,通过`Add Serie`按钮,可以添加第二条`Line`折线: + +![op_addserie](res/op_addserie.png) +![linechart2](res/linechart2.png) + +## 添加其他组件 + +默认图表没有`Legend`,需要`Legend`组件可通过`Add Component`按钮添加: + +![op_addcomponent](res/op_addcomponent.png) + +## 添加Serie组件 + +Serie只自带了几个常见的组件,其他组件按需额外添加。比如,需要给折线图区域填充颜色,可单独给`Serie`添加`AreaStyle`组件: + +![op_addseriecomponent](res/op_addseriecomponent.png) +![linechart3](res/linechart3.png) + +## 添加SerieData组件 + +如果需要个性化定制每个数据项的配置,可以单独给每个`SerieData`添加`Component`。比如我们给折线图的第二个数据单独显示`Label`: + +![op_addseriedatacomponent](res/op_addseriedatacomponent.png) +![linechart4](res/linechart4.png) + +## 更多组件和配置参数 + +功能越丰富就越需要更多的组件和参数支持。XCharts有多达几十种的主组件和子组件,每个组件有几个至几十个不等的可配置参数,以支持各种灵活而复杂的功能。 + +首次接触XCharts者可在 `Inspector` 视图下可以添加和调整各个组件,`Game` 视图会实时反馈调整的效果,以熟悉各种组件实现的效果。各个组件的详细参数说明可查阅[XCharts配置项手册](XChartsConfiguration-ZH.md)。 + +## 如何快速调整参数 + +`XCharts`是配置参数驱动。想要什么效果,你只需要去调整对应组件下的配置参数就可以,不需要去改`Hierarchy`视图下的节点,因为那些节点是由`XCharts`内部根据配置参数生成的,即使改了也会在刷新时被还原回来。 + +快速定位你想要改的效果对应的组件。这就需要对组件有一定的了解。比如我们想要让X轴的轴线末端显示箭头,如何定位?第一步,X轴定位到`XAxis0`;第二步,轴线定位到`AxisLine`;最后,再去看`AxisLine`组件下有没有这样的参数可以实现这个效果。 + +`XCharts`提供从全局`Theme`、系列`Serie`、单个数据项`SerieData`全方位的参数配置。优先级从大到小为:`SerieData`->`Serie`->`Theme`。以`ItemStyle`的颜色为例: + +1. 如果`SerieData`的`ItemStyle`配置有非`0000`颜色值,则优先用这个颜色值。 +2. 如果`Serie`的`ItemStyle`配置有非`0000`颜色值,则优先用这个颜色值。 +3. 否则颜色值取自主题`Theme`的`Color Palette`。 + +通常颜色值为0000时表示用主题默认颜色,配置为0或null时表示用主题默认配置。 + +## 用代码添加折线图 + +给`gameObject`挂上`LineChart`脚本: + +```C# +var chart = gameObject.GetComponent<LineChart>(); +if (chart == null) +{ + chart = gameObject.AddComponent<LineChart>(); + chart.Init(); +} +``` + +调整大小: + +```C# +chart.SetSize(580, 300);//代码动态设置尺寸,或直接操作chart.rectTransform,或直接在Inspector上改 +``` + +设置标题: + +```C# +var title = chart.GetOrAddChartComponent<Title>(); +title.text = "Simple Line"; +``` + +设置提示框和图例是否显示: + +```C# +var tooltip = chart.GetOrAddChartComponent<Tooltip>(); +tooltip.show = true; + +var legend = chart.GetOrAddChartComponent<Legend>(); +legend.show = false; +``` + +设置坐标轴: + +```C# +var xAxis = chart.GetOrAddChartComponent<XAxis>(); +xAxis.splitNumber = 10; +xAxis.boundaryGap = true; +xAxis.type = Axis.AxisType.Category; + +var yAxis = chart.GetOrAddChartComponent<YAxis>(); +yAxis.type = Axis.AxisType.Value; +``` + +清空默认数据,添加`Line`类型的`Serie`用于接收数据: + +```C# +chart.RemoveData(); +chart.AddSerie<Line>("line"); +``` + +添加10个数据: + +```C# +for (int i = 0; i < 10; i++) +{ + chart.AddXAxisData("x" + i); + chart.AddData(0, Random.Range(10, 20)); +} +``` + +这样一个简单的折线图就出来了: + +![linechart-simple](res/linechart-simple.png) + +如果一个Chart里面有多个系列时,则Axis的data只需要加一次,不要多个循环加重复了。记住:Axis的数据个数要和Serie的数据个数一致。 + +完整代码请查阅`Examples`:`Example13_LineSimple.cs` + +你还可以用代码控制更多的参数,`Examples`下还有更多的其他例子,凡是`Inspector`上看到的可配置的参数,都可以通过代码来设置。[XCharts配置项手册](XChartsConfiguration-ZH.md)里面的所有参数都是可以通过代码控制的。 + +另外,除非定制,建议调用`Chart`下提供的`public`接口,特别是数据相关操作部分。这些接口内部会做一些关联处理,比如刷新图表等。常见的接口有: + +1. `chart.ClearData()`:清空图表数据(不移除Series) +2. `chart.RemoveData()`:清除图表数据(会移除所有Serie) +3. `chart.AddSerie()`:添加Serie +4. `chart.AddXAxisData()`:添加X轴数据 +5. `chart.AddData()`:添加Serie数据 +6. `chart.UpdateData()`:更新Serie数据 +7. `chart.UpdateXAxisData()`:更新X轴数据 +8. `chart.UpdateDataName()`:更新Serie数据的名字 + +XCharts内部有自动刷新机制,但也是在一定条件下。如果自己调用了内部组件的接口,碰到组件没有刷新,确实找不到原因的话,可以用以下两个接口强制刷新: + +1. `chart.RefreshAllComponent()`:刷新图表组件,会重新初始化所有组件,不建议频繁待用。 +2. `chart.RefreshChart()`:刷新图表绘制,只刷新绘制部分,不会刷新组件文本,位置等部分。 + +## 使用TextMeshPro + +XCharts支持TextMeshPro,但默认是不开启的,需要自己手动切换。可通过以下方式开启和关闭: + +![textmeshpro1](res/op_textmeshpro.png) + +开启后需要设置好TextMeshPro要用的全局字体,也可以在主题Theme里单独设置: + +![textmeshpro-font](res/op_textmeshpro3.png) + +建议在项目初就规划好是否使用TextMeshPro,并设置好字体。在已有很多图表的情况下切换TMP时,可能某些图表无法自动刷新,可以手动点击`Rebuild Chart Object`按钮来重建图表,即可正常初始化。 + +开启了TMP项目在更新XCharts时,可能会碰到丢失了TMP引用而无法编译通过的问题,可通过以下两种方式解决: + +1. 找到`XCharts.Runtime.asmdef`和`XCharts.Editor.asmdef`,手动加上 `TextMeshPro`的引用 +2. 移除`PlayerSetting`中`Scripting Define Symbols`的`dUI_TextMeshPro`宏 + +## 用代码改图表参数 + +`Inspector`上看到的所有参数都可以用代码来修改,关键是要定位好你要改的参数是在组件上、还是serie上、还是在具体的数据项上改。 + +### 改主组件上的参数 + +需要先获取组件,再修改里面的参数: + +```C# +var title = chart.GetOrAddChartComponent<Title>(); +title.text = "Simple LineChart"; +title.subText = "normal line"; + +var xAxis = chart.GetOrAddChartComponent<XAxis>(); +xAxis.splitNumber = 10; +xAxis.boundaryGap = true; +xAxis.type = Axis.AxisType.Category; +``` + +### 改Serie的参数 + +新添加的Serie: + +```C# +var serie = chart.AddSerie<Pie>(); +serie.center[0] = 0.5f; +serie.center[1] = 0.5f; +serie.radius[0] = 80; +serie.radius[1] = 90; +serie.animation.dataChangeEnable = true; +serie.roundCap = true; +``` + +已存在的Serie: + +```C# +var serie = chart.GetSerie<Pie>(); +serie.center[0] = 0.5f; +serie.center[1] = 0.5f; +serie.radius[0] = 80; +serie.radius[1] = 90; +serie.animation.dataChangeEnable = true; +serie.roundCap = true; +``` + +给Serie添加额外组件: + +```C# +serie.AddExtraComponent<AreaStyle>(); + +var label = serie1.AddExtraComponent<LabelStyle>(); +label.offset = new Vector3(0,20,0); +``` + +### 改数据项SerieData上的参数 + +```C# +var serieData = chart.AddData(0, 20); +//var serieData = serie.GetSerieData(0); //从已有数据中获取 +serieData.radius = 10; + +var itemStyle = serieData.GetOrAddComponent<ItemStyle>(); //给数据项添加ItemStyle组件 +itemStyle.color = Color.blue; + +``` + +[XCharts主页](https://github.com/XCharts-Team/XCharts)</br> +[XCharts问答](XChartsFAQ-ZH.md)</br> +[XChartsAPI接口](XChartsAPI-ZH.md)</br> +[XCharts配置项手册](XChartsConfiguration-ZH.md) diff --git a/Assets/XCharts/Documentation/XChartsTutorial01-ZH.md.meta b/Assets/XCharts/Documentation/XChartsTutorial01-ZH.md.meta new file mode 100644 index 0000000..a0596c7 --- /dev/null +++ b/Assets/XCharts/Documentation/XChartsTutorial01-ZH.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2ab7eabdc796a45aea5bc457dc9e27f8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res.meta b/Assets/XCharts/Documentation/res.meta new file mode 100644 index 0000000..46be5fd --- /dev/null +++ b/Assets/XCharts/Documentation/res.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 377ae219d15f048108309cb7a04de87e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/alipay.png b/Assets/XCharts/Documentation/res/alipay.png new file mode 100644 index 0000000..209d49d Binary files /dev/null and b/Assets/XCharts/Documentation/res/alipay.png differ diff --git a/Assets/XCharts/Documentation/res/alipay.png.meta b/Assets/XCharts/Documentation/res/alipay.png.meta new file mode 100644 index 0000000..04fcfd5 --- /dev/null +++ b/Assets/XCharts/Documentation/res/alipay.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 9619faeb62a184c94b83e389fd22f692 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/linechart-simple.png b/Assets/XCharts/Documentation/res/linechart-simple.png new file mode 100644 index 0000000..39e521f Binary files /dev/null and b/Assets/XCharts/Documentation/res/linechart-simple.png differ diff --git a/Assets/XCharts/Documentation/res/linechart-simple.png.meta b/Assets/XCharts/Documentation/res/linechart-simple.png.meta new file mode 100644 index 0000000..5f03582 --- /dev/null +++ b/Assets/XCharts/Documentation/res/linechart-simple.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 1e91cbf448b1c44769054375b1686439 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/linechart.png b/Assets/XCharts/Documentation/res/linechart.png new file mode 100644 index 0000000..6bb2eea Binary files /dev/null and b/Assets/XCharts/Documentation/res/linechart.png differ diff --git a/Assets/XCharts/Documentation/res/linechart.png.meta b/Assets/XCharts/Documentation/res/linechart.png.meta new file mode 100644 index 0000000..9417852 --- /dev/null +++ b/Assets/XCharts/Documentation/res/linechart.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 172962e9e20c74c8a8428f507843b6d3 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/linechart1.png b/Assets/XCharts/Documentation/res/linechart1.png new file mode 100644 index 0000000..703c690 Binary files /dev/null and b/Assets/XCharts/Documentation/res/linechart1.png differ diff --git a/Assets/XCharts/Documentation/res/linechart1.png.meta b/Assets/XCharts/Documentation/res/linechart1.png.meta new file mode 100644 index 0000000..2d41701 --- /dev/null +++ b/Assets/XCharts/Documentation/res/linechart1.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: e610f9feea0064345909b632bba12e2e +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/linechart2.png b/Assets/XCharts/Documentation/res/linechart2.png new file mode 100644 index 0000000..308870d Binary files /dev/null and b/Assets/XCharts/Documentation/res/linechart2.png differ diff --git a/Assets/XCharts/Documentation/res/linechart2.png.meta b/Assets/XCharts/Documentation/res/linechart2.png.meta new file mode 100644 index 0000000..09d9eba --- /dev/null +++ b/Assets/XCharts/Documentation/res/linechart2.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: ba7e7b5180b354b26baf5314d5da59f6 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/linechart3.png b/Assets/XCharts/Documentation/res/linechart3.png new file mode 100644 index 0000000..a91064e Binary files /dev/null and b/Assets/XCharts/Documentation/res/linechart3.png differ diff --git a/Assets/XCharts/Documentation/res/linechart3.png.meta b/Assets/XCharts/Documentation/res/linechart3.png.meta new file mode 100644 index 0000000..e3665c6 --- /dev/null +++ b/Assets/XCharts/Documentation/res/linechart3.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 42bd080b0812b4bdcb8685adad22cd1e +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/linechart4.png b/Assets/XCharts/Documentation/res/linechart4.png new file mode 100644 index 0000000..929591e Binary files /dev/null and b/Assets/XCharts/Documentation/res/linechart4.png differ diff --git a/Assets/XCharts/Documentation/res/linechart4.png.meta b/Assets/XCharts/Documentation/res/linechart4.png.meta new file mode 100644 index 0000000..20e6da9 --- /dev/null +++ b/Assets/XCharts/Documentation/res/linechart4.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 52450d00759b44e678862b5ca8895072 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/op_addcomponent.png b/Assets/XCharts/Documentation/res/op_addcomponent.png new file mode 100644 index 0000000..420e39a Binary files /dev/null and b/Assets/XCharts/Documentation/res/op_addcomponent.png differ diff --git a/Assets/XCharts/Documentation/res/op_addcomponent.png.meta b/Assets/XCharts/Documentation/res/op_addcomponent.png.meta new file mode 100644 index 0000000..649700d --- /dev/null +++ b/Assets/XCharts/Documentation/res/op_addcomponent.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: c7e8baa3a53ba41e9bb63d02176b87ff +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/op_addserie.png b/Assets/XCharts/Documentation/res/op_addserie.png new file mode 100644 index 0000000..294b5fe Binary files /dev/null and b/Assets/XCharts/Documentation/res/op_addserie.png differ diff --git a/Assets/XCharts/Documentation/res/op_addserie.png.meta b/Assets/XCharts/Documentation/res/op_addserie.png.meta new file mode 100644 index 0000000..d610927 --- /dev/null +++ b/Assets/XCharts/Documentation/res/op_addserie.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 4fa12bb2901d144b88abb5f304979291 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/op_addseriecomponent.png b/Assets/XCharts/Documentation/res/op_addseriecomponent.png new file mode 100644 index 0000000..ecc517f Binary files /dev/null and b/Assets/XCharts/Documentation/res/op_addseriecomponent.png differ diff --git a/Assets/XCharts/Documentation/res/op_addseriecomponent.png.meta b/Assets/XCharts/Documentation/res/op_addseriecomponent.png.meta new file mode 100644 index 0000000..7b2c01f --- /dev/null +++ b/Assets/XCharts/Documentation/res/op_addseriecomponent.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: b1eb790b2091e4df380350030c6d8d8d +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/op_addseriedatacomponent.png b/Assets/XCharts/Documentation/res/op_addseriedatacomponent.png new file mode 100644 index 0000000..6f74e89 Binary files /dev/null and b/Assets/XCharts/Documentation/res/op_addseriedatacomponent.png differ diff --git a/Assets/XCharts/Documentation/res/op_addseriedatacomponent.png.meta b/Assets/XCharts/Documentation/res/op_addseriedatacomponent.png.meta new file mode 100644 index 0000000..3eca7ba --- /dev/null +++ b/Assets/XCharts/Documentation/res/op_addseriedatacomponent.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 1ca6fe245906a453284b526f09c44eff +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/op_textmeshpro.png b/Assets/XCharts/Documentation/res/op_textmeshpro.png new file mode 100644 index 0000000..8ea4172 Binary files /dev/null and b/Assets/XCharts/Documentation/res/op_textmeshpro.png differ diff --git a/Assets/XCharts/Documentation/res/op_textmeshpro.png.meta b/Assets/XCharts/Documentation/res/op_textmeshpro.png.meta new file mode 100644 index 0000000..6c13d6f --- /dev/null +++ b/Assets/XCharts/Documentation/res/op_textmeshpro.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 9031f7bed8c7f4350affc32cc7016b5e +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/op_textmeshpro3.png b/Assets/XCharts/Documentation/res/op_textmeshpro3.png new file mode 100644 index 0000000..52f71b7 Binary files /dev/null and b/Assets/XCharts/Documentation/res/op_textmeshpro3.png differ diff --git a/Assets/XCharts/Documentation/res/op_textmeshpro3.png.meta b/Assets/XCharts/Documentation/res/op_textmeshpro3.png.meta new file mode 100644 index 0000000..c74cfa5 --- /dev/null +++ b/Assets/XCharts/Documentation/res/op_textmeshpro3.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 1777b9bc4f1df446eaf01931cb0b07ed +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Documentation/res/wechat.png b/Assets/XCharts/Documentation/res/wechat.png new file mode 100644 index 0000000..c2f8b67 Binary files /dev/null and b/Assets/XCharts/Documentation/res/wechat.png differ diff --git a/Assets/XCharts/Documentation/res/wechat.png.meta b/Assets/XCharts/Documentation/res/wechat.png.meta new file mode 100644 index 0000000..a66a7c3 --- /dev/null +++ b/Assets/XCharts/Documentation/res/wechat.png.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: c62c735b2989c4367b8c97b8ca75c216 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor.meta b/Assets/XCharts/Editor.meta new file mode 100644 index 0000000..792fad1 --- /dev/null +++ b/Assets/XCharts/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98b750952a34c427693ac70f09008bae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Attributes.meta b/Assets/XCharts/Editor/Attributes.meta new file mode 100644 index 0000000..b4b5c1a --- /dev/null +++ b/Assets/XCharts/Editor/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e7c19967ca244147b0fcbb129201b46 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Attributes/ComponentEditorAttribute.cs b/Assets/XCharts/Editor/Attributes/ComponentEditorAttribute.cs new file mode 100644 index 0000000..3e5d460 --- /dev/null +++ b/Assets/XCharts/Editor/Attributes/ComponentEditorAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace XCharts.Editor +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] + public sealed class ComponentEditorAttribute : Attribute + { + public readonly Type componentType; + + public ComponentEditorAttribute(Type componentType) + { + this.componentType = componentType; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Attributes/ComponentEditorAttribute.cs.meta b/Assets/XCharts/Editor/Attributes/ComponentEditorAttribute.cs.meta new file mode 100644 index 0000000..5db1e6c --- /dev/null +++ b/Assets/XCharts/Editor/Attributes/ComponentEditorAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f433acf13ec404a6d91eb78352d18d4d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Attributes/SerieEditorAttribute.cs b/Assets/XCharts/Editor/Attributes/SerieEditorAttribute.cs new file mode 100644 index 0000000..c747be6 --- /dev/null +++ b/Assets/XCharts/Editor/Attributes/SerieEditorAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace XCharts.Editor +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] + public sealed class SerieEditorAttribute : Attribute + { + public readonly Type serieType; + + public SerieEditorAttribute(Type serieType) + { + this.serieType = serieType; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Attributes/SerieEditorAttribute.cs.meta b/Assets/XCharts/Editor/Attributes/SerieEditorAttribute.cs.meta new file mode 100644 index 0000000..a94ad04 --- /dev/null +++ b/Assets/XCharts/Editor/Attributes/SerieEditorAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dcdc7a72224af419d96584fa40f822c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Charts.meta b/Assets/XCharts/Editor/Charts.meta new file mode 100644 index 0000000..412c017 --- /dev/null +++ b/Assets/XCharts/Editor/Charts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e4407eed14ec4e518a373f4d8ae9b3c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Charts/BaseChartEditor.cs b/Assets/XCharts/Editor/Charts/BaseChartEditor.cs new file mode 100644 index 0000000..617d12e --- /dev/null +++ b/Assets/XCharts/Editor/Charts/BaseChartEditor.cs @@ -0,0 +1,320 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomEditor(typeof(BaseChart), true)] + public class BaseChartEditor : UnityEditor.Editor + { + class Styles + { + public static readonly GUIContent btnAddSerie = new GUIContent("Add Serie", ""); + public static readonly GUIContent btnAddComponent = new GUIContent("Add Main Component", ""); + public static readonly GUIContent btnCovertXYAxis = new GUIContent("Covert XY Axis", ""); + public static readonly GUIContent btnRebuildChartObject = new GUIContent("Rebuild Chart Object", ""); + public static readonly GUIContent btnCheckWarning = new GUIContent("Check Warning", ""); + public static readonly GUIContent btnHideWarning = new GUIContent("Hide Warning", ""); + } + protected BaseChart m_Chart; + protected SerializedProperty m_Script; + protected SerializedProperty m_EnableTextMeshPro; + protected SerializedProperty m_Settings; + protected SerializedProperty m_Theme; + protected SerializedProperty m_ChartName; + protected SerializedProperty m_DebugInfo; + protected SerializedProperty m_RaycastTarget; + + protected List<SerializedProperty> m_Components = new List<SerializedProperty>(); + protected List<SerializedProperty> m_Series = new List<SerializedProperty>(); + + private bool m_BaseFoldout; + + private bool m_CheckWarning = false; + private int m_LastComponentCount = 0; + private int m_LastSerieCount = 0; + private string m_VersionString = ""; + private StringBuilder sb = new StringBuilder(); + MainComponentListEditor m_ComponentList; + SerieListEditor m_SerieList; + + protected virtual void OnEnable() + { + if (target == null) return; + m_Chart = (BaseChart) target; + m_Script = serializedObject.FindProperty("m_Script"); + m_EnableTextMeshPro = serializedObject.FindProperty("m_EnableTextMeshPro"); + m_ChartName = serializedObject.FindProperty("m_ChartName"); + m_Theme = serializedObject.FindProperty("m_Theme"); + m_Settings = serializedObject.FindProperty("m_Settings"); + m_DebugInfo = serializedObject.FindProperty("m_DebugInfo"); + m_RaycastTarget = serializedObject.FindProperty("m_RaycastTarget"); + + RefreshComponent(); + m_ComponentList = new MainComponentListEditor(this); + m_ComponentList.Init(m_Chart, serializedObject, m_Components); + + RefreshSeries(); + m_SerieList = new SerieListEditor(this); + m_SerieList.Init(m_Chart, serializedObject, m_Series); + + m_VersionString = "v" + XChartsMgr.fullVersion; + if (m_EnableTextMeshPro.boolValue) + m_VersionString += "-tmp"; + } + + public List<SerializedProperty> RefreshComponent() + { + m_Components.Clear(); + serializedObject.UpdateIfRequiredOrScript(); + foreach (var kv in m_Chart.typeListForComponent) + { + InitComponent(kv.Value.Name); + } + return m_Components; + } + + public List<SerializedProperty> RefreshSeries() + { + m_Series.Clear(); + serializedObject.UpdateIfRequiredOrScript(); + foreach (var kv in m_Chart.typeListForSerie) + { + InitSerie(kv.Value.Name); + } + return m_Series; + } + + public override void OnInspectorGUI() + { + if (m_Chart == null && target == null) + { + base.OnInspectorGUI(); + return; + } + serializedObject.UpdateIfRequiredOrScript(); + if (m_LastComponentCount != m_Chart.components.Count) + { + m_LastComponentCount = m_Chart.components.Count; + RefreshComponent(); + m_ComponentList.UpdateComponentsProperty(m_Components); + + } + if (m_LastSerieCount != m_Chart.series.Count) + { + m_LastSerieCount = m_Chart.series.Count; + RefreshSeries(); + m_SerieList.UpdateSeriesProperty(m_Series); + } + OnStartInspectorGUI(); + OnDebugInspectorGUI(); + EditorGUILayout.Space(); + serializedObject.ApplyModifiedProperties(); + } + + protected virtual void OnStartInspectorGUI() + { + ShowVersion(); + m_BaseFoldout = ChartEditorHelper.DrawHeader("Base", m_BaseFoldout, false, null, null); + if (m_BaseFoldout) + { + EditorGUILayout.PropertyField(m_Script); + EditorGUILayout.PropertyField(m_ChartName); + EditorGUILayout.PropertyField(m_RaycastTarget); + if (XChartsMgr.IsRepeatChartName(m_Chart, m_ChartName.stringValue)) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.HelpBox("chart name is repeated: " + m_ChartName.stringValue, MessageType.Error); + EditorGUILayout.EndHorizontal(); + } + } + EditorGUILayout.PropertyField(m_Theme); + EditorGUILayout.PropertyField(m_Settings); + m_ComponentList.OnGUI(); + m_SerieList.OnGUI(); + } + + protected virtual void OnDebugInspectorGUI() + { + EditorGUILayout.PropertyField(m_DebugInfo, true); + EditorGUILayout.Space(); + AddSerie(); + AddComponent(); + CheckWarning(); + } + + protected void PropertyComponnetList(SerializedProperty prop) + { + for (int i = 0; i < prop.arraySize; i++) + { + EditorGUILayout.PropertyField(prop.GetArrayElementAtIndex(i), true); + } + } + + private void InitComponent(string propName) + { + var prop = serializedObject.FindProperty(propName); + for (int i = 0; i < prop.arraySize; i++) + { + m_Components.Add(prop.GetArrayElementAtIndex(i)); + } + m_Components.Sort((a, b) => { return a.propertyPath.CompareTo(b.propertyPath); }); + } + + private void InitSerie(string propName) + { + var prop = serializedObject.FindProperty(propName); + for (int i = 0; i < prop.arraySize; i++) + { + m_Series.Add(prop.GetArrayElementAtIndex(i)); + } + m_Series.Sort(delegate(SerializedProperty a, SerializedProperty b) + { + var index1 = a.FindPropertyRelative("m_Index").intValue; + var index2 = b.FindPropertyRelative("m_Index").intValue; + return index1.CompareTo(index2); + }); + } + + private void ShowVersion() + { + EditorGUILayout.HelpBox(m_VersionString, MessageType.None); + } + + private void AddComponent() + { + if (GUILayout.Button(Styles.btnAddComponent)) + { + var menu = new GenericMenu(); + foreach (var type in GetMainComponentTypeNames()) + { + var title = ChartEditorHelper.GetContent(type.Name); + bool exists = !m_Chart.CanAddChartComponent(type); + if (!exists) + menu.AddItem(title, false, () => + { + m_ComponentList.AddChartComponent(type); + }); + else + { + menu.AddDisabledItem(title); + } + } + + menu.ShowAsContext(); + } + } + private void AddSerie() + { + if (GUILayout.Button(Styles.btnAddSerie)) + { + var menu = new GenericMenu(); + foreach (var type in GetSerieTypeNames()) + { + var title = ChartEditorHelper.GetContent(type.Name); + if (m_Chart.CanAddSerie(type)) + { + menu.AddItem(title, false, () => + { + m_SerieList.AddSerie(type); + }); + } + else + { + menu.AddDisabledItem(title); + } + } + menu.ShowAsContext(); + } + } + + private List<Type> GetMainComponentTypeNames() + { + var list = new List<Type>(); + var typeMap = RuntimeUtil.GetAllTypesDerivedFrom<MainComponent>(); + foreach (var kvp in typeMap) + { + var type = kvp; + if (RuntimeUtil.HasSubclass(type)) continue; + + if (type.IsDefined(typeof(ComponentHandlerAttribute), false)) + { + var attribute = type.GetAttribute<ComponentHandlerAttribute>(); + if (attribute != null && attribute.handler != null) + list.Add(type); + } + else + { + list.Add(type); + } + } + list.Sort((a, b) => { return a.Name.CompareTo(b.Name); }); + return list; + } + private List<Type> GetSerieTypeNames() + { + var list = new List<Type>(); + var typeMap = RuntimeUtil.GetAllTypesDerivedFrom<Serie>(); + foreach (var kvp in typeMap) + { + var type = kvp; + if (type.IsDefined(typeof(SerieHandlerAttribute), false)) + list.Add(type); + } + list.Sort((a, b) => { return a.Name.CompareTo(b.Name); }); + return list; + } + + private void CheckWarning() + { + if (m_Chart.HasChartComponent<XAxis>() && m_Chart.HasChartComponent<YAxis>()) + { + if (GUILayout.Button(Styles.btnCovertXYAxis)) + m_Chart.CovertXYAxis(0); + } + if (GUILayout.Button(Styles.btnRebuildChartObject)) + { + m_Chart.RebuildChartObject(); + } + if (m_CheckWarning) + { + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button(Styles.btnCheckWarning)) + { + m_CheckWarning = true; + m_Chart.CheckWarning(); + } + if (GUILayout.Button(Styles.btnHideWarning)) + { + m_CheckWarning = false; + } + EditorGUILayout.EndHorizontal(); + sb.Length = 0; + sb.AppendFormat("v{0}", XChartsMgr.fullVersion); + if (!string.IsNullOrEmpty(m_Chart.warningInfo)) + { + sb.AppendLine(); + sb.Append(m_Chart.warningInfo); + } + else + { + sb.AppendLine(); + sb.Append("Perfect! No warning!"); + } + EditorGUILayout.HelpBox(sb.ToString(), MessageType.Warning); + } + else + { + if (GUILayout.Button(Styles.btnCheckWarning)) + { + m_CheckWarning = true; + m_Chart.CheckWarning(); + } + + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Charts/BaseChartEditor.cs.meta b/Assets/XCharts/Editor/Charts/BaseChartEditor.cs.meta new file mode 100644 index 0000000..2916db0 --- /dev/null +++ b/Assets/XCharts/Editor/Charts/BaseChartEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7f1cff1e5bae244a872040086b1cfa8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents.meta b/Assets/XCharts/Editor/ChildComponents.meta new file mode 100644 index 0000000..b2aa5c5 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7861b681552cf4bc9b2c2f16d25c628c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/AnimationDrawer.cs b/Assets/XCharts/Editor/ChildComponents/AnimationDrawer.cs new file mode 100644 index 0000000..8d7a59c --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/AnimationDrawer.cs @@ -0,0 +1,29 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(AnimationStyle), true)] + public class AnimationDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Animation"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Enable", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Type"); + PropertyField(prop, "m_FadeInDuration"); + PropertyField(prop, "m_FadeInDelay"); + PropertyField(prop, "m_FadeOutDuration"); + PropertyField(prop, "m_FadeOutDelay"); + PropertyField(prop, "m_DataChangeEnable"); + PropertyField(prop, "m_DataChangeDuration"); + PropertyField(prop, "m_ActualDuration"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/AnimationDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/AnimationDrawer.cs.meta new file mode 100644 index 0000000..5a9ff4d --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/AnimationDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 844042f92a581474ba0491427f3fd592 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/AreaStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/AreaStyleDrawer.cs new file mode 100644 index 0000000..25aa9bc --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/AreaStyleDrawer.cs @@ -0,0 +1,27 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(AreaStyle), true)] + public class AreaStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "AreaStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Origin"); + PropertyField(prop, "m_Color"); + PropertyField(prop, "m_ToColor"); + PropertyField(prop, "m_HighlightColor"); + PropertyField(prop, "m_HighlightToColor"); + PropertyField(prop, "m_Opacity"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/AreaStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/AreaStyleDrawer.cs.meta new file mode 100644 index 0000000..78e98cf --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/AreaStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c51fd822c8be44490832d81652d1aef5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/BasePropertyDrawer.cs b/Assets/XCharts/Editor/ChildComponents/BasePropertyDrawer.cs new file mode 100644 index 0000000..77ae7b0 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/BasePropertyDrawer.cs @@ -0,0 +1,211 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace XCharts.Editor +{ + public delegate void DelegateMenuAction(Vector2 postion); + public class BasePropertyDrawer : PropertyDrawer + { + protected int m_Index; + protected int m_DataSize; + protected float m_DefaultWidth; + protected string m_DisplayName; + protected string m_KeyName; + protected Rect m_DrawRect; + protected Dictionary<string, float> m_Heights = new Dictionary<string, float>(); + protected Dictionary<string, bool> m_PropToggles = new Dictionary<string, bool>(); + protected Dictionary<string, bool> m_DataToggles = new Dictionary<string, bool>(); + + public virtual string ClassName { get { return ""; } } + public virtual List<string> IngorePropertys { get { return new List<string> { }; } } + + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + m_DrawRect = pos; + m_DrawRect.height = EditorGUIUtility.singleLineHeight; + m_DefaultWidth = pos.width; + var list = prop.displayName.Split(' '); + if (list.Length > 0) + { + if (!int.TryParse(list[list.Length - 1], out m_Index)) + { + m_Index = 0; + m_DisplayName = prop.displayName; + m_KeyName = prop.propertyPath + "_" + m_Index; + } + else + { + m_DisplayName = ClassName + " " + m_Index; + m_KeyName = prop.propertyPath + "_" + m_Index; + } + } + else + { + m_DisplayName = prop.displayName; + } + if (!m_PropToggles.ContainsKey(m_KeyName)) + { + m_PropToggles.Add(m_KeyName, false); + } + if (!m_DataToggles.ContainsKey(m_KeyName)) + { + m_DataToggles.Add(m_KeyName, false); + } + if (!m_Heights.ContainsKey(m_KeyName)) + { + m_Heights.Add(m_KeyName, 0); + } + else + { + m_Heights[m_KeyName] = 0; + } + } + + private string GetKeyName(SerializedProperty prop) + { + var index = 0; + var list = prop.displayName.Split(' '); + if (list.Length > 0) + { + int.TryParse(list[list.Length - 1], out index); + } + return prop.propertyPath + "_" + index; + } + + protected void AddSingleLineHeight() + { + m_Heights[m_KeyName] += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + m_DrawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + } + + protected void AddHeight(float height) + { + m_Heights[m_KeyName] += height; + m_DrawRect.y += height; + } + + protected void PropertyListField(SerializedProperty prop, string relativePropName, bool showOrder = true) + { + if (IngorePropertys.Contains(relativePropName)) return; + var height = m_Heights[m_KeyName]; + var toggleKeyName = m_KeyName + relativePropName; + m_DataToggles[toggleKeyName] = ChartEditorHelper.MakeListWithFoldout(ref m_DrawRect, ref height, + prop.FindPropertyRelative(relativePropName), + m_DataToggles.ContainsKey(toggleKeyName) && m_DataToggles[toggleKeyName], showOrder, true); + m_Heights[m_KeyName] = height; + } + + protected void PropertyField(SerializedProperty prop, string relativePropName) + { + if (IngorePropertys.Contains(relativePropName)) return; + if (!ChartEditorHelper.PropertyField(ref m_DrawRect, m_Heights, m_KeyName, prop, relativePropName)) + { + Debug.LogError("PropertyField ERROR:" + prop.displayName + ", " + relativePropName); + } + } + + protected void PropertyFieldLimitMin(SerializedProperty prop, string relativePropName, float minValue) + { + if (IngorePropertys.Contains(relativePropName)) return; + if (!ChartEditorHelper.PropertyFieldWithMinValue(ref m_DrawRect, m_Heights, m_KeyName, prop, + relativePropName, minValue)) + { + Debug.LogError("PropertyField ERROR:" + prop.displayName + ", " + relativePropName); + } + } + protected void PropertyFieldLimitMax(SerializedProperty prop, string relativePropName, float maxValue) + { + if (IngorePropertys.Contains(relativePropName)) return; + if (!ChartEditorHelper.PropertyFieldWithMaxValue(ref m_DrawRect, m_Heights, m_KeyName, prop, + relativePropName, maxValue)) + { + Debug.LogError("PropertyField ERROR:" + prop.displayName + ", " + relativePropName); + } + } + + protected void PropertyField(SerializedProperty prop, SerializedProperty relativeProp) + { + if (!ChartEditorHelper.PropertyField(ref m_DrawRect, m_Heights, m_KeyName, relativeProp)) + { + Debug.LogError("PropertyField ERROR:" + prop.displayName + ", " + relativeProp); + } + } + + protected void PropertyTwoFiled(SerializedProperty prop, string relativeListProp, string labelName = null) + { + PropertyTwoFiled(prop, prop.FindPropertyRelative(relativeListProp), labelName); + } + protected void PropertyTwoFiled(SerializedProperty prop, SerializedProperty relativeListProp, + string labelName = null) + { + if (string.IsNullOrEmpty(labelName)) + { + labelName = relativeListProp.displayName; + } + ChartEditorHelper.MakeTwoField(ref m_DrawRect, m_DefaultWidth, relativeListProp, labelName); + m_Heights[m_KeyName] += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + } + + protected bool MakeFoldout(SerializedProperty prop, string relativePropName) + { + if (string.IsNullOrEmpty(relativePropName)) + { + return ChartEditorHelper.MakeFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName, + m_DisplayName, null); + } + else + { + var relativeProp = prop.FindPropertyRelative(relativePropName); + return ChartEditorHelper.MakeFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName, + m_DisplayName, relativeProp); + } + } + protected bool MakeComponentFoldout(SerializedProperty prop, string relativePropName, bool relativePropEnable, + params HeaderMenuInfo[] menus) + { + if (string.IsNullOrEmpty(relativePropName)) + { + return ChartEditorHelper.MakeComponentFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName, + m_DisplayName, null, null, relativePropEnable, menus); + } + else + { + var relativeProp = prop.FindPropertyRelative(relativePropName); + return ChartEditorHelper.MakeComponentFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName, + m_DisplayName, relativeProp, null, relativePropEnable, menus); + } + } + + protected bool MakeComponentFoldout(SerializedProperty prop, string relativePropName, string relativePropName2, + bool relativePropEnable, params HeaderMenuInfo[] menus) + { + if (string.IsNullOrEmpty(relativePropName)) + { + return ChartEditorHelper.MakeComponentFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName, + m_DisplayName, null, null, relativePropEnable, menus); + } + else + { + var relativeProp = prop.FindPropertyRelative(relativePropName); + var relativeProp2 = prop.FindPropertyRelative(relativePropName2); + return ChartEditorHelper.MakeComponentFoldout(ref m_DrawRect, m_Heights, m_PropToggles, m_KeyName, + m_DisplayName, relativeProp, relativeProp2, relativePropEnable, menus); + } + } + + protected virtual void DrawExtendeds(SerializedProperty prop) { } + + public override float GetPropertyHeight(SerializedProperty prop, GUIContent label) + { + var key = GetKeyName(prop); + if (m_Heights.ContainsKey(key)) return m_Heights[key] + GetExtendedHeight(); + else return EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + } + + protected virtual float GetExtendedHeight() + { + return 0; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/BasePropertyDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/BasePropertyDrawer.cs.meta new file mode 100644 index 0000000..51f7228 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/BasePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e5a04ce1f0a841b9b966a6d74de00e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/CommentItemDrawer.cs b/Assets/XCharts/Editor/ChildComponents/CommentItemDrawer.cs new file mode 100644 index 0000000..962ba61 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/CommentItemDrawer.cs @@ -0,0 +1,26 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(CommentItem), true)] + public class CommentItemDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "CommentItem"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", "m_Content", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Content"); + PropertyField(prop, "m_Position"); + //PropertyField(prop, "m_MarkRect"); + //PropertyField(prop, "m_MarkStyle"); + PropertyField(prop, "m_LabelStyle"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/CommentItemDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/CommentItemDrawer.cs.meta new file mode 100644 index 0000000..dc4966b --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/CommentItemDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d485d6a729a1449cdb5032f380fba70f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/CommentMarkStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/CommentMarkStyleDrawer.cs new file mode 100644 index 0000000..126d7cd --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/CommentMarkStyleDrawer.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(CommentMarkStyle), true)] + public class CommentMarkStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "MarkStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_LineStyle"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/CommentMarkStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/CommentMarkStyleDrawer.cs.meta new file mode 100644 index 0000000..d54117b --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/CommentMarkStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d74ed458b24774b129611ed816b6b6cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/ComponentThemeDrawer.cs b/Assets/XCharts/Editor/ChildComponents/ComponentThemeDrawer.cs new file mode 100644 index 0000000..06bec27 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ComponentThemeDrawer.cs @@ -0,0 +1,163 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(ComponentTheme), true)] + public class ComponentThemeDrawer : BasePropertyDrawer + { + public override string ClassName { get { return ""; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "", true)) + { + ++EditorGUI.indentLevel; +#if dUI_TextMeshPro + PropertyField(prop, "m_TMPFont"); +#else + PropertyField(prop, "m_Font"); +#endif + PropertyField(prop, "m_FontSize"); + PropertyField(prop, "m_TextColor"); + DrawExtendeds(prop); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(BaseAxisTheme), true)] + public class BaseAxisThemeDrawer : ComponentThemeDrawer + { + public override string ClassName { get { return "Axis"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + PropertyField(prop, "m_LineType"); + PropertyField(prop, "m_LineWidth"); + PropertyField(prop, "m_LineLength"); + PropertyField(prop, "m_LineColor"); + PropertyField(prop, "m_SplitLineType"); + PropertyField(prop, "m_SplitLineWidth"); + PropertyField(prop, "m_SplitLineLength"); + PropertyField(prop, "m_SplitLineColor"); + PropertyField(prop, "m_TickWidth"); + PropertyField(prop, "m_TickLength"); + PropertyField(prop, "m_TickColor"); + PropertyField(prop, "m_SplitAreaColors"); + } + } + + [CustomPropertyDrawer(typeof(AxisTheme), true)] + public class AxisThemeDrawer : BaseAxisThemeDrawer + { + public override string ClassName { get { return "Axis"; } } + } + + [CustomPropertyDrawer(typeof(RadiusAxisTheme), true)] + public class RadiusAxisThemeDrawer : BaseAxisThemeDrawer + { + public override string ClassName { get { return "Radius Axis"; } } + public override List<string> IngorePropertys + { + get + { + return new List<string> + { + "m_TextBackgroundColor", + "m_LineLength", + "m_SplitLineLength", + }; + } + } + } + + [CustomPropertyDrawer(typeof(DataZoomTheme), true)] + public class DataZoomThemeDrawer : ComponentThemeDrawer + { + public override string ClassName { get { return "DataZoom"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + PropertyField(prop, "m_BackgroundColor"); + PropertyField(prop, "m_BorderWidth"); + PropertyField(prop, "m_BorderColor"); + PropertyField(prop, "m_DataLineWidth"); + PropertyField(prop, "m_DataLineColor"); + PropertyField(prop, "m_FillerColor"); + PropertyField(prop, "m_DataAreaColor"); + + } + } + + [CustomPropertyDrawer(typeof(LegendTheme), true)] + public class LegendThemeDrawer : ComponentThemeDrawer + { + public override string ClassName { get { return "Legend"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + PropertyField(prop, "m_UnableColor"); + } + } + + [CustomPropertyDrawer(typeof(TooltipTheme), true)] + public class TooltipThemeDrawer : ComponentThemeDrawer + { + public override string ClassName { get { return "Tooltip"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + PropertyField(prop, "m_LineType"); + PropertyField(prop, "m_LineWidth"); + PropertyField(prop, "m_LineColor"); + PropertyField(prop, "m_AreaColor"); + PropertyField(prop, "m_LabelTextColor"); + PropertyField(prop, "m_LabelBackgroundColor"); + } + } + + [CustomPropertyDrawer(typeof(VisualMapTheme), true)] + public class VisualMapThemeDrawer : ComponentThemeDrawer + { + public override string ClassName { get { return "VisualMap"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + // PropertyField(prop, "m_BorderWidth"); + // PropertyField(prop, "m_BorderColor"); + // PropertyField(prop, "m_BackgroundColor"); + } + } + + [CustomPropertyDrawer(typeof(SerieTheme), true)] + public class SerieThemeDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Serie"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_LineWidth"); + PropertyField(prop, "m_LineSymbolSize"); + PropertyField(prop, "m_ScatterSymbolSize"); + PropertyField(prop, "m_SelectedRate"); + PropertyField(prop, "m_PieTooltipExtraRadius"); + PropertyField(prop, "m_PieSelectedOffset"); + PropertyField(prop, "m_CandlestickColor"); + PropertyField(prop, "m_CandlestickColor0"); + PropertyField(prop, "m_CandlestickBorderColor"); + PropertyField(prop, "m_CandlestickBorderColor0"); + PropertyField(prop, "m_CandlestickBorderWidth"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/ComponentThemeDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/ComponentThemeDrawer.cs.meta new file mode 100644 index 0000000..5ddef75 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ComponentThemeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7937a2a7addd42299e960c5cfb75e34 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/DebugInfoDrawer.cs b/Assets/XCharts/Editor/ChildComponents/DebugInfoDrawer.cs new file mode 100644 index 0000000..af03faf --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/DebugInfoDrawer.cs @@ -0,0 +1,25 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(DebugInfo), true)] + public class DebugInfoDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Debug"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", false)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_FoldSeries"); + PropertyField(prop, "m_ShowDebugInfo"); + PropertyField(prop, "m_ShowAllChartObject"); + PropertyField(prop, "m_LabelStyle"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/DebugInfoDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/DebugInfoDrawer.cs.meta new file mode 100644 index 0000000..34acfda --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/DebugInfoDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99bd61acea264400fb4747b17a2731e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/EmphasisStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/EmphasisStyleDrawer.cs new file mode 100644 index 0000000..89377f3 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/EmphasisStyleDrawer.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(Emphasis), true)] + public class EmphasisDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Emphasis"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Label"); + PropertyField(prop, "m_LabelLine"); + PropertyField(prop, "m_ItemStyle"); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(EmphasisItemStyle), true)] + public class EmphasisItemStyleDrawer : ItemStyleDrawer + { + public override string ClassName { get { return "EmphasisItemStyle"; } } + } + + [CustomPropertyDrawer(typeof(EmphasisLabelStyle), true)] + public class EmphasisLabelStyleDrawer : LabelStyleDrawer + { + public override string ClassName { get { return "EmphasisLabel"; } } + } + + [CustomPropertyDrawer(typeof(EmphasisLabelLine), true)] + public class EmphasisLabelLineDrawer : LabelLineDrawer + { + public override string ClassName { get { return "EmphasisLabelLine"; } } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/EmphasisStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/EmphasisStyleDrawer.cs.meta new file mode 100644 index 0000000..a6cdfc4 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/EmphasisStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7de9b5e4c5d474fdd88ebb89f0924305 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/IconStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/IconStyleDrawer.cs new file mode 100644 index 0000000..2f2e1a6 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/IconStyleDrawer.cs @@ -0,0 +1,30 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(IconStyle), true)] + public class IconStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "IconStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Layer"); + PropertyField(prop, "m_Align"); + PropertyField(prop, "m_Sprite"); + PropertyField(prop, "m_Type"); + PropertyField(prop, "m_Color"); + PropertyField(prop, "m_Width"); + PropertyField(prop, "m_Height"); + PropertyField(prop, "m_Offset"); + PropertyField(prop, "m_AutoHideWhenLabelEmpty"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/IconStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/IconStyleDrawer.cs.meta new file mode 100644 index 0000000..fb19ace --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/IconStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9cae26ad61d224d8a97d41bdc52ec0b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/ImageStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/ImageStyleDrawer.cs new file mode 100644 index 0000000..8ad71d4 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ImageStyleDrawer.cs @@ -0,0 +1,27 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(ImageStyle), true)] + public class ImageStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "ImageStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Sprite"); + PropertyField(prop, "m_Type"); + PropertyField(prop, "m_AutoColor"); + PropertyField(prop, "m_Color"); + PropertyField(prop, "m_Width"); + PropertyField(prop, "m_Height"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/ImageStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/ImageStyleDrawer.cs.meta new file mode 100644 index 0000000..6907fec --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ImageStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4649856b17dfd4f628eb975040fb791c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/ItemStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/ItemStyleDrawer.cs new file mode 100644 index 0000000..50978b0 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ItemStyleDrawer.cs @@ -0,0 +1,39 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(ItemStyle), true)] + public class ItemStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "ItemStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", false)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Color"); + PropertyField(prop, "m_Color0"); + PropertyField(prop, "m_ToColor"); + PropertyField(prop, "m_ToColor2"); + PropertyField(prop, "m_BackgroundColor"); + PropertyField(prop, "m_BackgroundWidth"); + PropertyField(prop, "m_CenterColor"); + PropertyField(prop, "m_CenterGap"); + PropertyField(prop, "m_BorderWidth"); + PropertyField(prop, "m_BorderGap"); + PropertyField(prop, "m_BorderColor"); + PropertyField(prop, "m_BorderColor0"); + PropertyField(prop, "m_BorderToColor"); + PropertyField(prop, "m_Opacity"); + PropertyField(prop, "m_ItemMarker"); + PropertyField(prop, "m_ItemFormatter"); + PropertyField(prop, "m_NumericFormatter"); + PropertyListField(prop, "m_CornerRadius", true); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/ItemStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/ItemStyleDrawer.cs.meta new file mode 100644 index 0000000..78d018c --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ItemStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f40830a3b05574467ad0d8873c6c8790 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/LabelLineDrawer.cs b/Assets/XCharts/Editor/ChildComponents/LabelLineDrawer.cs new file mode 100644 index 0000000..dcd2d6c --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LabelLineDrawer.cs @@ -0,0 +1,30 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(LabelLine), true)] + public class LabelLineDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "LabelLine"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_LineType"); + PropertyField(prop, "m_LineColor"); + PropertyField(prop, "m_LineAngle"); + PropertyField(prop, "m_LineWidth"); + PropertyField(prop, "m_LineGap"); + PropertyField(prop, "m_LineLength1"); + PropertyField(prop, "m_LineLength2"); + PropertyField(prop, "m_StartSymbol"); + PropertyField(prop, "m_EndSymbol"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/LabelLineDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/LabelLineDrawer.cs.meta new file mode 100644 index 0000000..72f2076 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LabelLineDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29a267a45c6e64454a982032947046c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/LabelStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/LabelStyleDrawer.cs new file mode 100644 index 0000000..103b345 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LabelStyleDrawer.cs @@ -0,0 +1,40 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(LabelStyle), true)] + public class LabelStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Label"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Position"); + PropertyField(prop, "m_Formatter"); + PropertyField(prop, "m_NumericFormatter"); + PropertyField(prop, "m_AutoOffset"); + PropertyField(prop, "m_Offset"); + PropertyField(prop, "m_Distance"); + PropertyField(prop, "m_Rotate"); + PropertyField(prop, "m_Width"); + PropertyField(prop, "m_Height"); + PropertyField(prop, "m_Icon"); + PropertyField(prop, "m_Background"); + PropertyField(prop, "m_TextStyle"); + PropertyField(prop, "m_TextPadding"); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(EndLabelStyle), true)] + public class EndLabelStyleDrawer : LabelStyleDrawer + { + public override string ClassName { get { return "End Label"; } } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/LabelStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/LabelStyleDrawer.cs.meta new file mode 100644 index 0000000..390d611 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LabelStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abd47f4015a9840b9acae8efb21db7c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/LevelStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/LevelStyleDrawer.cs new file mode 100644 index 0000000..8879a5e --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LevelStyleDrawer.cs @@ -0,0 +1,37 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(LevelStyle), true)] + public class LevelStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "LevelStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyListField(prop, "m_Levels"); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(Level), true)] + public class LevelDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Level"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Label"); + PropertyField(prop, "m_UpperLabel"); + PropertyField(prop, "m_ItemStyle"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/LevelStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/LevelStyleDrawer.cs.meta new file mode 100644 index 0000000..37b74c7 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LevelStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a1ff119a53a44e5abe2ef6f57816aa6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/LineArrowDrawer.cs b/Assets/XCharts/Editor/ChildComponents/LineArrowDrawer.cs new file mode 100644 index 0000000..031498f --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LineArrowDrawer.cs @@ -0,0 +1,43 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(ArrowStyle), true)] + public class ArrowDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Arrow"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Width"); + PropertyField(prop, "m_Height"); + PropertyField(prop, "m_Offset"); + PropertyField(prop, "m_Dent"); + PropertyField(prop, "m_Color"); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(LineArrow), true)] + public class LineArrowStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "LineArrow"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Position"); + PropertyField(prop, "m_Arrow"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/LineArrowDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/LineArrowDrawer.cs.meta new file mode 100644 index 0000000..3c9213f --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LineArrowDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 817d27d232da94f6c9dab9e3d0c22631 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/LineDrawer.cs b/Assets/XCharts/Editor/ChildComponents/LineDrawer.cs new file mode 100644 index 0000000..b3d4896 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LineDrawer.cs @@ -0,0 +1,66 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(BaseLine), true)] + public class BaseLineDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Line"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + DrawExtendeds(prop); + PropertyField(prop, "m_LineStyle"); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(AxisLine), true)] + public class AxisLineDrawer : BaseLineDrawer + { + public override string ClassName { get { return "AxisLine"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + PropertyField(prop, "m_OnZero"); + PropertyField(prop, "m_ShowArrow"); + PropertyField(prop, "m_Arrow"); + } + } + + [CustomPropertyDrawer(typeof(AxisSplitLine), true)] + public class AxisSplitLineDrawer : BaseLineDrawer + { + public override string ClassName { get { return "SplitLine"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + PropertyField(prop, "m_Interval"); + PropertyField(prop, "m_Distance"); + PropertyField(prop, "m_AutoColor"); + } + } + + [CustomPropertyDrawer(typeof(AxisTick), true)] + public class AxisTickDrawer : BaseLineDrawer + { + public override string ClassName { get { return "AxisTick"; } } + protected override void DrawExtendeds(SerializedProperty prop) + { + base.DrawExtendeds(prop); + PropertyField(prop, "m_AlignWithLabel"); + PropertyField(prop, "m_Inside"); + PropertyField(prop, "m_ShowStartTick"); + PropertyField(prop, "m_ShowEndTick"); + PropertyField(prop, "m_SplitNumber"); + PropertyField(prop, "m_Distance"); + PropertyField(prop, "m_AutoColor"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/LineDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/LineDrawer.cs.meta new file mode 100644 index 0000000..5830eeb --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LineDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e69f60c7d200439abcf3407c15f8c4d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/LineStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/LineStyleDrawer.cs new file mode 100644 index 0000000..17d6fac --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LineStyleDrawer.cs @@ -0,0 +1,28 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(LineStyle), true)] + public class LineStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "LineStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Type"); + PropertyField(prop, "m_Color"); + PropertyField(prop, "m_ToColor"); + PropertyField(prop, "m_ToColor2"); + PropertyField(prop, "m_Width"); + PropertyField(prop, "m_Length"); + PropertyField(prop, "m_Opacity"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/LineStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/LineStyleDrawer.cs.meta new file mode 100644 index 0000000..e4bda69 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LineStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a36d5076e1414d619b53d1ef998806f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/LocationDrawer.cs b/Assets/XCharts/Editor/ChildComponents/LocationDrawer.cs new file mode 100644 index 0000000..2cfe596 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LocationDrawer.cs @@ -0,0 +1,25 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(Location), true)] + public class LocationDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Location"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Align", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Top"); + PropertyField(prop, "m_Bottom"); + PropertyField(prop, "m_Left"); + PropertyField(prop, "m_Right"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/LocationDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/LocationDrawer.cs.meta new file mode 100644 index 0000000..4b0c2f5 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/LocationDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 34092595791508d4b94b074a8788c388 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/SerieSymbolDrawer.cs b/Assets/XCharts/Editor/ChildComponents/SerieSymbolDrawer.cs new file mode 100644 index 0000000..0f3e214 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/SerieSymbolDrawer.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(SerieSymbol), true)] + public class SerieSymbolDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Symbol"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + var type = (SymbolType) prop.FindPropertyRelative("m_Type").enumValueIndex; + PropertyField(prop, "m_Type"); + if (type == SymbolType.Custom) + { + PropertyField(prop, "m_Image"); + PropertyField(prop, "m_ImageType"); + PropertyField(prop, "m_Width"); + // PropertyField(prop, "m_Height"); + // PropertyField(prop, "m_Offset"); + } + PropertyField(prop, "m_Gap"); + PropertyField(prop, "m_SizeType"); + switch ((SymbolSizeType) prop.FindPropertyRelative("m_SizeType").enumValueIndex) + { + case SymbolSizeType.Custom: + PropertyField(prop, "m_Size"); + PropertyField(prop, "m_SelectedSize"); + break; + case SymbolSizeType.FromData: + PropertyField(prop, "m_DataIndex"); + PropertyField(prop, "m_DataScale"); + PropertyField(prop, "m_SelectedDataScale"); + break; + case SymbolSizeType.Function: + break; + } + PropertyField(prop, "m_StartIndex"); + PropertyField(prop, "m_Interval"); + PropertyField(prop, "m_ForceShowLast"); + PropertyField(prop, "m_Repeat"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/SerieSymbolDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/SerieSymbolDrawer.cs.meta new file mode 100644 index 0000000..f780f98 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/SerieSymbolDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a164822bc0fd4e5291f00c5a4ee86f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/SettingsDrawer.cs b/Assets/XCharts/Editor/ChildComponents/SettingsDrawer.cs new file mode 100644 index 0000000..ac79899 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/SettingsDrawer.cs @@ -0,0 +1,36 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(Settings), true)] + public class SettingsDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Settings"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", false, new HeaderMenuInfo("Reset", () => + { + var chart = prop.serializedObject.targetObject as BaseChart; + chart.settings.Reset(); + }))) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_ReversePainter"); + PropertyField(prop, "m_MaxPainter"); + PropertyField(prop, "m_BasePainterMaterial"); + PropertyField(prop, "m_SeriePainterMaterial"); + PropertyField(prop, "m_TopPainterMaterial"); + PropertyField(prop, "m_LineSmoothStyle"); + PropertyField(prop, "m_LineSmoothness"); + PropertyField(prop, "m_LineSegmentDistance"); + PropertyField(prop, "m_CicleSmoothness"); + PropertyField(prop, "m_LegendIconLineWidth"); + PropertyListField(prop, "m_LegendIconCornerRadius", true); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/SettingsDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/SettingsDrawer.cs.meta new file mode 100644 index 0000000..11a0c6c --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/SettingsDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70536a1ba3af245e7ad3b11e97682d8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/SymbolStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/SymbolStyleDrawer.cs new file mode 100644 index 0000000..d30ac90 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/SymbolStyleDrawer.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(SymbolStyle), true)] + public class SymbolStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Symbol"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + var type = (SymbolType) prop.FindPropertyRelative("m_Type").enumValueIndex; + PropertyField(prop, "m_Type"); + if (type == SymbolType.Custom) + { + PropertyField(prop, "m_Image"); + PropertyField(prop, "m_ImageType"); + PropertyField(prop, "m_Width"); + PropertyField(prop, "m_Height"); + // PropertyField(prop, "m_Offset"); + } + PropertyField(prop, "m_Color"); + PropertyField(prop, "m_Size"); + PropertyField(prop, "m_Gap"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/SymbolStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/SymbolStyleDrawer.cs.meta new file mode 100644 index 0000000..f8294f2 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/SymbolStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 72d557cf0b7134953b457ab973364520 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/TextLimitDrawer.cs b/Assets/XCharts/Editor/ChildComponents/TextLimitDrawer.cs new file mode 100644 index 0000000..cbc0bbf --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TextLimitDrawer.cs @@ -0,0 +1,24 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(TextLimit), true)] + public class TextLimitDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "TextLimit"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Enable", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_MaxWidth"); + PropertyField(prop, "m_Gap"); + PropertyField(prop, "m_Suffix"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/TextLimitDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/TextLimitDrawer.cs.meta new file mode 100644 index 0000000..708bf5d --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TextLimitDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 842d3986d1c1747d8b0668649e8b1a0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/TextPaddingDrawer.cs b/Assets/XCharts/Editor/ChildComponents/TextPaddingDrawer.cs new file mode 100644 index 0000000..608605d --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TextPaddingDrawer.cs @@ -0,0 +1,25 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(TextPadding), true)] + public class TextPaddingDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Padding"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Top"); + PropertyField(prop, "m_Right"); + PropertyField(prop, "m_Bottom"); + PropertyField(prop, "m_Left"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/TextPaddingDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/TextPaddingDrawer.cs.meta new file mode 100644 index 0000000..dccf74b --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TextPaddingDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46cc25f4c9fc846938a06cf3b8fc75bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/TextStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/TextStyleDrawer.cs new file mode 100644 index 0000000..edaf6d0 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TextStyleDrawer.cs @@ -0,0 +1,43 @@ +using UnityEditor; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(TextStyle), true)] + public class TextStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "TextStyle"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; +#if dUI_TextMeshPro + PropertyField(prop, "m_TMPFont"); +#else + PropertyField(prop, "m_Font"); +#endif + PropertyField(prop, "m_Rotate"); + PropertyField(prop, "m_AutoColor"); + PropertyField(prop, "m_Color"); + PropertyField(prop, "m_FontSize"); + PropertyField(prop, "m_LineSpacing"); +#if dUI_TextMeshPro + PropertyField(prop, "m_TMPFontStyle"); + PropertyField(prop, "m_TMPAlignment"); +#else + PropertyField(prop, "m_FontStyle"); + PropertyField(prop, "m_Alignment"); + PropertyField(prop, "m_AutoAlign"); + PropertyField(prop, "m_AutoWrap"); +#endif + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/TextStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/TextStyleDrawer.cs.meta new file mode 100644 index 0000000..faa64c5 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TextStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f14c425fb2bff44f2bf9ddb8d6ff1741 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/ThemeDrawer.cs b/Assets/XCharts/Editor/ChildComponents/ThemeDrawer.cs new file mode 100644 index 0000000..573fb02 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ThemeDrawer.cs @@ -0,0 +1,136 @@ +using System.IO; +using UnityEditor; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(ThemeStyle), true)] + public class ThemeStyleDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Theme"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + var defaultWidth = pos.width; + var defaultX = pos.x; + var chart = prop.serializedObject.targetObject as BaseChart; + if (MakeComponentFoldout(prop, "m_Show", false, new HeaderMenuInfo("Reset|Reset to theme default color", () => + { + chart.theme.sharedTheme.ResetTheme(); + chart.RefreshAllComponent(); + }), new HeaderMenuInfo("Export|Export theme to asset for a new theme", () => + { + ExportThemeWindow.target = chart; + EditorWindow.GetWindow(typeof(ExportThemeWindow)); + }), new HeaderMenuInfo("Sync color to custom|Sync shared theme color to custom color", () => + { + chart.theme.SyncSharedThemeColorToCustom(); + }))) + { + ++EditorGUI.indentLevel; + var chartNameList = XCThemeMgr.GetAllThemeNames(); + var lastIndex = chartNameList.IndexOf(chart.theme.themeName); + var y = pos.y + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + var selectedIndex = EditorGUI.Popup(new Rect(pos.x, y, pos.width, EditorGUIUtility.singleLineHeight), + "Shared Theme", lastIndex, chartNameList.ToArray()); + AddSingleLineHeight(); + if (lastIndex != selectedIndex) + { + XCThemeMgr.SwitchTheme(chart, chartNameList[selectedIndex]); + } + PropertyField(prop, "m_SharedTheme"); + PropertyField(prop, "m_TransparentBackground"); + PropertyField(prop, "m_EnableCustomTheme"); + using(new EditorGUI.DisabledScope(!prop.FindPropertyRelative("m_EnableCustomTheme").boolValue)) + { + PropertyField(prop, "m_CustomBackgroundColor"); + PropertyField(prop, "m_CustomColorPalette"); + } + --EditorGUI.indentLevel; + } + } + + private void AddPropertyField(Rect pos, SerializedProperty prop, ref float y) + { + float height = EditorGUI.GetPropertyHeight(prop, new GUIContent(prop.displayName), true); + EditorGUI.PropertyField(new Rect(pos.x, y, pos.width, height), prop, true); + y += height + EditorGUIUtility.standardVerticalSpacing; + m_Heights[m_KeyName] += height + EditorGUIUtility.standardVerticalSpacing; + } + } + + public class ExportThemeWindow : UnityEditor.EditorWindow + { + public static BaseChart target; + private static ExportThemeWindow window; + private string m_ChartName; + static void Init() + { + window = (ExportThemeWindow) EditorWindow.GetWindow(typeof(ExportThemeWindow), false, "Export Theme", true); + window.minSize = new Vector2(600, 50); + window.maxSize = new Vector2(600, 50); + window.Show(); + } + + void OnInspectorUpdate() + { + Repaint(); + } + + private void OnGUI() + { + if (target == null) + { + Close(); + return; + } + GUILayout.Space(10); + GUILayout.Label("Input a new name for theme:"); + m_ChartName = GUILayout.TextField(m_ChartName); + + GUILayout.Space(10); + GUILayout.Label("Export path:"); + if (string.IsNullOrEmpty(m_ChartName)) + { + GUILayout.Label("Need input a new name."); + } + else + { + GUILayout.Label(XCThemeMgr.GetThemeAssetPath(m_ChartName)); + } + + GUILayout.Space(20); + if (GUILayout.Button("Export")) + { + if (string.IsNullOrEmpty(m_ChartName)) + { + ShowNotification(new GUIContent("ERROR:Need input a new name!")); + } + else if (XCThemeMgr.ContainsTheme(m_ChartName)) + { + ShowNotification(new GUIContent("ERROR:The name you entered is already in use!")); + } + else if (IsAssetsExist(XCThemeMgr.GetThemeAssetPath(m_ChartName))) + { + ShowNotification(new GUIContent("ERROR:The asset is exist! \npath=" + + XCThemeMgr.GetThemeAssetPath(m_ChartName))); + } + else + { + XCThemeMgr.ExportTheme(target.theme.sharedTheme, m_ChartName); + ShowNotification(new GUIContent("SUCCESS:The theme is exported. \npath=" + + XCThemeMgr.GetThemeAssetPath(m_ChartName))); + } + } + } + + private bool IsAssetsExist(string path) + { + return File.Exists(Application.dataPath + "/../" + path); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/ThemeDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/ThemeDrawer.cs.meta new file mode 100644 index 0000000..107eab6 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/ThemeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 704e7c2793bca4050821c6e0756c8316 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/ChildComponents/TitleStyleDrawer.cs b/Assets/XCharts/Editor/ChildComponents/TitleStyleDrawer.cs new file mode 100644 index 0000000..66ad6d6 --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TitleStyleDrawer.cs @@ -0,0 +1,12 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomPropertyDrawer(typeof(TitleStyle), true)] + public class TitleStyleDrawer : LabelStyleDrawer + { + public override string ClassName { get { return "TitleStyle"; } } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/ChildComponents/TitleStyleDrawer.cs.meta b/Assets/XCharts/Editor/ChildComponents/TitleStyleDrawer.cs.meta new file mode 100644 index 0000000..ad95f9b --- /dev/null +++ b/Assets/XCharts/Editor/ChildComponents/TitleStyleDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e451ee4c9f65a414784fd5fd9cad6ec1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents.meta b/Assets/XCharts/Editor/MainComponents.meta new file mode 100644 index 0000000..6cc4e5e --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f98ff753316eb48d58325ecd996f2a1f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/AxisEditor.cs b/Assets/XCharts/Editor/MainComponents/AxisEditor.cs new file mode 100644 index 0000000..652d0d3 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/AxisEditor.cs @@ -0,0 +1,205 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(Axis))] + public class AxisEditor : MainComponentEditor<Axis> + { + public override void OnInspectorGUI() + { + var m_Type = baseProperty.FindPropertyRelative("m_Type"); + var m_LogBase = baseProperty.FindPropertyRelative("m_LogBase"); + var m_MinMaxType = baseProperty.FindPropertyRelative("m_MinMaxType"); + var type = (Axis.AxisType) m_Type.enumValueIndex; + EditorGUI.indentLevel++; + if (component is ParallelAxis) + { + PropertyField("m_ParallelIndex"); + } + else if (!(component is SingleAxis)) + { + PropertyField("m_GridIndex"); + PropertyField("m_PolarIndex"); + } + PropertyField("m_Type"); + PropertyField("m_Position"); + PropertyField("m_Offset"); + if (type == Axis.AxisType.Log) + { + PropertyField("m_LogBaseE"); + EditorGUI.BeginChangeCheck(); + PropertyField("m_LogBase"); + if (m_LogBase.floatValue <= 0 || m_LogBase.floatValue == 1) + { + m_LogBase.floatValue = 10; + } + EditorGUI.EndChangeCheck(); + } + if (type == Axis.AxisType.Value || type == Axis.AxisType.Time) + { + PropertyField("m_MinMaxType"); + Axis.AxisMinMaxType minMaxType = (Axis.AxisMinMaxType) m_MinMaxType.enumValueIndex; + switch (minMaxType) + { + case Axis.AxisMinMaxType.Default: + break; + case Axis.AxisMinMaxType.MinMax: + break; + case Axis.AxisMinMaxType.Custom: + EditorGUI.indentLevel++; + PropertyField("m_Min"); + PropertyField("m_Max"); + EditorGUI.indentLevel--; + break; + } + PropertyField("m_CeilRate"); + if (type == Axis.AxisType.Value) + { + PropertyField("m_Inverse"); + } + } + PropertyField("m_SplitNumber"); + if (type == Axis.AxisType.Category) + { + //PropertyField("m_InsertDataToHead"); + PropertyField("m_MaxCache"); + PropertyField("m_BoundaryGap"); + } + else + { + PropertyField("m_Interval"); + PropertyField("m_BoundaryGap"); + } + DrawExtendeds(); + PropertyField("m_AxisLine"); + PropertyField("m_AxisName"); + PropertyField("m_AxisTick"); + PropertyField("m_AxisLabel"); + PropertyField("m_SplitLine"); + PropertyField("m_SplitArea"); + PropertyListField("m_Icons", true); + if (type == Axis.AxisType.Category) + { + PropertyListField("m_Data", true, new HeaderMenuInfo("Import ECharts Axis Data", () => + { + PraseExternalDataEditor.UpdateData(chart, null, component as Axis); + PraseExternalDataEditor.ShowWindow(); + })); + } + EditorGUI.indentLevel--; + } + } + + [ComponentEditor(typeof(XAxis))] + public class XAxisEditor : AxisEditor + { } + + [ComponentEditor(typeof(YAxis))] + public class YAxisEditor : AxisEditor + { } + + [ComponentEditor(typeof(SingleAxis))] + public class SingleAxisEditor : AxisEditor + { + protected override void DrawExtendeds() + { + base.DrawExtendeds(); + PropertyField("m_Orient"); + PropertyField("m_Left"); + PropertyField("m_Right"); + PropertyField("m_Top"); + PropertyField("m_Bottom"); + PropertyField("m_Width"); + PropertyField("m_Height"); + } + } + + [ComponentEditor(typeof(AngleAxis))] + public class AngleAxisEditor : AxisEditor + { + protected override void DrawExtendeds() + { + base.DrawExtendeds(); + PropertyField("m_StartAngle"); + PropertyField("m_Clockwise"); + } + } + + [ComponentEditor(typeof(RadiusAxis))] + public class RadiusAxisEditor : AxisEditor + { } + + [ComponentEditor(typeof(ParallelAxis))] + public class ParallelAxisEditor : AxisEditor + { } + + [CustomPropertyDrawer(typeof(AxisLabel), true)] + public class AxisLabelDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "AxisLabel"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Inside"); + PropertyField(prop, "m_Interval"); + + PropertyField(prop, "m_ShowAsPositiveNumber"); + PropertyField(prop, "m_OnZero"); + PropertyField(prop, "m_ShowStartLabel"); + PropertyField(prop, "m_ShowEndLabel"); + + PropertyField(prop, "m_Rotate"); + PropertyField(prop, "m_Offset"); + PropertyField(prop, "m_Distance"); + PropertyField(prop, "m_Formatter"); + PropertyField(prop, "m_NumericFormatter"); + PropertyField(prop, "m_Width"); + PropertyField(prop, "m_Height"); + PropertyField(prop, "m_Icon"); + PropertyField(prop, "m_Background"); + PropertyField(prop, "m_TextStyle"); + PropertyField(prop, "m_TextPadding"); + PropertyField(prop, "m_TextLimit"); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(AxisName), true)] + public class AxisNameDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "AxisName"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Name"); + PropertyField(prop, "m_LabelStyle"); + --EditorGUI.indentLevel; + } + } + } + + [CustomPropertyDrawer(typeof(AxisSplitArea), true)] + public class AxisSplitAreaDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "SplitArea"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "m_Show", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Color"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/AxisEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/AxisEditor.cs.meta new file mode 100644 index 0000000..5ffd445 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/AxisEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e6d7780afa9b49aa9081bf55d301955 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/BackgroundEditor.cs b/Assets/XCharts/Editor/MainComponents/BackgroundEditor.cs new file mode 100644 index 0000000..25c867f --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/BackgroundEditor.cs @@ -0,0 +1,20 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(Background))] + internal sealed class BackgroundEditor : MainComponentEditor<Background> + { + public override void OnInspectorGUI() + { + + ++EditorGUI.indentLevel; + PropertyField("m_Image"); + PropertyField("m_ImageType"); + PropertyField("m_ImageColor"); + PropertyField("m_AutoColor"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/BackgroundEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/BackgroundEditor.cs.meta new file mode 100644 index 0000000..96466f3 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/BackgroundEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89d95a9a994ad4b4692832e9a548e9e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/CommentEditor.cs b/Assets/XCharts/Editor/MainComponents/CommentEditor.cs new file mode 100644 index 0000000..922e44a --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/CommentEditor.cs @@ -0,0 +1,18 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(Comment))] + public class CommentEditor : MainComponentEditor<Comment> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_LabelStyle"); + //PropertyField("m_MarkStyle"); + PropertyListField("m_Items", true); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/CommentEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/CommentEditor.cs.meta new file mode 100644 index 0000000..8c2401f --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/CommentEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2364066bf3174aa39b79020266ce72d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/DataZoomEditor.cs b/Assets/XCharts/Editor/MainComponents/DataZoomEditor.cs new file mode 100644 index 0000000..f54c001 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/DataZoomEditor.cs @@ -0,0 +1,60 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(DataZoom))] + public class DataZoomEditor : MainComponentEditor<DataZoom> + { + public override void OnInspectorGUI() + { + var m_SupportInside = baseProperty.FindPropertyRelative("m_SupportInside"); + var m_SupportSlider = baseProperty.FindPropertyRelative("m_SupportSlider"); + var m_Start = baseProperty.FindPropertyRelative("m_Start"); + var m_End = baseProperty.FindPropertyRelative("m_End"); + var m_MinShowNum = baseProperty.FindPropertyRelative("m_MinShowNum"); + ++EditorGUI.indentLevel; + PropertyField("m_Orient"); + PropertyField("m_SupportInside"); + if (m_SupportInside.boolValue) + { + PropertyField("m_SupportInsideScroll"); + PropertyField("m_SupportInsideDrag"); + } + PropertyField(m_SupportSlider); + PropertyField("m_ZoomLock"); + PropertyField("m_ScrollSensitivity"); + PropertyField("m_RangeMode"); + PropertyField(m_Start); + PropertyField(m_End); + PropertyField(m_MinShowNum); + if (m_Start.floatValue < 0) m_Start.floatValue = 0; + if (m_End.floatValue > 100) m_End.floatValue = 100; + if (m_MinShowNum.intValue < 0) m_MinShowNum.intValue = 0; + if (m_SupportSlider.boolValue) + { + PropertyField("m_ShowDataShadow"); + PropertyField("m_ShowDetail"); + PropertyField("m_BackgroundColor"); + PropertyField("m_BorderWidth"); + PropertyField("m_BorderColor"); + PropertyField("m_FillerColor"); + PropertyField("m_Left"); + PropertyField("m_Right"); + PropertyField("m_Top"); + PropertyField("m_Bottom"); + PropertyField("m_LineStyle"); + PropertyField("m_AreaStyle"); + PropertyField("m_LabelStyle"); + PropertyListField("m_XAxisIndexs", true); + PropertyListField("m_YAxisIndexs", true); + } + else + { + PropertyListField("m_XAxisIndexs", true); + PropertyListField("m_YAxisIndexs", true); + } + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/DataZoomEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/DataZoomEditor.cs.meta new file mode 100644 index 0000000..78d0550 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/DataZoomEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 06bc176df52bf4953b8d46254523d2ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/GridCoordEditor.cs b/Assets/XCharts/Editor/MainComponents/GridCoordEditor.cs new file mode 100644 index 0000000..460161c --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/GridCoordEditor.cs @@ -0,0 +1,23 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(GridCoord))] + public class GridCoordEditor : MainComponentEditor<GridCoord> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_Left"); + PropertyField("m_Right"); + PropertyField("m_Top"); + PropertyField("m_Bottom"); + PropertyField("m_BackgroundColor"); + PropertyField("m_ShowBorder"); + PropertyField("m_BorderWidth"); + PropertyField("m_BorderColor"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/GridCoordEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/GridCoordEditor.cs.meta new file mode 100644 index 0000000..7df3d86 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/GridCoordEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb28a0ae5edd34b63ae9cbce0986585b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/LegendEditor.cs b/Assets/XCharts/Editor/MainComponents/LegendEditor.cs new file mode 100644 index 0000000..34fc324 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/LegendEditor.cs @@ -0,0 +1,29 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(Legend))] + public class LegendEditor : MainComponentEditor<Legend> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_IconType"); + PropertyField("m_ItemWidth"); + PropertyField("m_ItemHeight"); + PropertyField("m_ItemGap"); + PropertyField("m_ItemAutoColor"); + PropertyField("m_ItemOpacity"); + PropertyField("m_SelectedMode"); + PropertyField("m_Orient"); + PropertyField("m_Formatter"); + PropertyField("m_Location"); + PropertyField("m_LabelStyle"); + PropertyListField("m_Icons"); + PropertyListField("m_Colors"); + PropertyListField("m_Data"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/LegendEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/LegendEditor.cs.meta new file mode 100644 index 0000000..8429e30 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/LegendEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ef040b104aa2452f80d91c7c33775c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/MainComponentBaseEditor.cs b/Assets/XCharts/Editor/MainComponents/MainComponentBaseEditor.cs new file mode 100644 index 0000000..eb7b9b0 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MainComponentBaseEditor.cs @@ -0,0 +1,116 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.Assertions; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public class MainComponentBaseEditor + { + protected const string MORE = "More"; + protected bool m_MoreFoldout = false; + public BaseChart chart { get; private set; } + public MainComponent component { get; private set; } + + public SerializedProperty baseProperty; + public SerializedProperty showProperty; + + internal void Init(BaseChart chart, MainComponent target, SerializedProperty property, UnityEditor.Editor inspector) + { + this.chart = chart; + this.component = target; + this.baseProperty = property; + showProperty = baseProperty.FindPropertyRelative("m_Show"); + if (showProperty == null) + showProperty = baseProperty.FindPropertyRelative("m_Enable"); + OnEnable(); + } + + public virtual void OnEnable() + { } + + public virtual void OnDisable() + { } + + internal void OnInternalInspectorGUI() + { + OnInspectorGUI(); + EditorGUILayout.Space(); + } + + public virtual void OnInspectorGUI() + { } + + protected virtual void DrawExtendeds() + { } + + public virtual string GetDisplayTitle() + { + var num = chart.GetChartComponentNum(component.GetType()); + if (num > 1) + return ObjectNames.NicifyVariableName(component.GetType().Name) + " " + component.index; + else + return ObjectNames.NicifyVariableName(component.GetType().Name); + } + + protected SerializedProperty FindProperty(string path) + { + return baseProperty.FindPropertyRelative(path); + } + + protected void PropertyField(string path) + { + var property = FindProperty(path); + if (property != null) + { + var title = ChartEditorHelper.GetContent(property.displayName); + PropertyField(property, title); + } + else + { + Debug.LogError("Property not exist:" + baseProperty.propertyPath + "," + path); + } + } + + protected void PropertyFiledMore(System.Action action) + { + m_MoreFoldout = ChartEditorHelper.DrawHeader(MORE, m_MoreFoldout, false, null, null); + if (m_MoreFoldout) + { + if (action != null) action(); + } + } + + protected void PropertyField(SerializedProperty property) + { + Assert.IsNotNull(property); + var title = ChartEditorHelper.GetContent(property.displayName); + PropertyField(property, title); + } + + protected void PropertyField(SerializedProperty property, GUIContent title) + { + EditorGUILayout.PropertyField(property, title); + } + + protected void PropertyListField(string relativePropName, bool showOrder = true, params HeaderMenuInfo[] menus) + { + var m_DrawRect = GUILayoutUtility.GetRect(1f, 17f); + var height = 0f; + var prop = FindProperty(relativePropName); + prop.isExpanded = ChartEditorHelper.MakeListWithFoldout(ref m_DrawRect, ref height, + prop, prop.isExpanded, showOrder, true, menus); + if (prop.isExpanded) + { + GUILayoutUtility.GetRect(1f, height - 17); + } + } + + protected void PropertyTwoFiled(string relativePropName) + { + var m_DrawRect = GUILayoutUtility.GetRect(1f, 17f); + var prop = FindProperty(relativePropName); + ChartEditorHelper.MakeTwoField(ref m_DrawRect, m_DrawRect.width, prop, prop.displayName); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/MainComponentBaseEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/MainComponentBaseEditor.cs.meta new file mode 100644 index 0000000..c0299b8 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MainComponentBaseEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2909950e65ad44c2eb617a8b75845431 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/MainComponentEditor.cs b/Assets/XCharts/Editor/MainComponents/MainComponentEditor.cs new file mode 100644 index 0000000..05e2896 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MainComponentEditor.cs @@ -0,0 +1,8 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public class MainComponentEditor<T> : MainComponentBaseEditor + where T : MainComponent + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/MainComponentEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/MainComponentEditor.cs.meta new file mode 100644 index 0000000..6e9b172 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MainComponentEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 276997094e92e4b6590591727cb21349 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/MainComponentListEditor.cs b/Assets/XCharts/Editor/MainComponents/MainComponentListEditor.cs new file mode 100644 index 0000000..211cb31 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MainComponentListEditor.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine.Assertions; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public sealed class MainComponentListEditor + { + public BaseChart chart { get; private set; } + BaseChartEditor m_BaseEditor; + + //SerializedObject m_SerializedObject; + List<SerializedProperty> m_ComponentsProperty; + SerializedProperty m_EnableProperty; + + Dictionary<Type, Type> m_EditorTypes; + List<MainComponentBaseEditor> m_Editors; + + public MainComponentListEditor(BaseChartEditor editor) + { + Assert.IsNotNull(editor); + m_BaseEditor = editor; + } + + public void Init(BaseChart chart, SerializedObject serializedObject, List<SerializedProperty> componentProps) + { + Assert.IsNotNull(chart); + + this.chart = chart; + m_ComponentsProperty = componentProps; + + Assert.IsNotNull(m_ComponentsProperty); + + m_Editors = new List<MainComponentBaseEditor>(); + m_EditorTypes = new Dictionary<Type, Type>(); + + var editorTypes = RuntimeUtil.GetAllTypesDerivedFrom<MainComponentBaseEditor>() + .Where(t => t.IsDefined(typeof(ComponentEditorAttribute), false) && !t.IsAbstract); + foreach (var editorType in editorTypes) + { + var attribute = editorType.GetAttribute<ComponentEditorAttribute>(); + m_EditorTypes.Add(attribute.componentType, editorType); + } + + RefreshEditors(); + } + + public void UpdateComponentsProperty(List<SerializedProperty> componentProps) + { + m_ComponentsProperty = componentProps; + RefreshEditors(); + } + + public void Clear() + { + if (m_Editors == null) + return; + + foreach (var editor in m_Editors) + editor.OnDisable(); + + m_Editors.Clear(); + m_EditorTypes.Clear(); + } + + public void OnGUI() + { + if (chart == null) + return; + + for (int i = 0; i < m_Editors.Count; i++) + { + var editor = m_Editors[i]; + string title = editor.GetDisplayTitle(); + int id = i; + + bool displayContent = ChartEditorHelper.DrawHeader( + title, + editor.baseProperty, + editor.showProperty, + () => { ResetComponentEditor(id); }, + () => { RemoveComponentEditor(id); } + ); + if (displayContent) + { + editor.OnInternalInspectorGUI(); + } + } + + if (m_Editors.Count == 0) + { + EditorGUILayout.HelpBox("No componnet.", MessageType.Info); + } + } + + void RefreshEditors() + { + foreach (var editor in m_Editors) + editor.OnDisable(); + + m_Editors.Clear(); + for (int i = 0; i < chart.components.Count; i++) + { + if (chart.components[i] != null) + { + CreateEditor(chart.components[i], m_ComponentsProperty[i]); + } + } + } + + void CreateEditor(MainComponent component, SerializedProperty property, int index = -1) + { + + var settingsType = component.GetType(); + Type editorType; + + if (!m_EditorTypes.TryGetValue(settingsType, out editorType)) + editorType = typeof(MainComponentBaseEditor); + var editor = (MainComponentBaseEditor) Activator.CreateInstance(editorType); + editor.Init(chart, component, property, m_BaseEditor); + + if (index < 0) + m_Editors.Add(editor); + else + m_Editors[index] = editor; + } + + public void AddChartComponent(Type type) + { + chart.AddChartComponent(type); + m_ComponentsProperty = m_BaseEditor.RefreshComponent(); + RefreshEditors(); + EditorUtility.SetDirty(chart); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + private void ResetComponentEditor(int id) + { + m_Editors[id].component.Reset(); + EditorUtility.SetDirty(chart); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + private void RemoveComponentEditor(int id) + { + m_Editors[id].OnDisable(); + chart.RemoveChartComponent(m_Editors[id].component); + m_Editors.RemoveAt(id); + m_ComponentsProperty = m_BaseEditor.RefreshComponent(); + RefreshEditors(); + EditorUtility.SetDirty(chart); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/MainComponentListEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/MainComponentListEditor.cs.meta new file mode 100644 index 0000000..5810b63 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MainComponentListEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62cc000ee006f492aadb05138ac6fe87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/MarkAreaEditor.cs b/Assets/XCharts/Editor/MainComponents/MarkAreaEditor.cs new file mode 100644 index 0000000..43e2894 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MarkAreaEditor.cs @@ -0,0 +1,55 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(MarkArea))] + public class MarkAreaEditor : MainComponentEditor<MarkArea> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_SerieIndex"); + PropertyField("m_Text"); + PropertyField("m_ItemStyle"); + PropertyField("m_Label"); + PropertyField("m_Start"); + PropertyField("m_End"); + --EditorGUI.indentLevel; + } + } + + [CustomPropertyDrawer(typeof(MarkAreaData), true)] + public class MarkAreaDataDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "MarkAreaData"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "", true)) + { + ++EditorGUI.indentLevel; + var type = (MarkAreaType) (prop.FindPropertyRelative("m_Type")).enumValueIndex; + PropertyField(prop, "m_Type"); + PropertyField(prop, "m_Name"); + switch (type) + { + case MarkAreaType.None: + PropertyField(prop, "m_XPosition"); + PropertyField(prop, "m_YPosition"); + PropertyField(prop, "m_XValue"); + PropertyField(prop, "m_YValue"); + break; + case MarkAreaType.Min: + case MarkAreaType.Max: + case MarkAreaType.Average: + case MarkAreaType.Median: + PropertyField(prop, "m_Dimension"); + break; + } + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/MarkAreaEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/MarkAreaEditor.cs.meta new file mode 100644 index 0000000..fd786ea --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MarkAreaEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83cc6f39a078f4ecfb2c3da09b116355 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/MarkLineEditor.cs b/Assets/XCharts/Editor/MainComponents/MarkLineEditor.cs new file mode 100644 index 0000000..6c8530a --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MarkLineEditor.cs @@ -0,0 +1,59 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(MarkLine))] + public class MarkLineEditor : MainComponentEditor<MarkLine> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_SerieIndex"); + PropertyField("m_Animation"); + PropertyListField("m_Data", true); + --EditorGUI.indentLevel; + } + } + + [CustomPropertyDrawer(typeof(MarkLineData), true)] + public class MarkLineDataDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "MarkLineData"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "", true)) + { + ++EditorGUI.indentLevel; + var type = (MarkLineType) (prop.FindPropertyRelative("m_Type")).enumValueIndex; + var group = prop.FindPropertyRelative("m_Group").intValue; + PropertyField(prop, "m_Type"); + PropertyField(prop, "m_Name"); + switch (type) + { + case MarkLineType.None: + PropertyField(prop, "m_XPosition"); + PropertyField(prop, "m_YPosition"); + PropertyField(prop, "m_XValue"); + PropertyField(prop, "m_YValue"); + break; + case MarkLineType.Min: + case MarkLineType.Max: + case MarkLineType.Average: + case MarkLineType.Median: + PropertyField(prop, "m_Dimension"); + break; + } + PropertyField(prop, "m_Group"); + if (group > 0 && type == MarkLineType.None) PropertyField(prop, "m_ZeroPosition"); + PropertyField(prop, "m_LineStyle"); + PropertyField(prop, "m_StartSymbol"); + PropertyField(prop, "m_EndSymbol"); + PropertyField(prop, "m_Label"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/MarkLineEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/MarkLineEditor.cs.meta new file mode 100644 index 0000000..0793155 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/MarkLineEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 341fcecf4884e47519a2aff6defb30de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/ParallelCoordEditor.cs b/Assets/XCharts/Editor/MainComponents/ParallelCoordEditor.cs new file mode 100644 index 0000000..3a216f3 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/ParallelCoordEditor.cs @@ -0,0 +1,21 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(ParallelCoord))] + public class ParallelCoordEditor : MainComponentEditor<ParallelCoord> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_Orient"); + PropertyField("m_Left"); + PropertyField("m_Right"); + PropertyField("m_Top"); + PropertyField("m_Bottom"); + PropertyField("m_BackgroundColor"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/ParallelCoordEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/ParallelCoordEditor.cs.meta new file mode 100644 index 0000000..339b121 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/ParallelCoordEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3d4d8d4d5c4b4197b021a25a7125390 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/PolarCoordEditor.cs b/Assets/XCharts/Editor/MainComponents/PolarCoordEditor.cs new file mode 100644 index 0000000..8d359e7 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/PolarCoordEditor.cs @@ -0,0 +1,18 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(PolarCoord))] + public class PolarCoordEditor : MainComponentEditor<PolarCoord> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyTwoFiled("m_Center"); + PropertyField("m_Radius"); + PropertyField("m_BackgroundColor"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/PolarCoordEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/PolarCoordEditor.cs.meta new file mode 100644 index 0000000..aeb2e65 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/PolarCoordEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f488cf12ded545de8737a2cde8bfead +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/RadarCoordEditor.cs b/Assets/XCharts/Editor/MainComponents/RadarCoordEditor.cs new file mode 100644 index 0000000..752ec81 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/RadarCoordEditor.cs @@ -0,0 +1,50 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(RadarCoord))] + public class RadarCoordEditor : MainComponentEditor<RadarCoord> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_Shape"); + PropertyField("m_PositionType"); + PropertyTwoFiled("m_Center"); + PropertyField("m_Radius"); + PropertyField("m_SplitNumber"); + PropertyField("m_CeilRate"); + PropertyField("m_IsAxisTooltip"); + PropertyField("m_OutRangeColor"); + PropertyField("m_ConnectCenter"); + PropertyField("m_LineGradient"); + PropertyField("m_AxisLine"); + PropertyField("m_AxisName"); + PropertyField("m_SplitLine"); + PropertyField("m_SplitArea"); + PropertyField("m_IndicatorList"); + --EditorGUI.indentLevel; + } + } + + [CustomPropertyDrawer(typeof(RadarCoord.Indicator), true)] + public class RadarIndicatorDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Indicator"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeComponentFoldout(prop, "", true)) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Name"); + PropertyField(prop, "m_Min"); + PropertyField(prop, "m_Max"); + PropertyTwoFiled(prop, "m_Range"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/RadarCoordEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/RadarCoordEditor.cs.meta new file mode 100644 index 0000000..484b250 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/RadarCoordEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1bfbd3f054624d42b854bcac720a58b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/ThemeEditor.cs b/Assets/XCharts/Editor/MainComponents/ThemeEditor.cs new file mode 100644 index 0000000..86fcf5f --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/ThemeEditor.cs @@ -0,0 +1,39 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Editor +{ + [CustomEditor(typeof(Theme))] + public class ThemeEditor : UnityEditor.Editor + { + static class Styles + { + internal static GUIContent btnReset = new GUIContent("Reset", "Reset to default theme"); + internal static GUIContent btnSync = new GUIContent("Sync Font", "Sync main theme font to sub theme font"); + } + + private Theme m_Theme; + + void OnEnable() + { + m_Theme = target as Theme; + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + if (GUILayout.Button(Styles.btnReset)) + { + m_Theme.ResetTheme(); + } + if (GUILayout.Button(Styles.btnSync)) + { + m_Theme.SyncFontToSubComponent(); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/ThemeEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/ThemeEditor.cs.meta new file mode 100644 index 0000000..b14f798 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/ThemeEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7856321df80e646c99317e95964991bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/TitleEditor.cs b/Assets/XCharts/Editor/MainComponents/TitleEditor.cs new file mode 100644 index 0000000..2a22c05 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/TitleEditor.cs @@ -0,0 +1,21 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(Title))] + public class TitleEditor : MainComponentEditor<Title> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_Text"); + PropertyField("m_SubText"); + PropertyField("m_ItemGap"); + PropertyField("m_Location"); + PropertyField("m_LabelStyle"); + PropertyField("m_SubLabelStyle"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/TitleEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/TitleEditor.cs.meta new file mode 100644 index 0000000..7780391 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/TitleEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c50c4d317d9274b32a5f137db0d66038 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/TooltipEditor.cs b/Assets/XCharts/Editor/MainComponents/TooltipEditor.cs new file mode 100644 index 0000000..af7b434 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/TooltipEditor.cs @@ -0,0 +1,49 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(Tooltip))] + public class TooltipEditor : MainComponentEditor<Tooltip> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + PropertyField("m_Type"); + PropertyField("m_Trigger"); + PropertyField("m_ShowContent"); + PropertyField("m_AlwayShowContent"); + PropertyField("m_TitleFormatter"); + PropertyField("m_ItemFormatter"); + PropertyField("m_NumericFormatter"); + PropertyFiledMore(() => + { + PropertyField("m_TitleHeight"); + PropertyField("m_ItemHeight"); + PropertyField("m_Marker"); + PropertyField("m_BorderWidth"); + PropertyField("m_BorderColor"); + PropertyField("m_PaddingLeftRight"); + PropertyField("m_PaddingTopBottom"); + PropertyField("m_BackgroundImage"); + PropertyField("m_BackgroundType"); + PropertyField("m_BackgroundColor"); + PropertyField("m_FixedWidth"); + PropertyField("m_FixedHeight"); + PropertyField("m_MinWidth"); + PropertyField("m_MinHeight"); + PropertyField("m_IgnoreDataDefaultContent"); + PropertyField("m_Offset"); + PropertyField("m_FixedXEnable"); + PropertyField("m_FixedX"); + PropertyField("m_FixedYEnable"); + PropertyField("m_FixedY"); + }); + PropertyField("m_LineStyle"); + PropertyField("m_IndicatorLabelStyle"); + PropertyField("m_TitleLabelStyle"); + PropertyListField("m_ContentLabelStyles"); + --EditorGUI.indentLevel; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/TooltipEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/TooltipEditor.cs.meta new file mode 100644 index 0000000..0952d61 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/TooltipEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9179fea7bb2354601acce0feb82f8b17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/MainComponents/VisualMapEditor.cs b/Assets/XCharts/Editor/MainComponents/VisualMapEditor.cs new file mode 100644 index 0000000..059f3c4 --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/VisualMapEditor.cs @@ -0,0 +1,64 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [ComponentEditor(typeof(VisualMap))] + public class VisualMapEditor : MainComponentEditor<VisualMap> + { + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + var type = (VisualMap.Type) baseProperty.FindPropertyRelative("m_Type").enumValueIndex; + var isPiece = type == VisualMap.Type.Piecewise; + PropertyField("m_Type"); + PropertyField("m_SerieIndex"); + PropertyField("m_AutoMinMax"); + PropertyField("m_Min"); + PropertyField("m_Max"); + PropertyField("m_SplitNumber"); + PropertyField("m_Dimension"); + PropertyField("m_WorkOnLine"); + PropertyField("m_WorkOnArea"); + PropertyField("m_ShowUI"); + if (baseProperty.FindPropertyRelative("m_ShowUI").boolValue) + { + PropertyField("m_SelectedMode"); + PropertyTwoFiled("m_Range"); + PropertyTwoFiled("m_Text"); + PropertyTwoFiled("m_TextGap"); + PropertyField("m_HoverLink"); + PropertyField("m_Calculable"); + PropertyField("m_ItemWidth"); + PropertyField("m_ItemHeight"); + if (isPiece) PropertyField("m_ItemGap"); + PropertyField("m_BorderWidth"); + PropertyField("m_Orient"); + PropertyField("m_Location"); + } + PropertyListField("m_OutOfRange"); + PropertyListField("m_InRange"); + --EditorGUI.indentLevel; + } + } + + [CustomPropertyDrawer(typeof(VisualMapRange), true)] + public class VisualMapRangeDrawer : BasePropertyDrawer + { + public override string ClassName { get { return "Range"; } } + public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) + { + base.OnGUI(pos, prop, label); + if (MakeFoldout(prop, "m_Color")) + { + ++EditorGUI.indentLevel; + PropertyField(prop, "m_Min"); + PropertyField(prop, "m_Max"); + PropertyField(prop, "m_Label"); + PropertyField(prop, "m_Color"); + --EditorGUI.indentLevel; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/MainComponents/VisualMapEditor.cs.meta b/Assets/XCharts/Editor/MainComponents/VisualMapEditor.cs.meta new file mode 100644 index 0000000..288d90a --- /dev/null +++ b/Assets/XCharts/Editor/MainComponents/VisualMapEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38b6413ab74484d6599bebbca7f5d437 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series.meta b/Assets/XCharts/Editor/Series.meta new file mode 100644 index 0000000..9afafc7 --- /dev/null +++ b/Assets/XCharts/Editor/Series.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 303691ade88f04660abab870b613cc3a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/BarEditor.cs b/Assets/XCharts/Editor/Series/BarEditor.cs new file mode 100644 index 0000000..c06a04e --- /dev/null +++ b/Assets/XCharts/Editor/Series/BarEditor.cs @@ -0,0 +1,47 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Bar))] + public class BarEditor : SerieEditor<Bar> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_Stack"); + if (serie.IsUseCoord<PolarCoord>()) + { + PropertyField("m_PolarIndex"); + } + else + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + } + PropertyField("m_BarType"); + PropertyField("m_BarPercentStack"); + PropertyField("m_BarWidth"); + PropertyField("m_BarGap"); + if (serie.barType == BarType.Zebra) + { + PropertyField("m_BarZebraWidth"); + PropertyField("m_BarZebraGap"); + } + PropertyField("m_Clip"); + PropertyFiledMore(() => + { + PropertyFieldLimitMin("m_MinShow", 0); + PropertyFieldLimitMin("m_MaxShow", 0); + PropertyFieldLimitMin("m_MaxCache", 0); + PropertyField("m_Ignore"); + PropertyField("m_IgnoreValue"); + PropertyField("m_IgnoreLineBreak"); + PropertyField("m_ShowAsPositiveNumber"); + PropertyField("m_Large"); + PropertyField("m_LargeThreshold"); + PropertyField("m_PlaceHolder"); + }); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/BarEditor.cs.meta b/Assets/XCharts/Editor/Series/BarEditor.cs.meta new file mode 100644 index 0000000..afc8184 --- /dev/null +++ b/Assets/XCharts/Editor/Series/BarEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b924d2e0412243769e4ac6ee8bd5fa6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/CandlestickEditor.cs b/Assets/XCharts/Editor/Series/CandlestickEditor.cs new file mode 100644 index 0000000..ff77a8d --- /dev/null +++ b/Assets/XCharts/Editor/Series/CandlestickEditor.cs @@ -0,0 +1,25 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Candlestick))] + public class CandlestickEditor : SerieEditor<Candlestick> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + PropertyFieldLimitMin("m_MinShow", 0); + PropertyFieldLimitMin("m_MaxShow", 0); + PropertyFieldLimitMin("m_MaxCache", 0); + PropertyField("m_BarWidth"); + PropertyField("m_Clip"); + PropertyField("m_ShowAsPositiveNumber"); + PropertyField("m_Large"); + PropertyField("m_LargeThreshold"); + + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/CandlestickEditor.cs.meta b/Assets/XCharts/Editor/Series/CandlestickEditor.cs.meta new file mode 100644 index 0000000..e10eb32 --- /dev/null +++ b/Assets/XCharts/Editor/Series/CandlestickEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 713afd224d3194435b9559720035a5fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/EffectScatterEditor.cs b/Assets/XCharts/Editor/Series/EffectScatterEditor.cs new file mode 100644 index 0000000..b686744 --- /dev/null +++ b/Assets/XCharts/Editor/Series/EffectScatterEditor.cs @@ -0,0 +1,26 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(EffectScatter))] + public class EffectScatterEditor : SerieEditor<EffectScatter> + { + public override void OnCustomInspectorGUI() + { + if (serie.IsUseCoord<SingleAxisCoord>()) + { + PropertyField("m_SingleAxisIndex"); + } + else + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + } + PropertyField("m_Clip"); + PropertyField("m_Symbol"); + + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/EffectScatterEditor.cs.meta b/Assets/XCharts/Editor/Series/EffectScatterEditor.cs.meta new file mode 100644 index 0000000..a94c3a7 --- /dev/null +++ b/Assets/XCharts/Editor/Series/EffectScatterEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc8fce25209234fa3b6c3cb79d02b47e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/HeatmapEditor.cs b/Assets/XCharts/Editor/Series/HeatmapEditor.cs new file mode 100644 index 0000000..739952b --- /dev/null +++ b/Assets/XCharts/Editor/Series/HeatmapEditor.cs @@ -0,0 +1,17 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Heatmap))] + public class HeatmapEditor : SerieEditor<Heatmap> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_Ignore"); + PropertyField("m_IgnoreValue"); + + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/HeatmapEditor.cs.meta b/Assets/XCharts/Editor/Series/HeatmapEditor.cs.meta new file mode 100644 index 0000000..f630b51 --- /dev/null +++ b/Assets/XCharts/Editor/Series/HeatmapEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3137acf1aff4f4cd29af0d3c3ca78bca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/LineEditor.cs b/Assets/XCharts/Editor/Series/LineEditor.cs new file mode 100644 index 0000000..5d6c234 --- /dev/null +++ b/Assets/XCharts/Editor/Series/LineEditor.cs @@ -0,0 +1,43 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Line))] + public class LineEditor : SerieEditor<Line> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_Stack"); + if (serie.IsUseCoord<PolarCoord>()) + { + PropertyField("m_PolarIndex"); + } + else + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + } + PropertyField("m_LineType"); + //PropertyField("m_Clip"); + PropertyFiledMore(() => + { + PropertyFieldLimitMin("m_MinShow", 0); + PropertyFieldLimitMin("m_MaxShow", 0); + PropertyFieldLimitMin("m_MaxCache", 0); + PropertyField("m_SampleDist"); + PropertyField("m_SampleType"); + PropertyField("m_SampleAverage"); + PropertyField("m_Ignore"); + PropertyField("m_IgnoreValue"); + PropertyField("m_IgnoreLineBreak"); + PropertyField("m_ShowAsPositiveNumber"); + PropertyField("m_Large"); + PropertyField("m_LargeThreshold"); + }); + PropertyField("m_Symbol"); + PropertyField("m_LineStyle"); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/LineEditor.cs.meta b/Assets/XCharts/Editor/Series/LineEditor.cs.meta new file mode 100644 index 0000000..c817b49 --- /dev/null +++ b/Assets/XCharts/Editor/Series/LineEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 065fbd043ce6e40609cfb52114aaaa6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/ParallelEditor.cs b/Assets/XCharts/Editor/Series/ParallelEditor.cs new file mode 100644 index 0000000..c0d7b2c --- /dev/null +++ b/Assets/XCharts/Editor/Series/ParallelEditor.cs @@ -0,0 +1,16 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Parallel))] + public class ParallelEditor : SerieEditor<Parallel> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_ParallelIndex"); + PropertyField("m_LineType"); + PropertyField("m_LineStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/ParallelEditor.cs.meta b/Assets/XCharts/Editor/Series/ParallelEditor.cs.meta new file mode 100644 index 0000000..b368384 --- /dev/null +++ b/Assets/XCharts/Editor/Series/ParallelEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01af34b37a31d4876bd2d9ca7687ccd1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/PieEditor.cs b/Assets/XCharts/Editor/Series/PieEditor.cs new file mode 100644 index 0000000..7a66372 --- /dev/null +++ b/Assets/XCharts/Editor/Series/PieEditor.cs @@ -0,0 +1,26 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Pie))] + public class PieEditor : SerieEditor<Pie> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_RoseType"); + PropertyField("m_Gap"); + PropertyTwoFiled("m_Center"); + PropertyTwoFiled("m_Radius"); + PropertyField("m_AvoidLabelOverlap"); + PropertyFiledMore(() => + { + PropertyField("m_MinAngle"); + PropertyField("m_RoundCap"); + PropertyField("m_Ignore"); + PropertyField("m_IgnoreValue"); + }); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/PieEditor.cs.meta b/Assets/XCharts/Editor/Series/PieEditor.cs.meta new file mode 100644 index 0000000..b0486f5 --- /dev/null +++ b/Assets/XCharts/Editor/Series/PieEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e7ae042a30a3433d8ae63a82bf37278 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/RadarEditor.cs b/Assets/XCharts/Editor/Series/RadarEditor.cs new file mode 100644 index 0000000..aedf983 --- /dev/null +++ b/Assets/XCharts/Editor/Series/RadarEditor.cs @@ -0,0 +1,19 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Radar))] + public class RadarEditor : SerieEditor<Radar> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_RadarType"); + PropertyField("m_RadarIndex"); + + PropertyField("m_Symbol"); + PropertyField("m_LineStyle"); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/RadarEditor.cs.meta b/Assets/XCharts/Editor/Series/RadarEditor.cs.meta new file mode 100644 index 0000000..179183d --- /dev/null +++ b/Assets/XCharts/Editor/Series/RadarEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b6a9ab6dd1ea4e3a98bef73e90d42a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/RingEditor.cs b/Assets/XCharts/Editor/Series/RingEditor.cs new file mode 100644 index 0000000..71ec6db --- /dev/null +++ b/Assets/XCharts/Editor/Series/RingEditor.cs @@ -0,0 +1,21 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Ring))] + public class RingEditor : SerieEditor<Ring> + { + public override void OnCustomInspectorGUI() + { + PropertyTwoFiled("m_Center"); + PropertyTwoFiled("m_Radius"); + PropertyField("m_StartAngle"); + PropertyField("m_Gap"); + PropertyField("m_RoundCap"); + PropertyField("m_Clockwise"); + + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/RingEditor.cs.meta b/Assets/XCharts/Editor/Series/RingEditor.cs.meta new file mode 100644 index 0000000..4664e80 --- /dev/null +++ b/Assets/XCharts/Editor/Series/RingEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 647f8e564429a4b76833d3b428f5ab13 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/ScatterEditor.cs b/Assets/XCharts/Editor/Series/ScatterEditor.cs new file mode 100644 index 0000000..77cd8bb --- /dev/null +++ b/Assets/XCharts/Editor/Series/ScatterEditor.cs @@ -0,0 +1,26 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(Scatter))] + public class ScatterEditor : SerieEditor<Scatter> + { + public override void OnCustomInspectorGUI() + { + if (serie.IsUseCoord<SingleAxisCoord>()) + { + PropertyField("m_SingleAxisIndex"); + } + else + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + } + PropertyField("m_Clip"); + + PropertyField("m_Symbol"); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/ScatterEditor.cs.meta b/Assets/XCharts/Editor/Series/ScatterEditor.cs.meta new file mode 100644 index 0000000..7b59778 --- /dev/null +++ b/Assets/XCharts/Editor/Series/ScatterEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3dfef7780c8cc412f87d00e437c94715 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/SerieBaseEditor.cs b/Assets/XCharts/Editor/Series/SerieBaseEditor.cs new file mode 100644 index 0000000..1022c1f --- /dev/null +++ b/Assets/XCharts/Editor/Series/SerieBaseEditor.cs @@ -0,0 +1,160 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.Assertions; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public class SerieBaseEditor + { + internal BaseChart chart { get; private set; } + internal Serie serie { get; private set; } + + //Editor m_Inspector; + internal SerializedProperty baseProperty; + internal SerializedProperty showProperty; + internal List<HeaderMenuInfo> menus = new List<HeaderMenuInfo>(); + internal List<HeaderMenuInfo> serieDataMenus = new List<HeaderMenuInfo>(); + protected Dictionary<string, Type> m_CoordOptionsDic; + protected List<string> m_CoordOptionsNames; + private string m_DisplayName; + + internal void Init(BaseChart chart, Serie target, SerializedProperty property, UnityEditor.Editor inspector) + { + this.chart = chart; + this.serie = target; + this.baseProperty = property; + m_DisplayName = string.Format("Serie {0}: {1}", serie.index, serie.GetType().Name); + //m_Inspector = inspector; + showProperty = baseProperty.FindPropertyRelative("m_Show"); + if (showProperty == null) + showProperty = baseProperty.FindPropertyRelative("m_Enable"); + OnEnable(); + + if (serie.GetType().IsDefined(typeof(CoordOptionsAttribute), false)) + { + var attribute = serie.GetType().GetAttribute<CoordOptionsAttribute>(); + m_CoordOptionsDic = new Dictionary<string, Type>(); + m_CoordOptionsNames = new List<string>(); + if (attribute.type0 != null) + { + m_CoordOptionsDic[attribute.type0.Name] = attribute.type0; + m_CoordOptionsNames.Add(attribute.type0.Name); + } + if (attribute.type1 != null) + { + m_CoordOptionsDic[attribute.type1.Name] = attribute.type1; + m_CoordOptionsNames.Add(attribute.type1.Name); + } + if (attribute.type2 != null) + { + m_CoordOptionsDic[attribute.type2.Name] = attribute.type2; + m_CoordOptionsNames.Add(attribute.type2.Name); + } + if (attribute.type3 != null) + { + m_CoordOptionsDic[attribute.type3.Name] = attribute.type3; + m_CoordOptionsNames.Add(attribute.type3.Name); + } + } + } + + public virtual void OnEnable() + { } + + public virtual void OnDisable() + { } + + internal void OnInternalInspectorGUI() + { + OnInspectorGUI(); + EditorGUILayout.Space(); + } + + public virtual void OnInspectorGUI() + { } + + protected virtual void DrawExtendeds() + { } + + public virtual string GetDisplayTitle() + { + // var title = string.Format("serie {0}: {1}", serie.index, serie.GetType().Name); + // return ObjectNames.NicifyVariableName(title); + return m_DisplayName; + } + + internal SerializedProperty FindProperty(string path) + { + return baseProperty.FindPropertyRelative(path); + } + + protected SerializedProperty PropertyField(string path) + { + Assert.IsNotNull(path); + var property = FindProperty(path); + Assert.IsNotNull(property, "Can't find:" + path); + var title = ChartEditorHelper.GetContent(property.displayName); + PropertyField(property, title); + return property; + } + + protected void PropertyField(SerializedProperty property) + { + Assert.IsNotNull(property); + var title = ChartEditorHelper.GetContent(property.displayName); + PropertyField(property, title); + } + + protected void PropertyField(SerializedProperty property, GUIContent title) + { + EditorGUILayout.PropertyField(property, title); + } + + protected void PropertyListField(string relativePropName, bool showOrder = true) + { + //TODO: + PropertyField(relativePropName); + } + + protected void PropertyTwoFiled(string relativePropName) + { + var m_DrawRect = GUILayoutUtility.GetRect(1f, 17f); + var prop = FindProperty(relativePropName); + ChartEditorHelper.MakeTwoField(ref m_DrawRect, m_DrawRect.width, prop, prop.displayName); + } + protected void PropertyFieldLimitMin(string relativePropName, double min) + { + var prop = PropertyField(relativePropName); + switch (prop.propertyType) + { + case SerializedPropertyType.Float: + if (prop.floatValue < min) + prop.floatValue = (float) min; + break; + case SerializedPropertyType.Integer: + if (prop.intValue < min) + prop.intValue = (int) min; + break; + } + + } + protected void PropertyFieldLimitMax(string relativePropName, int max) + { + var prop = PropertyField(relativePropName); + switch (prop.propertyType) + { + case SerializedPropertyType.Float: + if (prop.floatValue > max) + prop.floatValue = (float) max; + break; + case SerializedPropertyType.Integer: + if (prop.intValue > max) + prop.intValue = (int) max; + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/SerieBaseEditor.cs.meta b/Assets/XCharts/Editor/Series/SerieBaseEditor.cs.meta new file mode 100644 index 0000000..fad64c3 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SerieBaseEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 991edc42b5abf429b8062fd202278a4d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/SerieEditor.cs b/Assets/XCharts/Editor/Series/SerieEditor.cs new file mode 100644 index 0000000..9b410ea --- /dev/null +++ b/Assets/XCharts/Editor/Series/SerieEditor.cs @@ -0,0 +1,244 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public class SerieEditor<T> : SerieBaseEditor where T : Serie + { + protected const string MORE = "More"; + protected bool m_MoreFoldout = false; + private bool m_DataFoldout = false; + private bool m_DataComponentFoldout = true; + private Dictionary<int, bool> m_DataElementFoldout = new Dictionary<int, bool>(); + + public override void OnInspectorGUI() + { + ++EditorGUI.indentLevel; + //PropertyField("m_InsertDataToHead"); + PropertyField("m_SerieName"); + if (m_CoordOptionsNames != null && m_CoordOptionsNames.Count > 1) + { + var index = m_CoordOptionsNames.IndexOf(serie.coordSystem); + var selectedIndex = EditorGUILayout.Popup("Coord System", index, m_CoordOptionsNames.ToArray()); + if (selectedIndex != index) + { + var typeName = m_CoordOptionsNames[selectedIndex]; + serie.coordSystem = m_CoordOptionsDic[typeName].Name; + } + } + OnCustomInspectorGUI(); + OnExtraInspectorGUI(); + PropertyFieldData(); + --EditorGUI.indentLevel; + } + + public virtual void OnCustomInspectorGUI() + { } + + private void OnExtraInspectorGUI() + { + foreach (var kv in Serie.extraComponentMap) + { + var prop = FindProperty(kv.Value); + if (prop.arraySize > 0) + PropertyField(prop.GetArrayElementAtIndex(0)); + } + } + + private void PropertyFieldData() + { + m_DataFoldout = ChartEditorHelper.DrawHeader("Data", m_DataFoldout, false, null, null, + new HeaderMenuInfo("Import ECharts Data", () => + { + PraseExternalDataEditor.UpdateData(chart, serie, null); + PraseExternalDataEditor.ShowWindow(); + })); + if (!m_DataFoldout) return; + EditorGUI.indentLevel++; + var m_Datas = FindProperty("m_Data"); + var m_DataDimension = FindProperty("m_ShowDataDimension"); + var m_ShowDataName = FindProperty("m_ShowDataName"); + PropertyField(m_ShowDataName); + PropertyField(m_DataDimension); + var listSize = m_Datas.arraySize; + listSize = EditorGUILayout.IntField("Size", listSize); + if (listSize < 0) listSize = 0; + if (m_DataDimension.intValue < 1) m_DataDimension.intValue = 1; + int dimension = m_DataDimension.intValue; + bool showName = m_ShowDataName.boolValue; + if (listSize != m_Datas.arraySize) + { + while (listSize > m_Datas.arraySize) m_Datas.arraySize++; + while (listSize < m_Datas.arraySize) m_Datas.arraySize--; + } + if (listSize > 30) // && !XCSettings.editorShowAllListData) + { + int num = listSize > 10 ? 10 : listSize; + for (int i = 0; i < num; i++) + { + DrawSerieData(dimension, m_Datas, i, showName); + } + if (num >= 10) + { + ChartEditorHelper.DrawHeader("... ", false, false, null, null); + DrawSerieData(dimension, m_Datas, listSize - 1, showName); + } + } + else + { + for (int i = 0; i < m_Datas.arraySize; i++) + { + DrawSerieData(dimension, m_Datas, i, showName); + } + } + EditorGUI.indentLevel--; + } + + protected void PropertyFiledMore(System.Action action) + { + m_MoreFoldout = ChartEditorHelper.DrawHeader(MORE, m_MoreFoldout, false, null, null); + if (m_MoreFoldout) + { + if (action != null) action(); + } + } + + private void DrawSerieData(int dimension, SerializedProperty m_Datas, int index, bool showName) + { + bool flag; + if (!m_DataElementFoldout.TryGetValue(index, out flag)) + { + flag = false; + m_DataElementFoldout[index] = false; + } + var fieldCount = dimension + (showName ? 1 : 0); + m_DataElementFoldout[index] = ChartEditorHelper.DrawHeader("SerieData " + index, flag, false, null, + delegate(Rect drawRect) + { + //drawRect.width -= 2f; + var maxX = drawRect.xMax; + var currentWidth = drawRect.width; + var lastX = drawRect.x; + var lastWid = drawRect.width; + var lastFieldWid = EditorGUIUtility.fieldWidth; + var lastLabelWid = EditorGUIUtility.labelWidth; + var serieData = m_Datas.GetArrayElementAtIndex(index); + var sereName = serieData.FindPropertyRelative("m_Name"); + var data = serieData.FindPropertyRelative("m_Data"); +#if UNITY_2019_3_OR_NEWER + var gap = 2; + var namegap = 3; +#else + var gap = 0; + var namegap = 0; +#endif + if (fieldCount <= 1) + { + while (2 > data.arraySize) + { + var value = data.arraySize == 0 ? index : 0; + data.arraySize++; + data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value; + } + SerializedProperty element = data.GetArrayElementAtIndex(1); + var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 + gap; + drawRect.x = startX; + drawRect.xMax = maxX; + EditorGUI.PropertyField(drawRect, element, GUIContent.none); + } + else + { + var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 + gap; + var dataWidTotal = (currentWidth - (startX + 20.5f + 1)); + var dataWid = dataWidTotal / fieldCount; + var xWid = dataWid - 2; + for (int i = 0; i < dimension; i++) + { + var dataCount = i < 1 ? 2 : i + 1; + while (dataCount > data.arraySize) + { + var value = data.arraySize == 0 ? index : 0; + data.arraySize++; + data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value; + } + drawRect.x = startX + i * xWid; + drawRect.width = dataWid + 25; + SerializedProperty element = data.GetArrayElementAtIndex(dimension <= 1 ? 1 : i); + EditorGUI.PropertyField(drawRect, element, GUIContent.none); + } + if (showName) + { + drawRect.x = startX + (fieldCount - 1) * xWid; + drawRect.width = dataWid + 40 + dimension * namegap - 2.5f; + EditorGUI.PropertyField(drawRect, sereName, GUIContent.none); + } + EditorGUIUtility.fieldWidth = lastFieldWid; + EditorGUIUtility.labelWidth = lastLabelWid; + } + }); + if (m_DataElementFoldout[index]) + { + if (!(serie is ISimplifiedSerie)) + DrawSerieDataDetail(m_Datas, index); + } + } + + private void DrawSerieDataDetail(SerializedProperty m_Datas, int index) + { + EditorGUI.indentLevel++; + var serieData = m_Datas.GetArrayElementAtIndex(index); + var m_Name = serieData.FindPropertyRelative("m_Name"); + + PropertyField(m_Name); + if (serie.GetType().IsDefined(typeof(SerieDataExtraFieldAttribute), false)) + { + var attribute = serie.GetType().GetAttribute<SerieDataExtraFieldAttribute>(); + foreach (var field in attribute.fields) + { + PropertyField(serieData.FindPropertyRelative(field)); + } + } + + serieDataMenus.Clear(); + if (serie.GetType().IsDefined(typeof(SerieDataExtraComponentAttribute), false)) + { + var attribute = serie.GetType().GetAttribute<SerieDataExtraComponentAttribute>(); + foreach (var type in attribute.types) + { + var size = serieData.FindPropertyRelative(SerieData.extraComponentMap[type]).arraySize; + serieDataMenus.Add(new HeaderMenuInfo("Add " + type.Name, () => + { + serie.GetSerieData(index).GetOrAddComponent(type); + EditorUtility.SetDirty(chart); + }, size == 0)); + } + foreach (var type in attribute.types) + { + var size = serieData.FindPropertyRelative(SerieData.extraComponentMap[type]).arraySize; + serieDataMenus.Add(new HeaderMenuInfo("Remove " + type.Name, () => + { + serie.GetSerieData(index).RemoveComponent(type); + EditorUtility.SetDirty(chart); + }, size > 0)); + } + } + serieDataMenus.Add(new HeaderMenuInfo("Remove All", () => + { + serie.GetSerieData(index).RemoveAllComponent(); + }, true)); + m_DataComponentFoldout = ChartEditorHelper.DrawHeader("Component", m_DataComponentFoldout, false, null, null, serieDataMenus); + if (m_DataComponentFoldout) + { + foreach (var kv in SerieData.extraComponentMap) + { + var prop = serieData.FindPropertyRelative(kv.Value); + if (prop.arraySize > 0) + PropertyField(prop.GetArrayElementAtIndex(0)); + } + } + EditorGUI.indentLevel--; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/SerieEditor.cs.meta b/Assets/XCharts/Editor/Series/SerieEditor.cs.meta new file mode 100644 index 0000000..58ee781 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SerieEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a03d2daaabd8465398b1ff06a9889cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/SerieListEditor.cs b/Assets/XCharts/Editor/Series/SerieListEditor.cs new file mode 100644 index 0000000..280ee25 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SerieListEditor.cs @@ -0,0 +1,268 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEngine.Assertions; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public sealed class SerieListEditor + { + public BaseChart chart { get; private set; } + BaseChartEditor m_BaseEditor; + + SerializedObject m_SerializedObject; + List<SerializedProperty> m_SeriesProperty; + SerializedProperty m_EnableProperty; + + Dictionary<Type, Type> m_EditorTypes; + List<SerieBaseEditor> m_Editors; + private bool m_SerieFoldout; + + public SerieListEditor(BaseChartEditor editor) + { + Assert.IsNotNull(editor); + m_BaseEditor = editor; + } + + public void Init(BaseChart chart, SerializedObject serializedObject, List<SerializedProperty> componentProps) + { + Assert.IsNotNull(chart); + Assert.IsNotNull(serializedObject); + + this.chart = chart; + m_SerializedObject = serializedObject; + m_SeriesProperty = componentProps; + + m_Editors = new List<SerieBaseEditor>(); + m_EditorTypes = new Dictionary<Type, Type>(); + + var editorTypes = RuntimeUtil.GetAllTypesDerivedFrom<SerieBaseEditor>() + .Where(t => t.IsDefined(typeof(SerieEditorAttribute), false) && !t.IsAbstract); + foreach (var editorType in editorTypes) + { + var attribute = editorType.GetAttribute<SerieEditorAttribute>(); + m_EditorTypes.Add(attribute.serieType, editorType); + } + + RefreshEditors(); + } + + public void UpdateSeriesProperty(List<SerializedProperty> componentProps) + { + m_SeriesProperty = componentProps; + RefreshEditors(); + } + + public void Clear() + { + if (m_Editors == null) + return; + + foreach (var editor in m_Editors) + editor.OnDisable(); + + m_Editors.Clear(); + m_EditorTypes.Clear(); + } + + public void OnGUI() + { + if (chart == null) + return; + if (chart.debug.foldSeries) + { + m_SerieFoldout = ChartEditorHelper.DrawHeader("Series", m_SerieFoldout, false, null, null); + if (m_SerieFoldout) + { + DrawSeries(); + } + } + else + { + DrawSeries(); + } + } + + void DrawSeries() + { + for (int i = 0; i < m_Editors.Count; i++) + { + var editor = m_Editors[i]; + string title = editor.GetDisplayTitle(); + bool displayContent = ChartEditorHelper.DrawHeader( + title, + editor.baseProperty, + editor.showProperty, + editor.menus); + if (displayContent) + { + editor.OnInternalInspectorGUI(); + } + } + if (m_Editors.Count <= 0) + { + EditorGUILayout.HelpBox("No serie.", MessageType.Info); + } + } + + void RefreshEditors() + { + m_SerializedObject.UpdateIfRequiredOrScript(); + foreach (var editor in m_Editors) + editor.OnDisable(); + + m_Editors.Clear(); + + for (int i = 0; i < chart.series.Count; i++) + { + var serie = chart.series[i]; + if (serie != null) + { + CreateEditor(serie, m_SeriesProperty[i]); + } + } + } + + void CreateEditor(Serie serie, SerializedProperty property, int index = -1) + { + var id = index >= 0 ? index : m_Editors.Count; + var settingsType = serie.GetType(); + Type editorType; + + if (!m_EditorTypes.TryGetValue(settingsType, out editorType)) + editorType = typeof(SerieBaseEditor); + var editor = (SerieBaseEditor) Activator.CreateInstance(editorType); + editor.Init(chart, serie, property, m_BaseEditor); + editor.menus.Clear(); + editor.menus.Add(new HeaderMenuInfo("Clone", () => + { + CloneSerie(editor.serie); + })); + editor.menus.Add(new HeaderMenuInfo("Remove", () => + { + if (EditorUtility.DisplayDialog("", "Sure remove serie?", "Yes", "Cancel")) + RemoveSerieEditor(id); + })); + editor.menus.Add(new HeaderMenuInfo("Move Down", () => + { + if (chart.MoveDownSerie(id)) + { + m_SeriesProperty = m_BaseEditor.RefreshSeries(); + RefreshEditors(); + } + })); + editor.menus.Add(new HeaderMenuInfo("Move Up", () => + { + if (chart.MoveUpSerie(id)) + { + m_SeriesProperty = m_BaseEditor.RefreshSeries(); + RefreshEditors(); + } + })); + foreach (var type in GetCovertToSerie(editor.serie.GetType())) + { + editor.menus.Add(new HeaderMenuInfo("Covert to " + type.Name, () => + { + CovertSerie(editor.serie, type); + })); + } + if (editor.serie.GetType().IsDefined(typeof(SerieExtraComponentAttribute), false)) + { + var attribute = editor.serie.GetType().GetAttribute<SerieExtraComponentAttribute>(); + foreach (var type in attribute.types) + { + var size = editor.FindProperty(Serie.extraComponentMap[type]).arraySize; + editor.menus.Add(new HeaderMenuInfo("Add " + type.Name, () => + { + editor.serie.AddExtraComponent(type); + RefreshEditors(); + chart.RefreshAllComponent(); + EditorUtility.SetDirty(chart); + }, size == 0)); + } + foreach (var type in attribute.types) + { + var size = editor.FindProperty(Serie.extraComponentMap[type]).arraySize; + editor.menus.Add(new HeaderMenuInfo("Remove " + type.Name, () => + { + editor.serie.RemoveExtraComponent(type); + RefreshEditors(); + chart.RefreshAllComponent(); + EditorUtility.SetDirty(chart); + }, size > 0)); + } + } + if (index < 0) + m_Editors.Add(editor); + else + m_Editors[index] = editor; + } + + public void AddSerie(Type type) + { + m_SerializedObject.Update(); + var serieName = chart.GenerateDefaultSerieName(); + type.InvokeMember("AddDefaultSerie", + BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, + new object[] { chart, serieName }); + m_SerializedObject.Update(); + m_SerializedObject.ApplyModifiedProperties(); + m_SeriesProperty = m_BaseEditor.RefreshSeries(); + RefreshEditors(); + EditorUtility.SetDirty(chart); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + public void CovertSerie(Serie serie, Type type) + { + chart.CovertSerie(serie, type); + m_SeriesProperty = m_BaseEditor.RefreshSeries(); + RefreshEditors(); + } + + public void CloneSerie(Serie serie) + { + var newSerie = serie.Clone(); + newSerie.serieName = chart.GenerateDefaultSerieName(); + chart.InsertSerie(newSerie); + m_SeriesProperty = m_BaseEditor.RefreshSeries(); + RefreshEditors(); + } + + private void RemoveSerieEditor(int id) + { + m_Editors[id].OnDisable(); + chart.RemoveSerie(m_Editors[id].serie); + m_Editors.RemoveAt(id); + m_SerializedObject.Update(); + m_SerializedObject.ApplyModifiedProperties(); + m_SeriesProperty = m_BaseEditor.RefreshSeries(); + RefreshEditors(); + EditorUtility.SetDirty(chart); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + private List<Type> GetCovertToSerie(Type serie) + { + var list = new List<Type>(); + var typeMap = RuntimeUtil.GetAllTypesDerivedFrom<Serie>(); + foreach (var kvp in typeMap) + { + var type = kvp; + if (type.IsDefined(typeof(SerieConvertAttribute), false)) + { + var attribute = type.GetAttribute<SerieConvertAttribute>(); + if (attribute != null && attribute.Contains(serie)) + list.Add(type); + } + } + list.Sort((a, b) => { return a.Name.CompareTo(b.Name); }); + return list; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/SerieListEditor.cs.meta b/Assets/XCharts/Editor/Series/SerieListEditor.cs.meta new file mode 100644 index 0000000..f8d7bf2 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SerieListEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5fbdf672386ce40bb803a8bb3bb2a3ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/SimplifiedBarEditor.cs b/Assets/XCharts/Editor/Series/SimplifiedBarEditor.cs new file mode 100644 index 0000000..c09d3ee --- /dev/null +++ b/Assets/XCharts/Editor/Series/SimplifiedBarEditor.cs @@ -0,0 +1,19 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(SimplifiedBar))] + public class SimplifiedBarEditor : SerieEditor<SimplifiedBar> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + PropertyField("m_BarWidth"); + PropertyField("m_BarGap"); + PropertyField("m_Clip"); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/SimplifiedBarEditor.cs.meta b/Assets/XCharts/Editor/Series/SimplifiedBarEditor.cs.meta new file mode 100644 index 0000000..a1b72e9 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SimplifiedBarEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99f8e53a5ab7c49e6b87aedee03cf856 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/SimplifiedCandlestickEditor.cs b/Assets/XCharts/Editor/Series/SimplifiedCandlestickEditor.cs new file mode 100644 index 0000000..d180a57 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SimplifiedCandlestickEditor.cs @@ -0,0 +1,17 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(SimplifiedCandlestick))] + public class SimplifiedCandlestickEditor : SerieEditor<SimplifiedCandlestick> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + PropertyField("m_BarWidth"); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/SimplifiedCandlestickEditor.cs.meta b/Assets/XCharts/Editor/Series/SimplifiedCandlestickEditor.cs.meta new file mode 100644 index 0000000..9562375 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SimplifiedCandlestickEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 73d22e02d33e948d6981d537ba1f680e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Series/SimplifiedLineEditor.cs b/Assets/XCharts/Editor/Series/SimplifiedLineEditor.cs new file mode 100644 index 0000000..b5be0c2 --- /dev/null +++ b/Assets/XCharts/Editor/Series/SimplifiedLineEditor.cs @@ -0,0 +1,19 @@ +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [SerieEditor(typeof(SimplifiedLine))] + public class LineHPEditor : SerieEditor<SimplifiedLine> + { + public override void OnCustomInspectorGUI() + { + PropertyField("m_XAxisIndex"); + PropertyField("m_YAxisIndex"); + PropertyField("m_LineType"); + //PropertyField("m_Clip"); + PropertyField("m_LineStyle"); + PropertyField("m_ItemStyle"); + PropertyField("m_Animation"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Series/SimplifiedLineEditor.cs.meta b/Assets/XCharts/Editor/Series/SimplifiedLineEditor.cs.meta new file mode 100644 index 0000000..4e85e3d --- /dev/null +++ b/Assets/XCharts/Editor/Series/SimplifiedLineEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cedf2a45756cd415cb5a74f3188ebd72 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Utilities.meta b/Assets/XCharts/Editor/Utilities.meta new file mode 100644 index 0000000..51eefcd --- /dev/null +++ b/Assets/XCharts/Editor/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b4c4e4069901c4c3089878f483167df8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Utilities/ChartEditorHelper.cs b/Assets/XCharts/Editor/Utilities/ChartEditorHelper.cs new file mode 100644 index 0000000..647e716 --- /dev/null +++ b/Assets/XCharts/Editor/Utilities/ChartEditorHelper.cs @@ -0,0 +1,734 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public class HeaderMenuInfo + { + public string name; + public Action action; + public bool enable = true; + + public HeaderMenuInfo() { } + public HeaderMenuInfo(string name, Action action) + { + this.name = name; + this.action = action; + } + public HeaderMenuInfo(string name, Action action, bool enable) + { + this.name = name; + this.action = action; + this.enable = enable; + } + } + + public static class ChartEditorHelper + { + public const float HEADER_HEIGHT = 17f; + public const float FOLDOUT_WIDTH = 13f; +#if UNITY_2019_3_OR_NEWER + public const float INDENT_WIDTH = 15; + public const float BOOL_WIDTH = 15; + public const float ARROW_WIDTH = 20; + public const float GAP_WIDTH = 2; + public const float DIFF_WIDTH = 0; +#else + public const float INDENT_WIDTH = 15; + public const float BOOL_WIDTH = 15; + public const float ARROW_WIDTH = 14f; + public const float GAP_WIDTH = 0; + public const float DIFF_WIDTH = 1; +#endif + static Dictionary<string, GUIContent> s_GUIContentCache; + + static ChartEditorHelper() + { + s_GUIContentCache = new Dictionary<string, GUIContent>(); + } + + public static void SecondField(Rect drawRect, SerializedProperty prop) + { + RectOffset offset = new RectOffset(-(int) EditorGUIUtility.labelWidth, 0, 0, 0); + drawRect = offset.Add(drawRect); + EditorGUI.PropertyField(drawRect, prop, GUIContent.none); + drawRect = offset.Remove(drawRect); + } + + public static void MakeTwoField(ref Rect drawRect, float rectWidth, SerializedProperty arrayProp, + string name) + { + while (arrayProp.arraySize < 2) arrayProp.arraySize++; + var prop1 = arrayProp.GetArrayElementAtIndex(0); + var prop2 = arrayProp.GetArrayElementAtIndex(1); + MakeTwoField(ref drawRect, rectWidth, prop1, prop2, name); + } + + public static void MakeDivideList(ref Rect drawRect, float rectWidth, SerializedProperty arrayProp, + string name, int showNum) + { + while (arrayProp.arraySize < showNum) arrayProp.arraySize++; + EditorGUI.LabelField(drawRect, name); +#if UNITY_2019_3_OR_NEWER + var gap = 2; +#else + var gap = 0; +#endif + var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + gap; + var dataWidTotal = (rectWidth - (startX + INDENT_WIDTH + 1)); + EditorGUI.DrawRect(new Rect(startX, drawRect.y, dataWidTotal, drawRect.height), Color.grey); + var dataWid = dataWidTotal / showNum; + var xWid = dataWid - gap; + for (int i = 0; i < 1; i++) + { + drawRect.x = startX + i * xWid; + drawRect.width = dataWid + (EditorGUI.indentLevel - 2) * 40.5f; + EditorGUI.PropertyField(drawRect, arrayProp.GetArrayElementAtIndex(i), GUIContent.none); + } + drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + } + + public static void MakeTwoField(ref Rect drawRect, float rectWidth, SerializedProperty prop1, + SerializedProperty prop2, string name) + { + EditorGUI.LabelField(drawRect, name); + var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + GAP_WIDTH; + var diff = 13 + EditorGUI.indentLevel * 14; + var offset = diff - INDENT_WIDTH; + var tempWidth = (rectWidth - startX + diff) / 2; + var centerXRect = new Rect(startX, drawRect.y, tempWidth, drawRect.height - 1); + var centerYRect = new Rect(centerXRect.x + tempWidth - offset, drawRect.y, tempWidth - 1, drawRect.height - 1); + EditorGUI.PropertyField(centerXRect, prop1, GUIContent.none); + EditorGUI.PropertyField(centerYRect, prop2, GUIContent.none); + drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + } + + public static void MakeVector2(ref Rect drawRect, float rectWidth, SerializedProperty prop, string name) + { + EditorGUI.LabelField(drawRect, name); + var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + GAP_WIDTH; + var diff = 14 + EditorGUI.indentLevel * 14; + var offset = diff - INDENT_WIDTH; + var tempWidth = (rectWidth - startX + diff) / 2; + var centerXRect = new Rect(startX, drawRect.y, tempWidth, drawRect.height); + var centerYRect = new Rect(centerXRect.x + tempWidth - offset, drawRect.y, tempWidth, drawRect.height); + var x = EditorGUI.FloatField(centerXRect, prop.vector3Value.x); + var y = EditorGUI.FloatField(centerYRect, prop.vector3Value.y); + prop.vector3Value = new Vector3(x, y); + drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + } + + public static bool MakeFoldout(ref Rect drawRect, ref bool moduleToggle, string content, + SerializedProperty prop = null, bool bold = false) + { + float defaultWidth = drawRect.width; + float defaultX = drawRect.x; + var style = bold ? EditorCustomStyles.foldoutStyle : UnityEditor.EditorStyles.foldout; + drawRect.width = EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH; + moduleToggle = EditorGUI.Foldout(drawRect, moduleToggle, content, true, style); + MakeBool(drawRect, prop); + drawRect.width = defaultWidth; + drawRect.x = defaultX; + return moduleToggle; + } + + public static bool MakeFoldout(ref Rect drawRect, Dictionary<string, float> heights, + Dictionary<string, bool> moduleToggle, string key, string content, SerializedProperty prop, bool bold = false) + { + float defaultWidth = drawRect.width; + float defaultX = drawRect.x; + var style = bold ? EditorCustomStyles.foldoutStyle : UnityEditor.EditorStyles.foldout; + drawRect.width = EditorGUIUtility.labelWidth; + moduleToggle[key] = EditorGUI.Foldout(drawRect, moduleToggle[key], content, true, style); + if (prop != null) + { + if (prop.propertyType == SerializedPropertyType.Boolean) + { + MakeBool(drawRect, prop); + } + else + { + drawRect.x = EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + ARROW_WIDTH; + drawRect.width = defaultWidth - drawRect.x + ARROW_WIDTH - 2; + EditorGUI.PropertyField(drawRect, prop, GUIContent.none); + } + } + + drawRect.width = defaultWidth; + drawRect.x = defaultX; + drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + heights[key] += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + return moduleToggle[key]; + } + public static bool MakeComponentFoldout(ref Rect drawRect, Dictionary<string, float> heights, + Dictionary<string, bool> moduleToggle, string key, string content, SerializedProperty prop, + SerializedProperty prop2, bool propEnable, params HeaderMenuInfo[] menus) + { + var sourRect = drawRect; + float defaultWidth = drawRect.width; + float defaultX = drawRect.x; + float headerHeight = DrawSplitterAndBackground(drawRect); + + drawRect.width = EditorGUIUtility.labelWidth; + + moduleToggle[key] = EditorGUI.Foldout(drawRect, moduleToggle[key], content, true, EditorStyles.foldout); + if (prop != null) + { + if (prop.propertyType == SerializedPropertyType.Boolean) + { + if (!propEnable) + using(new EditorGUI.DisabledScope(true)) + MakeBool(drawRect, prop); + else + MakeBool(drawRect, prop); + if (prop2 != null && !moduleToggle[key]) + { + drawRect.x = EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + ARROW_WIDTH + BOOL_WIDTH; + drawRect.width = defaultWidth - drawRect.x + ARROW_WIDTH; + EditorGUI.PropertyField(drawRect, prop2, GUIContent.none); + } + } + else + { + drawRect.x = EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + ARROW_WIDTH; + drawRect.width = defaultWidth - drawRect.x + ARROW_WIDTH - 2; + EditorGUI.PropertyField(drawRect, prop, GUIContent.none); + } + } + DrawMenu(sourRect, menus); + drawRect.width = defaultWidth; + drawRect.x = defaultX; + drawRect.y += headerHeight; + heights[key] += headerHeight; + return moduleToggle[key]; + } + + public static void MakeBool(Rect drawRect, SerializedProperty boolProp, int index = 0, string name = null) + { + float defaultWidth = drawRect.width; + float defaultX = drawRect.x; + float boolWidth = index * (BOOL_WIDTH + GAP_WIDTH); + drawRect.x = EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + ARROW_WIDTH + boolWidth; + drawRect.width = (EditorGUI.indentLevel + 1) * BOOL_WIDTH + index * 110; + if (boolProp != null) + { + EditorGUI.PropertyField(drawRect, boolProp, GUIContent.none); + if (!string.IsNullOrEmpty(name)) + { + drawRect.x += BOOL_WIDTH; + drawRect.width = 200; + EditorGUI.LabelField(drawRect, name); + } + } + drawRect.width = defaultWidth; + drawRect.x = defaultX; + } + + public static bool MakeFoldout(ref Rect drawRect, ref float height, ref Dictionary<string, bool> moduleToggle, + SerializedProperty prop, string moduleName, string showPropName, bool bold = false) + { + var relativeProp = prop.FindPropertyRelative(showPropName); + var flag = MakeFoldout(ref drawRect, ref moduleToggle, prop, moduleName, relativeProp, bold); + drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + height += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + return flag; + } + + public static bool MakeFoldout(ref Rect drawRect, ref Dictionary<string, bool> moduleToggle, SerializedProperty prop, + string moduleName, SerializedProperty showProp = null, bool bold = false) + { + var key = prop.propertyPath; + if (!moduleToggle.ContainsKey(key)) + { + moduleToggle.Add(key, false); + } + var toggle = moduleToggle[key]; + + float defaultWidth = drawRect.width; + float defaultX = drawRect.x; +#if UNITY_2019_3_OR_NEWER + drawRect.width = EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH; +#else + drawRect.width = EditorGUIUtility.labelWidth; +#endif + var displayName = string.IsNullOrEmpty(moduleName) ? prop.displayName : moduleName; + var foldoutStyle = bold ? EditorCustomStyles.foldoutStyle : UnityEditor.EditorStyles.foldout; + toggle = EditorGUI.Foldout(drawRect, toggle, displayName, true, foldoutStyle); + + if (moduleToggle[key] != toggle) + { + moduleToggle[key] = toggle; + } + if (showProp != null) + { + drawRect.x = EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + ARROW_WIDTH; + if (showProp.propertyType == SerializedPropertyType.Boolean) + { + drawRect.width = (EditorGUI.indentLevel + 1) * BOOL_WIDTH; + } + else + { + drawRect.width = defaultWidth - drawRect.x + ARROW_WIDTH - GAP_WIDTH; + } + EditorGUI.PropertyField(drawRect, showProp, GUIContent.none); + } + drawRect.width = defaultWidth; + drawRect.x = defaultX; + return toggle; + } + + public static bool MakeListWithFoldout(ref Rect drawRect, SerializedProperty listProp, bool foldout, + bool showOrder, bool showSize, params HeaderMenuInfo[] menus) + { + var height = 0f; + return MakeListWithFoldout(ref drawRect, ref height, listProp, foldout, showOrder, showSize, menus); + } + + public static bool MakeListWithFoldout(ref Rect drawRect, ref float height, SerializedProperty listProp, + bool foldout, bool showOrder, bool showSize, params HeaderMenuInfo[] menus) + { + var rawWidth = drawRect.width; + var headerHeight = DrawSplitterAndBackground(drawRect); + var foldoutRect = drawRect; + foldoutRect.xMax -= 10; + bool flag = EditorGUI.Foldout(foldoutRect, foldout, listProp.displayName, true); + ChartEditorHelper.DrawMenu(drawRect, menus); + height += headerHeight; + drawRect.y += headerHeight; + drawRect.width = rawWidth; + if (flag) + { + MakeList(ref drawRect, ref height, listProp, showOrder, showSize); + } + return flag; + } + + public static void MakeList(ref Rect drawRect, SerializedProperty listProp, bool showOrder = false, + bool showSize = true) + { + var height = 0f; + MakeList(ref drawRect, ref height, listProp, showOrder, showSize); + } + + public static void MakeList(ref Rect drawRect, ref float height, SerializedProperty listProp, + bool showOrder = false, bool showSize = true) + { + EditorGUI.indentLevel++; + var listSize = listProp.arraySize; + var iconWidth = 14; + var iconGap = 3f; + + if (showSize) + { + var headerHeight = DrawSplitterAndBackground(drawRect); + if (showOrder) + { + var elementRect = new Rect(drawRect.x, drawRect.y, drawRect.width - iconWidth + 2, drawRect.height); + var oldColor = GUI.contentColor; + GUI.contentColor = Color.black; + GUI.contentColor = oldColor; + listSize = listProp.arraySize; + listSize = EditorGUI.IntField(elementRect, "Size", listSize); + } + else + { + listSize = EditorGUI.IntField(drawRect, "Size", listSize); + } + if (listSize < 0) listSize = 0; + drawRect.y += headerHeight; + height += headerHeight; + + if (listSize != listProp.arraySize) + { + while (listSize > listProp.arraySize) listProp.arraySize++; + while (listSize < listProp.arraySize) listProp.arraySize--; + } + } + if (listSize > 30 && !XCSettings.editorShowAllListData) + { + SerializedProperty element; + int num = listSize > 10 ? 10 : listSize; + for (int i = 0; i < num; i++) + { + element = listProp.GetArrayElementAtIndex(i); + DrawSplitterAndBackground(drawRect); + EditorGUI.PropertyField(drawRect, element, new GUIContent("Element " + i)); + drawRect.y += EditorGUI.GetPropertyHeight(element); + height += EditorGUI.GetPropertyHeight(element); + } + if (num >= 10) + { + EditorGUI.LabelField(drawRect, "..."); + drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + height += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + element = listProp.GetArrayElementAtIndex(listSize - 1); + DrawSplitterAndBackground(drawRect); + EditorGUI.PropertyField(drawRect, element, new GUIContent("Element " + (listSize - 1))); + drawRect.y += EditorGUI.GetPropertyHeight(element) + EditorGUIUtility.standardVerticalSpacing; + height += EditorGUI.GetPropertyHeight(element) + EditorGUIUtility.standardVerticalSpacing; + } + } + else + { + for (int i = 0; i < listProp.arraySize; i++) + { + SerializedProperty element = listProp.GetArrayElementAtIndex(i); + DrawSplitterAndBackground(drawRect); + if (showOrder) + { + var temp = INDENT_WIDTH + GAP_WIDTH + iconGap; + var isSerie = "Serie".Equals(element.type); + var elementRect = isSerie ? + new Rect(drawRect.x, drawRect.y, drawRect.width + INDENT_WIDTH - 2 * iconGap, drawRect.height) : + new Rect(drawRect.x, drawRect.y, drawRect.width - 3 * iconWidth, drawRect.height); + EditorGUI.PropertyField(elementRect, element, new GUIContent("Element " + i)); + var iconRect = new Rect(drawRect.width - 3 * iconWidth + temp, drawRect.y, iconWidth, drawRect.height); + var oldColor = GUI.contentColor; + GUI.contentColor = Color.black; + if (GUI.Button(iconRect, EditorCustomStyles.iconUp, EditorCustomStyles.invisibleButton)) + { + if (i > 0) listProp.MoveArrayElement(i, i - 1); + } + iconRect = new Rect(drawRect.width - 2 * iconWidth + temp, drawRect.y, iconWidth, drawRect.height); + if (GUI.Button(iconRect, EditorCustomStyles.iconDown, EditorCustomStyles.invisibleButton)) + { + if (i < listProp.arraySize - 1) listProp.MoveArrayElement(i, i + 1); + } + iconRect = new Rect(drawRect.width - iconWidth + temp, drawRect.y, iconWidth, drawRect.height); + if (GUI.Button(iconRect, EditorCustomStyles.iconRemove, EditorCustomStyles.invisibleButton)) + { + if (i < listProp.arraySize && i >= 0) listProp.DeleteArrayElementAtIndex(i); + } + else + { + drawRect.y += EditorGUI.GetPropertyHeight(element); + height += EditorGUI.GetPropertyHeight(element); + } + GUI.contentColor = oldColor; + } + else + { + EditorGUI.PropertyField(drawRect, element, new GUIContent("Element " + i)); + drawRect.y += EditorGUI.GetPropertyHeight(element); + height += EditorGUI.GetPropertyHeight(element); + } + } + } + EditorGUI.indentLevel--; + } + + public static bool PropertyField(ref Rect drawRect, Dictionary<string, float> heights, string key, + SerializedProperty prop) + { + if (prop == null) return false; + EditorGUI.PropertyField(drawRect, prop, true); + var hig = EditorGUI.GetPropertyHeight(prop); + drawRect.y += hig; + heights[key] += hig; + return true; + } + + public static bool PropertyFieldWithMinValue(ref Rect drawRect, Dictionary<string, float> heights, string key, + SerializedProperty prop, float minValue) + { + if (prop == null) return false; + EditorGUI.PropertyField(drawRect, prop, true); + if (prop.propertyType == SerializedPropertyType.Float && prop.floatValue < minValue) + prop.floatValue = minValue; + if (prop.propertyType == SerializedPropertyType.Integer && prop.intValue < minValue) + prop.intValue = (int) minValue; + var hig = EditorGUI.GetPropertyHeight(prop); + drawRect.y += hig; + heights[key] += hig; + return true; + } + + public static bool PropertyFieldWithMaxValue(ref Rect drawRect, Dictionary<string, float> heights, string key, + SerializedProperty prop, float maxValue) + { + if (prop == null) return false; + EditorGUI.PropertyField(drawRect, prop, true); + if (prop.propertyType == SerializedPropertyType.Float && prop.floatValue > maxValue) + prop.floatValue = maxValue; + if (prop.propertyType == SerializedPropertyType.Integer && prop.intValue > maxValue) + prop.intValue = (int) maxValue; + var hig = EditorGUI.GetPropertyHeight(prop); + drawRect.y += hig; + heights[key] += hig; + return true; + } + + public static bool PropertyField(ref Rect drawRect, Dictionary<string, float> heights, string key, + SerializedProperty parentProp, string relativeName) + { + return PropertyField(ref drawRect, heights, key, parentProp.FindPropertyRelative(relativeName)); + } + public static bool PropertyFieldWithMinValue(ref Rect drawRect, Dictionary<string, float> heights, string key, + SerializedProperty parentProp, string relativeName, float minValue) + { + var relativeProp = parentProp.FindPropertyRelative(relativeName); + return PropertyFieldWithMinValue(ref drawRect, heights, key, relativeProp, minValue); + } + public static bool PropertyFieldWithMaxValue(ref Rect drawRect, Dictionary<string, float> heights, string key, + SerializedProperty parentProp, string relativeName, float maxValue) + { + var relativeProp = parentProp.FindPropertyRelative(relativeName); + return PropertyFieldWithMaxValue(ref drawRect, heights, key, relativeProp, maxValue); + } + + public static GUIContent GetContent(string textAndTooltip) + { + if (string.IsNullOrEmpty(textAndTooltip)) + return GUIContent.none; + + GUIContent content; + + if (!s_GUIContentCache.TryGetValue(textAndTooltip, out content)) + { + var s = textAndTooltip.Split('|'); + content = new GUIContent(s[0]); + + if (s.Length > 1 && !string.IsNullOrEmpty(s[1])) + content.tooltip = s[1]; + + s_GUIContentCache.Add(textAndTooltip, content); + } + + return content; + } + + public static void DrawSplitter() + { + var rect = GUILayoutUtility.GetRect(1f, 1f); + rect.xMin = 0f; + rect.width += 4f; + DrawSplitter(rect); + } + public static void DrawSplitter(Rect rect) + { + if (Event.current.type != EventType.Repaint) + return; + EditorGUI.DrawRect(rect, EditorCustomStyles.splitter); + } + + public static float DrawSplitterAndBackground(Rect drawRect, bool drawBackground = false) + { + float defaultWidth = drawRect.width; + float defaultX = drawRect.x; + + var splitRect = drawRect; + splitRect.y = drawRect.y; + splitRect.x = EditorGUI.indentLevel * INDENT_WIDTH + 4; + splitRect.xMax = drawRect.xMax; + splitRect.height = 1f; + + DrawSplitter(splitRect); + + if (drawBackground) + { + var bgRect = drawRect; + bgRect.y = drawRect.y; + bgRect.x -= 10 - EditorGUI.indentLevel * INDENT_WIDTH; + bgRect.xMax = drawRect.xMax; + bgRect.height = HEADER_HEIGHT + (EditorGUI.indentLevel < 1 ? 2 : 0); + EditorGUI.DrawRect(bgRect, EditorCustomStyles.headerBackground); + } + return HEADER_HEIGHT; + } + + internal static bool DrawHeader(string title, bool state, bool drawBackground, SerializedProperty activeField, + Action<Rect> drawCallback, params HeaderMenuInfo[] menus) + { + var rect = GUILayoutUtility.GetRect(1f, HEADER_HEIGHT); + var labelRect = DrawHeaderInternal(rect, title, ref state, drawBackground, activeField); + DrawMenu(rect, menus); + if (drawCallback != null) + { + drawCallback(rect); + } + var e = Event.current; + if (e.type == EventType.MouseDown) + { + if (labelRect.Contains(e.mousePosition)) + { + if (e.button == 0) + { + state = !state; + e.Use(); + } + } + } + return state; + } + + internal static bool DrawHeader(string title, bool state, bool drawBackground, SerializedProperty activeField, + Action<Rect> drawCallback, List<HeaderMenuInfo> menus) + { + var rect = GUILayoutUtility.GetRect(1f, HEADER_HEIGHT); + var labelRect = DrawHeaderInternal(rect, title, ref state, drawBackground, activeField); + DrawMenu(rect, menus); + if (drawCallback != null) + { + drawCallback(rect); + } + var e = Event.current; + if (e.type == EventType.MouseDown) + { + if (labelRect.Contains(e.mousePosition)) + { + if (e.button == 0) + { + state = !state; + e.Use(); + } + } + } + return state; + } + + private static Rect DrawHeaderInternal(Rect rect, string title, ref bool state, bool drawBackground, SerializedProperty activeField) + { + var splitRect = rect; + splitRect.x = EditorGUI.indentLevel * INDENT_WIDTH + 4; + splitRect.xMax = rect.xMax; + splitRect.height = 1f; + + var backgroundRect = rect; + backgroundRect.x = splitRect.x; + backgroundRect.xMax = rect.xMax; + + var labelRect = rect; + labelRect.xMin += 0f; + labelRect.xMax -= 35f; + + var foldoutRect = rect; + //foldoutRect.x -= 12f - EditorGUI.indentLevel * INDENT_WIDTH ; + foldoutRect.x = rect.x - FOLDOUT_WIDTH + EditorGUI.indentLevel * INDENT_WIDTH + DIFF_WIDTH; + foldoutRect.y += 1f; + foldoutRect.width = FOLDOUT_WIDTH; + foldoutRect.height = FOLDOUT_WIDTH; + + DrawSplitter(splitRect); + if (drawBackground) + EditorGUI.DrawRect(backgroundRect, EditorCustomStyles.headerBackground); + if (!string.IsNullOrEmpty(title)) + EditorGUI.LabelField(labelRect, GetContent(title)); + state = GUI.Toggle(foldoutRect, state, GUIContent.none, EditorStyles.foldout); + if (activeField != null) + { + var toggleRect = backgroundRect; + toggleRect.x = rect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * INDENT_WIDTH + GAP_WIDTH; + toggleRect.y += 1f; + toggleRect.width = 13f; + toggleRect.height = 13f; + activeField.boolValue = GUI.Toggle(toggleRect, activeField.boolValue, GUIContent.none); + } + return labelRect; + } + + internal static bool DrawHeader(string title, SerializedProperty group, SerializedProperty activeField, + Action resetAction, Action removeAction) + { + if (group == null) return false; + group.isExpanded = DrawHeader(title, group.isExpanded, false, activeField, null, + new HeaderMenuInfo("Reset", resetAction), new HeaderMenuInfo("Remove", removeAction)); + return group.isExpanded; + } + + internal static bool DrawHeader(string title, SerializedProperty group, SerializedProperty activeField, + params HeaderMenuInfo[] menus) + { + group.isExpanded = DrawHeader(title, group.isExpanded, false, activeField, null, menus); + return group.isExpanded; + } + + internal static bool DrawHeader(string title, SerializedProperty group, SerializedProperty activeField, + List<HeaderMenuInfo> menus) + { + group.isExpanded = DrawHeader(title, group.isExpanded, false, activeField, null, menus); + return group.isExpanded; + } + + internal static void DrawMenu(Rect parentRect, params HeaderMenuInfo[] menus) + { + if (menus == null || menus.Length <= 0) return; + var menuIcon = EditorCustomStyles.paneOptionsIcon; + var menuRect = new Rect(parentRect.xMax - menuIcon.width, parentRect.y + 2f, + menuIcon.width, menuIcon.height); + GUI.DrawTexture(menuRect, menuIcon); + var e = Event.current; + if (e.type == EventType.MouseDown) + { + if (menuRect.Contains(e.mousePosition)) + { + ShowHeaderContextMenu(new Vector2(menuRect.x, menuRect.yMax), menus); + e.Use(); + } + else if (parentRect.Contains(e.mousePosition)) + { + if (e.button != 0) + { + ShowHeaderContextMenu(e.mousePosition, menus); + e.Use(); + } + } + } + } + + internal static void DrawMenu(Rect parentRect, List<HeaderMenuInfo> menus) + { + if (menus == null || menus.Count <= 0) return; + var menuIcon = EditorCustomStyles.paneOptionsIcon; + var menuRect = new Rect(parentRect.xMax - menuIcon.width, parentRect.y + 2f, + menuIcon.width, menuIcon.height); + GUI.DrawTexture(menuRect, menuIcon); + var e = Event.current; + if (e.type == EventType.MouseDown) + { + if (menuRect.Contains(e.mousePosition)) + { + ShowHeaderContextMenu(new Vector2(menuRect.x, menuRect.yMax), menus); + e.Use(); + } + else if (parentRect.Contains(e.mousePosition)) + { + if (e.button != 0) + { + ShowHeaderContextMenu(e.mousePosition, menus); + e.Use(); + } + } + } + } + + static void ShowHeaderContextMenu(Vector2 position, params HeaderMenuInfo[] menus) + { + if (menus == null || menus.Length <= 0) return; + var menu = new GenericMenu(); + foreach (var info in menus) + { + if (info.enable) + menu.AddItem(GetContent(info.name), false, () => info.action()); + else + menu.AddDisabledItem(GetContent(info.name)); + } + menu.DropDown(new Rect(position, Vector2.zero)); + } + static void ShowHeaderContextMenu(Vector2 position, List<HeaderMenuInfo> menus) + { + if (menus == null || menus.Count <= 0) return; + var menu = new GenericMenu(); + foreach (var info in menus) + { + if (info.enable) + menu.AddItem(GetContent(info.name), false, () => info.action()); + else + menu.AddDisabledItem(GetContent(info.name)); + } + menu.DropDown(new Rect(position, Vector2.zero)); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Utilities/ChartEditorHelper.cs.meta b/Assets/XCharts/Editor/Utilities/ChartEditorHelper.cs.meta new file mode 100644 index 0000000..570f008 --- /dev/null +++ b/Assets/XCharts/Editor/Utilities/ChartEditorHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd22466b776d93c4cb0b252ee510cc7a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Utilities/EditorStyles.cs b/Assets/XCharts/Editor/Utilities/EditorStyles.cs new file mode 100644 index 0000000..602a269 --- /dev/null +++ b/Assets/XCharts/Editor/Utilities/EditorStyles.cs @@ -0,0 +1,32 @@ +using UnityEditor; +using UnityEngine; + +namespace XCharts.Editor +{ + public class EditorCustomStyles + { + static readonly Color splitterDark = new Color(0.12f, 0.12f, 0.12f, 0.5f); + static readonly Color splitterLight = new Color(0.6f, 0.6f, 0.6f, 0.5f); + static readonly Texture2D paneOptionsIconDark = (Texture2D) EditorGUIUtility.Load("Builtin Skins/DarkSkin/Images/pane options.png"); + static readonly Texture2D paneOptionsIconLight = (Texture2D) EditorGUIUtility.Load("Builtin Skins/LightSkin/Images/pane options.png"); + static readonly Color headerBackgroundDark = new Color(0.1f, 0.1f, 0.1f, 0.2f); + static readonly Color headerBackgroundLight = new Color(1f, 1f, 1f, 0.2f); + + public static readonly GUIStyle headerStyle = UnityEditor.EditorStyles.boldLabel; + public static readonly GUIStyle foldoutStyle = new GUIStyle(UnityEditor.EditorStyles.foldout) + { + font = headerStyle.font, + fontStyle = headerStyle.fontStyle, + }; + public static readonly GUIContent iconAdd = new GUIContent("+", "Add"); + public static readonly GUIContent iconRemove = new GUIContent("-", "Remove"); + public static readonly GUIContent iconUp = new GUIContent("↑", "Up"); + public static readonly GUIContent iconDown = new GUIContent("↓", "Down"); + public static readonly GUIStyle invisibleButton = "InvisibleButton"; + public static readonly GUIStyle smallTickbox = new GUIStyle("ShurikenToggle"); + + public static Color splitter { get { return EditorGUIUtility.isProSkin ? splitterDark : splitterLight; } } + public static Texture2D paneOptionsIcon { get { return EditorGUIUtility.isProSkin ? paneOptionsIconDark : paneOptionsIconLight; } } + public static Color headerBackground { get { return EditorGUIUtility.isProSkin ? headerBackgroundDark : headerBackgroundLight; } } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Utilities/EditorStyles.cs.meta b/Assets/XCharts/Editor/Utilities/EditorStyles.cs.meta new file mode 100644 index 0000000..7e7555c --- /dev/null +++ b/Assets/XCharts/Editor/Utilities/EditorStyles.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f91656ebb897d40d49795e4701f255f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Utilities/ThemeCheck.cs b/Assets/XCharts/Editor/Utilities/ThemeCheck.cs new file mode 100644 index 0000000..bb31b35 --- /dev/null +++ b/Assets/XCharts/Editor/Utilities/ThemeCheck.cs @@ -0,0 +1,71 @@ +using System.IO; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + internal static class ThemeCheck + { + public class ThemeAssetPostprocessor : AssetPostprocessor + { + static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, + string[] movedFromAssetsPaths) + { + foreach (var assetPath in importedAssets) + { + CheckAddedAsset(assetPath); + } + foreach (var assetPath in deletedAssets) + { + CheckDeletedAsset(assetPath); + } + } + } + + public static void CheckAddedAsset(string assetPath) + { + var fileName = Path.GetFileName(assetPath); + if (fileName.Equals("XCSettings.asset")) + { + XCThemeMgr.ReloadThemeList(); + return; + } + if (!IsThemeAsset(assetPath)) return; + var theme = AssetDatabase.LoadAssetAtPath<Theme>(assetPath); + if (XCSettings.AddCustomTheme(theme)) + { + XCThemeMgr.ReloadThemeList(); + } + } + + public static void CheckDeletedAsset(string assetPath) + { + if (!IsThemeAsset(assetPath)) return; + if (XCSettings.Instance == null) return; + var themes = XCSettings.customThemes; + var changed = false; + + for (int i = themes.Count - 1; i >= 0; i--) + { + if (themes[i] == null) + { + themes.RemoveAt(i); + changed = true; + } + } + if (changed) + { + XCThemeMgr.ReloadThemeList(); + } + } + + private static bool IsThemeAsset(string assetPath) + { + if (!assetPath.EndsWith(".asset")) return false; + var assetName = Path.GetFileNameWithoutExtension(assetPath); + if (!assetName.StartsWith(XCSettings.THEME_ASSET_NAME_PREFIX)) return false; + return true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Utilities/ThemeCheck.cs.meta b/Assets/XCharts/Editor/Utilities/ThemeCheck.cs.meta new file mode 100644 index 0000000..17375c1 --- /dev/null +++ b/Assets/XCharts/Editor/Utilities/ThemeCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b4ba2a9503ae46b1b7b1ae94ec59127 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Widgets.meta b/Assets/XCharts/Editor/Widgets.meta new file mode 100644 index 0000000..cd48390 --- /dev/null +++ b/Assets/XCharts/Editor/Widgets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b92d575a960f54e9a9417cca092d1e11 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Widgets/ProgressBarEditor.cs b/Assets/XCharts/Editor/Widgets/ProgressBarEditor.cs new file mode 100644 index 0000000..112269b --- /dev/null +++ b/Assets/XCharts/Editor/Widgets/ProgressBarEditor.cs @@ -0,0 +1,51 @@ +using UnityEditor; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomEditor(typeof(ProgressBar), false)] + public class ProgressBarEditor : UnityEditor.Editor + { + + [MenuItem("XCharts/ProgressBar", priority = 200)] + [MenuItem("GameObject/XCharts/ProgressBar", priority = 200)] + public static void AddPyramidChart() + { + XChartsEditor.AddChart<ProgressBar>("ProgressBar"); + } + + protected SerializedProperty m_Script; + protected SerializedProperty m_Value; + protected SerializedProperty m_BackgroundColor; + protected SerializedProperty m_StartColor; + protected SerializedProperty m_EndColor; + protected SerializedProperty m_CornerRadius; + + protected virtual void OnEnable() + { + m_Script = serializedObject.FindProperty("m_Script"); + m_Value = serializedObject.FindProperty("m_Value"); + m_BackgroundColor = serializedObject.FindProperty("m_BackgroundColor"); + m_StartColor = serializedObject.FindProperty("m_StartColor"); + m_EndColor = serializedObject.FindProperty("m_EndColor"); + m_CornerRadius = serializedObject.FindProperty("m_CornerRadius"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + OnStartInspectorGUI(); + serializedObject.ApplyModifiedProperties(); + } + + protected virtual void OnStartInspectorGUI() + { + EditorGUILayout.PropertyField(m_Script); + EditorGUILayout.PropertyField(m_BackgroundColor); + EditorGUILayout.PropertyField(m_StartColor); + EditorGUILayout.PropertyField(m_EndColor); + EditorGUILayout.PropertyField(m_Value); + EditorGUILayout.PropertyField(m_CornerRadius); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Widgets/ProgressBarEditor.cs.meta b/Assets/XCharts/Editor/Widgets/ProgressBarEditor.cs.meta new file mode 100644 index 0000000..37bbd28 --- /dev/null +++ b/Assets/XCharts/Editor/Widgets/ProgressBarEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17cd5e3604edc43e5b7b6bfc3c71857b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Windows.meta b/Assets/XCharts/Editor/Windows.meta new file mode 100644 index 0000000..6e597ab --- /dev/null +++ b/Assets/XCharts/Editor/Windows.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac8865193d4f548d2aaf66163c4192d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Windows/PraseExternalDataEditor.cs b/Assets/XCharts/Editor/Windows/PraseExternalDataEditor.cs new file mode 100644 index 0000000..2e7667a --- /dev/null +++ b/Assets/XCharts/Editor/Windows/PraseExternalDataEditor.cs @@ -0,0 +1,238 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public class PraseExternalDataEditor : UnityEditor.EditorWindow + { + private static BaseChart s_Chart; + private static Serie s_Serie; + private static Axis s_Axis; + private static PraseExternalDataEditor window; + private static string inputJsonText = ""; + + public static void ShowWindow() + { + window = GetWindow<PraseExternalDataEditor>(); + window.titleContent = new GUIContent("PraseExternalData"); + window.minSize = new Vector2(450, 550); + window.Focus(); + window.Show(); + } + + public static void UpdateData(BaseChart chart, Serie serie, Axis axis) + { + s_Chart = chart; + s_Serie = serie; + s_Axis = axis; + inputJsonText = UnityEngine.GUIUtility.systemCopyBuffer; + } + + void OnInspectorUpdate() + { + Repaint(); + } + + private void OnGUI() + { + if (s_Chart == null) + { + Close(); + return; + } + EditorGUILayout.LabelField("Input external data (echarts data):"); + inputJsonText = EditorGUILayout.TextArea(inputJsonText, GUILayout.Height(400)); + if (GUILayout.Button("Add")) + { + if (s_Serie != null) + { + if (!ParseArrayData(s_Serie, inputJsonText)) + { + if (ParseJsonData(s_Serie, inputJsonText)) + inputJsonText = ""; + } + else + { + inputJsonText = ""; + } + } + else if (s_Axis != null) + { + if (!ParseArrayData(s_Axis, inputJsonText)) + { + if (ParseJsonData(s_Axis, inputJsonText)) + inputJsonText = ""; + } + else + { + inputJsonText = ""; + } + } + } + } + + private static bool ParseArrayData(Axis axis, string arrayData) + { + arrayData = arrayData.Trim(); + if (!arrayData.StartsWith("data: Array")) return false; + axis.data.Clear(); + var list = arrayData.Split('\n'); + for (int i = 1; i < list.Length; i++) + { + var temp = list[i].Split(':'); + if (temp.Length == 2) + { + var category = temp[1].Replace("\"", "").Trim(); + axis.data.Add(category); + } + } + axis.SetAllDirty(); + return true; + } + + private static bool ParseArrayData(Serie serie, string arrayData) + { + arrayData = arrayData.Trim(); + if (!arrayData.StartsWith("data: Array")) return false; + serie.ClearData(); + var list = arrayData.Split('\n'); + for (int i = 1; i < list.Length; i++) + { + var temp = list[i].Split(':'); + if (temp.Length == 2) + { + var strvalue = temp[1].Replace("\"", "").Trim(); + var value = 0d; + var flag = double.TryParse(strvalue, out value); + if (flag) + { + serie.AddYData(value); + } + } + } + serie.SetAllDirty(); + return true; + } + + private static bool ParseJsonData(Axis axis, string jsonData) + { + if (!CheckJsonData(ref jsonData)) return false; + axis.data.Clear(); + string[] datas = jsonData.Split(','); + for (int i = 0; i < datas.Length; i++) + { + var txt = datas[i].Trim().Replace("[", "").Replace("]", ""); + var value = 0d; + if (!double.TryParse(txt, out value)) + axis.data.Add(txt.Replace("\'", "").Replace("\"", "")); + } + axis.SetAllDirty(); + return true; + } + + /// <summary> + /// 从json中导入数据 + /// </summary> + /// <param name="jsonData"></param> + private static bool ParseJsonData(Serie serie, string jsonData) + { + if (!CheckJsonData(ref jsonData)) return false; + serie.ClearData(); + if (jsonData.IndexOf("],") > -1 || jsonData.IndexOf("] ,") > -1) + { + string[] datas = jsonData.Split(new string[] { "],", "] ," }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < datas.Length; i++) + { + var data = datas[i].Replace("[", "").Replace("]", "").Split(new char[] { '[', ',' }, StringSplitOptions.RemoveEmptyEntries); + var serieData = new SerieData(); + double value = 0; + if (data.Length == 2 && !double.TryParse(data[0], out value)) + { + double.TryParse(data[1], out value); + serieData.data = new List<double>() { i, value }; + serieData.name = data[0].Replace("\"", "").Trim(); + } + else + { + for (int j = 0; j < data.Length; j++) + { + var txt = data[j].Trim().Replace("]", ""); + var flag = double.TryParse(txt, out value); + if (flag) + { + serieData.data.Add(value); + } + else serieData.name = txt.Replace("\"", "").Trim(); + } + } + serie.AddSerieData(serieData); + } + } + else if (jsonData.IndexOf("value") > -1 && jsonData.IndexOf("name") > -1) + { + string[] datas = jsonData.Split(new string[] { "},", "} ,", "}" }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < datas.Length; i++) + { + var arr = datas[i].Replace("{", "").Split(','); + var serieData = new SerieData(); + foreach (var a in arr) + { + if (a.StartsWith("value:")) + { + double value = double.Parse(a.Substring(6, a.Length - 6)); + serieData.data = new List<double>() { i, value }; + } + else if (a.StartsWith("name:")) + { + string name = a.Substring(6, a.Length - 6 - 1); + serieData.name = name; + } + else if (a.StartsWith("selected:")) + { + string selected = a.Substring(9, a.Length - 9); + serieData.selected = bool.Parse(selected); + } + } + serie.AddSerieData(serieData); + } + } + else + { + string[] datas = jsonData.Split(','); + for (int i = 0; i < datas.Length; i++) + { + double value; + var flag = double.TryParse(datas[i].Trim(), out value); + if (flag) + { + var serieData = new SerieData(); + serieData.data = new List<double>() { i, value }; + serie.AddSerieData(serieData); + } + } + } + serie.SetAllDirty(); + return true; + } + + private static bool CheckJsonData(ref string jsonData) + { + if (string.IsNullOrEmpty(jsonData)) return false; + jsonData = jsonData.Replace("\r\n", ""); + jsonData = jsonData.Replace(" ", ""); + jsonData = jsonData.Replace("\n", ""); + int startIndex = jsonData.IndexOf("["); + int endIndex = jsonData.LastIndexOf("]"); + if (startIndex == -1 || endIndex == -1) + { + Debug.LogError("json data need include in [ ]"); + return false; + } + jsonData = jsonData.Substring(startIndex + 1, endIndex - startIndex - 1); + return true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Windows/PraseExternalDataEditor.cs.meta b/Assets/XCharts/Editor/Windows/PraseExternalDataEditor.cs.meta new file mode 100644 index 0000000..045abf1 --- /dev/null +++ b/Assets/XCharts/Editor/Windows/PraseExternalDataEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b41bbccd77d88460aba5bcf81b4920ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Windows/XCSettingsEditor.cs b/Assets/XCharts/Editor/Windows/XCSettingsEditor.cs new file mode 100644 index 0000000..c03ef5b --- /dev/null +++ b/Assets/XCharts/Editor/Windows/XCSettingsEditor.cs @@ -0,0 +1,59 @@ +using UnityEditor; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + [CustomEditor(typeof(XCSettings))] + public class XCSettingsEditor : UnityEditor.Editor + { + internal class Styles + { + public static readonly GUIContent defaultFontAssetLabel = new GUIContent("Default Font Asset", "The Font Asset that will be assigned by default to newly created text objects when no Font Asset is specified."); + public static readonly GUIContent defaultFontAssetPathLabel = new GUIContent("Path: Resources/", "The relative path to a Resources folder where the Font Assets and Material Presets are located.\nExample \"Fonts & Materials/\""); + } + } + +#if UNITY_2018_3_OR_NEWER + class XCResourceImporterProvider : SettingsProvider + { + XCResourcesImporter m_ResourceImporter; + + public XCResourceImporterProvider() : base("Project/XCharts", SettingsScope.Project) + { } + + public override void OnGUI(string searchContext) + { + if (m_ResourceImporter == null) + m_ResourceImporter = new XCResourcesImporter(); + + m_ResourceImporter.OnGUI(); + } + + public override void OnDeactivate() + { + if (m_ResourceImporter != null) + m_ResourceImporter.OnDestroy(); + } + + static UnityEngine.Object GetSettings() + { + return Resources.Load<XCSettings>("XCSettings"); + } + + [SettingsProviderGroup] + static SettingsProvider[] CreateXCSettingsProvider() + { + var providers = new System.Collections.Generic.List<SettingsProvider> { new XCResourceImporterProvider() }; + if (GetSettings() != null) + { + var provider = new AssetSettingsProvider("Project/XCharts/Settings", GetSettings); + provider.PopulateSearchKeywordsFromGUIContentProperties<XCSettingsEditor.Styles>(); + providers.Add(provider); + } + + return providers.ToArray(); + } + } +#endif +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Windows/XCSettingsEditor.cs.meta b/Assets/XCharts/Editor/Windows/XCSettingsEditor.cs.meta new file mode 100644 index 0000000..dedbd2d --- /dev/null +++ b/Assets/XCharts/Editor/Windows/XCSettingsEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a1acb5e9cc3740aabbaaccd4ec9b8b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/Windows/XChartsEditor.cs b/Assets/XCharts/Editor/Windows/XChartsEditor.cs new file mode 100644 index 0000000..47042a7 --- /dev/null +++ b/Assets/XCharts/Editor/Windows/XChartsEditor.cs @@ -0,0 +1,197 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XCharts.Runtime; + +namespace XCharts.Editor +{ + public class XChartsEditor : UnityEditor.Editor + { + private static Transform GetParent() + { + GameObject selectObj = Selection.activeGameObject; + if (selectObj == null) + { + var canvas = GameObject.FindObjectOfType<Canvas>(); + if (canvas != null) return canvas.transform; + else + { + var canvasObject = new GameObject(); + canvasObject.name = "Canvas"; + canvas = canvasObject.AddComponent<Canvas>(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvasObject.AddComponent<CanvasScaler>(); + canvasObject.AddComponent<GraphicRaycaster>(); + var eventSystem = new GameObject(); + eventSystem.name = "EventSystem"; + eventSystem.AddComponent<EventSystem>(); + eventSystem.AddComponent<StandaloneInputModule>(); + return canvas.transform; + } + } + else + { + return selectObj.transform; + } + } + + private static string GetName(Transform parent, string name) + { + if (parent.Find(name) == null) return name; + for (int i = 1; i <= 10; i++) + { + var newName = string.Format("{0} ({1})", name, i); + if (parent.Find(newName) == null) + { + return newName; + } + } + return name; + } + + public static T AddChart<T>(string chartName) where T : BaseChart + { + var parent = GetParent(); + if (parent == null) return null; + XCThemeMgr.CheckReloadTheme(); + var chart = new GameObject(); + chart.name = GetName(parent, chartName); + var t = chart.AddComponent<T>(); + chart.transform.SetParent(parent); + chart.transform.localScale = Vector3.one; + chart.transform.localPosition = Vector3.zero; + var rect = chart.GetComponent<RectTransform>(); + rect.anchorMin = new Vector2(0.5f, 0.5f); + rect.anchorMax = new Vector2(0.5f, 0.5f); + rect.pivot = new Vector2(0.5f, 0.5f); + Selection.activeGameObject = chart; + EditorUtility.SetDirty(chart); + return t; + } + + [MenuItem("XCharts/EmptyChart", priority = 43)] + [MenuItem("GameObject/XCharts/EmptyChart", priority = 43)] + public static void AddBaseChart() + { + var chart = AddChart<BaseChart>("EmptyChart"); + chart.GetChartComponent<Title>().text = "EmptyChart"; + } + + [MenuItem("XCharts/LineChart", priority = 44)] + [MenuItem("GameObject/XCharts/LineChart", priority = 44)] + public static void AddLineChart() + { + AddChart<LineChart>("LineChart"); + } + + [MenuItem("XCharts/BarChart", priority = 45)] + [MenuItem("GameObject/XCharts/BarChart", priority = 45)] + public static void AddBarChart() + { + AddChart<BarChart>("BarChart"); + } + + [MenuItem("XCharts/PieChart", priority = 46)] + [MenuItem("GameObject/XCharts/PieChart", priority = 46)] + public static void AddPieChart() + { + AddChart<PieChart>("PieChart"); + } + + [MenuItem("XCharts/RadarChart", priority = 47)] + [MenuItem("GameObject/XCharts/RadarChart", priority = 47)] + public static void AddRadarChart() + { + AddChart<RadarChart>("RadarChart"); + } + + [MenuItem("XCharts/ScatterChart", priority = 48)] + [MenuItem("GameObject/XCharts/ScatterChart", priority = 48)] + public static void AddScatterChart() + { + AddChart<ScatterChart>("ScatterChart"); + } + + [MenuItem("XCharts/HeatmapChart", priority = 49)] + [MenuItem("GameObject/XCharts/HeatmapChart", priority = 49)] + public static void AddHeatmapChart() + { + AddChart<HeatmapChart>("HeatmapChart"); + } + + [MenuItem("XCharts/RingChart", priority = 51)] + [MenuItem("GameObject/XCharts/RingChart", priority = 51)] + public static void AddRingChart() + { + AddChart<RingChart>("RingChart"); + } + + [MenuItem("XCharts/CandlestickChart", priority = 54)] + [MenuItem("GameObject/XCharts/CandlestickChart", priority = 54)] + public static void CandlestickChart() + { + AddChart<CandlestickChart>("CandlestickChart"); + } + + [MenuItem("XCharts/PolarChart", priority = 54)] + [MenuItem("GameObject/XCharts/PolarChart", priority = 54)] + public static void PolarChart() + { + AddChart<PolarChart>("PolarChart"); + } + + [MenuItem("XCharts/ParallelChart", priority = 55)] + [MenuItem("GameObject/XCharts/ParallelChart", priority = 55)] + public static void ParallelChart() + { + AddChart<ParallelChart>("ParallelChart"); + } + + [MenuItem("XCharts/SimplifiedLineChart", priority = 56)] + [MenuItem("GameObject/XCharts/SimplifiedLineChart", priority = 56)] + public static void SimplifiedLineChart() + { + AddChart<SimplifiedLineChart>("SimplifiedLineChart"); + } + + [MenuItem("XCharts/SimplifiedBarChart", priority = 57)] + [MenuItem("GameObject/XCharts/SimplifiedBarChart", priority = 57)] + public static void SimplifiedBarChart() + { + AddChart<SimplifiedBarChart>("SimplifiedBarChart"); + } + + [MenuItem("XCharts/SimplifiedCandlestickChart", priority = 58)] + [MenuItem("GameObject/XCharts/SimplifiedCandlestickChart", priority = 58)] + public static void SimplifiedCandlestickChart() + { + AddChart<SimplifiedCandlestickChart>("SimplifiedCandlestickChart"); + } + + [MenuItem("XCharts/Themes Reload")] + public static void ReloadTheme() + { + XCThemeMgr.ReloadThemeList(); + } + + [MenuItem("XCharts/TextMeshPro Enable")] + public static void EnableTextMeshPro() + { + if (!XChartsMgr.IsExistTMPAssembly()) + { + Debug.LogError("TextMeshPro is not in the project, please import TextMeshPro package first."); + return; + } + XChartsMgr.EnableTextMeshPro(); + XChartsMgr.ModifyTMPRefence(); + } + + [MenuItem("XCharts/TextMeshPro Disable")] + public static void DisableTextMeshPro() + { + XChartsMgr.ModifyTMPRefence(true); + XChartsMgr.DisableTextMeshPro(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/Windows/XChartsEditor.cs.meta b/Assets/XCharts/Editor/Windows/XChartsEditor.cs.meta new file mode 100644 index 0000000..00e4a88 --- /dev/null +++ b/Assets/XCharts/Editor/Windows/XChartsEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 941beb76fdaa64a27a2df6561893157e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Editor/XCharts.Editor.asmdef b/Assets/XCharts/Editor/XCharts.Editor.asmdef new file mode 100644 index 0000000..4371b9b --- /dev/null +++ b/Assets/XCharts/Editor/XCharts.Editor.asmdef @@ -0,0 +1,17 @@ +{ + "name": "XCharts.Editor", + "references": [ + "XCharts.Runtime" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/XCharts.Editor.asmdef.meta b/Assets/XCharts/Editor/XCharts.Editor.asmdef.meta new file mode 100644 index 0000000..a0fad90 --- /dev/null +++ b/Assets/XCharts/Editor/XCharts.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9639efc34ea6e4056830a23233b99b16 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples.meta b/Assets/XCharts/Examples.meta new file mode 100644 index 0000000..574f1ff --- /dev/null +++ b/Assets/XCharts/Examples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0cfb5d7eeb260491b9d2545237eab7ce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example00_CheatSheet.cs b/Assets/XCharts/Examples/Example00_CheatSheet.cs new file mode 100644 index 0000000..99bce3d --- /dev/null +++ b/Assets/XCharts/Examples/Example00_CheatSheet.cs @@ -0,0 +1,322 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + public class Example00_CheatSheet : MonoBehaviour + { + private LineChart chart; + private float speed = 100f; + + void Awake() + { + LoopDemo(); + } + + private void OnEnable() + { + LoopDemo(); + } + + void LoopDemo() + { + StopAllCoroutines(); + StartCoroutine(CheatSheet()); + } + + IEnumerator CheatSheet() + { + StartCoroutine(InitChart()); + StartCoroutine(ComponentTitle()); + yield return new WaitForSeconds(2); + StartCoroutine(ComponentAxis()); + yield return new WaitForSeconds(2); + StartCoroutine(ComponentGrid()); + yield return new WaitForSeconds(2); + StartCoroutine(ComponentSerie()); + yield return new WaitForSeconds(4); + StartCoroutine(ComponentLegend()); + yield return new WaitForSeconds(4); + StartCoroutine(ComponentTheme()); + yield return new WaitForSeconds(4); + StartCoroutine(ComponentDataZoom()); + yield return new WaitForSeconds(5); + StartCoroutine(ComponentVisualMap()); + yield return new WaitForSeconds(3); + LoopDemo(); + } + + IEnumerator InitChart() + { + chart = gameObject.GetComponent<LineChart>(); + if (chart == null) gameObject.AddComponent<LineChart>(); + + chart.GetChartComponent<Title>().show = true; + chart.GetChartComponent<Title>().text = "术语解析-组件"; + + var grid = chart.GetOrAddChartComponent<GridCoord>(); + grid.bottom = 30; + grid.right = 30; + grid.left = 50; + grid.top = 80; + + chart.RemoveChartComponent<VisualMap>(); + + chart.RemoveData(); + + chart.AddSerie<Bar>("Bar"); + chart.AddSerie<Line>("Line"); + + for (int i = 0; i < 8; i++) + { + chart.AddXAxisData("x" + (i + 1)); + chart.AddData(0, Random.Range(10, 100)); + chart.AddData(1, Random.Range(30, 100)); + } + yield return null; + } + + IEnumerator ComponentTitle() + { + chart.GetChartComponent<Title>().text = "术语解析 - 组件"; + chart.GetChartComponent<Title>().subText = "Title 标题:可指定主标题和子标题"; + chart.GetChartComponent<XAxis>().show = true; + chart.GetChartComponent<YAxis>().show = true; + chart.GetChartComponent<Legend>().show = false; + chart.series[0].show = false; + chart.series[1].show = false; + + for (int i = 0; i < 4; i++) + { + chart.GetChartComponent<Title>().show = !chart.GetChartComponent<Title>().show; + chart.RefreshChart(); + yield return new WaitForSeconds(0.2f); + } + chart.GetChartComponent<Title>().show = true; + chart.RefreshChart(); + } + + IEnumerator ComponentAxis() + { + chart.GetChartComponent<Title>().subText = "Axis 坐标轴:配置X和Y轴的轴线、刻度、标签等样式外观配置"; + chart.series[0].show = false; + chart.series[1].show = false; + var xAxis = chart.GetChartComponent<XAxis>(); + var yAxis = chart.GetChartComponent<YAxis>(); + for (int i = 0; i < 4; i++) + { + xAxis.show = !xAxis.show; + yAxis.show = !yAxis.show; + chart.RefreshChart(); + yield return new WaitForSeconds(0.2f); + } + xAxis.show = true; + yAxis.show = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + } + + IEnumerator ComponentGrid() + { + chart.GetChartComponent<Title>().subText = "Grid 网格:调整坐标系边距和颜色等"; + var grid = chart.GetChartComponent<GridCoord>(); + for (int i = 0; i < 4; i++) + { + grid.backgroundColor = i % 2 == 0 ? Color.clear : Color.grey; + chart.RefreshChart(); + yield return new WaitForSeconds(0.2f); + } + grid.backgroundColor = Color.clear; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + } + + IEnumerator ComponentSerie() + { + chart.GetChartComponent<Title>().subText = "Serie 系列:调整坐标系边距和颜色等"; + chart.series[0].show = true; + chart.series[1].show = true; + chart.AnimationReset(); + chart.RefreshChart(); + yield return new WaitForSeconds(1.2f); + for (int i = 0; i < 4; i++) + { + chart.series[0].show = !chart.series[0].show; + chart.series[1].show = !chart.series[1].show; + chart.RefreshChart(); + yield return new WaitForSeconds(0.2f); + } + chart.series[0].show = true; + chart.series[1].show = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + } + + IEnumerator ComponentLegend() + { + chart.GetChartComponent<Title>().subText = "Legend 图例:展示不同系列的名字和颜色,可控制系列显示等"; + var legend = chart.GetChartComponent<Legend>(); + legend.show = true; + var grid = chart.GetChartComponent<GridCoord>(); + grid.top = 80; + legend.location.top = 50; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + for (int i = 0; i < 4; i++) + { + legend.show = !legend.show; + chart.RefreshChart(); + yield return new WaitForSeconds(0.2f); + } + legend.show = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + chart.ClickLegendButton(0, "Line", false); + yield return new WaitForSeconds(0.2f); + chart.ClickLegendButton(0, "Line", true); + yield return new WaitForSeconds(0.5f); + + chart.ClickLegendButton(1, "Bar", false); + yield return new WaitForSeconds(0.2f); + chart.ClickLegendButton(1, "Bar", true); + yield return new WaitForSeconds(0.5f); + } + + IEnumerator ComponentTheme() + { + chart.GetChartComponent<Title>().subText = "Theme 主题:可从全局上配置图表的颜色、字体等效果,支持默认主题切换"; + yield return new WaitForSeconds(1f); + chart.GetChartComponent<Title>().subText = "Theme 主题:Light主题"; + chart.UpdateTheme(ThemeType.Light); + yield return new WaitForSeconds(1f); + chart.GetChartComponent<Title>().subText = "Theme 主题:Dark主题"; + chart.UpdateTheme(ThemeType.Dark); + yield return new WaitForSeconds(1f); + chart.GetChartComponent<Title>().subText = "Theme 主题:Default主题"; + chart.UpdateTheme(ThemeType.Default); + yield return new WaitForSeconds(1f); + } + + IEnumerator ComponentDataZoom() + { + chart.GetChartComponent<Title>().subText = "DataZoom 区域缩放:可通过拖、拽、缩小、放大来观察细节数据"; + var grid = chart.GetChartComponent<GridCoord>(); + grid.bottom = 70; + + var dataZoom = chart.GetOrAddChartComponent<DataZoom>(); + dataZoom.enable = true; + dataZoom.supportInside = true; + dataZoom.supportSlider = true; + dataZoom.start = 0; + dataZoom.end = 100; + + chart.RefreshChart(); + for (int i = 0; i < 4; i++) + { + dataZoom.supportSlider = !dataZoom.supportSlider; + chart.RefreshChart(); + yield return new WaitForSeconds(0.2f); + } + dataZoom.supportSlider = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + while (dataZoom.start < 40) + { + dataZoom.start += speed * Time.deltaTime * 0.8f; + chart.RefreshDataZoom(); + chart.RefreshChart(); + yield return null; + } + while (dataZoom.end > 60) + { + dataZoom.end -= speed * Time.deltaTime * 0.8f; + chart.RefreshDataZoom(); + chart.RefreshChart(); + yield return null; + } + while (dataZoom.start > 0) + { + dataZoom.start -= speed * Time.deltaTime * 0.8f; + dataZoom.end -= speed * Time.deltaTime * 0.8f; + chart.RefreshDataZoom(); + chart.RefreshChart(); + yield return null; + } + while (dataZoom.end < 100) + { + dataZoom.start += speed * Time.deltaTime * 0.8f; + dataZoom.end += speed * Time.deltaTime * 0.8f; + chart.RefreshDataZoom(); + chart.RefreshChart(); + yield return null; + } + while (dataZoom.start > 0 || dataZoom.end < 100) + { + dataZoom.start -= speed * Time.deltaTime * 0.8f; + dataZoom.end += speed * Time.deltaTime * 0.8f; + chart.RefreshDataZoom(); + chart.RefreshChart(); + yield return null; + } + } + + IEnumerator ComponentVisualMap() + { + chart.GetChartComponent<Title>().subText = "VisualMap 视觉映射:可从全局上配置图表的颜色、字体等效果,支持默认主题切换"; + + var visualMap = chart.GetOrAddChartComponent<VisualMap>(); + visualMap.show = true; + visualMap.showUI = true; + visualMap.orient = Orient.Vertical; + visualMap.calculable = true; + visualMap.min = 0; + visualMap.max = 100; + visualMap.range[0] = 0; + visualMap.range[1] = 100; + + var colors = new List<string> + { + "#313695", + "#4575b4", + "#74add1", + "#abd9e9", + "#e0f3f8", + "#ffffbf", + "#fee090", + "#fdae61", + "#f46d43", + "#d73027", + "#a50026" + }; + visualMap.AddColors(colors); + var grid = chart.GetChartComponent<GridCoord>(); + grid.left = 80; + grid.bottom = 100; + chart.RefreshChart(); + + yield return new WaitForSeconds(1f); + while (visualMap.rangeMin < 40) + { + visualMap.rangeMin += speed * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + while (visualMap.rangeMax > 60) + { + visualMap.rangeMax -= speed * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + while (visualMap.rangeMin > 0 || visualMap.rangeMax < 100) + { + visualMap.rangeMin -= speed * Time.deltaTime; + visualMap.rangeMax += speed * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example00_CheatSheet.cs.meta b/Assets/XCharts/Examples/Example00_CheatSheet.cs.meta new file mode 100644 index 0000000..2cfe1ac --- /dev/null +++ b/Assets/XCharts/Examples/Example00_CheatSheet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 677b2673e728a4e308f26a5a9b236277 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example01_UpdateData.cs b/Assets/XCharts/Examples/Example01_UpdateData.cs new file mode 100644 index 0000000..171de5d --- /dev/null +++ b/Assets/XCharts/Examples/Example01_UpdateData.cs @@ -0,0 +1,46 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example01_UpdateData : MonoBehaviour + { + private float updateTime = 0; + BaseChart chart; + void Awake() + { + chart = gameObject.GetComponent<BaseChart>(); + } + + void Update() + { + updateTime += Time.deltaTime; + if (chart && updateTime > 2) + { + updateTime = 0; + var serie = chart.GetSerie(0); + //serie.animation.dataChangeEnable = true; + var dataCount = serie.dataCount; + if (chart is RadarChart) + { + var dimension = serie.GetSerieData(0).data.Count - 1; + chart.UpdateData(0, 0, Random.Range(0, dimension + 1), Random.Range(0, 100)); + } + else if (chart is HeatmapChart) + { + var dimension = serie.GetSerieData(0).data.Count - 1; + for (int i = 0; i < dataCount; i++) + { + chart.UpdateData(0, i, dimension, Random.Range(0, 10)); + } + } + else + { + chart.UpdateData(0, Random.Range(0, dataCount), Random.Range(10, 90)); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example01_UpdateData.cs.meta b/Assets/XCharts/Examples/Example01_UpdateData.cs.meta new file mode 100644 index 0000000..827c051 --- /dev/null +++ b/Assets/XCharts/Examples/Example01_UpdateData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d369a0cba6716422cb15efa26bef0918 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example02_ChartEvent.cs b/Assets/XCharts/Examples/Example02_ChartEvent.cs new file mode 100644 index 0000000..59066a4 --- /dev/null +++ b/Assets/XCharts/Examples/Example02_ChartEvent.cs @@ -0,0 +1,58 @@ +using UnityEngine; +using UnityEngine.EventSystems; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example02_ChartEvent : MonoBehaviour + { + BaseChart chart; + + void Awake() + { + chart = gameObject.GetComponent<BaseChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<LineChart>(); + } + chart.onPointerEnter = OnPointerEnter; + chart.onPointerExit = OnPointerExit; + chart.onPointerDown = OnPointerDown; + chart.onPointerUp = OnPointerUp; + chart.onPointerClick = OnPointerClick; + chart.onScroll = OnScroll; + } + + void OnPointerEnter(PointerEventData eventData, BaseGraph chart) + { + //Debug.LogError("enter:" + chart); + } + + void OnPointerExit(PointerEventData eventData, BaseGraph chart) + { + //Debug.LogError("exit:" + chart); + } + + void OnPointerDown(PointerEventData eventData, BaseGraph chart) + { + //Debug.LogError("down:" + chart); + } + + void OnPointerUp(PointerEventData eventData, BaseGraph chart) + { + //Debug.LogError("up:" + chart); + } + + void OnPointerClick(PointerEventData eventData, BaseGraph chart) + { + //Debug.LogError("click:" + chart); + } + + void OnScroll(PointerEventData eventData, BaseGraph chart) + { + //Debug.LogError("scroll:" + chart); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example02_ChartEvent.cs.meta b/Assets/XCharts/Examples/Example02_ChartEvent.cs.meta new file mode 100644 index 0000000..a57357a --- /dev/null +++ b/Assets/XCharts/Examples/Example02_ChartEvent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c549dc496cd86467e8286252906562cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example03_ChartAnimation.cs b/Assets/XCharts/Examples/Example03_ChartAnimation.cs new file mode 100644 index 0000000..736ff80 --- /dev/null +++ b/Assets/XCharts/Examples/Example03_ChartAnimation.cs @@ -0,0 +1,37 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example03_ChartAnimation : MonoBehaviour + { + BaseChart chart; + + void Awake() + { + chart = gameObject.GetComponent<BaseChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<BarChart>(); + } + var serie = chart.GetSerie(0); + serie.animation.enable = true; + //自定义每个数据项的渐入延时 + serie.animation.fadeInDelayFunction = CustomFadeInDelay; + //自定义每个数据项的渐入时长 + serie.animation.fadeInDurationFunction = CustomFadeInDuration; + } + + float CustomFadeInDelay(int dataIndex) + { + return dataIndex * 1000; + } + + float CustomFadeInDuration(int dataIndex) + { + return dataIndex * 1000 + 1000; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example03_ChartAnimation.cs.meta b/Assets/XCharts/Examples/Example03_ChartAnimation.cs.meta new file mode 100644 index 0000000..93e6d6b --- /dev/null +++ b/Assets/XCharts/Examples/Example03_ChartAnimation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6258ca3b055714eac92804f501011b53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example10_LineChart.cs b/Assets/XCharts/Examples/Example10_LineChart.cs new file mode 100644 index 0000000..1067b99 --- /dev/null +++ b/Assets/XCharts/Examples/Example10_LineChart.cs @@ -0,0 +1,266 @@ +using System.Collections; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + public class Example10_LineChart : MonoBehaviour + { + private LineChart chart; + private Serie serie; + private int m_DataNum = 8; + + void Awake() + { + LoopDemo(); + } + + private void OnEnable() + { + LoopDemo(); + } + + void LoopDemo() + { + StopAllCoroutines(); + StartCoroutine(PieDemo()); + } + + IEnumerator PieDemo() + { + StartCoroutine(AddSimpleLine()); + yield return new WaitForSeconds(2); + StartCoroutine(ChangeLineType()); + yield return new WaitForSeconds(8); + StartCoroutine(LineAreaStyleSettings()); + yield return new WaitForSeconds(5); + StartCoroutine(LineArrowSettings()); + yield return new WaitForSeconds(2); + StartCoroutine(LineSymbolSettings()); + yield return new WaitForSeconds(7); + StartCoroutine(LineLabelSettings()); + yield return new WaitForSeconds(3); + StartCoroutine(LineMutilSerie()); + yield return new WaitForSeconds(5); + LoopDemo(); + } + + IEnumerator AddSimpleLine() + { + chart = gameObject.GetComponent<LineChart>(); + if (chart == null) chart = gameObject.AddComponent<LineChart>(); + chart.GetChartComponent<Title>().text = "LineChart - 折线图"; + chart.GetChartComponent<Title>().subText = "普通折线图"; + + var yAxis = chart.GetChartComponent<YAxis>(); + yAxis.minMaxType = Axis.AxisMinMaxType.Custom; + yAxis.min = 0; + yAxis.max = 100; + + chart.RemoveData(); + serie = chart.AddSerie<Line>("Line"); + + for (int i = 0; i < m_DataNum; i++) + { + chart.AddXAxisData("x" + (i + 1)); + chart.AddData(0, UnityEngine.Random.Range(30, 90)); + } + yield return new WaitForSeconds(1); + } + + IEnumerator ChangeLineType() + { + chart.GetChartComponent<Title>().subText = "LineTyle - 曲线图"; + serie.lineType = LineType.Smooth; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "LineTyle - 阶梯线图"; + serie.lineType = LineType.StepStart; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + serie.lineType = LineType.StepMiddle; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + serie.lineType = LineType.StepEnd; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "LineTyle - 虚线"; + serie.lineStyle.type = LineStyle.Type.Dashed; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "LineTyle - 点线"; + serie.lineStyle.type = LineStyle.Type.Dotted; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "LineTyle - 点划线"; + serie.lineStyle.type = LineStyle.Type.DashDot; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "LineTyle - 双点划线"; + serie.lineStyle.type = LineStyle.Type.DashDotDot; + chart.RefreshChart(); + + serie.lineType = LineType.Normal; + chart.RefreshChart(); + } + + IEnumerator LineAreaStyleSettings() + { + chart.GetChartComponent<Title>().subText = "AreaStyle 面积图"; + + serie.AddExtraComponent<AreaStyle>(); + serie.areaStyle.show = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + + chart.GetChartComponent<Title>().subText = "AreaStyle 面积图"; + serie.lineType = LineType.Smooth; + serie.areaStyle.show = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1f); + + chart.GetChartComponent<Title>().subText = "AreaStyle 面积图 - 调整透明度"; + while (serie.areaStyle.opacity > 0.4) + { + serie.areaStyle.opacity -= 0.6f * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "AreaStyle 面积图 - 渐变"; + serie.areaStyle.toColor = Color.white; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + + IEnumerator LineArrowSettings() + { + chart.GetChartComponent<Title>().subText = "LineArrow 头部箭头"; + chart.GetSerie(0).AddExtraComponent<LineArrow>(); + serie.lineArrow.show = true; + serie.lineArrow.position = LineArrow.Position.Start; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "LineArrow 尾部箭头"; + serie.lineArrow.position = LineArrow.Position.End; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + serie.lineArrow.show = false; + } + + /// <summary> + /// SerieSymbol 相关设置 + /// </summary> + /// <returns></returns> + IEnumerator LineSymbolSettings() + { + chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记"; + while (serie.symbol.size < 5) + { + serie.symbol.size += 2.5f * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 空心圆"; + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 实心圆"; + serie.symbol.type = SymbolType.Circle; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 三角形"; + serie.symbol.type = SymbolType.Triangle; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 正方形"; + serie.symbol.type = SymbolType.Rect; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 菱形"; + serie.symbol.type = SymbolType.Diamond; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记"; + serie.symbol.type = SymbolType.EmptyCircle; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + + /// <summary> + /// SerieLabel相关配置 + /// </summary> + /// <returns></returns> + IEnumerator LineLabelSettings() + { + chart.GetChartComponent<Title>().subText = "SerieLabel 文本标签"; + serie.AddExtraComponent<LabelStyle>(); + chart.RefreshChart(); + while (serie.label.offset[1] < 20) + { + serie.label.offset = new Vector3(serie.label.offset.x, serie.label.offset.y + 20f * Time.deltaTime); + chart.RefreshChart(); + yield return null; + } + yield return new WaitForSeconds(1); + + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + serie.label.textStyle.color = Color.white; + serie.label.background.color = Color.grey; + serie.labelDirty = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + serie.label.show = false; + chart.RefreshChart(); + } + + /// <summary> + /// 添加多条线图 + /// </summary> + /// <returns></returns> + IEnumerator LineMutilSerie() + { + chart.GetChartComponent<Title>().subText = "多系列"; + var serie2 = chart.AddSerie<Line>("Line2"); + serie2.lineType = LineType.Normal; + for (int i = 0; i < m_DataNum; i++) + { + chart.AddData(1, UnityEngine.Random.Range(30, 90)); + } + yield return new WaitForSeconds(1); + + var serie3 = chart.AddSerie<Line>("Line3"); + serie3.lineType = LineType.Normal; + for (int i = 0; i < m_DataNum; i++) + { + chart.AddData(2, UnityEngine.Random.Range(30, 90)); + } + yield return new WaitForSeconds(1); + + var yAxis = chart.GetChartComponent<YAxis>(); + yAxis.minMaxType = Axis.AxisMinMaxType.Default; + chart.GetChartComponent<Title>().subText = "多系列 - 堆叠"; + serie.stack = "samename"; + serie2.stack = "samename"; + serie3.stack = "samename"; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example10_LineChart.cs.meta b/Assets/XCharts/Examples/Example10_LineChart.cs.meta new file mode 100644 index 0000000..b2fcde5 --- /dev/null +++ b/Assets/XCharts/Examples/Example10_LineChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6155c7e0df4504ebfaf0c671ae200197 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example11_AddSinCurve.cs b/Assets/XCharts/Examples/Example11_AddSinCurve.cs new file mode 100644 index 0000000..3149117 --- /dev/null +++ b/Assets/XCharts/Examples/Example11_AddSinCurve.cs @@ -0,0 +1,62 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example11_AddSinCurve : MonoBehaviour + { + private float time; + public int angle; + private LineChart chart; + + void Awake() + { + chart = gameObject.GetComponent<LineChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<LineChart>(); + } + chart.GetChartComponent<Title>().show = true; + chart.GetChartComponent<Title>().text = "Sin Curve"; + + chart.GetChartComponent<Tooltip>().show = true; + chart.GetChartComponent<Legend>().show = false; + + var xAxis = chart.GetChartComponent<XAxis>(); + var yAxis = chart.GetChartComponent<YAxis>(); + + xAxis.show = true; + yAxis.show = true; + + xAxis.type = Axis.AxisType.Value; + yAxis.type = Axis.AxisType.Value; + + xAxis.boundaryGap = false; + xAxis.maxCache = 0; + chart.series[0].maxCache = 0; + + chart.RemoveData(); + + var serie = chart.AddSerie<Line>(); + serie.symbol.show = false; + serie.lineType = LineType.Normal; + for (angle = 0; angle < 1080; angle++) + { + float xvalue = Mathf.PI / 180 * angle; + float yvalue = Mathf.Sin(xvalue); + chart.AddData(0, xvalue, yvalue); + } + } + + void Update() + { + if (angle > 3000) return; + angle++; + float xvalue = Mathf.PI / 180 * angle; + float yvalue = Mathf.Sin(xvalue); + chart.AddData(0, xvalue, yvalue); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example11_AddSinCurve.cs.meta b/Assets/XCharts/Examples/Example11_AddSinCurve.cs.meta new file mode 100644 index 0000000..1f7901b --- /dev/null +++ b/Assets/XCharts/Examples/Example11_AddSinCurve.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b380753d3cb4149c4a3a65a1816e0cc7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example12_CustomDrawing.cs b/Assets/XCharts/Examples/Example12_CustomDrawing.cs new file mode 100644 index 0000000..ace1318 --- /dev/null +++ b/Assets/XCharts/Examples/Example12_CustomDrawing.cs @@ -0,0 +1,41 @@ +using UnityEngine; +using UnityEngine.UI; +using XCharts.Runtime; +using XUGL; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example12_CustomDrawing : MonoBehaviour + { + LineChart chart; + void Awake() + { + chart = gameObject.GetComponent<LineChart>(); + if (chart == null) return; + + chart.onDraw = delegate(VertexHelper vh) { }; + // or + chart.onDrawBeforeSerie = delegate(VertexHelper vh, Serie serie) { }; + // or + chart.onDrawAfterSerie = delegate(VertexHelper vh, Serie serie) + { + if (serie.index != 0) return; + var dataPoints = serie.context.dataPoints; + if (dataPoints.Count > 0) + { + var pos = dataPoints[3]; + var grid = chart.GetChartComponent<GridCoord>(); + var zeroPos = new Vector3(grid.context.x, grid.context.y); + var startPos = new Vector3(pos.x, zeroPos.y); + var endPos = new Vector3(pos.x, zeroPos.y + grid.context.height); + UGL.DrawLine(vh, startPos, endPos, chart.theme.serie.lineWidth, Color.blue); + UGL.DrawCricle(vh, pos, 5, Color.blue); + } + }; + // or + chart.onDrawTop = delegate(VertexHelper vh) { }; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example12_CustomDrawing.cs.meta b/Assets/XCharts/Examples/Example12_CustomDrawing.cs.meta new file mode 100644 index 0000000..c81c939 --- /dev/null +++ b/Assets/XCharts/Examples/Example12_CustomDrawing.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da550ad36be5f442e96ad021cc10ca68 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example13_LineSimple.cs b/Assets/XCharts/Examples/Example13_LineSimple.cs new file mode 100644 index 0000000..153ef57 --- /dev/null +++ b/Assets/XCharts/Examples/Example13_LineSimple.cs @@ -0,0 +1,59 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example13_LineSimple : MonoBehaviour + { + void Awake() + { + AddData(); + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + AddData(); + } + } + + void AddData() + { + var chart = gameObject.GetComponent<SimplifiedLineChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<SimplifiedLineChart>(); + chart.Init(); + chart.SetSize(580, 300); + } + chart.GetOrAddChartComponent<Title>().show = true; + chart.GetOrAddChartComponent<Title>().text = "Line Simple"; + + chart.GetOrAddChartComponent<Tooltip>().show = true; + chart.GetOrAddChartComponent<Legend>().show = false; + + var xAxis = chart.GetOrAddChartComponent<XAxis>(); + var yAxis = chart.GetOrAddChartComponent<YAxis>(); + xAxis.show = true; + yAxis.show = true; + xAxis.type = Axis.AxisType.Category; + yAxis.type = Axis.AxisType.Value; + + xAxis.splitNumber = 10; + xAxis.boundaryGap = true; + + chart.RemoveData(); + chart.AddSerie<SimplifiedLine>(); + chart.AddSerie<SimplifiedLine>(); + for (int i = 0; i < 200; i++) + { + chart.AddXAxisData("x" + i); + chart.AddData(0, Random.Range(10, 20)); + chart.AddData(1, Random.Range(10, 20)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example13_LineSimple.cs.meta b/Assets/XCharts/Examples/Example13_LineSimple.cs.meta new file mode 100644 index 0000000..4587607 --- /dev/null +++ b/Assets/XCharts/Examples/Example13_LineSimple.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6d0f65efd8e14ebdafa172e0ccbd562 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example20_BarChart.cs b/Assets/XCharts/Examples/Example20_BarChart.cs new file mode 100644 index 0000000..270321a --- /dev/null +++ b/Assets/XCharts/Examples/Example20_BarChart.cs @@ -0,0 +1,158 @@ +using System.Collections; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + public class Example20_BarChart : MonoBehaviour + { + private BarChart chart; + private Serie serie, serie2; + private int m_DataNum = 5; + + void Awake() + { + LoopDemo(); + } + + private void OnEnable() + { + LoopDemo(); + } + + void LoopDemo() + { + StopAllCoroutines(); + StartCoroutine(PieDemo()); + } + + IEnumerator PieDemo() + { + StartCoroutine(AddSimpleBar()); + yield return new WaitForSeconds(2); + StartCoroutine(BarMutilSerie()); + yield return new WaitForSeconds(3); + StartCoroutine(ZebraBar()); + yield return new WaitForSeconds(3); + StartCoroutine(SameBarAndNotStack()); + yield return new WaitForSeconds(3); + StartCoroutine(SameBarAndStack()); + yield return new WaitForSeconds(3); + StartCoroutine(SameBarAndPercentStack()); + yield return new WaitForSeconds(10); + + LoopDemo(); + } + + IEnumerator AddSimpleBar() + { + chart = gameObject.GetComponent<BarChart>(); + if (chart == null) chart = gameObject.AddComponent<BarChart>(); + chart.GetChartComponent<Title>().text = "BarChart - 柱状图"; + chart.GetChartComponent<Title>().subText = "普通柱状图"; + + var yAxis = chart.GetChartComponent<YAxis>(); + yAxis.minMaxType = Axis.AxisMinMaxType.Default; + + chart.RemoveData(); + serie = chart.AddSerie<Bar>("Bar1"); + + for (int i = 0; i < m_DataNum; i++) + { + chart.AddXAxisData("x" + (i + 1)); + chart.AddData(0, UnityEngine.Random.Range(30, 90)); + } + yield return new WaitForSeconds(1); + } + + IEnumerator BarMutilSerie() + { + chart.GetChartComponent<Title>().subText = "多条柱状图"; + + float now = serie.barWidth - 0.35f; + while (serie.barWidth > 0.35f) + { + serie.barWidth -= now * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + + serie2 = chart.AddSerie<Bar>("Bar2"); + serie2.lineType = LineType.Normal; + serie2.barWidth = 0.35f; + for (int i = 0; i < m_DataNum; i++) + { + chart.AddData(1, UnityEngine.Random.Range(20, 90)); + } + yield return new WaitForSeconds(1); + } + + IEnumerator ZebraBar() + { + chart.GetChartComponent<Title>().subText = "斑马柱状图"; + serie.barType = BarType.Zebra; + serie2.barType = BarType.Zebra; + serie.barZebraWidth = serie.barZebraGap = 4; + serie2.barZebraWidth = serie2.barZebraGap = 4; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + + IEnumerator SameBarAndNotStack() + { + chart.GetChartComponent<Title>().subText = "非堆叠同柱"; + serie.barType = serie2.barType = BarType.Normal; + serie.stack = ""; + serie2.stack = ""; + serie.barGap = -1; + serie2.barGap = -1; + yield return new WaitForSeconds(1); + } + + IEnumerator SameBarAndStack() + { + chart.GetChartComponent<Title>().subText = "堆叠同柱"; + serie.barType = serie2.barType = BarType.Normal; + serie.stack = "samename"; + serie2.stack = "samename"; + yield return new WaitForSeconds(1); + float now = 0.6f - serie.barWidth; + while (serie.barWidth < 0.6f) + { + serie.barWidth += now * Time.deltaTime; + serie2.barWidth += now * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + serie.barWidth = serie2.barWidth; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + + IEnumerator SameBarAndPercentStack() + { + chart.GetChartComponent<Title>().subText = "百分比堆叠同柱"; + serie.barType = serie2.barType = BarType.Normal; + serie.stack = "samename"; + serie2.stack = "samename"; + + serie.barPercentStack = true; + + serie.AddExtraComponent<LabelStyle>(); + serie.label.show = true; + serie.label.position = LabelStyle.Position.Center; + serie.label.textStyle.color = Color.white; + serie.label.formatter = "{d:f0}%"; + + serie2.label.show = true; + serie2.label.position = LabelStyle.Position.Center; + serie2.label.textStyle.color = Color.white; + serie2.label.formatter = "{d:f0}%"; + serie2.labelDirty = true; + + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example20_BarChart.cs.meta b/Assets/XCharts/Examples/Example20_BarChart.cs.meta new file mode 100644 index 0000000..c5ef6fd --- /dev/null +++ b/Assets/XCharts/Examples/Example20_BarChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03916f7ca858b446883197ae17e50f16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example21_BarRace.cs b/Assets/XCharts/Examples/Example21_BarRace.cs new file mode 100644 index 0000000..c14e3ff --- /dev/null +++ b/Assets/XCharts/Examples/Example21_BarRace.cs @@ -0,0 +1,46 @@ +using System.Collections; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + public class Example21_BarRace : MonoBehaviour + { + private BarChart chart; + private float lastTime; + + void Awake() + { + chart = gameObject.GetComponent<BarChart>(); + chart.ClearData(); + for (int i = 0; i < 5; i++) + { + chart.AddYAxisData("y" + i); + chart.AddData(0, Random.Range(0, 200)); + } + } + + void Update() + { + if (Time.time - lastTime >= 3f) + { + lastTime = Time.time; + UpdateData(); + } + } + + void UpdateData() + { + var serie = chart.GetSerie(0); + + for (int i = 0; i < serie.dataCount; i++) + { + if (Random.Range(0, 1f) > 0.9f) + chart.UpdateData(0, i, chart.GetData(0, i) + Mathf.Round(Random.Range(0, 2000))); + else + chart.UpdateData(0, i, chart.GetData(0, i) + Mathf.Round(Random.Range(0, 200))); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example21_BarRace.cs.meta b/Assets/XCharts/Examples/Example21_BarRace.cs.meta new file mode 100644 index 0000000..70e9a19 --- /dev/null +++ b/Assets/XCharts/Examples/Example21_BarRace.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9842ca7fe07044666950b6f53ef65fdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example30_PieChart.cs b/Assets/XCharts/Examples/Example30_PieChart.cs new file mode 100644 index 0000000..e40f063 --- /dev/null +++ b/Assets/XCharts/Examples/Example30_PieChart.cs @@ -0,0 +1,205 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.EventSystems; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + public class Example30_PieChart : MonoBehaviour + { + private PieChart chart; + private Serie serie, serie1; + private float m_RadiusSpeed = 100f; + private float m_CenterSpeed = 1f; + + void Awake() + { + LoopDemo(); + } + + private void OnEnable() + { + LoopDemo(); + } + + void LoopDemo() + { + StopAllCoroutines(); + StartCoroutine(PieDemo()); + } + + IEnumerator PieDemo() + { + StartCoroutine(PieAdd()); + yield return new WaitForSeconds(2); + StartCoroutine(PieShowLabel()); + yield return new WaitForSeconds(4); + StartCoroutine(Doughnut()); + yield return new WaitForSeconds(3); + StartCoroutine(DoublePie()); + yield return new WaitForSeconds(2); + StartCoroutine(RosePie()); + yield return new WaitForSeconds(5); + LoopDemo(); + } + + IEnumerator PieAdd() + { + chart = gameObject.GetComponent<PieChart>(); + if (chart == null) chart = gameObject.AddComponent<PieChart>(); + chart.GetChartComponent<Title>().text = "PieChart - 饼图"; + chart.GetChartComponent<Title>().subText = "基础饼图"; + + var legend = chart.GetChartComponent<Legend>(); + legend.show = true; + legend.location.align = Location.Align.TopLeft; + legend.location.top = 60; + legend.location.left = 2; + legend.itemWidth = 70; + legend.itemHeight = 20; + legend.orient = Orient.Vertical; + + chart.RemoveData(); + serie = chart.AddSerie<Bar>("访问来源"); + serie.radius[0] = 0; + serie.radius[1] = 110; + serie.center[0] = 0.5f; + serie.center[1] = 0.4f; + chart.AddData(0, 335, "直接访问"); + chart.AddData(0, 310, "邮件营销"); + chart.AddData(0, 243, "联盟广告"); + chart.AddData(0, 135, "视频广告"); + chart.AddData(0, 1548, "搜索引擎"); + + chart.onPointerClickPie = delegate(PointerEventData e, int serieIndex, int dataIndex) + { + + }; + yield return new WaitForSeconds(1); + } + + IEnumerator PieShowLabel() + { + chart.GetChartComponent<Title>().subText = "显示文本标签"; + + serie.AddExtraComponent<LabelStyle>(); + serie.label.show = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + serie.labelLine.lineType = LabelLine.LineType.Curves; + chart.RefreshChart(); + + yield return new WaitForSeconds(1); + serie.labelLine.lineType = LabelLine.LineType.HorizontalLine; + chart.RefreshChart(); + + yield return new WaitForSeconds(1); + serie.labelLine.lineType = LabelLine.LineType.BrokenLine; + chart.RefreshChart(); + + yield return new WaitForSeconds(1); + serie.labelLine.show = false; + chart.RefreshChart(); + } + + IEnumerator Doughnut() + { + chart.GetChartComponent<Title>().subText = "圆环图"; + serie.radius[0] = 2f; + while (serie.radius[0] < serie.radius[1] * 0.7f) + { + serie.radius[0] += m_RadiusSpeed * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + serie.gap = 1f; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + serie.data[0].selected = true; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + + serie.gap = 0f; + serie.data[0].selected = false; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + + IEnumerator DoublePie() + { + chart.GetChartComponent<Title>().subText = "多图组合"; + + serie1 = chart.AddSerie<Pie>("访问来源2"); + chart.AddData(1, 335, "直达"); + chart.AddData(1, 679, "营销广告"); + chart.AddData(1, 1548, "搜索引擎"); + serie1.radius[0] = 0; + serie1.radius[1] = 2f; + serie1.center[0] = 0.5f; + serie1.center[1] = 0.4f; + chart.RefreshChart(); + while (serie1.radius[1] < serie.radius[0] * 0.75f) + { + serie1.radius[1] += m_RadiusSpeed * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + + serie1.label.show = true; + serie1.label.position = LabelStyle.Position.Inside; + serie1.label.textStyle.color = Color.white; + serie1.label.textStyle.fontSize = 14; + + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + + IEnumerator RosePie() + { + chart.GetChartComponent<Title>().subText = "玫瑰图"; + chart.GetChartComponent<Legend>().show = false; + serie1.ClearData(); + serie.ClearData(); + serie1.radius = serie.radius = new float[2] { 0, 80 }; + serie1.label.position = LabelStyle.Position.Outside; + serie1.labelLine.lineType = LabelLine.LineType.Curves; + serie1.label.textStyle.color = Color.clear; + for (int i = 0; i < 2; i++) + { + chart.AddData(i, 10, "rose1"); + chart.AddData(i, 5, "rose2"); + chart.AddData(i, 15, "rose3"); + chart.AddData(i, 25, "rose4"); + chart.AddData(i, 20, "rose5"); + chart.AddData(i, 35, "rose6"); + chart.AddData(i, 30, "rose7"); + chart.AddData(i, 40, "rose8"); + } + + while (serie.center[0] > 0.25f || serie1.center[0] < 0.7f) + { + if (serie.center[0] > 0.25f) serie.center[0] -= m_CenterSpeed * Time.deltaTime; + if (serie1.center[0] < 0.7f) serie1.center[0] += m_CenterSpeed * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + yield return new WaitForSeconds(1); + while (serie.radius[0] > 3f) + { + serie.radius[0] -= m_RadiusSpeed * Time.deltaTime; + serie1.radius[0] -= m_RadiusSpeed * Time.deltaTime; + chart.RefreshChart(); + yield return null; + } + + serie.radius[0] = 0; + serie1.radius[0] = 0; + serie.pieRoseType = RoseType.Area; + serie1.pieRoseType = RoseType.Radius; + chart.RefreshChart(); + yield return new WaitForSeconds(1); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example30_PieChart.cs.meta b/Assets/XCharts/Examples/Example30_PieChart.cs.meta new file mode 100644 index 0000000..fb74aa5 --- /dev/null +++ b/Assets/XCharts/Examples/Example30_PieChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b8649d38981b4b5bbdf16e8f303fa1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example31_PieUpdateName.cs b/Assets/XCharts/Examples/Example31_PieUpdateName.cs new file mode 100644 index 0000000..8509105 --- /dev/null +++ b/Assets/XCharts/Examples/Example31_PieUpdateName.cs @@ -0,0 +1,74 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example31_PieUpdateName : MonoBehaviour + { + PieChart chart; + + void Awake() + { + chart = gameObject.GetComponent<PieChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<PieChart>(); + } + var serieIndex = 0; + var serie = chart.GetSerie(serieIndex); + if (serie == null) return; + serie.AddExtraComponent<LabelStyle>(); + serie.label.show = true; + serie.label.position = LabelStyle.Position.Outside; + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + ClearAndAddData(); + //UpdateDataName(); + //UpdateDataName(); + } + } + + void UpdateDataName() + { + var serieIndex = 0; + var serie = chart.GetSerie(serieIndex); + if (serie == null) return; + for (int i = 0; i < serie.dataCount; i++) + { + var value = Random.Range(10, 100); + chart.UpdateData(serieIndex, i, value); + chart.UpdateDataName(serieIndex, i, "value=" + value); + } + } + + void ResetSameName() + { + var serieIndex = 0; + var serie = chart.GetSerie(serieIndex); + if (serie == null) return; + for (int i = 0; i < serie.dataCount; i++) + { + chart.UpdateDataName(serieIndex, i, "piename"); + } + } + + void ClearAndAddData() + { + var serieIndex = 0; + var serie = chart.GetSerie(serieIndex); + if (serie == null) return; + int count = serie.dataCount; + serie.ClearData(); + for (int i = 0; i < count; i++) + { + chart.AddData(0, Random.Range(0, 100), "pie" + i); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example31_PieUpdateName.cs.meta b/Assets/XCharts/Examples/Example31_PieUpdateName.cs.meta new file mode 100644 index 0000000..2afd8a2 --- /dev/null +++ b/Assets/XCharts/Examples/Example31_PieUpdateName.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41195ee7a652f4ef79c22c365d314621 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example40_Radar.cs b/Assets/XCharts/Examples/Example40_Radar.cs new file mode 100644 index 0000000..f33dc25 --- /dev/null +++ b/Assets/XCharts/Examples/Example40_Radar.cs @@ -0,0 +1,135 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + public class Example40_Radar : MonoBehaviour + { + private RadarChart chart; + private Serie serie, serie1; + void Awake() + { + LoopDemo(); + } + + private void OnEnable() + { + LoopDemo(); + } + + void LoopDemo() + { + StopAllCoroutines(); + StartCoroutine(RadarDemo()); + } + + IEnumerator RadarDemo() + { + StartCoroutine(RadarAdd()); + yield return new WaitForSeconds(2); + StartCoroutine(RadarUpdate()); + yield return new WaitForSeconds(2); + StartCoroutine(RadarAddMultiple()); + yield return new WaitForSeconds(2); + LoopDemo(); + } + + IEnumerator RadarAdd() + { + chart = gameObject.GetComponent<RadarChart>(); + if (chart == null) chart = gameObject.AddComponent<RadarChart>(); + + chart.RemoveChartComponents<RadarCoord>(); + chart.RemoveData(); + + chart.GetChartComponent<Title>().text = "RadarChart - 雷达图"; + chart.GetChartComponent<Title>().subText = ""; + + var legend = chart.GetChartComponent<Legend>(); + legend.show = true; + legend.location.align = Location.Align.TopLeft; + legend.location.top = 60; + legend.location.left = 2; + legend.itemWidth = 70; + legend.itemHeight = 20; + legend.orient = Orient.Vertical; + + var radarCoord = chart.AddChartComponent<RadarCoord>(); + radarCoord.shape = RadarCoord.Shape.Polygon; + radarCoord.center[0] = 0.5f; + radarCoord.center[1] = 0.4f; + radarCoord.radius = 0.4f; + + radarCoord.AddIndicator("indicator1", 0, 100); + radarCoord.AddIndicator("indicator2", 0, 100); + radarCoord.AddIndicator("indicator3", 0, 100); + radarCoord.AddIndicator("indicator4", 0, 100); + radarCoord.AddIndicator("indicator5", 0, 100); + + serie = chart.AddSerie<Radar>("test"); + serie.radarIndex = 0; + chart.AddData(0, new List<double> { 10, 20, 60, 40, 20 }, "data1"); + chart.AddData(0, new List<double> { 40, 60, 90, 80, 70 }, "data2"); + yield return new WaitForSeconds(1); + } + + IEnumerator RadarUpdate() + { + var radarCoord = chart.GetChartComponent<RadarCoord>(); + radarCoord.UpdateIndicator(0, "new1", 0, 100); + chart.UpdateData(0, 0, new List<double> { 15, 30, 50, 60, 50 }); + chart.UpdateDataName(0, 0, "new1"); + yield return new WaitForSeconds(1); + } + + IEnumerator RadarAddMultiple() + { + chart.RemoveChartComponents<RadarCoord>(); + chart.RemoveData(); + + chart.GetChartComponent<Title>().text = "RadarChart - 多雷达图"; + chart.GetChartComponent<Title>().subText = ""; + + var legend = chart.GetChartComponent<Legend>(); + legend.show = true; + legend.location.align = Location.Align.TopLeft; + legend.location.top = 60; + legend.location.left = 2; + legend.itemWidth = 70; + legend.itemHeight = 20; + legend.orient = Orient.Vertical; + + var radarCoord = chart.AddChartComponent<RadarCoord>(); + radarCoord.shape = RadarCoord.Shape.Polygon; + radarCoord.center[0] = 0.25f; + radarCoord.center[1] = 0.4f; + radarCoord.radius = 0.25f; + for (int i = 1; i <= 5; i++) + { + radarCoord.AddIndicator("radar1" + i, 0, 100); + } + + var radarCoord2 = chart.AddChartComponent<RadarCoord>(); + radarCoord2.shape = RadarCoord.Shape.Polygon; + radarCoord2.center[0] = 0.75f; + radarCoord2.center[1] = 0.4f; + radarCoord2.radius = 0.25f; + for (int i = 1; i <= 5; i++) + { + radarCoord2.AddIndicator("radar2" + i, 0, 100); + } + + serie = chart.AddSerie<Radar>("test1"); + serie.radarIndex = 0; + chart.AddData(0, new List<double> { 10, 20, 60, 40, 20 }, "data1"); + + serie1 = chart.AddSerie<Radar>("test2"); + serie1.radarIndex = 1; + chart.AddData(1, new List<double> { 10, 20, 60, 40, 20 }, "data2"); + yield return new WaitForSeconds(1); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example40_Radar.cs.meta b/Assets/XCharts/Examples/Example40_Radar.cs.meta new file mode 100644 index 0000000..2421445 --- /dev/null +++ b/Assets/XCharts/Examples/Example40_Radar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95a60d7e7a0fc41ecaec5f48823b70bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example41_RadarUpdate.cs b/Assets/XCharts/Examples/Example41_RadarUpdate.cs new file mode 100644 index 0000000..baaa46b --- /dev/null +++ b/Assets/XCharts/Examples/Example41_RadarUpdate.cs @@ -0,0 +1,73 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example41_RadarUpdate : MonoBehaviour + { + RadarChart chart; + int count = 0; + double max = 0; + + void Awake() + { + chart = gameObject.GetComponent<RadarChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<RadarChart>(); + } + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + UpdateData(); + count++; + } + UpdateMax(); + } + + void UpdateData() + { + var serieIndex = 0; + var serie = chart.GetSerie(serieIndex); + if (serie == null) return; + if (serie.radarType == RadarType.Multiple) + { + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.GetSerieData(i); + for (int j = 0; j < serieData.data.Count; j++) + { + var value = Random.Range(10, 100); + chart.UpdateData(serieIndex, i, j, value); + } + } + } + else + { + for (int i = 0; i < serie.dataCount; i++) + { + var value = Random.Range(10, 100); + chart.UpdateData(serieIndex, i, value); + } + } + chart.GetChartComponent<Title>().subText = "max:" + serie.context.dataMax; + } + + void UpdateMax() + { + var serieIndex = 0; + var serie = chart.GetSerie(serieIndex); + if (serie == null) return; + if (serie.context.dataMax != max) + { + chart.GetChartComponent<Title>().subText = "max:" + serie.context.dataMax; + max = serie.context.dataMax; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example41_RadarUpdate.cs.meta b/Assets/XCharts/Examples/Example41_RadarUpdate.cs.meta new file mode 100644 index 0000000..b0a750e --- /dev/null +++ b/Assets/XCharts/Examples/Example41_RadarUpdate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a2ad6907bd5045ec920b4f0e359535e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example50_Scatter.cs b/Assets/XCharts/Examples/Example50_Scatter.cs new file mode 100644 index 0000000..74b8d6c --- /dev/null +++ b/Assets/XCharts/Examples/Example50_Scatter.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example50_Scatter : MonoBehaviour + { + private ScatterChart chart; + + void Awake() + { + chart = gameObject.GetComponent<ScatterChart>(); + if (chart == null) return; + foreach (var serie in chart.series) + { + serie.symbol.sizeFunction = SymbolSize; + serie.symbol.selectedSizeFunction = SymbolSelectedSize; + } + } + + float SymbolSize(List<double> data) + { + return (float) (Math.Sqrt(data[2]) / 6e2); + } + + float SymbolSelectedSize(List<double> data) + { + return (float) (Math.Sqrt(data[2]) / 5e2); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example50_Scatter.cs.meta b/Assets/XCharts/Examples/Example50_Scatter.cs.meta new file mode 100644 index 0000000..62269c7 --- /dev/null +++ b/Assets/XCharts/Examples/Example50_Scatter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e6c9b864ab644b45ae93df3878ab1dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example60_Heatmap.cs b/Assets/XCharts/Examples/Example60_Heatmap.cs new file mode 100644 index 0000000..9627324 --- /dev/null +++ b/Assets/XCharts/Examples/Example60_Heatmap.cs @@ -0,0 +1,111 @@ +using System.Collections.Generic; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example60_Heatmap : MonoBehaviour + { + private HeatmapChart chart; + + void Awake() + { + chart = gameObject.GetComponent<HeatmapChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<HeatmapChart>(); + } + chart.GetChartComponent<Title>().text = "HeatmapChart"; + chart.GetChartComponent<Tooltip>().type = Tooltip.Type.None; + + var grid = chart.GetChartComponent<GridCoord>(); + grid.left = 100; + grid.right = 60; + grid.bottom = 60; + + var xAxis = chart.GetChartComponent<XAxis>(); + var yAxis = chart.GetChartComponent<YAxis>(); + //目前只支持Category + xAxis.type = Axis.AxisType.Category; + yAxis.type = Axis.AxisType.Category; + + xAxis.boundaryGap = true; + xAxis.boundaryGap = true; + + xAxis.splitNumber = 10; + yAxis.splitNumber = 10; + + //清空数据重新添加 + chart.RemoveData(); + var serie = chart.AddSerie<Heatmap>("serie1"); + + //设置样式 + serie.itemStyle.show = true; + serie.itemStyle.borderWidth = 1; + serie.itemStyle.borderColor = Color.clear; + + //设置高亮样式 + serie.AddExtraComponent<EmphasisItemStyle>(); + serie.emphasisItemStyle.show = true; + serie.emphasisItemStyle.borderWidth = 1; + serie.emphasisItemStyle.borderColor = Color.black; + + //设置视觉映射组件 + var visualMap = chart.GetChartComponent<VisualMap>(); + visualMap.max = 10; + visualMap.range[0] = 0f; + visualMap.range[1] = 10f; + visualMap.orient = Orient.Vertical; + visualMap.calculable = true; + visualMap.location.align = Location.Align.BottomLeft; + visualMap.location.bottom = 100; + visualMap.location.left = 30; + + //清空颜色重新添加 + + var heatmapGridWid = 10f; + int xSplitNumber = (int) (grid.context.width / heatmapGridWid); + int ySplitNumber = (int) (grid.context.height / heatmapGridWid); + var colors = new List<string> + { + "#313695", + "#4575b4", + "#74add1", + "#abd9e9", + "#e0f3f8", + "#ffffbf", + "#fee090", + "#fdae61", + "#f46d43", + "#d73027", + "#a50026" + }; + visualMap.AddColors(colors); + //添加xAxis的数据 + for (int i = 0; i < xSplitNumber; i++) + { + chart.AddXAxisData((i + 1).ToString()); + } + //添加yAxis的数据 + for (int i = 0; i < ySplitNumber; i++) + { + chart.AddYAxisData((i + 1).ToString()); + } + for (int i = 0; i < xSplitNumber; i++) + { + for (int j = 0; j < ySplitNumber; j++) + { + var value = 0f; + var rate = Random.Range(0, 101); + if (rate > 70) value = Random.Range(8f, 10f); + else value = Random.Range(1f, 8f); + var list = new List<double> { i, j, value }; + //至少是一个三位数据:(x,y,value) + chart.AddData(0, list); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example60_Heatmap.cs.meta b/Assets/XCharts/Examples/Example60_Heatmap.cs.meta new file mode 100644 index 0000000..9ec94e3 --- /dev/null +++ b/Assets/XCharts/Examples/Example60_Heatmap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e702e0ac05be84dbe9622180d4f6ef71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example80_Polar.cs b/Assets/XCharts/Examples/Example80_Polar.cs new file mode 100644 index 0000000..fdfb0b0 --- /dev/null +++ b/Assets/XCharts/Examples/Example80_Polar.cs @@ -0,0 +1,52 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example80_Polar : MonoBehaviour + { + private BaseChart chart; + private float updateTime; + + void Awake() + { + chart = gameObject.GetComponent<BaseChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<BaseChart>(); + } + chart.GetOrAddChartComponent<PolarCoord>(); + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + AddData(); + } + } + + void AddData() + { + chart.RemoveData(); + chart.GetChartComponent<Tooltip>().type = Tooltip.Type.Corss; + var angleAxis = chart.GetChartComponent<AngleAxis>(); + angleAxis.type = Axis.AxisType.Value; + angleAxis.minMaxType = Axis.AxisMinMaxType.Custom; + angleAxis.min = 0; + angleAxis.max = 360; + angleAxis.startAngle = Random.Range(0, 90); + chart.AddSerie<Line>("line1"); + + var rate = Random.Range(1, 4); + for (int i = 0; i <= 360; i++) + { + var t = i / 180f * Mathf.PI; + var r = Mathf.Sin(2 * t) * Mathf.Cos(2 * t) * rate; + chart.AddData(0, Mathf.Abs(r), i); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example80_Polar.cs.meta b/Assets/XCharts/Examples/Example80_Polar.cs.meta new file mode 100644 index 0000000..ea734cf --- /dev/null +++ b/Assets/XCharts/Examples/Example80_Polar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca29783da761a4e0e9c5204d5b24b610 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example90_Candlestick.cs b/Assets/XCharts/Examples/Example90_Candlestick.cs new file mode 100644 index 0000000..895e305 --- /dev/null +++ b/Assets/XCharts/Examples/Example90_Candlestick.cs @@ -0,0 +1,68 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example90_Candlestick : MonoBehaviour + { + private CandlestickChart chart; + private float updateTime; + public int dataCount = 100; + + void Awake() + { + chart = gameObject.GetComponent<CandlestickChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<CandlestickChart>(); + } + GenerateOHLC(dataCount); + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + AddData(); + } + } + + void AddData() { } + + void GenerateOHLC(int count) + { + chart.ClearData(); + + var xValue = System.DateTime.Now; + var baseValue = Random.Range(0f, 1f) * 12000; + var boxVals = new float[4]; + var dayRange = 12; + + for (int i = 0; i < count; i++) + { + baseValue = baseValue + Random.Range(0f, 1f) * 30 - 10; + for (int j = 0; j < 4; j++) + { + boxVals[j] = (Random.Range(0f, 1f) - 0.5f) * dayRange + baseValue; + } + System.Array.Sort(boxVals); + var openIdx = Mathf.RoundToInt(Random.Range(0f, 1f) * 3); + var closeIdx = Mathf.RoundToInt(Random.Range(0f, 1f) * 2); + if (openIdx == closeIdx) + { + closeIdx++; + } + //var volumn = boxVals[3]*(1000+Random.Range(0f,1f) * 500); + var open = boxVals[openIdx]; + var close = boxVals[closeIdx]; + var lowest = boxVals[0]; + var heighest = boxVals[3]; + + chart.AddXAxisData(i.ToString()); + chart.AddData(0, open, close, lowest, heighest); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example90_Candlestick.cs.meta b/Assets/XCharts/Examples/Example90_Candlestick.cs.meta new file mode 100644 index 0000000..189a372 --- /dev/null +++ b/Assets/XCharts/Examples/Example90_Candlestick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69c7f3bf337c843888b4a7031eef1027 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example_AddChart.cs b/Assets/XCharts/Examples/Example_AddChart.cs new file mode 100644 index 0000000..8035976 --- /dev/null +++ b/Assets/XCharts/Examples/Example_AddChart.cs @@ -0,0 +1,66 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + //[ExecuteInEditMode] + public class Example_AddChart : MonoBehaviour + { + BaseChart chart; + void Awake() + { + //AddChart(); + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + AddChart(); + } + } + + void AddChart() + { + chart = gameObject.GetComponent<BaseChart>(); + if (chart == null) + { + chart = gameObject.AddComponent<LineChart>(); + chart.Init(); + chart.SetSize(1200, 600); + } + var title = chart.GetOrAddChartComponent<Title>(); + title.text = "Simple LineChart"; + title.subText = "normal line"; + + var tooltip = chart.GetOrAddChartComponent<Tooltip>(); + tooltip.show = true; + + var legend = chart.GetOrAddChartComponent<Legend>(); + legend.show = false; + + var xAxis = chart.GetOrAddChartComponent<XAxis>(); + xAxis.splitNumber = 10; + xAxis.boundaryGap = true; + xAxis.type = Axis.AxisType.Category; + + var yAxis = chart.GetOrAddChartComponent<YAxis>(); + yAxis.type = Axis.AxisType.Value; + + chart.RemoveData(); + chart.AddSerie<Line>("line"); + + for (int i = 0; i < 5; i++) + { + chart.AddXAxisData("x" + i); + chart.AddData(0, Random.Range(10, 20)); + } + } + + void ModifyComponent() + { + + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example_AddChart.cs.meta b/Assets/XCharts/Examples/Example_AddChart.cs.meta new file mode 100644 index 0000000..2fdb2ea --- /dev/null +++ b/Assets/XCharts/Examples/Example_AddChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e5c24ed461624b8d924dfb1285e0a95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example_Component.cs b/Assets/XCharts/Examples/Example_Component.cs new file mode 100644 index 0000000..9847c97 --- /dev/null +++ b/Assets/XCharts/Examples/Example_Component.cs @@ -0,0 +1,35 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + //[ExecuteInEditMode] + public class Example_Component : MonoBehaviour + { + BaseChart chart; + void Awake() + { + chart = gameObject.GetComponent<BaseChart>(); + } + + void ModifyComponent() + { + var title = chart.GetOrAddChartComponent<Title>(); + title.text = "Simple LineChart"; + title.subText = "normal line"; + + var serie1 = chart.AddSerie<Line>(); + //var serie2 = chart.GetSerie<Line>(); + + serie1.AddExtraComponent<AreaStyle>(); + var label = serie1.AddExtraComponent<LabelStyle>(); + label.offset = new Vector3(0, 20, 0); + + var serieData = chart.AddData(0, 20); + serieData.radius = 10; + var itemStyle = serieData.GetOrAddComponent<ItemStyle>(); + itemStyle.color = Color.blue; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example_Component.cs.meta b/Assets/XCharts/Examples/Example_Component.cs.meta new file mode 100644 index 0000000..add53bc --- /dev/null +++ b/Assets/XCharts/Examples/Example_Component.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e9941e7d67e44b18899e6048d4ef25a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example_Dynamic.cs b/Assets/XCharts/Examples/Example_Dynamic.cs new file mode 100644 index 0000000..e2a2f94 --- /dev/null +++ b/Assets/XCharts/Examples/Example_Dynamic.cs @@ -0,0 +1,70 @@ +using System; +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + //[ExecuteInEditMode] + [RequireComponent(typeof(BaseChart))] + public class Example_Dynamic : MonoBehaviour + { + public int maxCacheDataNumber = 100; + public float initDataTime = 2; + public bool insertDataToHead = true; + + private BaseChart chart; + private float updateTime; + private float initTime; + private int initCount; + private int count; + private bool isInited; + private DateTime timeNow; + + void Awake() + { + chart = gameObject.GetComponent<BaseChart>(); + var serie = chart.GetSerie(0); + serie.symbol.show = false; + serie.maxCache = maxCacheDataNumber; + + var xAxis = chart.GetOrAddChartComponent<XAxis>(); + xAxis.maxCache = maxCacheDataNumber; + timeNow = DateTime.Now; + timeNow = timeNow.AddSeconds(-maxCacheDataNumber); + + serie.insertDataToHead = insertDataToHead; + xAxis.insertDataToHead = insertDataToHead; + } + + void Update() + { + if (initCount < maxCacheDataNumber) + { + int count = (int) (maxCacheDataNumber / initDataTime * Time.deltaTime); + for (int i = 0; i < count; i++) + { + timeNow = timeNow.AddSeconds(1); + var category = timeNow.ToString("hh:mm:ss"); + var value = UnityEngine.Random.Range(60, 150); + chart.AddXAxisData(category); + chart.AddData(0, value); + initCount++; + if (initCount > maxCacheDataNumber) break; + } + chart.RefreshChart(); + } + updateTime += Time.deltaTime; + if (updateTime >= 1) + { + var category = DateTime.Now.ToString("hh:mm:ss"); + var value = UnityEngine.Random.Range(60, 150); + updateTime = 0; + count++; + chart.AddXAxisData(category); + chart.AddData(0, value); + chart.RefreshChart(); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example_Dynamic.cs.meta b/Assets/XCharts/Examples/Example_Dynamic.cs.meta new file mode 100644 index 0000000..4dd42ea --- /dev/null +++ b/Assets/XCharts/Examples/Example_Dynamic.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 310037ac5daa645058285cf176cc9eab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example_LargeData.cs b/Assets/XCharts/Examples/Example_LargeData.cs new file mode 100644 index 0000000..6165c14 --- /dev/null +++ b/Assets/XCharts/Examples/Example_LargeData.cs @@ -0,0 +1,52 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + [RequireComponent(typeof(BaseChart))] + public class Example_LargeData : MonoBehaviour + { + public int maxCacheDataNumber = 1000; + public float initDataTime = 5; + + private BaseChart chart; + private float initTime; + private int initCount = 0; + private System.DateTime timeNow; + + void Awake() + { + chart = gameObject.GetComponentInChildren<BaseChart>(); + timeNow = System.DateTime.Now; + chart.ClearData(); + chart.SetMaxCache(maxCacheDataNumber); + chart.GetChartComponent<Title>().text = maxCacheDataNumber + "数据"; + } + + private double lastValue = 0d; + + private void Update() + { + if (initCount < maxCacheDataNumber) + { + for (int i = 0; i < 20; i++) + { + initCount++; + if (initCount > maxCacheDataNumber) break; + chart.GetChartComponent<Title>().text = initCount + "数据"; + + timeNow = timeNow.AddSeconds(1); + if (lastValue < 20) + lastValue += UnityEngine.Random.Range(0, 5); + else + lastValue += UnityEngine.Random.Range(-5f, 5f); + chart.AddData(0, lastValue); + + chart.AddXAxisData(timeNow.ToString("hh:mm:ss")); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example_LargeData.cs.meta b/Assets/XCharts/Examples/Example_LargeData.cs.meta new file mode 100644 index 0000000..f832dd3 --- /dev/null +++ b/Assets/XCharts/Examples/Example_LargeData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 188d38c155a804c7d9d31730d3b12885 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example_PieChart.cs b/Assets/XCharts/Examples/Example_PieChart.cs new file mode 100644 index 0000000..173b55c --- /dev/null +++ b/Assets/XCharts/Examples/Example_PieChart.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + [RequireComponent(typeof(PieChart))] + public class Example_PieChart : MonoBehaviour + { + private PieChart chart; + private float time; + private int count = 0; + + private void Awake() + { + chart = transform.GetComponent<PieChart>(); + chart.ClearData(); + } + + private void Update() + { + time += Time.deltaTime; + if (time > 1) + { + time = 0; + if (count < 5) + { + chart.AddData(0, Random.Range(10, 100), "time" + count); + } + else + { + int index = count % 5; + chart.UpdateData(0, Random.Range(10, 100), index); + } + count++; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example_PieChart.cs.meta b/Assets/XCharts/Examples/Example_PieChart.cs.meta new file mode 100644 index 0000000..925d44c --- /dev/null +++ b/Assets/XCharts/Examples/Example_PieChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a36ce96ed11a24212aafad603286a3ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example_Test.cs b/Assets/XCharts/Examples/Example_Test.cs new file mode 100644 index 0000000..f105bc7 --- /dev/null +++ b/Assets/XCharts/Examples/Example_Test.cs @@ -0,0 +1,66 @@ +using UnityEngine; +using UnityEngine.UI; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example_Test : MonoBehaviour + { + BaseChart chart; + void Awake() + { + chart = gameObject.GetComponent<BaseChart>(); + var btnTrans = transform.parent.Find("Button"); + if (btnTrans) + { + btnTrans.gameObject.GetComponent<Button>().onClick.AddListener(OnTestBtn); + } + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + AddData(); + //OnTestBtn(); + } + } + + void OnTestBtn() + { + object[][] m_TestData = new object[][] + { + new object[] { "01/06/20", 2.2d, 5.6d }, + new object[] { "22/06/20", 2.4d, 5.3d }, + new object[] { "04/08/21", 4.5d, 5.4d }, + new object[] { "05/08/21", 6.3d, 6.4d }, + new object[] { "06/08/21", 3.1d, 6.4d }, + new object[] { "09/08/21", 3.9d, 6.3d }, + new object[] { "10/08/21", 1.9d, 4.6d }, + }; + chart.ClearData(); + foreach (var list in m_TestData) + { + chart.AddXAxisData((string) list[0]); + chart.AddData(0, (double) list[1]); + chart.AddData(1, (double) list[2]); + } + } + + void AddData() + { + chart.ClearData(); + int count = Random.Range(5, 100); + for (int i = 0; i < count; i++) + { + chart.AddXAxisData("x" + i); + if (Random.Range(1, 3) == 2) + chart.AddData(0, Random.Range(-110, 200)); + else + chart.AddData(0, Random.Range(-100, 100)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example_Test.cs.meta b/Assets/XCharts/Examples/Example_Test.cs.meta new file mode 100644 index 0000000..7ee7459 --- /dev/null +++ b/Assets/XCharts/Examples/Example_Test.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bac63bf58d06d47be8e1759189fbd9ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/Example_TestTime.cs b/Assets/XCharts/Examples/Example_TestTime.cs new file mode 100644 index 0000000..59f813d --- /dev/null +++ b/Assets/XCharts/Examples/Example_TestTime.cs @@ -0,0 +1,50 @@ +using UnityEngine; +using XCharts.Runtime; + +namespace XCharts.Example +{ + [DisallowMultipleComponent] + [ExecuteInEditMode] + public class Example_TestTime : MonoBehaviour + { + public int maxCache = 100; + LineChart chart; + int timestamp; + void Awake() + { + chart = gameObject.GetComponent<LineChart>(); + AddData(); + chart.SetMaxCache(maxCache); + } + + float m_LastTime = 0; + double m_Value = 100; + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + //AddData(); + } + if (Time.time - m_LastTime > 0.1f) + { + timestamp += 3600; + m_Value += 10; + chart.AddData(0, timestamp, m_Value); + m_LastTime = Time.time; + + } + } + + void AddData() + { + chart.ClearData(); + timestamp = DateTimeUtil.GetTimestamp() - 10; + for (int i = 0; i < 10; i++) + { + timestamp += i * 3600; + double value = Random.Range(50, 200); + chart.AddData(0, timestamp, value); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/Example_TestTime.cs.meta b/Assets/XCharts/Examples/Example_TestTime.cs.meta new file mode 100644 index 0000000..98f3d2d --- /dev/null +++ b/Assets/XCharts/Examples/Example_TestTime.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43b48222f7ffc420098593a8fe4bfc24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Examples/XCharts.Examples.asmdef b/Assets/XCharts/Examples/XCharts.Examples.asmdef new file mode 100644 index 0000000..638b296 --- /dev/null +++ b/Assets/XCharts/Examples/XCharts.Examples.asmdef @@ -0,0 +1,14 @@ +{ + "name": "XCharts.Examples", + "references": [ + "XCharts.Runtime" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/XCharts/Examples/XCharts.Examples.asmdef.meta b/Assets/XCharts/Examples/XCharts.Examples.asmdef.meta new file mode 100644 index 0000000..454b078 --- /dev/null +++ b/Assets/XCharts/Examples/XCharts.Examples.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9ca8daef375784f86b76407e76c9045a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/LICENSE.md b/Assets/XCharts/LICENSE.md new file mode 100644 index 0000000..f250a04 --- /dev/null +++ b/Assets/XCharts/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 - 2022 monitor1394 + +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. diff --git a/Assets/XCharts/LICENSE.md.meta b/Assets/XCharts/LICENSE.md.meta new file mode 100644 index 0000000..6a70383 --- /dev/null +++ b/Assets/XCharts/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: effab8d087eba4ef1957a08a3607a0b1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/README.md b/Assets/XCharts/README.md new file mode 100644 index 0000000..4f5bfd4 --- /dev/null +++ b/Assets/XCharts/README.md @@ -0,0 +1,153 @@ +<p align="center"> + <a href=""> + <img src="" alt="" width="" height=""> + </a> +</p> +<h2 align="center">XCharts</h3> +<p align="center"> + A powerful, easy-to-use, configurable charting and data visualization library for Unity. + <br> + Unity数据可视化图表插件。 + <br> + <a href="Documentation/README-EN.md">English README</a> +</p> +<p align="center"> + <a href="https://github.com/XCharts-Team/XCharts/blob/master/LICENSE"> + <img src="https://img.shields.io/github/license/XCharts-Team/XCharts"> + </a> + <a href="https://github.com/XCharts-Team/XCharts/releases"> + <img src="https://img.shields.io/github/v/release/XCharts-Team/XCharts?include_prereleases"> + </a> + <a href=""> + <img src="https://img.shields.io/github/repo-size/monitor1394/unity-ugui-xcharts"> + </a> + <a href=""> + <img src="https://img.shields.io/github/languages/code-size/monitor1394/unity-ugui-xcharts"> + </a> + <a href=""> + <img src="https://img.shields.io/badge/Unity-5.6+-green"> + </a> + <a href=""> + <img src="https://img.shields.io/badge/TextMeshPro-YES-green"> + </a> +</p> +<p align="center"> + <a href=""> + <img src="https://img.shields.io/github/stars/XCharts-Team/XCharts?style=social"> + </a> + <a href=""> + <img src="https://img.shields.io/github/forks/XCharts-Team/XCharts?style=social"> + </a> + <a href=""> + <img src="https://img.shields.io/github/issues-closed/XCharts-Team/XCharts?color=green&label=%20%20%20%20issues&logoColor=green&style=social"> + </a> +</p> + +一款基于`UGUI`的功能强大、易用、参数可配置的数据可视化图表插件。支持`折线图`、`柱状图`、`饼图`、`雷达图`、`散点图`、`热力图`、`环形图`、`K线图`、`极坐标`、`平行坐标`等十种常见免费内置图表,以及`3D饼图`、`3D柱图`、`3D金字塔`、`漏斗图`、`仪表盘`、`水位图`、`象形柱图`、`甘特图`、`矩形树图`等多种扩展图表。 + +[XCharts3.0 教程](Documentation/XChartsTutorial01-ZH.md) +[XCharts3.0 API](Documentation/XChartsAPI-ZH.md) +[XCharts3.0 问答](Documentation/XChartsFAQ-ZH.md) +[XCharts3.0 配置项手册](Documentation/XChartsConfiguration-ZH.md) +[XCharts3.0 更新日志](CHANGELOG.md) +[XCharts3.0 订阅服务](Documentation/SUPPORT.md) + +## 特性 + +- 参数可视化配置,效果实时预览,纯代码绘制,无需额外资源。 +- 支持折线图、柱状图、饼图、雷达图、散点图、热力图、环形图、K线图、极坐标、平行坐标等十种常见免费内置图表。 +- 支持3D柱图、漏斗图、金字塔、仪表盘、水位图、象形柱图、甘特图、矩形树图等多种付费扩展图表。 +- 支持直线图、曲线图、面积图、阶梯线图等折线图。 +- 支持并列柱图、堆叠柱图、堆积百分比柱图、斑马柱图等柱状图。 +- 支持环形图、玫瑰图等饼图。 +- 支持内置图表的任意组合,同一图表中可同时显示多个相同或不同类型的图表。 +- 支持实线、曲线、阶梯线、虚线、点线、点划线、双点划线等线条。 +- 支持主题定制、导入和导出,内置两种默认主题。 +- 支持自定义图表内容绘制,提供绘制点、直线、曲线、三角形、四边形、圆形、环形、扇形、边框、箭头等强大的绘图API。 +- 支持PC端和手机端上的数据筛选、视图缩放、细节展示等交互操作。 +- 支持万级大数据绘制。 +- 支持`TexMeshPro`。 + +## `XCharts3.0` 新功能 + +- 增加`Time`时间轴。 +- 增加`SingleAxis`单轴。 +- 增加多种坐标系:`Grid`、`Polar`、`Radar`、`SingleAxis`。 +- 增加多种动画方式。 +- 增加多种图表交互。 +- 增加国际化支持。 +- 增加`Widgets`小组件。 +- 增加多种扩展图表。 + +## `XCharts3.0` 相比 `XCharts2.0` 的改进 + +- 更健壮的底层框架。 +- 更强大的性能。 +- 更小的序列化文件。 +- 更好的交互体验。 +- 更多的组件支持。 +- 更强大的文本自述能力。 +- 更合理的组件调整。 +- 更灵活的组件插拔。 +- 更高效的二次开发。 +- 更丰富的Demo示例。 + +## `XCharts3.0` 和 `2.0` 数据对比 + +| Case | XCharts2.0 | XCharts3.0 | Note | +| -- | -- | -- | -- | +| 2000数据折线图的帧频 | `20` | `83` | 性能提升 `3` 倍 | +| 2000数据折线图的顶点数 | `36.5k` | `6.7k` | 顶点数减少 `4` 倍 | +| 2000数据折线图的Prefab大小 | `11.1MB` | `802KB` | 序列化文件大小减少 `10` 倍 | +| 单条折线图数据最大容量 | `4.1k` | `19k` | 单Serie数据容量提升 `4` 倍 | +| 支持的图表 | `11种` |`23种` | 支持的图表多 `1` 倍 | + +## 注意 + +- `XCharts3.0` 不兼容 `XCharts2.0` 版本,建议旧项目还是继续使用`XCharts2.0`,新项目使用`XCharts3.0`。 +- `XCharts2.0` 进入维护阶段,后续只修复严重`bug`,理论上不再加新功能。 +- `XCharts` 理论上支持`Unity 5.6`及以上版本,但由于版本测试有限难免疏漏,发现版本兼容问题可提`Issue`。 +- `XCharts` 内置图表都为常见的图表,可以免费使用;扩展图表大部分为不常使用的图表,有需要的可付费获取,详情[☞ 看这里](Documentation/SUPPORT.md) +- 本仓库只包含`XCharts`源码,不包含`Demo`示例部分。需要查看`Demo`示例请到[XCharts-Demo](https://github.com/XCharts-Team/XCharts-Demo) + +## 截图 + +![buildinchart](https://github.com/XCharts-Team/XCharts-Demo/blob/master/buildinchart.png) + +![extendchart](https://github.com/XCharts-Team/XCharts-Demo/blob/master/extendchart.png) + +更多示例请看 [XCharts-Demo](https://github.com/XCharts-Team/XCharts-Demo),也可以到 [在线Demo](https://xcharts-team.github.io/demo/) 查看`WebGL`下的运行效果。 + +## 使用 + +1. 导入`XCharts`的`unitypackage`或者源码到项目 +2. 在`Hierarchy`视图下右键选择`XCharts->LineChart`,即可创建一个默认的折线图 +3. 在`Inspector`试图可以调整各个组件的参数,并在`Game`视图看到实时效果 + +更多教程请看:[XCharts教程:5分钟上手教程](Documentation/XChartsTutorial01-ZH.md) + +## FAQ + +1. `XCharts`可以免费使用吗? + 答:`XCharts`使用`MIT`协议,可以免费使用。也可以订阅`VIP`享受更多增值服务。 + +2. `XCharts`支持代码动态添加和修改数据吗?支持从`Excel`或数据库中获取数据吗? + 答:支持代码动态添加和修改数据,但数据需要自己解析或获取,再调用`XCharts`的接口添加到`XCharts`。 + +3. 这个插件除了用在`Unity`,还能用在其他平台(如`Winform`或`WPF`)吗? + 答:目前只支持在`Unity`平台使用。理论上任何支持`UGUI`的`Unity`版本都能运行`XCharts`。 + +## 日志 + +[更新日志](CHANGELOG.md) + +## Licenses + +[MIT License](LICENSE.md) + +## 其他 + +邮箱:`monitor1394@gmail.com` +QQ群:XCharts交流群(`202030963`) +VIP群:XCharts技术支持VIP群(`867291970`) +捐助和技术支持:[☞ 看这里](Documentation/SUPPORT.md) diff --git a/Assets/XCharts/README.md.meta b/Assets/XCharts/README.md.meta new file mode 100644 index 0000000..760d09c --- /dev/null +++ b/Assets/XCharts/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 393c8e8ab781b4041b141f93eb407380 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Resources.meta b/Assets/XCharts/Resources.meta new file mode 100644 index 0000000..f5614c7 --- /dev/null +++ b/Assets/XCharts/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0e3168b99564b477a83640c24b713f0c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Resources/XCLang-EN.asset b/Assets/XCharts/Resources/XCLang-EN.asset new file mode 100644 index 0000000..05e55c4 --- /dev/null +++ b/Assets/XCharts/Resources/XCLang-EN.asset @@ -0,0 +1,57 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b65fc8b25febc4b9e8acb500d16770b2, type: 3} + m_Name: XCLang-EN + m_EditorClassIdentifier: + langName: EN + time: + months: + - January + - February + - March + - April + - May + - June + - July + - August + - September + - October + - November + - December + monthAbbr: + - Jan + - Feb + - Mar + - Apr + - May + - Jun + - Jul + - Aug + - Sep + - Oct + - Nov + - Dec + dayOfWeek: + - Sunday + - Monday + - Tuesday + - Wednesday + - Thursday + - Friday + - Saturday + dayOfWeekAbbr: + - Sun + - Mon + - Tue + - Wed + - Thu + - Fri + - Sat diff --git a/Assets/XCharts/Resources/XCLang-EN.asset.meta b/Assets/XCharts/Resources/XCLang-EN.asset.meta new file mode 100644 index 0000000..e0f7d44 --- /dev/null +++ b/Assets/XCharts/Resources/XCLang-EN.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cfc5541268f414098950441fd8b6f4a7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Resources/XCLang-ZH.asset b/Assets/XCharts/Resources/XCLang-ZH.asset new file mode 100644 index 0000000..2e53acc --- /dev/null +++ b/Assets/XCharts/Resources/XCLang-ZH.asset @@ -0,0 +1,89 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b65fc8b25febc4b9e8acb500d16770b2, type: 3} + m_Name: XCLang-ZH + m_EditorClassIdentifier: + langName: ZH + time: + months: + - "\u4E00\u6708" + - "\u4E8C\u6708" + - "\u4E09\u6708" + - "\u56DB\u6708" + - "\u4E94\u6708" + - "\u516D\u6708" + - "\u4E03\u6708" + - "\u516B\u6708" + - "\u4E5D\u6708" + - "\u5341\u6708" + - "\u5341\u4E00\u6708" + - "\u5341\u4E8C\u6708" + monthAbbr: + - "1\u6708" + - "2\u6708" + - "3\u6708" + - "4\u6708" + - "5\u6708" + - "6\u6708" + - "7\u6708" + - "8\u6708" + - "9\u6708" + - "10\u6708" + - "11\u6708" + - "12\u6708" + dayOfMonth: + - "1\u65E5" + - "2\u65E5" + - "3\u65E5" + - "4\u65E5" + - "5\u65E5" + - "6\u65E5" + - "7\u65E5" + - "8\u65E5" + - "9\u65E5" + - "10\u65E5" + - "11\u65E5" + - "12\u65E5" + - "13\u65E5" + - "14\u65E5" + - "15\u65E5" + - "16\u65E5" + - "17\u65E5" + - "18\u65E5" + - "19\u65E5" + - "20\u65E5" + - "21\u65E5" + - "22\u65E5" + - "23\u65E5" + - "24\u65E5" + - "25\u65E5" + - "26\u65E5" + - "27\u65E5" + - "28\u65E5" + - "29\u65E5" + - "30\u65E5" + - "31\u65E5" + dayOfWeek: + - "\u661F\u671F\u65E5" + - "\u661F\u671F\u4E00" + - "\u661F\u671F\u4E8C" + - "\u661F\u671F\u4E09" + - "\u661F\u671F\u56DB" + - "\u661F\u671F\u4E94" + - "\u661F\u671F\u516D" + dayOfWeekAbbr: + - "\u65E5" + - "\u4E00" + - "\u4E8C" + - "\u4E09" + - "\u56DB" + - "\u4E94" + - "\u516D" diff --git a/Assets/XCharts/Resources/XCLang-ZH.asset.meta b/Assets/XCharts/Resources/XCLang-ZH.asset.meta new file mode 100644 index 0000000..f638b16 --- /dev/null +++ b/Assets/XCharts/Resources/XCLang-ZH.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 79b252423c47d4cf380e489ed55e05d4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Resources/XCSettings.asset b/Assets/XCharts/Resources/XCSettings.asset new file mode 100644 index 0000000..5b89701 --- /dev/null +++ b/Assets/XCharts/Resources/XCSettings.asset @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3694d869548264b718bdfc6c8009dcf1, type: 3} + m_Name: XCSettings + m_EditorClassIdentifier: + m_Lang: {fileID: 11400000, guid: 79b252423c47d4cf380e489ed55e05d4, type: 2} + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSizeLv1: 24 + m_FontSizeLv2: 22 + m_FontSizeLv3: 20 + m_FontSizeLv4: 18 + m_AxisLineType: 0 + m_AxisLineWidth: 0.8 + m_AxisSplitLineType: 0 + m_AxisSplitLineWidth: 0.8 + m_AxisTickWidth: 0.8 + m_AxisTickLength: 5 + m_GaugeAxisLineWidth: 15 + m_GaugeAxisSplitLineWidth: 0.8 + m_GaugeAxisSplitLineLength: 15 + m_GaugeAxisTickWidth: 0.8 + m_GaugeAxisTickLength: 5 + m_TootipLineWidth: 0.8 + m_DataZoomBorderWidth: 0.5 + m_DataZoomDataLineWidth: 0.5 + m_VisualMapBorderWidth: 0 + m_SerieLineWidth: 1.8 + m_SerieLineSymbolSize: 5 + m_SerieScatterSymbolSize: 20 + m_SerieSelectedRate: 1.3 + m_SerieCandlestickBorderWidth: 1 + m_EditorShowAllListData: 0 + m_MaxPainter: 10 + m_LineSmoothStyle: 3 + m_LineSmoothness: 2 + m_LineSegmentDistance: 3 + m_CicleSmoothness: 2 + m_VisualMapTriangeLen: 20 + m_PieTooltipExtraRadius: 8 + m_PieSelectedOffset: 8 + m_CustomThemes: + - {fileID: 11400000, guid: 289d2fc7f4ce24f73b9ed8ec52639f72, type: 2} + - {fileID: 11400000, guid: e1dc23a10de1e4c5dbfbaf74c4dfd218, type: 2} diff --git a/Assets/XCharts/Resources/XCSettings.asset.meta b/Assets/XCharts/Resources/XCSettings.asset.meta new file mode 100644 index 0000000..c83763d --- /dev/null +++ b/Assets/XCharts/Resources/XCSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 676e1e322123d4fe2a761de3ef14235f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Resources/XCTheme-Dark.asset b/Assets/XCharts/Resources/XCTheme-Dark.asset new file mode 100644 index 0000000..11c2806 --- /dev/null +++ b/Assets/XCharts/Resources/XCTheme-Dark.asset @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c59330ca0f4443b69f06b890a44f32e, type: 3} + m_Name: XCTheme-Dark + m_EditorClassIdentifier: + m_ThemeType: 2 + m_ThemeName: Dark + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_ContrastColor: + serializedVersion: 2 + rgba: 0 + m_BackgroundColor: + serializedVersion: 2 + rgba: 4280945680 + m_ColorPalette: + - serializedVersion: 2 + rgba: 4294939209 + - serializedVersion: 2 + rgba: 4289920892 + - serializedVersion: 2 + rgba: 4284538365 + - serializedVersion: 2 + rgba: 4285951743 + - serializedVersion: 2 + rgba: 4294564184 + - serializedVersion: 2 + rgba: 4287741957 + - serializedVersion: 2 + rgba: 4282747647 + - serializedVersion: 2 + rgba: 4293085325 + - serializedVersion: 2 + rgba: 4294932957 + m_Common: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.7254902, g: 0.72156864, b: 0.80784315, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 20 + m_Title: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.93333334, g: 0.94509804, b: 0.98039216, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 24 + m_SubTitle: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.7254902, g: 0.72156864, b: 0.80784315, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 22 + m_Legend: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.7254902, g: 0.72156864, b: 0.80784315, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 20 + m_UnableColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Axis: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.7254902, g: 0.72156864, b: 0.80784315, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 18 + m_LineType: 0 + m_LineWidth: 0.8 + m_LineLength: 0 + m_LineColor: + serializedVersion: 2 + rgba: 4291737785 + m_SplitLineType: 0 + m_SplitLineWidth: 0.8 + m_SplitLineLength: 0 + m_SplitLineColor: + serializedVersion: 2 + rgba: 4283647816 + m_TickWidth: 0.8 + m_TickLength: 5 + m_TickColor: + serializedVersion: 2 + rgba: 4291737785 + m_SplitAreaColors: + - serializedVersion: 2 + rgba: 100663295 + - serializedVersion: 2 + rgba: 218103807 + m_Gauge: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.7254902, g: 0.72156864, b: 0.80784315, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 18 + m_LineType: 0 + m_LineWidth: 15 + m_LineLength: 0 + m_LineColor: + serializedVersion: 2 + rgba: 4291737785 + m_SplitLineType: 0 + m_SplitLineWidth: 0.8 + m_SplitLineLength: 15 + m_SplitLineColor: + serializedVersion: 2 + rgba: 4294967295 + m_TickWidth: 0.8 + m_TickLength: 5 + m_TickColor: + serializedVersion: 2 + rgba: 4294967295 + m_SplitAreaColors: + - serializedVersion: 2 + rgba: 100663295 + - serializedVersion: 2 + rgba: 218103807 + m_BarBackgroundColor: + serializedVersion: 2 + rgba: 4291348680 + m_StageColor: + - m_Percent: 0.2 + m_Color: + serializedVersion: 2 + rgba: 4289644433 + - m_Percent: 0.8 + m_Color: + serializedVersion: 2 + rgba: 4288579171 + - m_Percent: 1 + m_Color: + serializedVersion: 2 + rgba: 4281415106 + m_Tooltip: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_TextBackgroundColor: {r: 0.31764707, g: 0.31764707, b: 0.31764707, a: 0.78431374} + m_FontSize: 22 + m_LineType: 0 + m_LineWidth: 0.8 + m_LineColor: + serializedVersion: 2 + rgba: 4293848814 + m_AreaColor: + serializedVersion: 2 + rgba: 542200145 + m_LabelTextColor: + serializedVersion: 2 + rgba: 4294967295 + m_LabelBackgroundColor: + serializedVersion: 2 + rgba: 4289177511 + m_DataZoom: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.7254902, g: 0.72156864, b: 0.80784315, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 20 + m_BorderWidth: 0.5 + m_DataLineWidth: 0.5 + m_FillerColor: + serializedVersion: 2 + rgba: 869180295 + m_BorderColor: + serializedVersion: 2 + rgba: 4287262833 + m_DataLineColor: + serializedVersion: 2 + rgba: 4287262833 + m_DataAreaColor: + serializedVersion: 2 + rgba: 4287262833 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_VisualMap: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.7254902, g: 0.72156864, b: 0.80784315, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 18 + m_BorderWidth: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 4291611852 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_TriangeLen: 20 + m_Serie: + m_LineWidth: 1.8 + m_LineSymbolSize: 5 + m_ScatterSymbolSize: 20 + m_PieTooltipExtraRadius: 8 + m_SelectedRate: 1.3 + m_PieSelectedOffset: 8 + m_CandlestickColor: + serializedVersion: 2 + rgba: 4283846390 + m_CandlestickColor0: + serializedVersion: 2 + rgba: 4287818324 + m_CandlestickBorderWidth: 1 + m_CandlestickBorderColor: + serializedVersion: 2 + rgba: 4283846390 + m_CandlestickBorderColor0: + serializedVersion: 2 + rgba: 4287818324 diff --git a/Assets/XCharts/Resources/XCTheme-Dark.asset.meta b/Assets/XCharts/Resources/XCTheme-Dark.asset.meta new file mode 100644 index 0000000..c6e8422 --- /dev/null +++ b/Assets/XCharts/Resources/XCTheme-Dark.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 289d2fc7f4ce24f73b9ed8ec52639f72 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Resources/XCTheme-Default.asset b/Assets/XCharts/Resources/XCTheme-Default.asset new file mode 100644 index 0000000..e05e578 --- /dev/null +++ b/Assets/XCharts/Resources/XCTheme-Default.asset @@ -0,0 +1,163 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c59330ca0f4443b69f06b890a44f32e, type: 3} + m_Name: XCTheme-Default + m_EditorClassIdentifier: + m_ThemeType: 0 + m_ThemeName: Default + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_ContrastColor: + serializedVersion: 2 + rgba: 0 + m_BackgroundColor: + serializedVersion: 2 + rgba: 4294967295 + m_ColorPalette: + - serializedVersion: 2 + rgba: 4291194964 + - serializedVersion: 2 + rgba: 4285910161 + - serializedVersion: 2 + rgba: 4284008698 + - serializedVersion: 2 + rgba: 4284901102 + - serializedVersion: 2 + rgba: 4292788339 + - serializedVersion: 2 + rgba: 4285702715 + - serializedVersion: 2 + rgba: 4283598076 + - serializedVersion: 2 + rgba: 4290011290 + - serializedVersion: 2 + rgba: 4291591402 + m_Common: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 20 + m_Title: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 24 + m_SubTitle: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 22 + m_Legend: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 20 + m_UnableColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Axis: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.31764707, g: 0.3019608, b: 0.3019608, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 18 + m_LineType: 0 + m_LineWidth: 0.8 + m_LineLength: 0 + m_LineColor: + serializedVersion: 2 + rgba: 4283256145 + m_SplitLineType: 0 + m_SplitLineWidth: 0.8 + m_SplitLineLength: 0 + m_SplitLineColor: + serializedVersion: 2 + rgba: 542200145 + m_TickWidth: 0.8 + m_TickLength: 5 + m_TickColor: + serializedVersion: 2 + rgba: 4283256145 + m_SplitAreaColors: + - serializedVersion: 2 + rgba: 1308293882 + - serializedVersion: 2 + rgba: 1305004232 + m_Tooltip: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_TextBackgroundColor: {r: 1, g: 1, b: 1, a: 1} + m_FontSize: 20 + m_LineType: 0 + m_LineWidth: 0.8 + m_LineColor: + serializedVersion: 2 + rgba: 1680419113 + m_AreaColor: + serializedVersion: 2 + rgba: 542200145 + m_LabelTextColor: + serializedVersion: 2 + rgba: 4294967295 + m_LabelBackgroundColor: + serializedVersion: 2 + rgba: 4280887593 + m_DataZoom: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 20 + m_BorderWidth: 0.5 + m_DataLineWidth: 0.5 + m_FillerColor: + serializedVersion: 2 + rgba: 1858910119 + m_BorderColor: + serializedVersion: 2 + rgba: 4292730333 + m_DataLineColor: + serializedVersion: 2 + rgba: 4283712815 + m_DataAreaColor: + serializedVersion: 2 + rgba: 1431586095 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_VisualMap: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_TextBackgroundColor: {r: 0, g: 0, b: 0, a: 0} + m_FontSize: 18 + m_BorderWidth: 0 + m_BorderColor: + serializedVersion: 2 + rgba: 4291611852 + m_BackgroundColor: + serializedVersion: 2 + rgba: 0 + m_TriangeLen: 20 + m_Serie: + m_LineWidth: 1.8 + m_LineSymbolSize: 5 + m_ScatterSymbolSize: 20 + m_PieTooltipExtraRadius: 8 + m_SelectedRate: 1.3 + m_PieSelectedOffset: 8 + m_CandlestickColor: + serializedVersion: 2 + rgba: 4283716843 + m_CandlestickColor0: + serializedVersion: 2 + rgba: 4284658247 + m_CandlestickBorderWidth: 1 + m_CandlestickBorderColor: + serializedVersion: 2 + rgba: 4283716843 + m_CandlestickBorderColor0: + serializedVersion: 2 + rgba: 4284658247 diff --git a/Assets/XCharts/Resources/XCTheme-Default.asset.meta b/Assets/XCharts/Resources/XCTheme-Default.asset.meta new file mode 100644 index 0000000..059fff7 --- /dev/null +++ b/Assets/XCharts/Resources/XCTheme-Default.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1dc23a10de1e4c5dbfbaf74c4dfd218 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime.meta b/Assets/XCharts/Runtime.meta new file mode 100644 index 0000000..bfcc193 --- /dev/null +++ b/Assets/XCharts/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b33410c335fd5440483c5cabb05c3e5d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart.meta b/Assets/XCharts/Runtime/Chart.meta new file mode 100644 index 0000000..8fe8fd6 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 900b05585ba864df1aa05dcdb36b324b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/BarChart.cs b/Assets/XCharts/Runtime/Chart/BarChart.cs new file mode 100644 index 0000000..65cb0d7 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/BarChart.cs @@ -0,0 +1,29 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/BarChart", 14)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class BarChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<GridCoord>(); + AddChartComponentWhenNoExist<XAxis>(); + AddChartComponentWhenNoExist<YAxis>(); + + var tooltip = GetOrAddChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.Shadow; + tooltip.trigger = Tooltip.Trigger.Axis; + + RemoveData(); + Bar.AddDefaultSerie(this, GenerateDefaultSerieName()); + for (int i = 0; i < 5; i++) + { + AddXAxisData("x" + (i + 1)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/BarChart.cs.meta b/Assets/XCharts/Runtime/Chart/BarChart.cs.meta new file mode 100644 index 0000000..76be77d --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/BarChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 535d2697503c2a94a887354e22a5414d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/CandlestickChart.cs b/Assets/XCharts/Runtime/Chart/CandlestickChart.cs new file mode 100644 index 0000000..be7e026 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/CandlestickChart.cs @@ -0,0 +1,29 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/CandlestickChart", 23)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class CandlestickChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<GridCoord>(); + AddChartComponentWhenNoExist<XAxis>(); + AddChartComponentWhenNoExist<YAxis>(); + + var tooltip = GetOrAddChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.Shadow; + tooltip.trigger = Tooltip.Trigger.Axis; + + RemoveData(); + var serie = Candlestick.AddDefaultSerie(this, GenerateDefaultSerieName()); + for (int i = 0; i < serie.dataCount; i++) + { + AddXAxisData("x" + (i + 1)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/CandlestickChart.cs.meta b/Assets/XCharts/Runtime/Chart/CandlestickChart.cs.meta new file mode 100644 index 0000000..359211c --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/CandlestickChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b64f0bb738cc4acfa72fff2c30212b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/HeatmapChart.cs b/Assets/XCharts/Runtime/Chart/HeatmapChart.cs new file mode 100644 index 0000000..421ae09 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/HeatmapChart.cs @@ -0,0 +1,84 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/HeatmapChart", 18)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class HeatmapChart : BaseChart + { + protected override void DefaultChart() + { + var tooltip = GetChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.None; + tooltip.trigger = Tooltip.Trigger.Axis; + + var grid = GetOrAddChartComponent<GridCoord>(); + grid.left = 0.12f; + + var xAxis = GetOrAddChartComponent<XAxis>(); + xAxis.type = Axis.AxisType.Category; + xAxis.boundaryGap = true; + xAxis.splitNumber = 10; + + var yAxis = GetOrAddChartComponent<YAxis>(); + yAxis.type = Axis.AxisType.Category; + yAxis.boundaryGap = true; + yAxis.splitNumber = 10; + RemoveData(); + + var heatmapGridWid = 10f; + int xSplitNumber = (int) (grid.context.width / heatmapGridWid); + int ySplitNumber = (int) (grid.context.height / heatmapGridWid); + + Heatmap.AddDefaultSerie(this, GenerateDefaultSerieName()); + + var visualMap = GetOrAddChartComponent<VisualMap>(); + visualMap.max = 10; + visualMap.range[0] = 0f; + visualMap.range[1] = 10f; + visualMap.orient = Orient.Vertical; + visualMap.calculable = true; + visualMap.location.align = Location.Align.BottomLeft; + visualMap.location.bottom = 100; + visualMap.location.left = 30; + var colors = new List<string> + { + "#313695", + "#4575b4", + "#74add1", + "#abd9e9", + "#e0f3f8", + "#ffffbf", + "#fee090", + "#fdae61", + "#f46d43", + "#d73027", + "#a50026" + }; + visualMap.AddColors(colors); + for (int i = 0; i < xSplitNumber; i++) + { + xAxis.data.Add((i + 1).ToString()); + } + for (int i = 0; i < ySplitNumber; i++) + { + yAxis.data.Add((i + 1).ToString()); + } + for (int i = 0; i < xSplitNumber; i++) + { + for (int j = 0; j < ySplitNumber; j++) + { + var value = 0f; + var rate = Random.Range(0, 101); + if (rate > 70) value = Random.Range(8f, 10f); + else value = Random.Range(1f, 8f); + var list = new List<double> { i, j, value }; + AddData(0, list); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/HeatmapChart.cs.meta b/Assets/XCharts/Runtime/Chart/HeatmapChart.cs.meta new file mode 100644 index 0000000..0cceaa5 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/HeatmapChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31aa03cd4ce594c239ae746791b3b59f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/LineChart.cs b/Assets/XCharts/Runtime/Chart/LineChart.cs new file mode 100644 index 0000000..c5317f5 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/LineChart.cs @@ -0,0 +1,29 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/LineChart", 13)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class LineChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<GridCoord>(); + AddChartComponentWhenNoExist<XAxis>(); + AddChartComponentWhenNoExist<YAxis>(); + + var tooltip = GetOrAddChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.Line; + tooltip.trigger = Tooltip.Trigger.Axis; + + RemoveData(); + Line.AddDefaultSerie(this, GenerateDefaultSerieName()); + for (int i = 0; i < 5; i++) + { + AddXAxisData("x" + (i + 1)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/LineChart.cs.meta b/Assets/XCharts/Runtime/Chart/LineChart.cs.meta new file mode 100644 index 0000000..f345666 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/LineChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4f38bd00b4648c448cabfc167538f7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/ParallelChart.cs b/Assets/XCharts/Runtime/Chart/ParallelChart.cs new file mode 100644 index 0000000..63abdf6 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/ParallelChart.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/ParallelChart", 25)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class ParallelChart : BaseChart + { + protected override void DefaultChart() + { + RemoveData(); + AddChartComponent<ParallelCoord>(); + + for (int i = 0; i < 3; i++) + { + var valueAxis = AddChartComponent<ParallelAxis>(); + valueAxis.type = Axis.AxisType.Value; + } + var categoryAxis = AddChartComponent<ParallelAxis>(); + categoryAxis.type = Axis.AxisType.Category; + categoryAxis.position = Axis.AxisPosition.Right; + categoryAxis.data = new List<string>() { "x1", "x2", "x3", "x4", "x5" }; + + Parallel.AddDefaultSerie(this, GenerateDefaultSerieName()); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/ParallelChart.cs.meta b/Assets/XCharts/Runtime/Chart/ParallelChart.cs.meta new file mode 100644 index 0000000..e2e2f61 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/ParallelChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 161753d0d6ce541c89483f8c3a21343f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/PieChart.cs b/Assets/XCharts/Runtime/Chart/PieChart.cs new file mode 100644 index 0000000..f6ef9d3 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/PieChart.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/PieChart", 15)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class PieChart : BaseChart + { + protected override void DefaultChart() + { + var legend = GetOrAddChartComponent<Legend>(); + legend.show = true; + + RemoveData(); + Pie.AddDefaultSerie(this, GenerateDefaultSerieName()); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/PieChart.cs.meta b/Assets/XCharts/Runtime/Chart/PieChart.cs.meta new file mode 100644 index 0000000..a2a53c5 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/PieChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d44276ba809fd92408b296835f6f7658 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/PolarChart.cs b/Assets/XCharts/Runtime/Chart/PolarChart.cs new file mode 100644 index 0000000..580efb9 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/PolarChart.cs @@ -0,0 +1,33 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/PolarChart", 23)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class PolarChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<PolarCoord>(); + AddChartComponentWhenNoExist<AngleAxis>(); + AddChartComponentWhenNoExist<RadiusAxis>(); + + var tooltip = GetChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.Corss; + tooltip.trigger = Tooltip.Trigger.Axis; + + RemoveData(); + var serie = Line.AddDefaultSerie(this, GenerateDefaultSerieName()); + serie.SetCoord<PolarCoord>(); + serie.ClearData(); + for (int i = 0; i <= 360; i++) + { + var t = i / 180f * Mathf.PI; + var r = Mathf.Sin(2 * t) * Mathf.Cos(2 * t) * 2; + AddData(0, Mathf.Abs(r), i); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/PolarChart.cs.meta b/Assets/XCharts/Runtime/Chart/PolarChart.cs.meta new file mode 100644 index 0000000..29ae5a6 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/PolarChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 574bcbd917fc148e8bb8735acda07f77 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/RadarChart.cs b/Assets/XCharts/Runtime/Chart/RadarChart.cs new file mode 100644 index 0000000..ca01353 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/RadarChart.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/RadarChart", 16)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class RadarChart : BaseChart + { + protected override void DefaultChart() + { + RemoveData(); + RemoveChartComponents<RadarCoord>(); + AddChartComponent<RadarCoord>(); + Radar.AddDefaultSerie(this, GenerateDefaultSerieName()); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/RadarChart.cs.meta b/Assets/XCharts/Runtime/Chart/RadarChart.cs.meta new file mode 100644 index 0000000..2e638a3 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/RadarChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d2231a0d3e3a5b043b074f6739be4a86 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/RingChart.cs b/Assets/XCharts/Runtime/Chart/RingChart.cs new file mode 100644 index 0000000..ae04dd2 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/RingChart.cs @@ -0,0 +1,18 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/RingChart", 20)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class RingChart : BaseChart + { + protected override void DefaultChart() + { + GetChartComponent<Tooltip>().type = Tooltip.Type.Line; + RemoveData(); + Ring.AddDefaultSerie(this, GenerateDefaultSerieName()); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/RingChart.cs.meta b/Assets/XCharts/Runtime/Chart/RingChart.cs.meta new file mode 100644 index 0000000..a46c903 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/RingChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ad8949f652ee4376a4a4fe5cb32029f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/ScatterChart.cs b/Assets/XCharts/Runtime/Chart/ScatterChart.cs new file mode 100644 index 0000000..a6ce4d9 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/ScatterChart.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/ScatterChart", 17)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class ScatterChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<GridCoord>(); + + var tooltip = GetOrAddChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.None; + tooltip.trigger = Tooltip.Trigger.Item; + + var xAxis = GetOrAddChartComponent<XAxis>(); + xAxis.type = Axis.AxisType.Value; + xAxis.boundaryGap = false; + + var yAxis = GetOrAddChartComponent<YAxis>(); + yAxis.type = Axis.AxisType.Value; + yAxis.boundaryGap = false; + + RemoveData(); + Scatter.AddDefaultSerie(this, GenerateDefaultSerieName()); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/ScatterChart.cs.meta b/Assets/XCharts/Runtime/Chart/ScatterChart.cs.meta new file mode 100644 index 0000000..efbd890 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/ScatterChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf16aac0bd6c24a8da75846c34c5193e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/SimplifiedBarChart.cs b/Assets/XCharts/Runtime/Chart/SimplifiedBarChart.cs new file mode 100644 index 0000000..f2079b3 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/SimplifiedBarChart.cs @@ -0,0 +1,29 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/SimplifiedBarChart", 27)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class SimplifiedBarChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<GridCoord>(); + AddChartComponentWhenNoExist<XAxis>(); + AddChartComponentWhenNoExist<YAxis>(); + + var tooltip = GetChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.Line; + tooltip.trigger = Tooltip.Trigger.Axis; + + RemoveData(); + SimplifiedBar.AddDefaultSerie(this, GenerateDefaultSerieName()); + for (int i = 0; i < GetSerie(0).dataCount; i++) + { + AddXAxisData("x" + (i + 1)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/SimplifiedBarChart.cs.meta b/Assets/XCharts/Runtime/Chart/SimplifiedBarChart.cs.meta new file mode 100644 index 0000000..7dcf138 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/SimplifiedBarChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa86c3bbf8877409c9d45716fbaf92f4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/SimplifiedCandlestickChart.cs b/Assets/XCharts/Runtime/Chart/SimplifiedCandlestickChart.cs new file mode 100644 index 0000000..0d2d8ef --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/SimplifiedCandlestickChart.cs @@ -0,0 +1,29 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/SimplifiedCandlestickChart", 28)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class SimplifiedCandlestickChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<GridCoord>(); + AddChartComponentWhenNoExist<XAxis>(); + AddChartComponentWhenNoExist<YAxis>(); + + var tooltip = GetChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.Shadow; + tooltip.trigger = Tooltip.Trigger.Axis; + + RemoveData(); + SimplifiedCandlestick.AddDefaultSerie(this, GenerateDefaultSerieName()); + for (int i = 0; i < GetSerie(0).dataCount; i++) + { + AddXAxisData("x" + (i + 1)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/SimplifiedCandlestickChart.cs.meta b/Assets/XCharts/Runtime/Chart/SimplifiedCandlestickChart.cs.meta new file mode 100644 index 0000000..26ff0a3 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/SimplifiedCandlestickChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6dcc9bd1ca8344d938f386e6b32e8946 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Chart/SimplifiedLineChart.cs b/Assets/XCharts/Runtime/Chart/SimplifiedLineChart.cs new file mode 100644 index 0000000..4553cbb --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/SimplifiedLineChart.cs @@ -0,0 +1,29 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/SimplifiedLineChart", 26)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class SimplifiedLineChart : BaseChart + { + protected override void DefaultChart() + { + AddChartComponentWhenNoExist<GridCoord>(); + AddChartComponentWhenNoExist<XAxis>(); + AddChartComponentWhenNoExist<YAxis>(); + + var tooltip = GetChartComponent<Tooltip>(); + tooltip.type = Tooltip.Type.Line; + tooltip.trigger = Tooltip.Trigger.Axis; + + RemoveData(); + SimplifiedLine.AddDefaultSerie(this, GenerateDefaultSerieName()); + for (int i = 0; i < GetSerie(0).dataCount; i++) + { + AddXAxisData("x" + (i + 1)); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Chart/SimplifiedLineChart.cs.meta b/Assets/XCharts/Runtime/Chart/SimplifiedLineChart.cs.meta new file mode 100644 index 0000000..0ab5605 --- /dev/null +++ b/Assets/XCharts/Runtime/Chart/SimplifiedLineChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8233997c1b324ecd875a03af4d90972 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component.meta b/Assets/XCharts/Runtime/Component.meta new file mode 100644 index 0000000..73353b5 --- /dev/null +++ b/Assets/XCharts/Runtime/Component.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3be5f1d3b129a47dd8e41cffe3b8e428 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Animation.meta b/Assets/XCharts/Runtime/Component/Animation.meta new file mode 100644 index 0000000..4c94e65 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Animation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f827513754e8436bbc63e64c5b5e6c3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Animation/AnimationStyle.cs b/Assets/XCharts/Runtime/Component/Animation/AnimationStyle.cs new file mode 100644 index 0000000..00761b4 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Animation/AnimationStyle.cs @@ -0,0 +1,630 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public enum AnimationType + { + /// <summary> + /// he default. An animation playback mode will be selected according to the actual situation. + /// |默认。内部会根据实际情况选择一种动画播放方式。 + /// </summary> + Default, + /// <summary> + /// Play the animation from left to right. + /// |从左往右播放动画。 + /// </summary> + LeftToRight, + /// <summary> + /// Play the animation from bottom to top. + /// |从下往上播放动画。 + /// </summary> + BottomToTop, + /// <summary> + /// Play animations from the inside out. + /// |由内到外播放动画。 + /// </summary> + InsideOut, + /// <summary> + /// Play the animation along the path. + /// |沿着路径播放动画。 + /// </summary> + AlongPath, + /// <summary> + /// Play the animation clockwise. + /// |顺时针播放动画。 + /// </summary> + Clockwise, + } + + public enum AnimationEasing + { + Linear, + } + + /// <summary> + /// the animation of serie. + /// |动画表现。 + /// </summary> + [System.Serializable] + public class AnimationStyle : ChildComponent + { + [SerializeField] private bool m_Enable = true; + [SerializeField] private AnimationType m_Type; + [SerializeField] private AnimationEasing m_Easting; + [SerializeField] private int m_Threshold = 2000; + [SerializeField] private float m_FadeInDuration = 1000; + [SerializeField] private float m_FadeInDelay = 0; + [SerializeField] private float m_FadeOutDuration = 1000f; + [SerializeField] private float m_FadeOutDelay = 0; + [SerializeField] private bool m_DataChangeEnable = true; + [SerializeField] private float m_DataChangeDuration = 500; + [SerializeField] private float m_ActualDuration; + /// <summary> + /// 自定义渐入动画延时函数。返回ms值。 + /// </summary> + public AnimationDelayFunction fadeInDelayFunction; + /// <summary> + /// 自定义渐入动画时长函数。返回ms值。 + /// </summary> + public AnimationDurationFunction fadeInDurationFunction; + /// <summary> + /// 自定义渐出动画延时函数。返回ms值。 + /// </summary> + public AnimationDelayFunction fadeOutDelayFunction; + /// <summary> + /// 自定义渐出动画时长函数。返回ms值。 + /// </summary> + public AnimationDurationFunction fadeOutDurationFunction; + public AnimationStyleContext context = new AnimationStyleContext(); + + /// <summary> + /// Whether to enable animation. + /// |是否开启动画效果。 + /// </summary> + public bool enable { get { return m_Enable; } set { m_Enable = value; } } + /// <summary> + /// The type of animation. + /// |动画类型。 + /// </summary> + public AnimationType type { get { return m_Type; } set { m_Type = value; } } + /// <summary> + /// Easing method used for the first animation. + /// |动画的缓动效果。 + /// </summary> + //public Easing easting { get { return m_Easting; } set { m_Easting = value; } } + /// <summary> + /// The milliseconds duration of the fadeIn animation. + /// |设定的渐入动画时长(毫秒)。如果要设置单个数据项的渐入时长,可以用代码定制:customFadeInDuration。 + /// </summary> + public float fadeInDuration { get { return m_FadeInDuration; } set { m_FadeInDuration = value < 0 ? 0 : value; } } + /// <summary> + /// The milliseconds duration of the fadeOut animation. + /// |设定的渐出动画时长(毫秒)。如果要设置单个数据项的渐出时长,可以用代码定制:customFadeOutDuration。 + /// </summary> + public float fadeOutDuration { get { return m_FadeOutDuration; } set { m_FadeOutDuration = value < 0 ? 0 : value; } } + /// <summary> + /// The milliseconds actual duration of the first animation. + /// |实际的动画时长(毫秒)。 + /// </summary> + public float actualDuration { get { return m_ActualDuration; } } + /// <summary> + /// Whether to set graphic number threshold to animation. Animation will be disabled when graphic number is larger than threshold. + /// |是否开启动画的阈值,当单个系列显示的图形数量大于这个阈值时会关闭动画。 + /// </summary> + public int threshold { get { return m_Threshold; } set { m_Threshold = value; } } + /// <summary> + /// The milliseconds delay before updating the first animation. + /// |渐入动画延时(毫秒)。如果要设置单个数据项的延时,可以用代码定制:customFadeInDelay。 + /// </summary> + public float fadeInDelay { get { return m_FadeInDelay; } set { m_FadeInDelay = value < 0 ? 0 : value; } } + /// <summary> + /// 渐出动画延时(毫秒)。如果要设置单个数据项的延时,可以用代码定制:customFadeOutDelay。 + /// </summary> + public float fadeOutDelay { get { return m_FadeOutDelay; } set { m_FadeInDelay = value < 0 ? 0 : value; } } + /// <summary> + /// 是否开启数据变更动画。 + /// </summary> + public bool dataChangeEnable { get { return m_DataChangeEnable; } set { m_DataChangeEnable = value; } } + /// <summary> + /// The milliseconds duration of the data change animation. + /// |数据变更的动画时长(毫秒)。 + /// </summary> + public float dataChangeDuration { get { return m_DataChangeDuration; } set { m_DataChangeDuration = value < 0 ? 0 : value; } } + /// <summary> + /// 渐入动画完成回调 + /// </summary> + public Action fadeInFinishCallback { get; set; } + /// <summary> + /// 渐出动画完成回调 + /// </summary> + public Action fadeOutFinishCallback { get; set; } + private Dictionary<int, float> m_ItemCurrProgress = new Dictionary<int, float>(); + private Dictionary<int, float> m_ItemDestProgress = new Dictionary<int, float>(); + private bool m_FadeIn = false; + private bool m_IsEnd = true; + private bool m_IsPause = false; + private bool m_FadeOut = false; + private bool m_FadeOuted = false; + private bool m_IsInit = false; + + private float startTime { get; set; } + private float m_CurrDetailProgress; + private float m_DestDetailProgress; + private float m_TotalDetailProgress; + private float m_CurrSymbolProgress; + private Vector3 m_LinePathLastPos; + + public void FadeIn() + { + if (m_FadeOut) + return; + + if (m_IsPause) + { + m_IsPause = false; + return; + } + + if (m_FadeIn) + return; + + startTime = Time.time; + m_FadeIn = true; + m_IsEnd = false; + m_IsInit = false; + m_IsPause = false; + m_FadeOuted = false; + m_CurrDetailProgress = 0; + m_DestDetailProgress = 1; + m_CurrSymbolProgress = 0; + m_ItemCurrProgress.Clear(); + m_ItemDestProgress.Clear(); + } + + public void Restart() + { + Reset(); + FadeIn(); + } + + public void FadeOut() + { + if (m_IsPause) + { + m_IsPause = false; + return; + } + + m_FadeOut = true; + startTime = Time.time; + m_FadeIn = true; + m_IsEnd = false; + m_IsInit = false; + m_IsPause = false; + m_CurrDetailProgress = 0; + m_DestDetailProgress = 1; + m_CurrSymbolProgress = 0; + m_ItemCurrProgress.Clear(); + m_ItemDestProgress.Clear(); + } + + public void Pause() + { + if (!m_IsPause) + { + m_IsPause = true; + } + } + + public void Resume() + { + if (m_IsPause) + { + m_IsPause = false; + } + } + + private void End() + { + if (m_IsEnd) + return; + + m_ActualDuration = (int) ((Time.time - startTime) * 1000) - (m_FadeOut ? fadeOutDelay : fadeInDelay); + m_IsEnd = true; + m_IsInit = false; + + if (m_FadeIn) + { + m_FadeIn = false; + if (fadeInFinishCallback != null) + { + fadeInFinishCallback(); + } + } + if (m_FadeOut) + { + m_FadeOut = false; + m_FadeOuted = true; + if (fadeOutFinishCallback != null) + { + fadeOutFinishCallback(); + } + } + } + + public void Reset() + { + m_FadeIn = false; + m_IsEnd = true; + m_IsInit = false; + m_IsPause = false; + m_FadeOut = false; + m_FadeOuted = false; + m_ItemCurrProgress.Clear(); + } + + public void InitProgress(float curr, float dest) + { + if (m_IsInit || m_IsEnd) + return; + if (curr > dest) + return; + + m_IsInit = true; + m_TotalDetailProgress = dest - curr; + + if (m_FadeOut) + { + m_CurrDetailProgress = dest; + m_DestDetailProgress = curr; + } + else + { + m_CurrDetailProgress = curr; + m_DestDetailProgress = dest; + } + } + + public void InitProgress(List<Vector3> paths, bool isY) + { + if (paths.Count < 1) return; + var sp = paths[0]; + var ep = paths[paths.Count - 1]; + var currDetailProgress = isY ? sp.y : sp.x; + var totalDetailProgress = isY ? ep.y : ep.x; + if (context.type == AnimationType.AlongPath) + { + currDetailProgress = 0; + totalDetailProgress = 0; + var lp = sp; + for (int i = 1; i < paths.Count; i++) + { + var np = paths[i]; + totalDetailProgress += Vector3.Distance(np, lp); + lp = np; + } + m_LinePathLastPos = sp; + context.currentPathDistance = 0; + } + InitProgress(currDetailProgress, totalDetailProgress); + } + + private void SetDataCurrProgress(int index, float state) + { + m_ItemCurrProgress[index] = state; + } + + private float GetDataCurrProgress(int index, float initValue, float destValue, ref bool isBarEnd) + { + if (IsInDelay()) + { + isBarEnd = false; + return initValue; + } + var c1 = !m_ItemCurrProgress.ContainsKey(index); + var c2 = !m_ItemDestProgress.ContainsKey(index); + if (c1 || c2) + { + if (c1) + m_ItemCurrProgress.Add(index, initValue); + + if (c2) + m_ItemDestProgress.Add(index, destValue); + + isBarEnd = false; + } + else + { + isBarEnd = m_ItemCurrProgress[index] == m_ItemDestProgress[index]; + } + return m_ItemCurrProgress[index]; + } + + public bool IsFinish() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + return true; +#endif + if (!m_Enable || m_IsEnd) + return true; + + if (IsIndexAnimation()) + return m_CurrDetailProgress > m_DestDetailProgress; + if (IsItemAnimation()) + return false; + return true; + } + + public bool IsInFadeOut() + { + return m_FadeOut; + } + + public bool IsInDelay() + { + if (m_FadeOut) + return (fadeOutDelay > 0 && Time.time - startTime < fadeOutDelay / 1000); + else + return (fadeInDelay > 0 && Time.time - startTime < fadeInDelay / 1000); + } + + public bool IsItemAnimation() + { + return context.type == AnimationType.BottomToTop || context.type == AnimationType.InsideOut; + } + + public bool IsIndexAnimation() + { + return context.type == AnimationType.LeftToRight || + context.type == AnimationType.Clockwise || + context.type == AnimationType.AlongPath; + } + + public float GetIndexDelay(int dataIndex) + { + if (m_FadeOut && fadeOutDelayFunction != null) + return fadeOutDelayFunction(dataIndex); + else if (m_FadeIn && fadeInDelayFunction != null) + return fadeInDelayFunction(dataIndex); + else + return 0; + } + + public bool IsInIndexDelay(int dataIndex) + { + return Time.time - startTime < GetIndexDelay(dataIndex) / 1000f; + } + + public bool IsAllOutDelay(int dataCount) + { + var nowTime = Time.time - startTime; + for (int i = 0; i < dataCount; i++) + { + if (nowTime < GetIndexDelay(i) / 1000) + return false; + } + return true; + } + + public bool CheckDetailBreak(float detail) + { + if (!IsIndexAnimation()) + return false; + return !IsFinish() && detail > m_CurrDetailProgress; + } + + public bool CheckDetailBreak(Vector3 pos, bool isYAxis) + { + if (!IsIndexAnimation()) + return false; + + if (IsFinish()) + return false; + + if (context.type == AnimationType.AlongPath) + { + context.currentPathDistance += Vector3.Distance(pos, m_LinePathLastPos); + m_LinePathLastPos = pos; + return CheckDetailBreak(context.currentPathDistance); + } + else + { + if (isYAxis) + return pos.y > m_CurrDetailProgress; + else + return pos.x > m_CurrDetailProgress; + } + } + + public void CheckProgress() + { + if (IsItemAnimation() && context.isAllItemAnimationEnd) + { + End(); + return; + } + CheckProgress(m_TotalDetailProgress); + } + + public void CheckProgress(double total) + { + if (IsFinish()) + return; + + if (!m_IsInit || m_IsPause || m_IsEnd) + return; + + if (IsInDelay()) + return; + + m_ActualDuration = (int) ((Time.time - startTime) * 1000) - fadeInDelay; + var duration = GetCurrAnimationDuration(); + var delta = (float) (total / duration * Time.deltaTime); + if (m_FadeOut) + { + m_CurrDetailProgress -= delta; + if (m_CurrDetailProgress <= m_DestDetailProgress) + { + m_CurrDetailProgress = m_DestDetailProgress; + End(); + } + } + else + { + m_CurrDetailProgress += delta; + if (m_CurrDetailProgress >= m_DestDetailProgress) + { + m_CurrDetailProgress = m_DestDetailProgress; + End(); + } + } + } + + internal float GetCurrAnimationDuration(int dataIndex = -1) + { + if (dataIndex >= 0) + { + if (m_FadeOut && fadeOutDurationFunction != null) + return fadeOutDurationFunction(dataIndex) / 1000f; + if (m_FadeIn && fadeInDurationFunction != null) + return fadeInDurationFunction(dataIndex) / 1000f; + } + + if (m_FadeOut) + return m_FadeOutDuration > 0 ? m_FadeOutDuration / 1000 : 1f; + else + return m_FadeInDuration > 0 ? m_FadeInDuration / 1000 : 1f; + } + + internal float CheckItemProgress(int dataIndex, float destProgress, ref bool isEnd, float startProgress = 0) + { + isEnd = false; + var initHig = m_FadeOut ? destProgress : startProgress; + var destHig = m_FadeOut ? startProgress : destProgress; + var currHig = GetDataCurrProgress(dataIndex, initHig, destHig, ref isEnd); + if (isEnd || IsFinish()) + { + return m_FadeOuted ? startProgress : destProgress; + } + else if (IsInDelay() || IsInIndexDelay(dataIndex)) + { + return m_FadeOut ? destProgress : startProgress; + } + else if (m_IsPause) + { + return currHig; + } + else + { + var duration = GetCurrAnimationDuration(dataIndex); + var delta = (destProgress - startProgress) / duration * Time.deltaTime; + currHig = currHig + (m_FadeOut ? -delta : delta); + if (m_FadeOut) + { + if ((initHig > 0 && currHig <= 0) || (initHig < 0 && currHig >= 0)) + { + currHig = 0; + isEnd = true; + } + } + else + { + if ((destProgress - startProgress > 0 && currHig > destProgress) || + (destProgress - startProgress < 0 && currHig < destProgress)) + { + currHig = destProgress; + isEnd = true; + } + } + SetDataCurrProgress(dataIndex, currHig); + return currHig; + } + } + + public void CheckSymbol(float dest) + { + if (!enable || m_IsEnd || m_IsPause || !m_IsInit) + return; + + if (IsInDelay()) + return; + + var duration = GetCurrAnimationDuration(); + var delta = dest / duration * Time.deltaTime; + if (m_FadeOut) + { + m_CurrSymbolProgress -= delta; + if (m_CurrSymbolProgress < 0) + m_CurrSymbolProgress = 0; + } + else + { + m_CurrSymbolProgress += delta; + if (m_CurrSymbolProgress > dest) + m_CurrSymbolProgress = dest; + } + } + + public float GetSysmbolSize(float dest) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + return dest; +#endif + if (!enable) + return dest; + + if (m_IsEnd) + return m_FadeOut ? 0 : dest; + + return m_CurrSymbolProgress; + } + + public float GetCurrDetail() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + return m_DestDetailProgress; +#endif + return m_CurrDetailProgress; + } + + public float GetCurrRate() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + return 1; +#endif + if (!enable || m_IsEnd) + return 1; + return m_CurrDetailProgress; + } + + public int GetCurrIndex() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + return -1; +#endif + if (!enable || m_IsEnd) + return -1; + return (int) m_CurrDetailProgress; + } + + public float GetUpdateAnimationDuration() + { + if (m_Enable && m_DataChangeEnable && IsFinish()) + return m_DataChangeDuration; + else + return 0; + } + + public bool HasFadeOut() + { + return enable && m_FadeOuted && m_IsEnd; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Animation/AnimationStyle.cs.meta b/Assets/XCharts/Runtime/Component/Animation/AnimationStyle.cs.meta new file mode 100644 index 0000000..87c8cd8 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Animation/AnimationStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e31c30f2ef61c48718a626f93307ce92 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Animation/AnimationStyleContext.cs b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleContext.cs new file mode 100644 index 0000000..9184e0a --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleContext.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public struct AnimationStyleContext + { + public AnimationType type; + public float currentPathDistance; + public bool isAllItemAnimationEnd; + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Animation/AnimationStyleContext.cs.meta b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleContext.cs.meta new file mode 100644 index 0000000..572eb5b --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3dc504960589413fa6a76267067775c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Animation/AnimationStyleHelper.cs b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleHelper.cs new file mode 100644 index 0000000..332236d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleHelper.cs @@ -0,0 +1,65 @@ +using UnityEngine; +using XUGL; + +namespace XCharts.Runtime +{ + public static class AnimationStyleHelper + { + public static float CheckDataAnimation(BaseChart chart, Serie serie, int dataIndex, float destProgress, float startPorgress = 0) + { + if (!serie.animation.IsItemAnimation()) + { + serie.animation.context.isAllItemAnimationEnd = false; + return destProgress; + } + if (serie.animation.IsFinish()) + { + serie.animation.context.isAllItemAnimationEnd = false; + return destProgress; + } + var isDataAnimationEnd = true; + var currHig = serie.animation.CheckItemProgress(dataIndex, destProgress, ref isDataAnimationEnd, startPorgress); + if (!isDataAnimationEnd) + { + serie.animation.context.isAllItemAnimationEnd = false; + } + return currHig; + } + + public static void UpdateSerieAnimation(Serie serie) + { + var serieType = serie.GetType(); + var animationType = AnimationType.LeftToRight; + if (serieType.IsDefined(typeof(DefaultAnimationAttribute), false)) + { + animationType = serieType.GetAttribute<DefaultAnimationAttribute>().type; + } + UpdateAnimationType(serie.animation, animationType); + } + + public static void UpdateAnimationType(AnimationStyle animation, AnimationType defaultType) + { + animation.context.type = animation.type == AnimationType.Default ? + defaultType : + animation.type; + } + + public static bool GetAnimationPosition(AnimationStyle animation, bool isY, Vector3 lp, Vector3 cp, float progress, ref Vector3 ip) + { + if (animation.context.type == AnimationType.AlongPath) + { + var dist = Vector3.Distance(lp, cp); + var rate = (dist - animation.context.currentPathDistance + animation.GetCurrDetail()) / dist; + ip = Vector3.Lerp(lp, cp, rate); + return true; + } + else + { + var startPos = isY ? new Vector3(-10000, progress) : new Vector3(progress, -10000); + var endPos = isY ? new Vector3(10000, progress) : new Vector3(progress, 10000); + + return UGLHelper.GetIntersection(lp, cp, startPos, endPos, ref ip); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Animation/AnimationStyleHelper.cs.meta b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleHelper.cs.meta new file mode 100644 index 0000000..eed1235 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Animation/AnimationStyleHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54cadaee0856b4f7085787fd450eec37 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis.meta b/Assets/XCharts/Runtime/Component/Axis.meta new file mode 100644 index 0000000..61797b1 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 194a62edf7ec2484fa2eebbf5bde3e95 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AngleAxis.meta b/Assets/XCharts/Runtime/Component/Axis/AngleAxis.meta new file mode 100644 index 0000000..0b8a740 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AngleAxis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 28b88ca3453f04fbdb23a53b5bcb4bf7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxis.cs b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxis.cs new file mode 100644 index 0000000..46909d7 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxis.cs @@ -0,0 +1,48 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Angle axis of Polar Coordinate. + /// |极坐标系的角度轴。 + /// </summary> + [System.Serializable] + [RequireChartComponent(typeof(PolarCoord))] + [ComponentHandler(typeof(AngleAxisHandler), true)] + public class AngleAxis : Axis + { + [SerializeField] private float m_StartAngle = 0; + + /// <summary> + /// Starting angle of axis. 0 degrees by default, standing for right position of center. + /// |起始刻度的角度,默认为 0 度,即圆心的正右方。 + /// </summary> + public float startAngle + { + get { return m_StartAngle; } + set { if (PropertyUtil.SetStruct(ref m_StartAngle, value)) SetAllDirty(); } + } + + public float GetValueAngle(float value) + { + return (value + context.startAngle + 360) % 360; + } + + public override void SetDefaultValue() + { + m_Show = true; + m_Type = AxisType.Value; + m_SplitNumber = 12; + m_StartAngle = 0; + m_BoundaryGap = false; + m_Data = new List<string>(12); + splitLine.show = true; + splitLine.lineStyle.type = LineStyle.Type.Solid; + axisLabel.textLimit.enable = false; + minMaxType = AxisMinMaxType.Custom; + min = 0; + max = 360; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxis.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxis.cs.meta new file mode 100644 index 0000000..ea0bbb0 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 787015be923a74e1da4000c7abc2dcdf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxisHandler.cs b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxisHandler.cs new file mode 100644 index 0000000..b57b5a4 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxisHandler.cs @@ -0,0 +1,164 @@ +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class AngleAxisHandler : AxisHandler<AngleAxis> + { + public override void InitComponent() + { + InitAngleAxis(component); + } + + public override void Update() + { + component.context.startAngle = 90 - component.startAngle; + UpdateAxisMinMaxValue(component); + UpdatePointerValue(component); + } + + public override void DrawBase(VertexHelper vh) + { + DrawAngleAxis(vh, component); + } + + private void UpdateAxisMinMaxValue(AngleAxis axis, bool updateChart = true) + { + if (axis.IsCategory() || !axis.show) return; + double tempMinValue = 0; + double tempMaxValue = 0; + SeriesHelper.GetYMinMaxValue(chart.series, null, axis.polarIndex, true, axis.inverse, out tempMinValue, + out tempMaxValue, true); + AxisHelper.AdjustMinMaxValue(axis, ref tempMinValue, ref tempMaxValue, true); + if (tempMinValue != axis.context.minValue || tempMaxValue != axis.context.maxValue) + { + axis.UpdateMinMaxValue(tempMinValue, tempMaxValue); + axis.context.offset = 0; + axis.context.lastCheckInverse = axis.inverse; + UpdateAxisTickValueList(axis); + + if (updateChart) + { + UpdateAxisLabelText(axis); + chart.RefreshChart(); + } + } + } + + internal void UpdateAxisLabelText(AngleAxis axis) + { + var runtimeWidth = 360; + if (axis.context.labelObjectList.Count <= 0) + InitAngleAxis(axis); + else + axis.UpdateLabelText(runtimeWidth, null, false); + } + + private void InitAngleAxis(AngleAxis axis) + { + var polar = chart.GetChartComponent<PolarCoord>(axis.polarIndex); + if (polar == null) return; + PolarHelper.UpdatePolarCenter(polar, chart.chartPosition, chart.chartWidth, chart.chartHeight); + var radius = polar.context.radius; + axis.context.labelObjectList.Clear(); + axis.context.startAngle = 90 - axis.startAngle; + + string objName = component.GetType().Name + axis.index; + var axisObj = ChartHelper.AddObject(objName, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + axisObj.transform.localPosition = Vector3.zero; + axisObj.SetActive(axis.show); + axisObj.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(axisObj); + var splitNumber = AxisHelper.GetSplitNumber(axis, radius, null); + var totalAngle = axis.context.startAngle; + var total = 360; + var cenPos = polar.context.center; + var txtHig = axis.axisLabel.textStyle.GetFontSize(chart.theme.axis) + 2; + var margin = axis.axisLabel.distance + axis.axisTick.GetLength(chart.theme.axis.tickLength); + var isCategory = axis.IsCategory(); + var isPercentStack = SeriesHelper.IsPercentStack<Bar>(chart.series); + for (int i = 0; i < splitNumber; i++) + { + float scaleAngle = AxisHelper.GetScaleWidth(axis, total, i + 1, null); + bool inside = axis.axisLabel.inside; + var labelName = AxisHelper.GetLabelName(axis, total, i, axis.context.minValue, axis.context.maxValue, + null, isPercentStack); + var label = ChartHelper.AddAxisLabelObject(splitNumber, i, objName + i, axisObj.transform, + new Vector2(scaleAngle, txtHig), axis, + chart.theme.axis, labelName, Color.clear); + label.text.SetAlignment(axis.axisLabel.textStyle.GetAlignment(TextAnchor.MiddleCenter)); + var pos = ChartHelper.GetPos(cenPos, radius + margin, + isCategory ? (totalAngle + scaleAngle / 2) : totalAngle, true); + AxisHelper.AdjustCircleLabelPos(label, pos, cenPos, txtHig, Vector3.zero); + if (i == 0) axis.axisLabel.SetRelatedText(label.text, scaleAngle); + axis.context.labelObjectList.Add(label); + + totalAngle += scaleAngle; + } + } + + private void DrawAngleAxis(VertexHelper vh, AngleAxis angleAxis) + { + var polar = chart.GetChartComponent<PolarCoord>(angleAxis.polarIndex); + var radius = polar.context.radius; + var cenPos = polar.context.center; + var total = 360; + var size = AxisHelper.GetScaleNumber(angleAxis, total, null); + var currAngle = angleAxis.context.startAngle; + var tickWidth = angleAxis.axisTick.GetWidth(chart.theme.axis.tickWidth); + var tickLength = angleAxis.axisTick.GetLength(chart.theme.axis.tickLength); + var tickColor = angleAxis.axisTick.GetColor(chart.theme.axis.lineColor); + var lineColor = angleAxis.axisLine.GetColor(chart.theme.axis.lineColor); + var splitLineColor = angleAxis.splitLine.GetColor(chart.theme.axis.splitLineColor); + for (int i = 1; i < size; i++) + { + var scaleWidth = AxisHelper.GetScaleWidth(angleAxis, total, i); + var pos = ChartHelper.GetPos(cenPos, radius, currAngle, true); + if (angleAxis.show && angleAxis.splitLine.show) + { + var lineWidth = angleAxis.splitLine.GetWidth(chart.theme.axis.splitLineWidth); + UGL.DrawLine(vh, cenPos, pos, lineWidth, splitLineColor); + } + if (angleAxis.show && angleAxis.axisTick.show) + { + if ((i == 1 && angleAxis.axisTick.showStartTick) || + (i == size - 1 && angleAxis.axisTick.showEndTick) || + (i > 1 && i < size - 1)) + { + var tickY = radius + tickLength; + var tickPos = ChartHelper.GetPos(cenPos, tickY, currAngle, true); + UGL.DrawLine(vh, pos, tickPos, tickWidth, tickColor); + } + } + currAngle += scaleWidth; + } + if (angleAxis.show && angleAxis.axisLine.show) + { + var lineWidth = angleAxis.axisLine.GetWidth(chart.theme.axis.lineWidth); + var outsideRaidus = radius + lineWidth * 2; + UGL.DrawDoughnut(vh, cenPos, radius, outsideRaidus, lineColor, Color.clear); + } + } + + protected override void UpdatePointerValue(Axis axis) + { + var polar = chart.GetChartComponent<PolarCoord>(axis.polarIndex); + if (polar == null) + return; + + if (!polar.context.isPointerEnter) + { + axis.context.pointerValue = double.PositiveInfinity; + return; + } + + var dir = (chart.pointerPos - new Vector2(polar.context.center.x, polar.context.center.y)).normalized; + var angle = ChartHelper.GetAngle360(Vector2.up, dir); + axis.context.pointerValue = (angle - component.context.startAngle + 360) % 360; + axis.context.pointerLabelPosition = polar.context.center + new Vector3(dir.x, dir.y) * (polar.context.radius + 25); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxisHandler.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxisHandler.cs.meta new file mode 100644 index 0000000..b3408f6 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AngleAxis/AngleAxisHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83f228c42435c4619943a2f187c98e7b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/Axis.cs b/Assets/XCharts/Runtime/Component/Axis/Axis.cs new file mode 100644 index 0000000..23f2c83 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/Axis.cs @@ -0,0 +1,791 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// The axis in rectangular coordinate. + /// |直角坐标系的坐标轴组件。 + /// </summary> + [System.Serializable] + public class Axis : MainComponent + { + /// <summary> + /// the type of axis. + /// |坐标轴类型。 + /// </summary> + public enum AxisType + { + /// <summary> + /// Numerical axis, suitable for continuous data. + /// ||数值轴。适用于连续数据。 + /// </summary> + Value, + /// <summary> + /// Category axis, suitable for discrete category data. Data should only be set via data for this type. + /// ||类目轴。适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。 + /// </summary> + Category, + /// <summary> + /// Log axis, suitable for log data. + /// |对数轴。适用于对数数据。 + /// </summary> + Log, + /// <summary> + /// Time axis, suitable for continuous time series data. + /// |时间轴。适用于连续的时序数据。 + /// </summary> + Time + } + + /// <summary> + /// the type of axis min and max value. + /// |坐标轴最大最小刻度显示类型。 + /// </summary> + public enum AxisMinMaxType + { + /// <summary> + /// 0 - maximum. + /// |0-最大值。 + /// </summary> + Default, + /// <summary> + /// minimum - maximum. + /// |最小值-最大值。 + /// </summary> + MinMax, + /// <summary> + /// Customize the minimum and maximum. + /// |自定义最小值最大值。 + /// </summary> + Custom + } + /// <summary> + /// the position of axis in grid. + /// |坐标轴在Grid中的位置 + /// </summary> + public enum AxisPosition + { + Left, + Right, + Bottom, + Top + } + + [SerializeField] protected bool m_Show = true; + [SerializeField] protected AxisType m_Type; + [SerializeField] protected AxisMinMaxType m_MinMaxType; + [SerializeField] protected int m_GridIndex; + [SerializeField] protected int m_PolarIndex; + [SerializeField] protected int m_ParallelIndex; + [SerializeField] protected AxisPosition m_Position; + [SerializeField] protected float m_Offset; + [SerializeField] protected double m_Min; + [SerializeField] protected double m_Max; + [SerializeField] protected int m_SplitNumber = 0; + [SerializeField] protected double m_Interval = 0; + [SerializeField] protected bool m_BoundaryGap = true; + [SerializeField] protected int m_MaxCache = 0; + [SerializeField] protected float m_LogBase = 10; + [SerializeField] protected bool m_LogBaseE = false; + [SerializeField] protected int m_CeilRate = 0; + [SerializeField] protected bool m_Inverse = false; + [SerializeField] private bool m_Clockwise = true; + [SerializeField] private bool m_InsertDataToHead; + [SerializeField] protected List<Sprite> m_Icons = new List<Sprite>(); + [SerializeField] protected List<string> m_Data = new List<string>(); + [SerializeField] protected AxisLine m_AxisLine = AxisLine.defaultAxisLine; + [SerializeField] protected AxisName m_AxisName = AxisName.defaultAxisName; + [SerializeField] protected AxisTick m_AxisTick = AxisTick.defaultTick; + [SerializeField] protected AxisLabel m_AxisLabel = AxisLabel.defaultAxisLabel; + [SerializeField] protected AxisSplitLine m_SplitLine = AxisSplitLine.defaultSplitLine; + [SerializeField] protected AxisSplitArea m_SplitArea = AxisSplitArea.defaultSplitArea; + + public AxisContext context = new AxisContext(); + + /// <summary> + /// Whether to show axis. + /// |是否显示坐标轴。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetAllDirty(); } + } + /// <summary> + /// the type of axis. + /// |坐标轴类型。 + /// </summary> + public AxisType type + { + get { return m_Type; } + set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetAllDirty(); } + } + /// <summary> + /// the type of axis minmax. + /// |坐标轴刻度最大最小值显示类型。 + /// </summary> + public AxisMinMaxType minMaxType + { + get { return m_MinMaxType; } + set { if (PropertyUtil.SetStruct(ref m_MinMaxType, value)) SetAllDirty(); } + } + /// <summary> + /// The index of the grid on which the axis are located, by default, is in the first grid. + /// |坐标轴所在的 grid 的索引,默认位于第一个 grid。 + /// </summary> + public int gridIndex + { + get { return m_GridIndex; } + set { if (PropertyUtil.SetStruct(ref m_GridIndex, value)) SetAllDirty(); } + } + /// <summary> + /// The index of the polar on which the axis are located, by default, is in the first polar. + /// |坐标轴所在的 ploar 的索引,默认位于第一个 polar。 + /// </summary> + public int polarIndex + { + get { return m_PolarIndex; } + set { if (PropertyUtil.SetStruct(ref m_PolarIndex, value)) SetAllDirty(); } + } + /// <summary> + /// The index of the parallel on which the axis are located, by default, is in the first parallel. + /// |坐标轴所在的 parallel 的索引,默认位于第一个 parallel。 + /// </summary> + public int parallelIndex + { + get { return m_ParallelIndex; } + set { if (PropertyUtil.SetStruct(ref m_ParallelIndex, value)) SetAllDirty(); } + } + /// <summary> + /// the position of axis in grid. + /// |坐标轴在Grid中的位置。 + /// </summary> + public AxisPosition position + { + get { return m_Position; } + set { if (PropertyUtil.SetStruct(ref m_Position, value)) SetAllDirty(); } + } + /// <summary> + /// the offset of axis from the default position. Useful when the same position has multiple axes. + /// |坐标轴相对默认位置的偏移。在相同position有多个坐标轴时有用。 + /// </summary> + public float offset + { + get { return m_Offset; } + set { if (PropertyUtil.SetStruct(ref m_Offset, value)) SetAllDirty(); } + } + /// <summary> + /// The minimun value of axis.Valid when `minMaxType` is `Custom` + /// |设定的坐标轴刻度最小值,当minMaxType为Custom时有效。 + /// </summary> + public double min + { + get { return m_Min; } + set { if (PropertyUtil.SetStruct(ref m_Min, value)) SetAllDirty(); } + } + /// <summary> + /// The maximum value of axis.Valid when `minMaxType` is `Custom` + /// |设定的坐标轴刻度最大值,当minMaxType为Custom时有效。 + /// </summary> + public double max + { + get { return m_Max; } + set { if (PropertyUtil.SetStruct(ref m_Max, value)) SetAllDirty(); } + } + /// <summary> + /// Number of segments that the axis is split into. + /// |坐标轴的期望的分割段数。默认为0表示自动分割。 + /// </summary> + public int splitNumber + { + get { return m_SplitNumber; } + set { if (PropertyUtil.SetStruct(ref m_SplitNumber, value)) SetAllDirty(); } + } + /// <summary> + /// Compulsively set segmentation interval for axis.This is unavailable for category axis. + /// |强制设置坐标轴分割间隔。无法在类目轴中使用。 + /// </summary> + public double interval + { + get { return m_Interval; } + set { if (PropertyUtil.SetStruct(ref m_Interval, value)) SetAllDirty(); } + } + /// <summary> + /// The boundary gap on both sides of a coordinate axis, which is valid only for category axis with type: 'Category'. + /// |坐标轴两边是否留白。只对类目轴有效。 + /// </summary> + public bool boundaryGap + { + get { return IsCategory() ? m_BoundaryGap : false; } + set { if (PropertyUtil.SetStruct(ref m_BoundaryGap, value)) SetAllDirty(); } + } + /// <summary> + /// Base of logarithm, which is valid only for numeric axes with type: 'Log'. + /// |对数轴的底数,只在对数轴(type:'Log')中有效。 + /// </summary> + public float logBase + { + get { return m_LogBase; } + set + { + if (value <= 0 || value == 1) value = 10; + if (PropertyUtil.SetStruct(ref m_LogBase, value)) SetAllDirty(); + } + } + /// <summary> + /// On the log axis, if base e is the natural number, and is true, logBase fails. + /// |对数轴是否以自然数 e 为底数,为 true 时 logBase 失效。 + /// </summary> + public bool logBaseE + { + get { return m_LogBaseE; } + set { if (PropertyUtil.SetStruct(ref m_LogBaseE, value)) SetAllDirty(); } + } + /// <summary> + /// The max number of axis data cache. + /// |The first data will be remove when the size of axis data is larger then maxCache. + /// |可缓存的最大数据量。默认为0没有限制,大于0时超过指定值会移除旧数据再插入新数据。 + /// </summary> + public int maxCache + { + get { return m_MaxCache; } + set { if (PropertyUtil.SetStruct(ref m_MaxCache, value < 0 ? 0 : value)) SetAllDirty(); } + } + /// <summary> + /// The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated. + /// |最大最小值向上取整的倍率。默认为0时自动计算。 + /// </summary> + public int ceilRate + { + get { return m_CeilRate; } + set { if (PropertyUtil.SetStruct(ref m_CeilRate, value < 0 ? 0 : value)) SetAllDirty(); } + } + /// <summary> + /// Whether the axis are reversed or not. Invalid in `Category` axis. + /// |是否反向坐标轴。在类目轴中无效。 + /// </summary> + public bool inverse + { + get { return m_Inverse; } + set { if (m_Type == AxisType.Value && PropertyUtil.SetStruct(ref m_Inverse, value)) SetAllDirty(); } + } + /// <summary> + /// Whether the positive position of axis is in clockwise. True for clockwise by default. + /// |刻度增长是否按顺时针,默认顺时针。 + /// </summary> + public bool clockwise + { + get { return m_Clockwise; } + set { if (PropertyUtil.SetStruct(ref m_Clockwise, value)) SetAllDirty(); } + } + /// <summary> + /// Category data, available in type: 'Category' axis. + /// |类目数据,在类目轴(type: 'category')中有效。 + /// </summary> + public List<string> data + { + get { return m_Data; } + set { if (value != null) { m_Data = value; SetAllDirty(); } } + } + /// <summary> + /// 类目数据对应的图标。 + /// </summary> + public List<Sprite> icons + { + get { return m_Icons; } + set { if (value != null) { m_Icons = value; SetAllDirty(); } } + } + /// <summary> + /// axis Line. + /// |坐标轴轴线。 + /// </summary> + public AxisLine axisLine + { + get { return m_AxisLine; } + set { if (value != null) { m_AxisLine = value; SetVerticesDirty(); } } + } + /// <summary> + /// axis name. + /// |坐标轴名称。 + /// </summary> + public AxisName axisName + { + get { return m_AxisName; } + set { if (value != null) { m_AxisName = value; SetComponentDirty(); } } + } + /// <summary> + /// axis tick. + /// |坐标轴刻度。 + /// </summary> + public AxisTick axisTick + { + get { return m_AxisTick; } + set { if (value != null) { m_AxisTick = value; SetVerticesDirty(); } } + } + /// <summary> + /// axis label. + /// |坐标轴刻度标签。 + /// </summary> + public AxisLabel axisLabel + { + get { return m_AxisLabel; } + set { if (value != null) { m_AxisLabel = value; SetComponentDirty(); } } + } + /// <summary> + /// axis split line. + /// |坐标轴分割线。 + /// </summary> + public AxisSplitLine splitLine + { + get { return m_SplitLine; } + set { if (value != null) { m_SplitLine = value; SetVerticesDirty(); } } + } + /// <summary> + /// axis split area. + /// |坐标轴分割区域。 + /// </summary> + public AxisSplitArea splitArea + { + get { return m_SplitArea; } + set { if (value != null) { m_SplitArea = value; SetVerticesDirty(); } } + } + /// <summary> + /// Whether to add new data at the head or at the end of the list. + /// |添加新数据时是在列表的头部还是尾部加入。 + /// </summary> + public bool insertDataToHead + { + get { return m_InsertDataToHead; } + set { if (PropertyUtil.SetStruct(ref m_InsertDataToHead, value)) SetAllDirty(); } + } + + public override bool vertsDirty + { + get + { + return m_VertsDirty || + axisLine.anyDirty || + axisTick.anyDirty || + splitLine.anyDirty || + splitArea.anyDirty; + } + } + + public override bool componentDirty + { + get + { + return m_ComponentDirty || + axisName.anyDirty || + axisLabel.anyDirty; + } + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + axisName.ClearComponentDirty(); + axisLabel.ClearComponentDirty(); + } + + public override void ClearVerticesDirty() + { + base.ClearVerticesDirty(); + axisLine.ClearVerticesDirty(); + axisTick.ClearVerticesDirty(); + splitLine.ClearVerticesDirty(); + splitArea.ClearVerticesDirty(); + } + + public override void SetComponentDirty() + { + context.isNeedUpdateFilterData = true; + base.SetComponentDirty(); + } + + public Axis Clone() + { + var axis = new Axis(); + axis.show = show; + axis.type = type; + axis.gridIndex = 0; + axis.minMaxType = minMaxType; + axis.min = min; + axis.max = max; + axis.splitNumber = splitNumber; + axis.interval = interval; + axis.boundaryGap = boundaryGap; + axis.maxCache = maxCache; + axis.logBase = logBase; + axis.logBaseE = logBaseE; + axis.ceilRate = ceilRate; + axis.insertDataToHead = insertDataToHead; + axis.axisLine = axisLine.Clone(); + axis.axisName = axisName.Clone(); + axis.axisTick = axisTick.Clone(); + axis.axisLabel = axisLabel.Clone(); + axis.splitLine = splitLine.Clone(); + axis.splitArea = splitArea.Clone(); + axis.icons = new List<Sprite>(); + axis.data = new List<string>(); + ChartHelper.CopyList(axis.data, data); + return axis; + } + + public void Copy(Axis axis) + { + show = axis.show; + type = axis.type; + minMaxType = axis.minMaxType; + gridIndex = axis.gridIndex; + min = axis.min; + max = axis.max; + splitNumber = axis.splitNumber; + interval = axis.interval; + boundaryGap = axis.boundaryGap; + maxCache = axis.maxCache; + logBase = axis.logBase; + logBaseE = axis.logBaseE; + ceilRate = axis.ceilRate; + insertDataToHead = axis.insertDataToHead; + axisLine.Copy(axis.axisLine); + axisName.Copy(axis.axisName); + axisTick.Copy(axis.axisTick); + axisLabel.Copy(axis.axisLabel); + splitLine.Copy(axis.splitLine); + splitArea.Copy(axis.splitArea); + ChartHelper.CopyList(data, axis.data); + ChartHelper.CopyList<Sprite>(icons, axis.icons); + } + + /// <summary> + /// 清空类目数据 + /// </summary> + public override void ClearData() + { + m_Data.Clear(); + m_Icons.Clear(); + context.Clear(); + SetAllDirty(); + } + + /// <summary> + /// 是否为类目轴。 + /// </summary> + /// <returns></returns> + public bool IsCategory() + { + return m_Type == AxisType.Category; + } + + /// <summary> + /// 是否为数值轴。 + /// </summary> + /// <returns></returns> + public bool IsValue() + { + return m_Type == AxisType.Value; + } + + /// <summary> + /// 是否为对数轴。 + /// </summary> + /// <returns></returns> + public bool IsLog() + { + return m_Type == AxisType.Log; + } + + /// <summary> + /// 是否为时间轴。 + /// </summary> + public bool IsTime() + { + return m_Type == AxisType.Time; + } + + public bool IsLeft() + { + return m_Position == AxisPosition.Left; + } + + public bool IsRight() + { + return m_Position == AxisPosition.Right; + } + + public bool IsTop() + { + return m_Position == AxisPosition.Top; + } + + public bool IsBottom() + { + return m_Position == AxisPosition.Bottom; + } + + public void SetNeedUpdateFilterData() + { + context.isNeedUpdateFilterData = true; + } + + /// <summary> + /// 添加一个类目到类目数据列表 + /// </summary> + /// <param name="category"></param> + public void AddData(string category) + { + if (maxCache > 0) + { + while (m_Data.Count >= maxCache) + { + RemoveData(m_InsertDataToHead ? m_Data.Count - 1 : 0); + } + } + + if (m_InsertDataToHead) + m_Data.Insert(0, category); + else + m_Data.Add(category); + + SetAllDirty(); + } + + public void RemoveData(int dataIndex) + { + context.isNeedUpdateFilterData = true; + m_Data.RemoveAt(dataIndex); + } + + /// <summary> + /// 更新类目数据 + /// </summary> + /// <param name="index"></param> + /// <param name="category"></param> + public void UpdateData(int index, string category) + { + if (index >= 0 && index < m_Data.Count) + { + m_Data[index] = category; + SetComponentDirty(); + } + } + + /// <summary> + /// 添加图标 + /// </summary> + /// <param name="icon"></param> + public void AddIcon(Sprite icon) + { + if (maxCache > 0) + { + while (m_Icons.Count > maxCache) + { + m_Icons.RemoveAt(m_InsertDataToHead ? m_Icons.Count - 1 : 0); + } + } + if (m_InsertDataToHead) m_Icons.Insert(0, icon); + else m_Icons.Add(icon); + SetAllDirty(); + } + + /// <summary> + /// 更新图标 + /// </summary> + /// <param name="index"></param> + /// <param name="icon"></param> + public void UpdateIcon(int index, Sprite icon) + { + if (index >= 0 && index < m_Icons.Count) + { + m_Icons[index] = icon; + SetComponentDirty(); + } + } + + /// <summary> + /// 获得指定索引的类目数据 + /// </summary> + /// <param name="index"></param> + /// <returns></returns> + public string GetData(int index) + { + if (index >= 0 && index < m_Data.Count) + return m_Data[index]; + else + return null; + } + + /// <summary> + /// 获得在dataZoom范围内指定索引的类目数据 + /// </summary> + /// <param name="index">类目数据索引</param> + /// <param name="dataZoom">区域缩放</param> + /// <returns></returns> + public string GetData(int index, DataZoom dataZoom) + { + var showData = GetDataList(dataZoom); + if (index >= 0 && index < showData.Count) + return showData[index]; + else + return ""; + } + + public Sprite GetIcon(int index) + { + if (index >= 0 && index < m_Icons.Count) + return m_Icons[index]; + else + return null; + } + + /// <summary> + /// 获得值在坐标轴上的距离 + /// </summary> + /// <param name="value"></param> + /// <param name="axisLength"></param> + /// <returns></returns> + public float GetDistance(double value, float axisLength) + { + if (context.minMaxRange == 0) + return 0; + + if (IsCategory() && boundaryGap) + { + var each = axisLength / data.Count; + return (float) (each * (value + 0.5f)); + } + else + { + return axisLength * (float) ((value - context.minValue) / context.minMaxRange); + } + } + + /// <summary> + /// 获得指定区域缩放的类目数据列表 + /// </summary> + /// <param name="dataZoom">区域缩放</param> + /// <returns></returns> + internal List<string> GetDataList(DataZoom dataZoom) + { + if (dataZoom != null && dataZoom.enable && dataZoom.IsContainsAxis(this)) + { + UpdateFilterData(dataZoom); + return context.filterData; + } + else + { + return m_Data.Count > 0 ? m_Data : context.runtimeData; + } + } + + internal List<string> GetDataList() + { + return m_Data.Count > 0 ? m_Data : context.runtimeData; + } + + /// <summary> + /// 更新dataZoom对应的类目数据列表 + /// </summary> + /// <param name="dataZoom"></param> + internal void UpdateFilterData(DataZoom dataZoom) + { + if (dataZoom != null && dataZoom.enable && dataZoom.IsContainsAxis(this)) + { + var data = GetDataList(); + context.UpdateFilterData(data, dataZoom); + } + } + + /// <summary> + /// 获得类目数据个数 + /// </summary> + /// <param name="dataZoom"></param> + /// <returns></returns> + internal int GetDataCount(DataZoom dataZoom) + { + return IsCategory() ? GetDataList(dataZoom).Count : 0; + } + + /// <summary> + /// 更新刻度标签文字 + /// </summary> + /// <param name="dataZoom"></param> + internal void UpdateLabelText(float coordinateWidth, DataZoom dataZoom, bool forcePercent) + { + for (int i = 0; i < context.labelObjectList.Count; i++) + { + if (context.labelObjectList[i] != null) + { + var text = AxisHelper.GetLabelName(this, coordinateWidth, i, context.minValue, context.maxValue, dataZoom, forcePercent); + context.labelObjectList[i].SetText(text); + } + } + } + + internal Vector3 GetLabelObjectPosition(int index) + { + if (context.labelObjectList != null && index < context.labelObjectList.Count) + return context.labelObjectList[index].GetPosition(); + else + return Vector3.zero; + } + + internal void UpdateMinMaxValue(double minValue, double maxValue) + { + context.minValue = minValue; + context.maxValue = maxValue; + double tempRange = maxValue - minValue; + if (context.minMaxRange != tempRange) + { + context.minMaxRange = tempRange; + if (type == Axis.AxisType.Value && interval > 0) + { + SetComponentDirty(); + } + } + } + + public float GetLogValue(double value) + { + if (value <= 0 || value == 1) + return 0; + else + return logBaseE ? (float) Math.Log(value) : (float) Math.Log(value, logBase); + } + + public int GetLogMinIndex() + { + return logBaseE ? + (int) Math.Log(context.minValue) : + (int) Math.Log(context.minValue, logBase); + } + + public int GetLogMaxIndex() + { + return logBaseE ? + (int) Math.Log(context.maxValue) : + (int) Math.Log(context.maxValue, logBase); + } + + public double GetLabelValue(int index) + { + if (index < 0) + return context.minValue; + else if (index > context.labelValueList.Count - 1) + return context.maxValue; + else + return context.labelValueList[index]; + } + + public double GetLastLabelValue() + { + if (context.labelValueList.Count > 0) + return context.labelValueList[context.labelValueList.Count - 1]; + else + return 0; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/Axis.cs.meta b/Assets/XCharts/Runtime/Component/Axis/Axis.cs.meta new file mode 100644 index 0000000..c86a648 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/Axis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5c29555575e04db98ee243c3b17f0ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisContext.cs b/Assets/XCharts/Runtime/Component/Axis/AxisContext.cs new file mode 100644 index 0000000..c47d5a6 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisContext.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public class AxisContext : MainComponentContext + { + public Orient orient; + public float x; + public float y; + public float zeroX; + public float zeroY; + public float width; + public float height; + public Vector3 position; + public float left; + public float right; + public float bottom; + public float top; + /// <summary> + /// the current minimun value. + /// |当前最小值。 + /// </summary> + public double minValue; + /// <summary> + /// the current maximum value. + /// |当前最大值。 + /// </summary> + public double maxValue; + /// <summary> + /// the offset of zero position. + /// |坐标轴原点在坐标轴的偏移。 + /// </summary> + public float offset; + public double minMaxRange; + public float scaleWidth; + public float startAngle; + public double pointerValue; + public Vector3 pointerLabelPosition; + public double axisTooltipValue; + public List<string> runtimeData { get { return m_RuntimeData; } } + public List<double> labelValueList { get { return m_LabelValueList; } } + public List<ChartLabel> labelObjectList { get { return m_AxisLabelList; } } + + internal List<string> filterData; + internal bool lastCheckInverse; + internal bool isNeedUpdateFilterData; + + private int filterStart; + private int filterEnd; + private int filterMinShow; + + private List<ChartLabel> m_AxisLabelList = new List<ChartLabel>(); + private List<double> m_LabelValueList = new List<double>(); + private List<string> m_RuntimeData = new List<string>(); + + internal void Clear() + { + m_RuntimeData.Clear(); + } + + private List<string> m_EmptyFliter = new List<string>(); + /// <summary> + /// 更新dataZoom对应的类目数据列表 + /// </summary> + /// <param name="dataZoom"></param> + internal void UpdateFilterData(List<string> data, DataZoom dataZoom) + { + int start = 0, end = 0; + var range = Mathf.RoundToInt(data.Count * (dataZoom.end - dataZoom.start) / 100); + if (range <= 0) + range = 1; + + if (dataZoom.context.invert) + { + end = Mathf.CeilToInt(data.Count * dataZoom.end / 100); + start = end - range; + if (start < 0) start = 0; + } + else + { + start = Mathf.FloorToInt(data.Count * dataZoom.start / 100); + end = start + range; + if (end > data.Count) end = data.Count; + } + + if (start != filterStart || + end != filterEnd || + dataZoom.minShowNum != filterMinShow || + isNeedUpdateFilterData) + { + filterStart = start; + filterEnd = end; + filterMinShow = dataZoom.minShowNum; + isNeedUpdateFilterData = false; + + if (data.Count > 0) + { + if (range < dataZoom.minShowNum) + { + if (dataZoom.minShowNum > data.Count) + range = data.Count; + else + range = dataZoom.minShowNum; + } + if (range > data.Count - start - 1) + start = data.Count - range - 1; + if (start >= 0) + filterData = data.GetRange(start, range); + else + filterData = data; + } + else + { + filterData = data; + } + } + else if (end == 0) + { + filterData = m_EmptyFliter; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisContext.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisContext.cs.meta new file mode 100644 index 0000000..5f2226c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6525f065fa5d04663ab7026a3467f56e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisHandler.cs b/Assets/XCharts/Runtime/Component/Axis/AxisHandler.cs new file mode 100644 index 0000000..109fa87 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisHandler.cs @@ -0,0 +1,782 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using XCharts.Runtime; +using XUGL; + +namespace XCharts +{ + public abstract class AxisHandler<T> : MainComponentHandler + where T : Axis + { + private static readonly string s_DefaultAxisName = "name"; + private double m_LastInterval = double.MinValue; + private int m_LastSplitNumber = int.MinValue; + public T component { get; internal set; } + + internal override void SetComponent(MainComponent component) + { + this.component = (T) component; + } + + protected virtual Vector3 GetLabelPosition(float scaleWid, int i) + { + return Vector3.zero; + } + + protected virtual float GetAxisLineXOrY() + { + return 0; + } + + protected virtual Orient orient { get; set; } + + protected virtual void UpdatePointerValue(Axis axis) + { + var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + if (grid == null) + return; + if (!grid.context.isPointerEnter) + { + axis.context.pointerValue = double.PositiveInfinity; + } + else + { + var lastPointerValue = axis.context.pointerValue; + if (axis.IsCategory()) + { + var dataZoom = chart.GetDataZoomOfAxis(axis); + var dataCount = chart.series.Count > 0 ? chart.series[0].GetDataList(dataZoom).Count : 0; + var local = chart.pointerPos; + if (axis is YAxis) + { + float splitWid = AxisHelper.GetDataWidth(axis, grid.context.height, dataCount, dataZoom); + for (int j = 0; j < axis.GetDataCount(dataZoom); j++) + { + float pY = grid.context.y + j * splitWid; + if ((axis.boundaryGap && (local.y > pY && local.y <= pY + splitWid)) || + (!axis.boundaryGap && (local.y > pY - splitWid / 2 && local.y <= pY + splitWid / 2))) + { + axis.context.pointerValue = j; + axis.context.pointerLabelPosition = axis.GetLabelObjectPosition(j); + if (j != lastPointerValue) + { + if (chart.onAxisPointerValueChanged != null) + chart.onAxisPointerValueChanged(axis, j); + } + break; + } + } + } + else + { + float splitWid = AxisHelper.GetDataWidth(axis, grid.context.width, dataCount, dataZoom); + for (int j = 0; j < axis.GetDataCount(dataZoom); j++) + { + float pX = grid.context.x + j * splitWid; + if ((axis.boundaryGap && (local.x > pX && local.x <= pX + splitWid)) || + (!axis.boundaryGap && (local.x > pX - splitWid / 2 && local.x <= pX + splitWid / 2))) + { + axis.context.pointerValue = j; + axis.context.pointerLabelPosition = axis.GetLabelObjectPosition(j); + if (j != lastPointerValue) + { + if (chart.onAxisPointerValueChanged != null) + chart.onAxisPointerValueChanged(axis, j); + } + break; + } + } + } + } + else + { + if (axis is YAxis) + { + var yRate = axis.context.minMaxRange / grid.context.height; + var yValue = yRate * (chart.pointerPos.y - grid.context.y - axis.context.offset); + if (axis.context.minValue > 0) + yValue += axis.context.minValue; + + var labelX = axis.GetLabelObjectPosition(0).x; + axis.context.pointerValue = yValue; + axis.context.pointerLabelPosition = new Vector3(labelX, chart.pointerPos.y); + if (yValue != lastPointerValue) + { + if (chart.onAxisPointerValueChanged != null) + chart.onAxisPointerValueChanged(axis, yValue); + } + } + else + { + var xRate = axis.context.minMaxRange / grid.context.width; + var xValue = xRate * (chart.pointerPos.x - grid.context.x - axis.context.offset); + if (axis.context.minValue > 0) + xValue += axis.context.minValue; + + var labelY = axis.GetLabelObjectPosition(0).y; + axis.context.pointerValue = xValue; + axis.context.pointerLabelPosition = new Vector3(chart.pointerPos.x, labelY); + if (xValue != lastPointerValue) + { + if (chart.onAxisPointerValueChanged != null) + chart.onAxisPointerValueChanged(axis, xValue); + } + } + } + } + } + + internal void UpdateAxisMinMaxValue(int axisIndex, Axis axis, bool updateChart = true) + { + if (!axis.show) + return; + + if (axis.IsCategory()) + { + axis.context.minValue = 0; + axis.context.maxValue = SeriesHelper.GetMaxSerieDataCount(chart.series) - 1; + axis.context.minMaxRange = axis.context.maxValue; + return; + } + + double tempMinValue = 0; + double tempMaxValue = 0; + chart.GetSeriesMinMaxValue(axis, axisIndex, out tempMinValue, out tempMaxValue); + + if (tempMinValue != axis.context.minValue || + tempMaxValue != axis.context.maxValue || + m_LastInterval != axis.interval || + m_LastSplitNumber != axis.splitNumber) + { + m_LastSplitNumber = axis.splitNumber; + m_LastInterval = axis.interval; + + axis.UpdateMinMaxValue(tempMinValue, tempMaxValue); + axis.context.offset = 0; + axis.context.lastCheckInverse = axis.inverse; + UpdateAxisTickValueList(axis); + + if (tempMinValue != 0 || tempMaxValue != 0) + { + var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + if (grid != null && axis is XAxis && axis.IsValue()) + { + axis.context.offset = axis.context.minValue > 0 ? + 0 : + (axis.context.maxValue < 0 ? + grid.context.width : + (float) (Math.Abs(axis.context.minValue) * (grid.context.width / + (Math.Abs(axis.context.minValue) + Math.Abs(axis.context.maxValue)))) + ); + axis.context.x = grid.context.x; + axis.context.y = GetAxisLineXOrY(); + axis.context.zeroY = grid.context.y; + axis.context.zeroX = grid.context.x - (float) (axis.context.minValue * grid.context.width / axis.context.minMaxRange); + } + if (grid != null && axis is YAxis && axis.IsValue()) + { + axis.context.offset = axis.context.minValue > 0 ? + 0 : + (axis.context.maxValue < 0 ? + grid.context.height : + (float) (Math.Abs(axis.context.minValue) * (grid.context.height / + (Math.Abs(axis.context.minValue) + Math.Abs(axis.context.maxValue)))) + ); + axis.context.x = GetAxisLineXOrY(); + axis.context.y = grid.context.y; + axis.context.zeroX = grid.context.x; + axis.context.zeroY = grid.context.y - (float) (axis.context.minValue * grid.context.height / axis.context.minMaxRange); + } + } + var dataZoom = chart.GetDataZoomOfAxis(axis); + if (dataZoom != null && dataZoom.enable) + { + if (axis is XAxis) + dataZoom.SetXAxisIndexValueInfo(axisIndex, tempMinValue, tempMaxValue); + else + dataZoom.SetYAxisIndexValueInfo(axisIndex, tempMinValue, tempMaxValue); + } + if (updateChart) + { + UpdateAxisLabelText(axis); + chart.RefreshChart(); + } + } + } + + internal virtual void UpdateAxisLabelText(Axis axis) + { + var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + if (grid == null || axis == null) + return; + + float runtimeWidth = axis is XAxis ? grid.context.width : grid.context.height; + var isPercentStack = SeriesHelper.IsPercentStack<Bar>(chart.series); + var dataZoom = chart.GetDataZoomOfAxis(axis); + + axis.UpdateLabelText(runtimeWidth, dataZoom, isPercentStack); + } + + internal static void UpdateAxisTickValueList(Axis axis) + { + if (axis.IsTime()) + { + var lastCount = axis.context.labelValueList.Count; + DateTimeUtil.UpdateTimeAxisDateTimeList(axis.context.labelValueList, (int) axis.context.minValue, + (int) axis.context.maxValue, axis.splitNumber); + + if (axis.context.labelValueList.Count != lastCount) + axis.SetAllDirty(); + } + else if (axis.IsValue()) + { + var list = axis.context.labelValueList; + var lastCount = list.Count; + list.Clear(); + + var range = axis.context.maxValue - axis.context.minValue; + if (range <= 0) + return; + + double tick = axis.interval; + + if (axis.interval == 0) + { + if (axis.splitNumber > 0) + { + tick = range / axis.splitNumber; + } + else + { + var each = GetTick(range); + tick = each; + if (range / tick > 8) + tick = 2 * each; + else if (range / tick < 4) + tick = each / 2; + } + } + var value = 0d; + if (Mathf.Approximately((float) (axis.context.minValue % tick), 0)) + { + value = axis.context.minValue; + } + else + { + list.Add(axis.context.minValue); + value = Math.Ceiling(axis.context.minValue / tick) * tick; + } + while (value <= axis.context.maxValue) + { + list.Add(value); + value += tick; + + if (list.Count > 20) + break; + } + if (!ChartHelper.IsEquals(axis.context.maxValue, list[list.Count - 1])) + { + list.Add(axis.context.maxValue); + } + if (lastCount != list.Count) + { + axis.SetAllDirty(); + } + } + } + + private static double GetTick(double max) + { + if (max <= 1) return max / 5; + var bigger = Math.Ceiling(Math.Abs(max)); + int n = 1; + while (bigger / (Mathf.Pow(10, n)) > 10) + { + n++; + } + return Math.Pow(10, n); + } + + internal void CheckValueLabelActive(Axis axis, int i, ChartLabel label, Vector3 pos) + { + if (!axis.show || !axis.axisLabel.show) + { + label.SetTextActive(false); + return; + } + if (axis.IsValue()) + { + if (orient == Orient.Horizonal) + { + if (i == 0) + { + var dist = GetLabelPosition(0, 1).x - pos.x; + label.SetTextActive(dist > label.text.GetPreferredWidth()); + } + else if (i == axis.context.labelValueList.Count - 1) + { + var dist = pos.x - GetLabelPosition(0, i - 1).x; + label.SetTextActive(dist > label.text.GetPreferredWidth()); + } + } + else + { + if (i == 0) + { + var dist = GetLabelPosition(0, 1).y - pos.y; + label.SetTextActive(dist > label.text.GetPreferredHeight()); + } + else if (i == axis.context.labelValueList.Count - 1) + { + var dist = pos.y - GetLabelPosition(0, i - 1).y; + label.SetTextActive(dist > label.text.GetPreferredHeight()); + } + } + } + } + + protected void InitAxis(Axis relativedAxis, Orient orient, + float axisStartX, float axisStartY, float axisLength, float relativedLength) + { + Axis axis = component; + chart.InitAxisRuntimeData(axis); + + var objName = ChartCached.GetComponentObjectName(axis); + var axisObj = ChartHelper.AddObject(objName, + chart.transform, + chart.chartMinAnchor, + chart.chartMaxAnchor, + chart.chartPivot, + chart.chartSizeDelta); + + axisObj.SetActive(axis.show); + axisObj.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(axisObj); + + axis.gameObject = axisObj; + axis.context.labelObjectList.Clear(); + + if (!axis.show) + return; + + var axisLabelTextStyle = axis.axisLabel.textStyle; + var dataZoom = chart.GetDataZoomOfAxis(axis); + var splitNumber = AxisHelper.GetScaleNumber(axis, axisLength, dataZoom); + var totalWidth = 0f; + var eachWidth = AxisHelper.GetEachWidth(axis, axisLength, dataZoom); + var gapWidth = axis.boundaryGap ? eachWidth / 2 : 0; + + var textWidth = axis.axisLabel.width > 0 ? + axis.axisLabel.width : + (orient == Orient.Horizonal ? + AxisHelper.GetScaleWidth(axis, axisLength, 0, dataZoom) : + (axisStartX - chart.chartX) + ); + + var textHeight = axis.axisLabel.height > 0 ? + axis.axisLabel.height : + 20f; + + var isPercentStack = SeriesHelper.IsPercentStack<Bar>(chart.series); + var inside = axis.axisLabel.inside; + var defaultAlignment = orient == Orient.Horizonal ? TextAnchor.MiddleCenter : + ((inside && axis.IsLeft()) || (!inside && axis.IsRight()) ? + TextAnchor.MiddleLeft : + TextAnchor.MiddleRight); + + if (axis.IsCategory() && axis.boundaryGap) + splitNumber -= 1; + + for (int i = 0; i < splitNumber; i++) + { + var labelWidth = AxisHelper.GetScaleWidth(axis, axisLength, i + 1, dataZoom); + var labelName = AxisHelper.GetLabelName(axis, axisLength, i, + axis.context.minValue, + axis.context.maxValue, + dataZoom, isPercentStack); + + var label = ChartHelper.AddAxisLabelObject(splitNumber, i, + ChartCached.GetAxisLabelName(i), + axisObj.transform, + new Vector2(textWidth, textHeight), + axis, chart.theme.axis, labelName, + Color.clear, + defaultAlignment); + + if (i == 0) + axis.axisLabel.SetRelatedText(label.text, labelWidth); + + var pos = GetLabelPosition(totalWidth + gapWidth, i); + label.SetPosition(pos); + CheckValueLabelActive(axis, i, label, pos); + + axis.context.labelObjectList.Add(label); + + totalWidth += labelWidth; + } + if (axis.axisName.show) + { + ChartLabel label = null; + var relativedDist = (relativedAxis == null ? 0 : relativedAxis.context.offset); + var zeroPos = new Vector3(axisStartX, axisStartY + relativedDist); + var offset = axis.axisName.labelStyle.offset; + var autoColor = axis.axisLine.GetColor(chart.theme.axis.lineColor); + if (orient == Orient.Horizonal) + { + var posY = GetAxisLineXOrY() + offset.y; + switch (axis.axisName.labelStyle.position) + { + case LabelStyle.Position.Start: + + label = ChartHelper.AddChartLabel(s_DefaultAxisName, axisObj.transform, axis.axisName.labelStyle, + chart.theme.axis, axis.axisName.name, autoColor, TextAnchor.MiddleRight); + label.SetActive(axis.axisName.labelStyle.show); + label.SetPosition(axis.position == Axis.AxisPosition.Top ? + new Vector2(zeroPos.x - offset.x, axisStartY + relativedLength + offset.y + axis.offset) : + new Vector2(zeroPos.x - offset.x, posY)); + break; + + case LabelStyle.Position.Middle: + + label = ChartHelper.AddChartLabel(s_DefaultAxisName, axisObj.transform, axis.axisName.labelStyle, + chart.theme.axis, axis.axisName.name, autoColor, TextAnchor.MiddleCenter); + label.SetActive(axis.axisName.labelStyle.show); + label.SetPosition(axis.position == Axis.AxisPosition.Top ? + new Vector2(axisStartX + axisLength / 2 + offset.x, axisStartY + relativedLength - offset.y + axis.offset) : + new Vector2(axisStartX + axisLength / 2 + offset.x, posY)); + break; + + default: + + label = ChartHelper.AddChartLabel(s_DefaultAxisName, axisObj.transform, axis.axisName.labelStyle, + chart.theme.axis, axis.axisName.name, autoColor, TextAnchor.MiddleLeft); + label.SetActive(axis.axisName.labelStyle.show); + label.SetPosition(axis.position == Axis.AxisPosition.Top ? + new Vector2(axisStartX + axisLength + offset.x, axisStartY + relativedLength + offset.y + axis.offset) : + new Vector2(axisStartX + axisLength + offset.x, posY)); + break; + } + } + else + { + var posX = GetAxisLineXOrY() + offset.x; + switch (axis.axisName.labelStyle.position) + { + case LabelStyle.Position.Start: + + label = ChartHelper.AddChartLabel(s_DefaultAxisName, axisObj.transform, axis.axisName.labelStyle, + chart.theme.axis, axis.axisName.name, autoColor, TextAnchor.MiddleCenter); + label.SetActive(axis.axisName.labelStyle.show); + label.SetPosition(axis.position == Axis.AxisPosition.Right ? + new Vector2(axisStartX + relativedLength + offset.x + axis.offset, axisStartY - offset.y) : + new Vector2(posX, axisStartY - offset.y)); + break; + + case LabelStyle.Position.Middle: + + label = ChartHelper.AddChartLabel(s_DefaultAxisName, axisObj.transform, axis.axisName.labelStyle, + chart.theme.axis, axis.axisName.name, autoColor, TextAnchor.MiddleCenter); + label.SetActive(axis.axisName.labelStyle.show); + label.SetPosition(axis.position == Axis.AxisPosition.Right ? + new Vector2(axisStartX + relativedLength - offset.x + axis.offset, axisStartY + axisLength / 2 + offset.y) : + new Vector2(posX, axisStartY + axisLength / 2 + offset.y)); + break; + + default: + //LabelStyle.Position + label = ChartHelper.AddChartLabel(s_DefaultAxisName, axisObj.transform, axis.axisName.labelStyle, + chart.theme.axis, axis.axisName.name, autoColor, TextAnchor.MiddleCenter); + label.SetActive(axis.axisName.labelStyle.show); + label.SetPosition(axis.position == Axis.AxisPosition.Right ? + new Vector2(axisStartX + relativedLength + offset.x + axis.offset, axisStartY + axisLength + offset.y) : + new Vector2(posX, axisStartY + axisLength + offset.y)); + break; + } + } + } + } + + internal static Vector3 GetLabelPosition(int i, Orient orient, Axis axis, Axis relativedAxis, AxisTheme theme, + float scaleWid, float axisStartX, float axisStartY, float axisLength, float relativedLength) + { + var inside = axis.axisLabel.inside; + var fontSize = axis.axisLabel.textStyle.GetFontSize(theme); + var current = axis.offset; + + if (axis.IsTime() || axis.IsValue()) + { + scaleWid = axis.context.minMaxRange != 0 ? + axis.GetDistance(axis.GetLabelValue(i), axisLength) : + 0; + } + + if (orient == Orient.Horizonal) + { + if (axis.axisLabel.onZero && relativedAxis != null) + axisStartY += relativedAxis.context.offset; + + if (axis.IsTop()) + axisStartY += relativedLength; + + if ((inside && axis.IsBottom()) || (!inside && axis.IsTop())) + current += axisStartY + axis.axisLabel.distance + fontSize / 2; + else + current += axisStartY - axis.axisLabel.distance - fontSize / 2; + + return new Vector3(axisStartX + scaleWid, current) + axis.axisLabel.offset; + } + else + { + if (axis.axisLabel.onZero && relativedAxis != null) + axisStartX += relativedAxis.context.offset; + + if (axis.IsRight()) + axisStartX += relativedLength; + + if ((inside && axis.IsLeft()) || (!inside && axis.IsRight())) + current += axisStartX + axis.axisLabel.distance; + else + current += axisStartX - axis.axisLabel.distance; + + return new Vector3(current, axisStartY + scaleWid) + axis.axisLabel.offset; + } + } + + internal static void DrawAxisLine(VertexHelper vh, Axis axis, AxisTheme theme, Orient orient, + float startX, float startY, float axisLength) + { + var inverse = axis.IsValue() && axis.inverse; + var offset = AxisHelper.GetAxisLineArrowOffset(axis); + + var lineWidth = axis.axisLine.GetWidth(theme.lineWidth); + var lineType = axis.axisLine.GetType(theme.lineType); + var lineColor = axis.axisLine.GetColor(theme.lineColor); + + if (orient == Orient.Horizonal) + { + var left = new Vector3(startX - lineWidth - (inverse ? offset : 0), startY); + var right = new Vector3(startX + axisLength + lineWidth + (!inverse ? offset : 0), startY); + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, left, right, lineColor); + } + else + { + var bottom = new Vector3(startX, startY - lineWidth - (inverse ? offset : 0)); + var top = new Vector3(startX, startY + axisLength + lineWidth + (!inverse ? offset : 0)); + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, bottom, top, lineColor); + } + } + + internal static void DrawAxisTick(VertexHelper vh, Axis axis, AxisTheme theme, DataZoom dataZoom, + Orient orient, float startX, float startY, float axisLength) + { + var lineWidth = axis.axisLine.GetWidth(theme.lineWidth); + var tickLength = axis.axisTick.GetLength(theme.tickLength); + + if (AxisHelper.NeedShowSplit(axis)) + { + var size = AxisHelper.GetScaleNumber(axis, axisLength, dataZoom); + + var current = orient == Orient.Horizonal ? + startX : + startY; + + for (int i = 0; i < size; i++) + { + var scaleWidth = AxisHelper.GetScaleWidth(axis, axisLength, i + 1, dataZoom); + if (i == 0 && (!axis.axisTick.showStartTick || axis.axisTick.alignWithLabel)) + { + current += scaleWidth; + continue; + } + if (i == size - 1 && !axis.axisTick.showEndTick) + { + current += scaleWidth; + continue; + } + if (axis.axisTick.show) + { + if (orient == Orient.Horizonal) + { + float pX = axis.IsTime() ? + (startX + axis.GetDistance(axis.GetLabelValue(i), axisLength)) : + current; + + if (axis.boundaryGap && axis.axisTick.alignWithLabel) + pX -= scaleWidth / 2; + + var sY = 0f; + var eY = 0f; + if ((axis.axisTick.inside && axis.IsBottom()) || + (!axis.axisTick.inside && axis.IsTop())) + { + sY = startY + axis.offset + lineWidth; + eY = sY + tickLength; + } + else + { + sY = startY + axis.offset - lineWidth; + eY = sY - tickLength; + } + + UGL.DrawLine(vh, new Vector3(pX, sY), new Vector3(pX, eY), + axis.axisTick.GetWidth(theme.tickWidth), + axis.axisTick.GetColor(theme.tickColor)); + } + else + { + float pY = axis.IsTime() ? + (startY + axis.GetDistance(axis.GetLabelValue(i), axisLength)) : + current; + + if (axis.boundaryGap && axis.axisTick.alignWithLabel) + pY -= scaleWidth / 2; + + var sX = 0f; + var eX = 0f; + if ((axis.axisTick.inside && axis.IsLeft()) || + (!axis.axisTick.inside && axis.IsRight())) + { + sX = startX + axis.offset + lineWidth; + eX = sX + tickLength; + } + else + { + sX = startX + axis.offset - lineWidth; + eX = sX - tickLength; + } + + UGL.DrawLine(vh, new Vector3(sX, pY), new Vector3(eX, pY), + axis.axisTick.GetWidth(theme.tickWidth), + axis.axisTick.GetColor(theme.tickColor)); + } + } + current += scaleWidth; + } + } + if (axis.show && axis.axisLine.show && axis.axisLine.showArrow) + { + var lineY = startY + axis.offset; + var inverse = axis.IsValue() && axis.inverse; + var axisArrow = axis.axisLine.arrow; + if (orient == Orient.Horizonal) + { + if (inverse) + { + var startPos = new Vector3(startX + axisLength, lineY); + var arrowPos = new Vector3(startX, lineY); + UGL.DrawArrow(vh, startPos, arrowPos, axisArrow.width, axisArrow.height, + axisArrow.offset, axisArrow.dent, + axisArrow.GetColor(axis.axisLine.GetColor(theme.lineColor))); + } + else + { + var arrowPosX = startX + axisLength + lineWidth; + var startPos = new Vector3(startX, lineY); + var arrowPos = new Vector3(arrowPosX, lineY); + UGL.DrawArrow(vh, startPos, arrowPos, axisArrow.width, axisArrow.height, + axisArrow.offset, axisArrow.dent, + axisArrow.GetColor(axis.axisLine.GetColor(theme.lineColor))); + } + } + else + { + if (inverse) + { + var startPos = new Vector3(startX, startY + axisLength); + var arrowPos = new Vector3(startX, startY); + UGL.DrawArrow(vh, startPos, arrowPos, axisArrow.width, axisArrow.height, + axisArrow.offset, axisArrow.dent, + axisArrow.GetColor(axis.axisLine.GetColor(theme.lineColor))); + } + else + { + var startPos = new Vector3(startX, startY); + var arrowPos = new Vector3(startX, startY + axisLength + lineWidth); + UGL.DrawArrow(vh, startPos, arrowPos, axisArrow.width, axisArrow.height, + axisArrow.offset, axisArrow.dent, + axisArrow.GetColor(axis.axisLine.GetColor(theme.lineColor))); + } + } + } + } + + protected void DrawAxisSplit(VertexHelper vh, AxisTheme theme, DataZoom dataZoom, + Orient orient, float startX, float startY, float axisLength, float splitLength, Axis relativedAxis = null) + { + Axis axis = component; + var lineColor = axis.splitLine.GetColor(theme.splitLineColor); + var lineWidth = axis.splitLine.GetWidth(theme.lineWidth); + var lineType = axis.splitLine.GetType(theme.splitLineType); + + var size = AxisHelper.GetScaleNumber(axis, axisLength, dataZoom); + if (axis.IsTime()) + { + size += 1; + if (!ChartHelper.IsEquals(axis.GetLastLabelValue(), axis.context.maxValue)) + size += 1; + } + + var current = orient == Orient.Horizonal ? + startX : + startY; + for (int i = 0; i < size; i++) + { + var scaleWidth = AxisHelper.GetScaleWidth(axis, axisLength, axis.IsTime() ? i : i + 1, dataZoom); + + if (axis.boundaryGap && axis.axisTick.alignWithLabel) + current -= scaleWidth / 2; + + if (axis.splitArea.show && i <= size - 1) + { + if (orient == Orient.Horizonal) + { + UGL.DrawQuadrilateral(vh, + new Vector2(current, startY), + new Vector2(current, startY + splitLength), + new Vector2(current + scaleWidth, startY + splitLength), + new Vector2(current + scaleWidth, startY), + axis.splitArea.GetColor(i, theme)); + } + else + { + UGL.DrawQuadrilateral(vh, + new Vector2(startX, current), + new Vector2(startX + splitLength, current), + new Vector2(startX + splitLength, current + scaleWidth), + new Vector2(startX, current + scaleWidth), + axis.splitArea.GetColor(i, theme)); + } + + } + if (axis.splitLine.show) + { + if (axis.splitLine.NeedShow(i)) + { + if (orient == Orient.Horizonal) + { + if (relativedAxis == null || !MathUtil.Approximately(current, GetAxisLineXOrY())) + ChartDrawer.DrawLineStyle(vh, + lineType, + lineWidth, + new Vector3(current, startY), + new Vector3(current, startY + splitLength), + lineColor); + } + else + { + if (relativedAxis == null || !MathUtil.Approximately(current, GetAxisLineXOrY())) + ChartDrawer.DrawLineStyle(vh, + lineType, + lineWidth, + new Vector3(startX, current), + new Vector3(startX + splitLength, current), + lineColor); + } + } + } + current += scaleWidth; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisHandler.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisHandler.cs.meta new file mode 100644 index 0000000..319549f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0babef8a2708b4745bbb0a0648913a35 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisHelper.cs b/Assets/XCharts/Runtime/Component/Axis/AxisHelper.cs new file mode 100644 index 0000000..8a1d31e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisHelper.cs @@ -0,0 +1,561 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class AxisHelper + { + + /// <summary> + /// 包含箭头偏移的轴线长度 + /// </summary> + /// <param name="axis"></param> + /// <returns></returns> + public static float GetAxisLineArrowOffset(Axis axis) + { + if (axis.axisLine.show && axis.axisLine.showArrow && axis.axisLine.arrow.offset > 0) + { + return axis.axisLine.arrow.offset; + } + return 0; + } + + /// <summary> + /// 获得分割段数 + /// </summary> + /// <param name="dataZoom"></param> + /// <returns></returns> + public static int GetSplitNumber(Axis axis, float coordinateWid, DataZoom dataZoom) + { + if (axis.type == Axis.AxisType.Value) + { + return axis.context.labelValueList.Count - 1; + } + else if (axis.type == Axis.AxisType.Time) + { + return axis.context.labelValueList.Count; + } + else if (axis.type == Axis.AxisType.Log) + { + return axis.splitNumber > 0 ? axis.splitNumber : 4; + } + else if (axis.type == Axis.AxisType.Category) + { + int dataCount = axis.GetDataList(dataZoom).Count; + if (!axis.boundaryGap) + dataCount -= 1; + if (dataCount <= 0) + dataCount = 1; + + if (axis.splitNumber <= 0) + { + if (dataCount <= 10) return dataCount; + else + { + for (int i = 4; i < 6; i++) + { + if (dataCount % i == 0) return i; + } + return 5; + } + } + else + { + if (axis.splitNumber <= 0 || axis.splitNumber > dataCount) + return dataCount; + if (dataCount >= axis.splitNumber * 2) + return axis.splitNumber; + else + return dataCount; + } + } + return 0; + } + + /// <summary> + /// 获得一个类目数据在坐标系中代表的宽度 + /// </summary> + /// <param name="coordinateWidth"></param> + /// <param name="dataZoom"></param> + /// <returns></returns> + public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom) + { + if (dataCount < 1) + dataCount = 1; + if (axis.IsValue()) + return dataCount > 1 ? coordinateWidth / (dataCount - 1) : coordinateWidth; + var categoryCount = axis.GetDataCount(dataZoom); + int segment = (axis.boundaryGap ? categoryCount : categoryCount - 1); + segment = segment <= 0 ? dataCount : segment; + if (segment <= 0) + segment = 1; + + return coordinateWidth / segment; + } + + /// <summary> + /// 获得标签显示的名称 + /// </summary> + /// <param name="index"></param> + /// <param name="minValue"></param> + /// <param name="maxValue"></param> + /// <param name="dataZoom"></param> + /// <returns></returns> + public static string GetLabelName(Axis axis, float coordinateWidth, int index, double minValue, double maxValue, + DataZoom dataZoom, bool forcePercent) + { + int split = GetSplitNumber(axis, coordinateWidth, dataZoom); + if (axis.type == Axis.AxisType.Value) + { + if (minValue == 0 && maxValue == 0) + maxValue = axis.max != 0 ? axis.max : 1; + double value = 0; + if (forcePercent) + maxValue = 100; + + value = axis.GetLabelValue(index); + if (axis.inverse) + { + value = -value; + minValue = -minValue; + maxValue = -maxValue; + } + if (forcePercent) + return string.Format("{0}%", (int) value); + else + return axis.axisLabel.GetFormatterContent(index, value, minValue, maxValue); + } + else if (axis.type == Axis.AxisType.Log) + { + double value = axis.logBaseE ? + System.Math.Exp(axis.GetLogMinIndex() + index) : + System.Math.Pow(axis.logBase, axis.GetLogMinIndex() + index); + if (axis.inverse) + { + value = -value; + minValue = -minValue; + maxValue = -maxValue; + } + return axis.axisLabel.GetFormatterContent(index, value, minValue, maxValue, true); + } + else if (axis.type == Axis.AxisType.Time) + { + if (minValue == 0 && maxValue == 0) + return string.Empty; + if (index > axis.context.labelValueList.Count - 1) + return string.Empty; + + var value = axis.GetLabelValue(index); + return axis.axisLabel.GetFormatterDateTime(index, value, minValue, maxValue); + } + var showData = axis.GetDataList(dataZoom); + int dataCount = showData.Count; + if (dataCount <= 0) + return ""; + int rate = axis.boundaryGap ? (dataCount / split) : (dataCount - 1) / split; + if (rate == 0) rate = 1; + if (axis.insertDataToHead) + { + if (index > 0) + { + var residue = (dataCount - 1) - split * rate; + var newIndex = residue + (index - 1) * rate; + if (newIndex < 0) + newIndex = 0; + return axis.axisLabel.GetFormatterContent(newIndex, showData[newIndex]); + } + else + { + if (axis.boundaryGap && coordinateWidth / dataCount > 5) + return string.Empty; + else + return axis.axisLabel.GetFormatterContent(0, showData[0]); + } + } + else + { + int newIndex = index * rate; + if (newIndex < dataCount) + { + return axis.axisLabel.GetFormatterContent(newIndex, showData[newIndex]); + } + else + { + if (axis.boundaryGap && coordinateWidth / dataCount > 5) + return string.Empty; + else + return axis.axisLabel.GetFormatterContent(dataCount - 1, showData[dataCount - 1]); + } + } + } + + /// <summary> + /// 获得分割线条数 + /// </summary> + /// <param name="dataZoom"></param> + /// <returns></returns> + public static int GetScaleNumber(Axis axis, float coordinateWidth, DataZoom dataZoom = null) + { + int splitNum = GetSplitNumber(axis, coordinateWidth, dataZoom); + if (splitNum == 0) + return 0; + + if (axis.IsCategory()) + { + var dataCount = axis.GetDataList(dataZoom).Count; + var scaleNum = 0; + + if (axis.boundaryGap) + { + scaleNum = dataCount > 2 && dataCount % splitNum == 0 ? + splitNum + 1 : + splitNum + 2; + } + else + { + if (dataCount < splitNum) scaleNum = splitNum; + else scaleNum = dataCount > 2 && dataCount % splitNum == 0 ? + splitNum : + splitNum + 1; + } + return scaleNum; + } + else if (axis.IsTime()) + return splitNum; + else + return splitNum + 1; + } + + /// <summary> + /// 获得分割段宽度 + /// </summary> + /// <param name="coordinateWidth"></param> + /// <param name="dataZoom"></param> + /// <returns></returns> + public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null) + { + if (index < 0) + return 0; + + int num = GetScaleNumber(axis, coordinateWidth, dataZoom); + int splitNum = GetSplitNumber(axis, coordinateWidth, dataZoom); + if (num <= 0) + num = 1; + + if (axis.IsTime() || axis.IsValue()) + { + var value = axis.GetLabelValue(index); + var lastValue = axis.GetLabelValue(index - 1); + return axis.context.minMaxRange == 0 ? + 0 : + (float) (coordinateWidth * (value - lastValue) / axis.context.minMaxRange); + } + else + { + var data = axis.GetDataList(dataZoom); + if (axis.IsCategory() && data.Count > 0) + { + var count = axis.boundaryGap ? data.Count : data.Count - 1; + int tick = count / splitNum; + if (count <= 0) + return 0; + + var each = coordinateWidth / count; + if (axis.insertDataToHead) + { + var max = axis.boundaryGap ? splitNum : splitNum - 1; + if (index == 1) + { + if (axis.axisTick.alignWithLabel) + return each * tick; + else + return coordinateWidth - each * tick * max; + } + else + { + if (count < splitNum) + return each; + else + return each * (count / splitNum); + } + } + else + { + var max = axis.boundaryGap ? num - 1 : num; + if (index >= max) + { + if (axis.axisTick.alignWithLabel) + return each * tick; + else + return coordinateWidth - each * tick * (index - 1); + } + else + { + if (count < splitNum) + return each; + else + return each * (count / splitNum); + } + } + } + else + { + if (splitNum <= 0) + return 0; + else + return coordinateWidth / splitNum; + } + } + } + + public static float GetEachWidth(Axis axis, float coordinateWidth, DataZoom dataZoom = null) + { + var data = axis.GetDataList(dataZoom); + if (data.Count > 0) + { + var count = axis.boundaryGap ? data.Count : data.Count - 1; + return count > 0 ? coordinateWidth / count : coordinateWidth; + } + else + { + int num = GetScaleNumber(axis, coordinateWidth, dataZoom) - 1; + return num > 0 ? coordinateWidth / num : coordinateWidth; + } + } + + /// <summary> + /// 调整最大最小值 + /// </summary> + /// <param name="minValue"></param> + /// <param name="maxValue"></param> + public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, int ceilRate = 0) + { + if (axis.type == Axis.AxisType.Log) + { + int minSplit = 0; + int maxSplit = 0; + maxValue = ChartHelper.GetMaxLogValue(maxValue, axis.logBase, axis.logBaseE, out maxSplit); + minValue = ChartHelper.GetMinLogValue(minValue, axis.logBase, axis.logBaseE, out minSplit); + axis.splitNumber = (minSplit > 0 && maxSplit > 0) ? (maxSplit + minSplit - 1) : (maxSplit + minSplit); + return; + } + if (axis.type == Axis.AxisType.Time) + { } + else if (axis.minMaxType == Axis.AxisMinMaxType.Custom) + { + if (axis.min != 0 || axis.max != 0) + { + if (axis.inverse) + { + minValue = -axis.max; + maxValue = -axis.min; + } + else + { + minValue = axis.min; + maxValue = axis.max; + } + } + } + else + { + if (ceilRate == 0) ceilRate = axis.ceilRate; + switch (axis.minMaxType) + { + case Axis.AxisMinMaxType.Default: + + if (minValue == 0 && maxValue == 0) + { } + else if (minValue > 0 && maxValue > 0) + { + minValue = 0; + maxValue = needFormat ? ChartHelper.GetMaxDivisibleValue(maxValue, ceilRate) : maxValue; + } + else if (minValue < 0 && maxValue < 0) + { + minValue = needFormat ? ChartHelper.GetMinDivisibleValue(minValue, ceilRate) : minValue; + maxValue = 0; + } + else + { + minValue = needFormat ? ChartHelper.GetMinDivisibleValue(minValue, ceilRate) : minValue; + maxValue = needFormat ? ChartHelper.GetMaxDivisibleValue(maxValue, ceilRate) : maxValue; + } + break; + + case Axis.AxisMinMaxType.MinMax: + + minValue = ceilRate != 0 ? ChartHelper.GetMinDivisibleValue(minValue, ceilRate) : minValue; + maxValue = ceilRate != 0 ? ChartHelper.GetMaxDivisibleValue(maxValue, ceilRate) : maxValue; + break; + } + } + } + + public static bool NeedShowSplit(Axis axis) + { + if (!axis.show) + return false; + if (axis.IsCategory() && axis.GetDataList().Count <= 0) + return false; + else + return true; + } + + public static void AdjustCircleLabelPos(ChartLabel txt, Vector3 pos, Vector3 cenPos, float txtHig, Vector3 offset) + { + var txtWidth = txt.text.GetPreferredWidth(); + var sizeDelta = new Vector2(txtWidth, txt.text.GetPreferredHeight()); + txt.text.SetSizeDelta(sizeDelta); + var diff = pos.x - cenPos.x; + if (diff < -1f) //left + { + pos = new Vector3(pos.x - txtWidth / 2, pos.y); + } + else if (diff > 1f) //right + { + pos = new Vector3(pos.x + txtWidth / 2, pos.y); + } + else + { + float y = pos.y > cenPos.y ? pos.y + txtHig / 2 : pos.y - txtHig / 2; + pos = new Vector3(pos.x, y); + } + txt.SetPosition(pos + offset); + } + + public static void AdjustRadiusAxisLabelPos(ChartLabel txt, Vector3 pos, Vector3 cenPos, float txtHig, Vector3 offset) + { + var txtWidth = txt.text.GetPreferredWidth(); + var sizeDelta = new Vector2(txtWidth, txt.text.GetPreferredHeight()); + txt.text.SetSizeDelta(sizeDelta); + var diff = pos.y - cenPos.y; + if (diff > 20f) //left + { + pos = new Vector3(pos.x - txtWidth / 2, pos.y); + } + else if (diff < -20f) //right + { + pos = new Vector3(pos.x + txtWidth / 2, pos.y); + } + else + { + float y = pos.y > cenPos.y ? pos.y + txtHig / 2 : pos.y - txtHig / 2; + pos = new Vector3(pos.x, y); + } + txt.SetPosition(pos); + } + + public static float GetAxisPosition(GridCoord grid, Axis axis, double value, int dataCount = 0, DataZoom dataZoom = null) + { + var gridHeight = axis is YAxis ? grid.context.height : grid.context.width; + var gridXY = axis is YAxis ? grid.context.y : grid.context.x; + if (axis.IsCategory()) + { + if (dataCount == 0) dataCount = axis.data.Count; + var categoryIndex = (int) value; + var scaleWid = AxisHelper.GetDataWidth(axis, gridHeight, dataCount, dataZoom); + float startY = gridXY + (axis.boundaryGap ? scaleWid / 2 : 0); + return startY + scaleWid * categoryIndex; + } + else + { + var yDataHig = (axis.context.minMaxRange == 0) ? 0f : + (float) ((value - axis.context.minValue) / axis.context.minMaxRange * gridHeight); + return gridXY + yDataHig; + + } + } + + public static double GetAxisPositionValue(GridCoord grid, Axis axis, Vector3 pos) + { + if (axis is YAxis) + return GetAxisPositionValue(pos.y, grid.context.height, axis.context.minMaxRange, grid.context.y, axis.context.offset); + else if (axis is XAxis) + return GetAxisPositionValue(pos.x, grid.context.width, axis.context.minMaxRange, grid.context.x, axis.context.offset); + else + return 0; + } + + public static double GetAxisPositionValue(float xy, float axisLength, double axisRange, float axisStart, float axisOffset) + { + var yRate = axisRange / axisLength; + return yRate * (xy - axisStart - axisOffset); + } + + /// <summary> + /// 获得数值value在坐标轴上的坐标位置 + /// </summary> + /// <param name="grid"></param> + /// <param name="axis"></param> + /// <param name="scaleWidth"></param> + /// <param name="value"></param> + /// <returns></returns> + public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value) + { + return GetAxisPositionInternal(grid, axis, scaleWidth, value, true, false); + } + + /// <summary> + /// 获得数值value在坐标轴上相对起点的距离 + /// </summary> + /// <param name="grid"></param> + /// <param name="axis"></param> + /// <param name="scaleWidth"></param> + /// <param name="value"></param> + /// <returns></returns> + public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value) + { + return GetAxisPositionInternal(grid, axis, scaleWidth, value, false, false); + } + + /// <summary> + /// 获得数值value在坐标轴上对应的长度 + /// </summary> + /// <param name="grid"></param> + /// <param name="axis"></param> + /// <param name="scaleWidth"></param> + /// <param name="value"></param> + /// <returns></returns> + public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value) + { + return GetAxisPositionInternal(grid, axis, scaleWidth, value, false, true); + } + + private static float GetAxisPositionInternal(GridCoord grid, Axis axis, float scaleWidth, double value, bool includeGridXY, bool realLength) + { + var isY = axis is YAxis; + var gridHeight = isY ? grid.context.height : grid.context.width; + var gridXY = isY ? grid.context.y : grid.context.x; + + if (axis.IsLog()) + { + int minIndex = axis.GetLogMinIndex(); + float nowIndex = axis.GetLogValue(value); + return includeGridXY ? + gridXY + (nowIndex - minIndex) / axis.splitNumber * gridHeight : + (nowIndex - minIndex) / axis.splitNumber * gridHeight; + } + else if (axis.IsCategory()) + { + var categoryIndex = (int) value; + return includeGridXY ? + gridXY + (axis.boundaryGap ? scaleWidth / 2 : 0) + scaleWidth * categoryIndex : + (axis.boundaryGap ? scaleWidth / 2 : 0) + scaleWidth * categoryIndex; + } + else + { + var yDataHig = 0f; + if (axis.context.minMaxRange != 0) + { + if (realLength) + yDataHig = (float) (value * gridHeight / axis.context.minMaxRange); + else + yDataHig = (float) ((value - axis.context.minValue) / axis.context.minMaxRange * gridHeight); + } + return includeGridXY ? + gridXY + yDataHig : + yDataHig; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisHelper.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisHelper.cs.meta new file mode 100644 index 0000000..ab5a3bc --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 566e3426780cc4339a1fb92d9604d21f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisLabel.cs b/Assets/XCharts/Runtime/Component/Axis/AxisLabel.cs new file mode 100644 index 0000000..acac616 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisLabel.cs @@ -0,0 +1,230 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// Settings related to axis label. + /// |坐标轴刻度标签的相关设置。 + /// </summary> + [Serializable] + public class AxisLabel : LabelStyle + { + [SerializeField] private int m_Interval = 0; + [SerializeField] private bool m_Inside = false; + [SerializeField] private bool m_ShowAsPositiveNumber = false; + [SerializeField] private bool m_OnZero = false; + [SerializeField] private bool m_ShowStartLabel = true; + [SerializeField] private bool m_ShowEndLabel = true; + [SerializeField] private TextLimit m_TextLimit = new TextLimit(); + + /// <summary> + /// The display interval of the axis label. + /// |坐标轴刻度标签的显示间隔,在类目轴中有效。0表示显示所有标签,1表示隔一个隔显示一个标签,以此类推。 + /// </summary> + public int interval + { + get { return m_Interval; } + set { if (PropertyUtil.SetStruct(ref m_Interval, value)) SetComponentDirty(); } + } + /// <summary> + /// Set this to true so the axis labels face the inside direction. + /// |刻度标签是否朝内,默认朝外。 + /// </summary> + public bool inside + { + get { return m_Inside; } + set { if (PropertyUtil.SetStruct(ref m_Inside, value)) SetComponentDirty(); } + } + /// <summary> + /// Show negative number as positive number. + /// |将负数数值显示为正数。一般和`Serie`的`showAsPositiveNumber`配合使用。 + /// </summary> + public bool showAsPositiveNumber + { + get { return m_ShowAsPositiveNumber; } + set { if (PropertyUtil.SetStruct(ref m_ShowAsPositiveNumber, value)) SetComponentDirty(); } + } + + /// <summary> + /// 刻度标签显示在0刻度上。 + /// </summary> + public bool onZero + { + get { return m_OnZero; } + set { if (PropertyUtil.SetStruct(ref m_OnZero, value)) SetComponentDirty(); } + } + /// <summary> + /// Whether to display the first label. + /// |是否显示第一个文本。 + /// </summary> + public bool showStartLabel + { + get { return m_ShowStartLabel; } + set { if (PropertyUtil.SetStruct(ref m_ShowStartLabel, value)) SetComponentDirty(); } + } + /// <summary> + /// Whether to display the last label. + /// |是否显示最后一个文本。 + /// </summary> + public bool showEndLabel + { + get { return m_ShowEndLabel; } + set { if (PropertyUtil.SetStruct(ref m_ShowEndLabel, value)) SetComponentDirty(); } + } + /// <summary> + /// 文本限制。 + /// </summary> + public TextLimit textLimit + { + get { return m_TextLimit; } + set { if (value != null) { m_TextLimit = value; SetComponentDirty(); } } + } + + public override bool componentDirty { get { return m_ComponentDirty || m_TextLimit.componentDirty; } } + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + textLimit.ClearComponentDirty(); + } + + public static AxisLabel defaultAxisLabel + { + get + { + return new AxisLabel() + { + m_Show = true, + m_Interval = 0, + m_Inside = false, + m_Distance = 8, + m_TextStyle = new TextStyle(), + }; + } + } + + public new AxisLabel Clone() + { + var axisLabel = new AxisLabel(); + axisLabel.show = show; + axisLabel.formatter = formatter; + axisLabel.interval = interval; + axisLabel.inside = inside; + axisLabel.distance = distance; + axisLabel.numericFormatter = numericFormatter; + axisLabel.width = width; + axisLabel.height = height; + axisLabel.showStartLabel = showStartLabel; + axisLabel.showEndLabel = showEndLabel; + axisLabel.textLimit = textLimit.Clone(); + axisLabel.textStyle.Copy(textStyle); + return axisLabel; + } + + public void Copy(AxisLabel axisLabel) + { + show = axisLabel.show; + formatter = axisLabel.formatter; + interval = axisLabel.interval; + inside = axisLabel.inside; + distance = axisLabel.distance; + numericFormatter = axisLabel.numericFormatter; + width = axisLabel.width; + height = axisLabel.height; + showStartLabel = axisLabel.showStartLabel; + showEndLabel = axisLabel.showEndLabel; + textLimit.Copy(axisLabel.textLimit); + textStyle.Copy(axisLabel.textStyle); + } + + public void SetRelatedText(ChartText txt, float labelWidth) + { + m_TextLimit.SetRelatedText(txt, labelWidth); + } + + public string GetFormatterContent(int labelIndex, string category) + { + if (m_FormatterFunction != null) + { + return m_FormatterFunction(labelIndex, 0, category); + } + if (string.IsNullOrEmpty(category)) + return category; + + if (string.IsNullOrEmpty(m_Formatter)) + { + return m_TextLimit.GetLimitContent(category); + } + else + { + var content = m_Formatter; + FormatterHelper.ReplaceAxisLabelContent(ref content, category); + return m_TextLimit.GetLimitContent(content); + } + } + + public string GetFormatterContent(int labelIndex, double value, double minValue, double maxValue, bool isLog = false) + { + if (showAsPositiveNumber && value < 0) + { + value = Math.Abs(value); + } + if (m_FormatterFunction != null) + { + return m_FormatterFunction(labelIndex, value, null); + } + if (string.IsNullOrEmpty(m_Formatter)) + { + if (isLog) + { + return ChartCached.NumberToStr(value, numericFormatter); + } + if (minValue >= -1 && minValue <= 1 && maxValue >= -1 && maxValue <= 1) + { + int minAcc = ChartHelper.GetFloatAccuracy(minValue); + int maxAcc = ChartHelper.GetFloatAccuracy(maxValue); + int curAcc = ChartHelper.GetFloatAccuracy(value); + int acc = Mathf.Max(Mathf.Max(minAcc, maxAcc), curAcc); + return ChartCached.FloatToStr(value, numericFormatter, acc); + } + return ChartCached.NumberToStr(value, numericFormatter); + } + else + { + var content = m_Formatter; + FormatterHelper.ReplaceAxisLabelContent(ref content, numericFormatter, value); + return content; + } + } + + public string GetFormatterDateTime(int labelIndex, double value, double minValue, double maxValue) + { + if (m_FormatterFunction != null) + { + return m_FormatterFunction(labelIndex, value, null); + } + var timestamp = (int) value; + var dateTime = DateTimeUtil.GetDateTime(timestamp); + var dateString = string.Empty; + if (string.IsNullOrEmpty(numericFormatter)) + { + dateString = DateTimeUtil.GetDateTimeFormatString(dateTime, maxValue - minValue); + } + else + { + dateString = dateTime.ToString(numericFormatter); + } + if (!string.IsNullOrEmpty(m_Formatter)) + { + var content = m_Formatter; + FormatterHelper.ReplaceAxisLabelContent(ref content, dateString); + return m_TextLimit.GetLimitContent(content); + } + else + { + return m_TextLimit.GetLimitContent(dateString); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisLabel.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisLabel.cs.meta new file mode 100644 index 0000000..a735687 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisLabel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 051f9473d1beb4e0bb35aa1600cb44bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisLine.cs b/Assets/XCharts/Runtime/Component/Axis/AxisLine.cs new file mode 100644 index 0000000..289a7ad --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisLine.cs @@ -0,0 +1,77 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Settings related to axis line. + /// |坐标轴轴线。 + /// </summary> + [System.Serializable] + public class AxisLine : BaseLine + { + [SerializeField] private bool m_OnZero; + [SerializeField] private bool m_ShowArrow; + [SerializeField] private ArrowStyle m_Arrow = new ArrowStyle(); + + /// <summary> + /// When mutiple axes exists, this option can be used to specify which axis can be "onZero" to. + /// |X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。 + /// </summary> + public bool onZero + { + get { return m_OnZero; } + set { if (PropertyUtil.SetStruct(ref m_OnZero, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to show the arrow symbol of axis. + /// |是否显示箭头。 + /// </summary> + public bool showArrow + { + get { return m_ShowArrow; } + set { if (PropertyUtil.SetStruct(ref m_ShowArrow, value)) SetVerticesDirty(); } + } + /// <summary> + /// the arrow of line. + /// |轴线箭头。 + /// </summary> + public ArrowStyle arrow + { + get { return m_Arrow; } + set { if (PropertyUtil.SetClass(ref m_Arrow, value)) SetVerticesDirty(); } + } + public static AxisLine defaultAxisLine + { + get + { + var axisLine = new AxisLine + { + m_Show = true, + m_OnZero = true, + m_ShowArrow = false, + m_Arrow = new ArrowStyle(), + m_LineStyle = new LineStyle(LineStyle.Type.None), + }; + return axisLine; + } + } + + public AxisLine Clone() + { + var axisLine = new AxisLine(); + axisLine.show = show; + axisLine.onZero = onZero; + axisLine.showArrow = showArrow; + axisLine.arrow = arrow.Clone(); + return axisLine; + } + + public void Copy(AxisLine axisLine) + { + base.Copy(axisLine); + onZero = axisLine.onZero; + showArrow = axisLine.showArrow; + arrow.Copy(axisLine.arrow); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisLine.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisLine.cs.meta new file mode 100644 index 0000000..7551798 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2748c2a8789724709aa76f6056eb708d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisName.cs b/Assets/XCharts/Runtime/Component/Axis/AxisName.cs new file mode 100644 index 0000000..412df3f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisName.cs @@ -0,0 +1,76 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// the name of axis. + /// |坐标轴名称。 + /// </summary> + [Serializable] + public class AxisName : ChildComponent + { + [SerializeField] private bool m_Show; + [SerializeField] private string m_Name; + [SerializeField] private LabelStyle m_LabelStyle = new LabelStyle(); + + /// <summary> + /// Whether to show axis name. + /// |是否显示坐标名称。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } + } + /// <summary> + /// the name of axis. + /// |坐标轴名称。 + /// </summary> + public string name + { + get { return m_Name; } + set { if (PropertyUtil.SetClass(ref m_Name, value)) SetComponentDirty(); } + } + /// <summary> + /// The text style of axis name. + /// |文本样式。 + /// </summary> + public LabelStyle labelStyle + { + get { return m_LabelStyle; } + set { if (PropertyUtil.SetClass(ref m_LabelStyle, value)) SetComponentDirty(); } + } + + public static AxisName defaultAxisName + { + get + { + var axisName = new AxisName() + { + m_Show = false, + m_Name = "axisName", + m_LabelStyle = new LabelStyle() + }; + axisName.labelStyle.position = LabelStyle.Position.End; + return axisName; + } + } + + public AxisName Clone() + { + var axisName = new AxisName(); + axisName.show = show; + axisName.name = name; + axisName.m_LabelStyle.Copy(m_LabelStyle); + return axisName; + } + + public void Copy(AxisName axisName) + { + show = axisName.show; + name = axisName.name; + m_LabelStyle.Copy(axisName.labelStyle); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisName.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisName.cs.meta new file mode 100644 index 0000000..e217ba8 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisName.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 878555ba3c6b1479f94f38185700531e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisSplitArea.cs b/Assets/XCharts/Runtime/Component/Axis/AxisSplitArea.cs new file mode 100644 index 0000000..1440f85 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisSplitArea.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Split area of axis in grid area, not shown by default. + /// |坐标轴在 grid 区域中的分隔区域,默认不显示。 + /// </summary> + [Serializable] + public class AxisSplitArea : ChildComponent + { + [SerializeField] private bool m_Show; + [SerializeField] private List<Color32> m_Color; + + /// <summary> + /// Set this to true to show the splitArea. + /// |是否显示分隔区域。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// Color of split area. SplitArea color could also be set in color array, + /// which the split lines would take as their colors in turns. + /// Dark and light colors in turns are used by default. + /// |分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。 + /// </summary> + public List<Color32> color + { + get { return m_Color; } + set { if (value != null) { m_Color = value; SetVerticesDirty(); } } + } + + public static AxisSplitArea defaultSplitArea + { + get + { + return new AxisSplitArea() + { + m_Show = false, + m_Color = new List<Color32>() { } + }; + } + } + + public AxisSplitArea Clone() + { + var axisSplitArea = new AxisSplitArea(); + axisSplitArea.show = show; + axisSplitArea.color = new List<Color32>(); + ChartHelper.CopyList(axisSplitArea.color, color); + return axisSplitArea; + } + + public void Copy(AxisSplitArea splitArea) + { + show = splitArea.show; + color.Clear(); + ChartHelper.CopyList(color, splitArea.color); + } + + public Color32 GetColor(int index, BaseAxisTheme theme) + { + if (color.Count > 0) + { + var i = index % color.Count; + return color[i]; + } + else + { + var i = index % theme.splitAreaColors.Count; + return theme.splitAreaColors[i]; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisSplitArea.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisSplitArea.cs.meta new file mode 100644 index 0000000..76dbcd5 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisSplitArea.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18702fd7797054670af64546b7304bb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisSplitLine.cs b/Assets/XCharts/Runtime/Component/Axis/AxisSplitLine.cs new file mode 100644 index 0000000..8e34527 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisSplitLine.cs @@ -0,0 +1,74 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Split line of axis in grid area. + /// |坐标轴在 grid 区域中的分隔线。 + /// </summary> + [Serializable] + public class AxisSplitLine : BaseLine + { + [SerializeField] private int m_Interval; + [SerializeField] private float m_Distance; + [SerializeField] private bool m_AutoColor; + + /// <summary> + /// The distance between the split line and axis line. + /// |刻度线与轴线的距离。 + /// </summary> + public float distance { get { return m_Distance; } set { m_Distance = value; } } + /// <summary> + /// auto color. + /// |自动设置颜色。 + /// </summary> + public bool autoColor { get { return m_AutoColor; } set { m_AutoColor = value; } } + /// <summary> + /// Interval of Axis splitLine. + /// |坐标轴分隔线的显示间隔。 + /// </summary> + public int interval + { + get { return m_Interval; } + set { if (PropertyUtil.SetStruct(ref m_Interval, value)) SetVerticesDirty(); } + } + + public override bool vertsDirty { get { return m_VertsDirty || m_LineStyle.anyDirty; } } + public override void ClearVerticesDirty() + { + base.ClearVerticesDirty(); + m_LineStyle.ClearVerticesDirty(); + } + public static AxisSplitLine defaultSplitLine + { + get + { + return new AxisSplitLine() + { + m_Show = false, + }; + } + } + + public AxisSplitLine Clone() + { + var axisSplitLine = new AxisSplitLine(); + axisSplitLine.show = show; + axisSplitLine.interval = interval; + axisSplitLine.lineStyle = lineStyle.Clone(); + return axisSplitLine; + } + + public void Copy(AxisSplitLine splitLine) + { + base.Copy(splitLine); + interval = splitLine.interval; + } + + internal bool NeedShow(int index) + { + return show && (interval == 0 || index % (interval + 1) == 0); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisSplitLine.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisSplitLine.cs.meta new file mode 100644 index 0000000..4b8c3e4 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisSplitLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3da942a7a6bea44e2998ed993c0641ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisTick.cs b/Assets/XCharts/Runtime/Component/Axis/AxisTick.cs new file mode 100644 index 0000000..ff3e719 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisTick.cs @@ -0,0 +1,110 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Settings related to axis tick. + /// |坐标轴刻度相关设置。 + /// </summary> + [System.Serializable] + public class AxisTick : BaseLine + { + [SerializeField] private bool m_AlignWithLabel; + [SerializeField] private bool m_Inside; + [SerializeField] private bool m_ShowStartTick; + [SerializeField] private bool m_ShowEndTick; + [SerializeField] private float m_Distance; + [SerializeField] protected int m_SplitNumber = 0; + [SerializeField] private bool m_AutoColor; + + /// <summary> + /// The distance between the tick line and axis line. + /// |刻度线与轴线的距离。 + /// </summary> + public float distance { get { return m_Distance; } set { m_Distance = value; } } + + /// <summary> + /// Align axis tick with label, which is available only when boundaryGap is set to be true in category axis. + /// |类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。 + /// </summary> + public bool alignWithLabel + { + get { return m_AlignWithLabel; } + set { if (PropertyUtil.SetStruct(ref m_AlignWithLabel, value)) SetVerticesDirty(); } + } + /// <summary> + /// Set this to true so the axis labels face the inside direction. + /// |坐标轴刻度是否朝内,默认朝外。 + /// </summary> + public bool inside + { + get { return m_Inside; } + set { if (PropertyUtil.SetStruct(ref m_Inside, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to display the first tick. + /// |是否显示第一个刻度。 + /// </summary> + public bool showStartTick + { + get { return m_ShowStartTick; } + set { if (PropertyUtil.SetStruct(ref m_ShowStartTick, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to display the last tick. + /// |是否显示最后一个刻度。 + /// </summary> + public bool showEndTick + { + get { return m_ShowEndTick; } + set { if (PropertyUtil.SetStruct(ref m_ShowEndTick, value)) SetVerticesDirty(); } + } + /// <summary> + /// Number of segments that the axis is split into. + /// |分隔线之间分割的刻度数。 + /// </summary> + public int splitNumber + { + get { return m_SplitNumber; } + set { if (PropertyUtil.SetStruct(ref m_SplitNumber, value)) SetAllDirty(); } + } + public bool autoColor { get { return m_AutoColor; } set { m_AutoColor = value; } } + + public static AxisTick defaultTick + { + get + { + var tick = new AxisTick + { + m_Show = true, + m_AlignWithLabel = false, + m_Inside = false, + m_ShowStartTick = true, + m_ShowEndTick = true + }; + return tick; + } + } + + public AxisTick Clone() + { + var axisTick = new AxisTick(); + axisTick.show = show; + axisTick.alignWithLabel = alignWithLabel; + axisTick.inside = inside; + axisTick.showStartTick = showStartTick; + axisTick.showEndTick = showEndTick; + axisTick.lineStyle = lineStyle.Clone(); + return axisTick; + } + + public void Copy(AxisTick axisTick) + { + show = axisTick.show; + alignWithLabel = axisTick.alignWithLabel; + inside = axisTick.inside; + showStartTick = axisTick.showStartTick; + showEndTick = axisTick.showEndTick; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/AxisTick.cs.meta b/Assets/XCharts/Runtime/Component/Axis/AxisTick.cs.meta new file mode 100644 index 0000000..c4fdfad --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/AxisTick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60278762ed892450d85e27b7df8f997e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/ParallelAxis.meta b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis.meta new file mode 100644 index 0000000..7734a7d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 24693180b2a2e41b2ab4025b2bbebf01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxis.cs b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxis.cs new file mode 100644 index 0000000..18f8605 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxis.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [RequireChartComponent(typeof(ParallelCoord))] + [ComponentHandler(typeof(ParallelAxisHander), true)] + public class ParallelAxis : Axis + { + public override void SetDefaultValue() + { + m_Show = true; + m_Type = AxisType.Value; + m_Min = 0; + m_Max = 0; + m_SplitNumber = 0; + m_BoundaryGap = true; + m_Position = AxisPosition.Bottom; + m_Offset = 0; + m_Data = new List<string>() { "x1", "x2", "x3", "x4", "x5" }; + m_Icons = new List<Sprite>(5); + splitLine.show = false; + splitLine.lineStyle.type = LineStyle.Type.None; + axisLabel.textLimit.enable = true; + } + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxis.cs.meta b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxis.cs.meta new file mode 100644 index 0000000..4dd9fa4 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7bc01c54f4d6485389fd57c37810c74 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxisHander.cs b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxisHander.cs new file mode 100644 index 0000000..7615222 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxisHander.cs @@ -0,0 +1,167 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class ParallelAxisHander : AxisHandler<ParallelAxis> + { + private Orient m_Orient; + private ParallelCoord m_Parallel; + + protected override Orient orient { get { return m_Orient; } } + + public override void InitComponent() + { + InitParallelAxis(component); + } + + public override void Update() + { + UpdateContext(component); + } + + public override void DrawBase(VertexHelper vh) + { + UpdateContext(component); + DrawParallelAxisSplit(vh, component); + DrawParallelAxisLine(vh, component); + DrawParallelAxisTick(vh, component); + } + + private void UpdateContext(ParallelAxis axis) + { + var parallel = chart.GetChartComponent<ParallelCoord>(axis.parallelIndex); + if (parallel == null) + return; + + m_Orient = parallel.orient; + m_Parallel = parallel; + var axisCount = chart.GetChartComponentNum<ParallelAxis>(); + + if (m_Orient == Orient.Horizonal) + { + var each = axisCount > 1 ? parallel.context.height / (axisCount - 1) : 0; + axis.context.x = parallel.context.x; + axis.context.y = parallel.context.y + (axis.index) * each; + axis.context.width = parallel.context.width; + } + else + { + var each = axisCount > 1 ? parallel.context.width / (axisCount - 1) : 0; + axis.context.x = parallel.context.x + (axis.index) * each; + axis.context.y = parallel.context.y; + axis.context.width = parallel.context.height; + } + axis.context.orient = m_Orient; + axis.context.height = 0; + axis.context.position = new Vector3(axis.context.x, axis.context.y); + } + + private void InitParallelAxis(ParallelAxis axis) + { + var theme = chart.theme; + var xAxisIndex = axis.index; + axis.painter = chart.painter; + axis.refreshComponent = delegate() + { + UpdateContext(axis); + InitAxis(null, + m_Orient, + axis.context.x, + axis.context.y, + axis.context.width, + axis.context.height); + }; + axis.refreshComponent(); + } + + internal override void UpdateAxisLabelText(Axis axis) + { + base.UpdateAxisLabelText(axis); + if (axis.IsTime() || axis.IsValue()) + { + for (int i = 0; i < axis.context.labelObjectList.Count; i++) + { + var label = axis.context.labelObjectList[i]; + if (label != null) + { + var pos = GetLabelPosition(0, i); + label.SetPosition(pos); + CheckValueLabelActive(component, i, label, pos); + } + } + } + } + + protected override Vector3 GetLabelPosition(float scaleWid, int i) + { + if (m_Parallel == null) + return Vector3.zero; + + return GetLabelPosition(i, m_Orient, component, null, + chart.theme.axis, + scaleWid, + component.context.x, + component.context.y, + component.context.width, + component.context.height); + } + + private void DrawParallelAxisSplit(VertexHelper vh, ParallelAxis axis) + { + if (AxisHelper.NeedShowSplit(axis)) + { + if (m_Parallel == null) + return; + + var dataZoom = chart.GetDataZoomOfAxis(axis); + + DrawAxisSplit(vh, chart.theme.axis, dataZoom, + m_Orient, + axis.context.x, + axis.context.y, + axis.context.width, + axis.context.height); + } + } + + private void DrawParallelAxisTick(VertexHelper vh, ParallelAxis axis) + { + if (AxisHelper.NeedShowSplit(axis)) + { + if (m_Parallel == null) + return; + + var dataZoom = chart.GetDataZoomOfAxis(axis); + + DrawAxisTick(vh, axis, chart.theme.axis, dataZoom, + m_Orient, + axis.context.x, + axis.context.y, + axis.context.width); + } + } + + private void DrawParallelAxisLine(VertexHelper vh, ParallelAxis axis) + { + if (axis.show && axis.axisLine.show) + { + if (m_Parallel == null) + return; + + DrawAxisLine(vh, axis, + chart.theme.axis, + m_Orient, + axis.context.x, + axis.context.y, + axis.context.width); + } + } + + protected override float GetAxisLineXOrY() + { + return component.context.y; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxisHander.cs.meta b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxisHander.cs.meta new file mode 100644 index 0000000..5b82d2f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/ParallelAxis/ParallelAxisHander.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26ab25bf702c54ad38461c91ba1451af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/RadiusAxis.meta b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis.meta new file mode 100644 index 0000000..a418bc2 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c8971958a94d47e68f7ebdff5872b71 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxis.cs b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxis.cs new file mode 100644 index 0000000..ab12414 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxis.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + /// <summary> + /// Radial axis of polar coordinate. + /// |极坐标系的径向轴。 + /// </summary> + [System.Serializable] + [RequireChartComponent(typeof(PolarCoord))] + [ComponentHandler(typeof(RadiusAxisHandler), true)] + public class RadiusAxis : Axis + { + public override void SetDefaultValue() + { + m_Show = true; + m_Type = AxisType.Value; + m_Min = 0; + m_Max = 0; + m_SplitNumber = 5; + m_BoundaryGap = false; + m_Data = new List<string>(5); + splitLine.show = true; + splitLine.lineStyle.type = LineStyle.Type.Solid; + axisLabel.textLimit.enable = false; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxis.cs.meta b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxis.cs.meta new file mode 100644 index 0000000..d9c487e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6429398a27934726ba49d387d681728 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxisHandler.cs b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxisHandler.cs new file mode 100644 index 0000000..630a061 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxisHandler.cs @@ -0,0 +1,188 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class RadiusAxisHandler : AxisHandler<RadiusAxis> + { + public override void InitComponent() + { + InitRadiusAxis(component); + } + + public override void Update() + { + UpdateAxisMinMaxValue(component); + UpdatePointerValue(component); + } + + public override void DrawBase(VertexHelper vh) + { + DrawRadiusAxis(vh, component); + } + + protected override void UpdatePointerValue(Axis axis) + { + var polar = chart.GetChartComponent<PolarCoord>(axis.polarIndex); + if (polar == null) + return; + + if (!polar.context.isPointerEnter) + { + axis.context.pointerValue = double.PositiveInfinity; + return; + } + + var angleAxis = ComponentHelper.GetAngleAxis(chart.components, polar.index); + if (angleAxis == null) + return; + + var dist = Vector3.Distance(chart.pointerPos, polar.context.center); + axis.context.pointerValue = axis.context.minValue + (dist / polar.context.radius) * axis.context.minMaxRange; + axis.context.pointerLabelPosition = GetLabelPosition(polar, axis, angleAxis.context.startAngle, dist); + } + + private void UpdateAxisMinMaxValue(RadiusAxis axis, bool updateChart = true) + { + if (axis.IsCategory() || !axis.show) return; + double tempMinValue = 0; + double tempMaxValue = 0; + SeriesHelper.GetXMinMaxValue(chart.series, null, axis.polarIndex, true, axis.inverse, out tempMinValue, + out tempMaxValue, true); + AxisHelper.AdjustMinMaxValue(axis, ref tempMinValue, ref tempMaxValue, true); + if (tempMinValue != axis.context.minValue || tempMaxValue != axis.context.maxValue) + { + axis.UpdateMinMaxValue(tempMinValue, tempMaxValue); + axis.context.offset = 0; + axis.context.lastCheckInverse = axis.inverse; + UpdateAxisTickValueList(axis); + + if (updateChart) + { + UpdateAxisLabelText(axis); + chart.RefreshChart(); + } + } + } + + internal void UpdateAxisLabelText(RadiusAxis axis) + { + var polar = chart.GetChartComponent<PolarCoord>(axis.polarIndex); + if (axis.context.labelObjectList.Count <= 0) + InitRadiusAxis(axis); + else + axis.UpdateLabelText(polar.context.radius, null, false); + } + + private void InitRadiusAxis(RadiusAxis axis) + { + var polar = chart.GetChartComponent<PolarCoord>(axis.index); + if (polar == null) + return; + + var angleAxis = ComponentHelper.GetAngleAxis(chart.components, polar.index); + if (angleAxis == null) + return; + + PolarHelper.UpdatePolarCenter(polar, chart.chartPosition, chart.chartWidth, chart.chartHeight); + axis.context.labelObjectList.Clear(); + var radius = polar.context.radius; + var objName = component.GetType().Name + axis.index; + var axisObj = ChartHelper.AddObject(objName, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + axisObj.transform.localPosition = Vector3.zero; + axisObj.SetActive(axis.show && axis.axisLabel.show); + axisObj.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(axisObj); + var textStyle = axis.axisLabel.textStyle; + var splitNumber = AxisHelper.GetScaleNumber(axis, radius, null); + var totalWidth = 0f; + var txtHig = textStyle.GetFontSize(chart.theme.axis) + 2; + for (int i = 0; i < splitNumber; i++) + { + var labelWidth = AxisHelper.GetScaleWidth(axis, radius, i + 1, null); + var inside = axis.axisLabel.inside; + var isPercentStack = SeriesHelper.IsPercentStack<Bar>(chart.series); + var labelName = AxisHelper.GetLabelName(axis, radius, i, axis.context.minValue, axis.context.maxValue, + null, isPercentStack); + var label = ChartHelper.AddAxisLabelObject(splitNumber, i, objName + i, axisObj.transform, + new Vector2(labelWidth, txtHig), axis, chart.theme.axis, labelName, Color.clear); + + if (i == 0) + axis.axisLabel.SetRelatedText(label.text, labelWidth); + + label.text.SetAlignment(textStyle.GetAlignment(TextAnchor.MiddleCenter)); + label.SetText(labelName); + label.SetPosition(GetLabelPosition(polar, axis, angleAxis.context.startAngle, totalWidth)); + label.SetActive(true); + label.SetTextActive(true); + + axis.context.labelObjectList.Add(label); + + totalWidth += labelWidth; + } + } + + private Vector3 GetLabelPosition(PolarCoord polar, Axis axis, float startAngle, float totalWidth) + { + var cenPos = polar.context.center; + var dire = ChartHelper.GetDire(startAngle, true).normalized; + var tickLength = axis.axisTick.GetLength(chart.theme.axis.tickLength); + var tickVector = ChartHelper.GetVertialDire(dire) * + (tickLength + axis.axisLabel.distance); + return ChartHelper.GetPos(cenPos, totalWidth, startAngle, true) + tickVector; + } + + private void DrawRadiusAxis(VertexHelper vh, RadiusAxis radiusAxis) + { + var polar = chart.GetChartComponent<PolarCoord>(radiusAxis.polarIndex); + if (polar == null) + return; + + var angleAxis = ComponentHelper.GetAngleAxis(chart.components, polar.index); + if (angleAxis == null) + return; + + var startAngle = angleAxis.context.startAngle; + var radius = polar.context.radius; + var cenPos = polar.context.center; + var size = AxisHelper.GetScaleNumber(radiusAxis, radius, null); + var totalWidth = 0f; + var dire = ChartHelper.GetDire(startAngle, true).normalized; + var tickWidth = radiusAxis.axisTick.GetWidth(chart.theme.axis.tickWidth); + var tickLength = radiusAxis.axisTick.GetLength(chart.theme.axis.tickLength); + var tickVetor = ChartHelper.GetVertialDire(dire) * tickLength; + for (int i = 0; i <= size; i++) + { + var scaleWidth = AxisHelper.GetScaleWidth(radiusAxis, radius, i); + var pos = ChartHelper.GetPos(cenPos, totalWidth + tickWidth, startAngle, true); + if (radiusAxis.show && radiusAxis.splitLine.show) + { + var outsideRaidus = totalWidth + radiusAxis.splitLine.GetWidth(chart.theme.axis.splitLineWidth) * 2; + var splitLineColor = radiusAxis.splitLine.GetColor(chart.theme.axis.splitLineColor); + UGL.DrawDoughnut(vh, cenPos, totalWidth, outsideRaidus, splitLineColor, Color.clear); + } + if (radiusAxis.show && radiusAxis.axisTick.show) + { + if ((i == 0 && radiusAxis.axisTick.showStartTick) || + (i == size && radiusAxis.axisTick.showEndTick) || + (i > 0 && i < size)) + { + UGL.DrawLine(vh, pos, pos + tickVetor, tickWidth, chart.theme.axis.lineColor); + } + } + totalWidth += scaleWidth; + } + if (radiusAxis.show && radiusAxis.axisLine.show) + { + var lineStartPos = polar.context.center - dire * tickWidth; + var lineEndPos = polar.context.center + dire * (radius + tickWidth); + var lineWidth = radiusAxis.axisLine.GetWidth(chart.theme.axis.lineWidth); + UGL.DrawLine(vh, lineStartPos, lineEndPos, lineWidth, chart.theme.axis.lineColor); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxisHandler.cs.meta b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxisHandler.cs.meta new file mode 100644 index 0000000..5319e69 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/RadiusAxis/RadiusAxisHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f2cb79bfe30c4f14a3117f9f30ed3bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/SingleAxis.meta b/Assets/XCharts/Runtime/Component/Axis/SingleAxis.meta new file mode 100644 index 0000000..09c6e70 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/SingleAxis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17498717d39c14b43a91c67401407410 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxis.cs b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxis.cs new file mode 100644 index 0000000..263d37b --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxis.cs @@ -0,0 +1,152 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Single axis. + /// |单轴。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(SingleAxisHander), true)] + public class SingleAxis : Axis, IUpdateRuntimeData + { + [SerializeField] protected Orient m_Orient = Orient.Horizonal; + [SerializeField] private float m_Left = 0.1f; + [SerializeField] private float m_Right = 0.1f; + [SerializeField] private float m_Top = 0f; + [SerializeField] private float m_Bottom = 0.2f; + [SerializeField] private float m_Width = 0; + [SerializeField] private float m_Height = 50; + + /// <summary> + /// Orientation of the axis. By default, it's 'Horizontal'. You can set it to be 'Vertical' to make a vertical axis. + /// |坐标轴朝向。默认为水平朝向。 + /// </summary> + public Orient orient + { + get { return m_Orient; } + set { if (PropertyUtil.SetStruct(ref m_Orient, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between component and the left side of the container. + /// |组件离容器左侧的距离。 + /// </summary> + public float left + { + get { return m_Left; } + set { if (PropertyUtil.SetStruct(ref m_Left, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between component and the right side of the container. + /// |组件离容器右侧的距离。 + /// </summary> + public float right + { + get { return m_Right; } + set { if (PropertyUtil.SetStruct(ref m_Right, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between component and the top side of the container. + /// |组件离容器上侧的距离。 + /// </summary> + public float top + { + get { return m_Top; } + set { if (PropertyUtil.SetStruct(ref m_Top, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between component and the bottom side of the container. + /// |组件离容器下侧的距离。 + /// </summary> + public float bottom + { + get { return m_Bottom; } + set { if (PropertyUtil.SetStruct(ref m_Bottom, value)) SetAllDirty(); } + } + /// <summary> + /// width of axis. + /// |坐标轴宽。 + /// </summary> + public float width + { + get { return m_Width; } + set { if (PropertyUtil.SetStruct(ref m_Width, value)) SetAllDirty(); } + } + /// <summary> + /// height of axis. + /// |坐标轴高。 + /// </summary> + public float height + { + get { return m_Height; } + set { if (PropertyUtil.SetStruct(ref m_Height, value)) SetAllDirty(); } + } + + public void UpdateRuntimeData(float chartX, float chartY, float chartWidth, float chartHeight) + { + context.left = left <= 1 ? left * chartWidth : left; + context.bottom = bottom <= 1 ? bottom * chartHeight : bottom; + context.top = top <= 1 ? top * chartHeight : top; + context.right = right <= 1 ? right * chartWidth : right; + + context.height = height <= 1 ? height * chartHeight : height; + + if (m_Orient == Orient.Horizonal) + { + context.width = width == 0 ? + chartWidth - context.left - context.right : + (width <= 1 ? chartWidth * width : width); + } + else + { + context.width = width == 0 ? + chartHeight - context.top - context.bottom : + (width <= 1 ? chartHeight * width : width); + } + + if (context.left != 0 && context.right == 0) + context.x = chartX + context.left; + else if (context.left == 0 && context.right != 0) + context.x = chartX + chartWidth - context.right - context.width; + else + context.x = chartX + context.left; + + if (context.bottom != 0 && context.top == 0) + context.y = chartY + context.bottom; + else if (context.bottom == 0 && context.top != 0) + context.y = chartY + chartHeight - context.top - context.height; + else + context.y = chartY + context.bottom; + + context.position = new Vector3(context.x, context.y); + } + + public override void SetDefaultValue() + { + m_Show = true; + m_Type = AxisType.Category; + m_Min = 0; + m_Max = 0; + m_SplitNumber = 0; + m_BoundaryGap = true; + m_Position = AxisPosition.Bottom; + m_Offset = 0; + + m_Left = 0.1f; + m_Right = 0.1f; + m_Top = 0; + m_Bottom = 0.2f; + m_Width = 0; + m_Height = 50; + + m_Data = new List<string>() { "x1", "x2", "x3", "x4", "x5" }; + m_Icons = new List<Sprite>(5); + splitLine.show = false; + splitLine.lineStyle.type = LineStyle.Type.None; + axisLabel.textLimit.enable = true; + axisTick.showStartTick = true; + axisTick.showEndTick = true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxis.cs.meta b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxis.cs.meta new file mode 100644 index 0000000..1fe393d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aeb871d6555744e609bd651306c601a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxisHandler.cs b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxisHandler.cs new file mode 100644 index 0000000..cea0476 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxisHandler.cs @@ -0,0 +1,125 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class SingleAxisHander : AxisHandler<SingleAxis> + { + protected override Orient orient { get { return component.orient; } } + + public override void InitComponent() + { + InitXAxis(component); + } + + public override void Update() + { + UpdateAxisMinMaxValue(component.index, component); + UpdatePointerValue(component); + } + + public override void DrawBase(VertexHelper vh) + { + DrawSingleAxisSplit(vh, component); + DrawSingleAxisLine(vh, component); + DrawSingleAxisTick(vh, component); + } + + private void InitXAxis(SingleAxis axis) + { + var theme = chart.theme; + var xAxisIndex = axis.index; + axis.painter = chart.painter; + axis.refreshComponent = delegate() + { + axis.UpdateRuntimeData(chart.chartX, + chart.chartY, + chart.chartWidth, + chart.chartHeight); + + InitAxis(null, + axis.orient, + axis.context.x, + axis.context.y, + axis.context.width, + axis.context.height); + }; + axis.refreshComponent(); + } + + internal override void UpdateAxisLabelText(Axis axis) + { + base.UpdateAxisLabelText(axis); + if (axis.IsTime() || axis.IsValue()) + { + for (int i = 0; i < axis.context.labelObjectList.Count; i++) + { + var label = axis.context.labelObjectList[i]; + if (label != null) + { + var pos = GetLabelPosition(0, i); + label.SetPosition(pos); + CheckValueLabelActive(component, i, label, pos); + } + } + } + } + + protected override Vector3 GetLabelPosition(float scaleWid, int i) + { + return GetLabelPosition(i, component.orient, component, null, + chart.theme.axis, + scaleWid, + component.context.x, + component.context.y, + component.context.width, + component.context.height); + } + + private void DrawSingleAxisSplit(VertexHelper vh, SingleAxis axis) + { + if (AxisHelper.NeedShowSplit(axis)) + { + var dataZoom = chart.GetDataZoomOfAxis(axis); + DrawAxisSplit(vh, chart.theme.axis, dataZoom, + axis.orient, + axis.context.x, + axis.context.y, + axis.context.width, + axis.context.height); + } + } + + private void DrawSingleAxisTick(VertexHelper vh, SingleAxis axis) + { + if (AxisHelper.NeedShowSplit(axis)) + { + var dataZoom = chart.GetDataZoomOfAxis(axis); + DrawAxisTick(vh, axis, chart.theme.axis, dataZoom, + axis.orient, + axis.context.x, + axis.context.y, + axis.context.width); + } + } + + private void DrawSingleAxisLine(VertexHelper vh, SingleAxis axis) + { + if (axis.show && axis.axisLine.show) + { + DrawAxisLine(vh, axis, + chart.theme.axis, + axis.orient, + axis.context.x, + GetAxisLineXOrY(), + axis.context.width); + } + } + + protected override float GetAxisLineXOrY() + { + return component.context.y + component.offset; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxisHandler.cs.meta b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxisHandler.cs.meta new file mode 100644 index 0000000..59d803e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/SingleAxis/SingleAxisHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50b3514e3079543ea9000d21d809cad3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/XAxis.meta b/Assets/XCharts/Runtime/Component/Axis/XAxis.meta new file mode 100644 index 0000000..e35422e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/XAxis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e5e50f8f0f8bb406b99fb32d6b5c7769 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxis.cs b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxis.cs new file mode 100644 index 0000000..8605906 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxis.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// The x axis in cartesian(rectangular) coordinate. + /// |直角坐标系 grid 中的 x 轴。 + /// </summary> + [System.Serializable] + [RequireChartComponent(typeof(GridCoord))] + [ComponentHandler(typeof(XAxisHander), true)] + public class XAxis : Axis + { + public override void SetDefaultValue() + { + m_Show = true; + m_Type = AxisType.Category; + m_Min = 0; + m_Max = 0; + m_SplitNumber = 0; + m_BoundaryGap = true; + m_Position = AxisPosition.Bottom; + m_Offset = 0; + m_Data = new List<string>() { "x1", "x2", "x3", "x4", "x5" }; + m_Icons = new List<Sprite>(5); + splitLine.show = false; + splitLine.lineStyle.type = LineStyle.Type.None; + axisLabel.textLimit.enable = true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxis.cs.meta b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxis.cs.meta new file mode 100644 index 0000000..11c03fd --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a71be0d36b9745c2894e598b3d9188a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxisHander.cs b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxisHander.cs new file mode 100644 index 0000000..e4020e0 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxisHander.cs @@ -0,0 +1,152 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class XAxisHander : AxisHandler<XAxis> + { + protected override Orient orient { get { return Orient.Horizonal; } } + + public override void InitComponent() + { + InitXAxis(component); + } + + public override void Update() + { + UpdateAxisMinMaxValue(component.index, component); + UpdatePointerValue(component); + } + + public override void DrawBase(VertexHelper vh) + { + DrawXAxisSplit(vh, component); + DrawXAxisLine(vh, component); + DrawXAxisTick(vh, component); + } + + private void InitXAxis(XAxis xAxis) + { + var theme = chart.theme; + var xAxisIndex = xAxis.index; + xAxis.painter = chart.painter; + xAxis.refreshComponent = delegate() + { + var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + if (grid != null) + { + var yAxis = chart.GetChartComponent<YAxis>(xAxis.index); + InitAxis(yAxis, + orient, + grid.context.x, + grid.context.y, + grid.context.width, + grid.context.height); + } + }; + xAxis.refreshComponent(); + } + + internal override void UpdateAxisLabelText(Axis axis) + { + base.UpdateAxisLabelText(axis); + if (axis.IsTime() || axis.IsValue()) + { + for (int i = 0; i < axis.context.labelObjectList.Count; i++) + { + var label = axis.context.labelObjectList[i]; + if (label != null) + { + var pos = GetLabelPosition(0, i); + label.SetPosition(pos); + CheckValueLabelActive(component, i, label, pos); + } + } + } + } + + protected override Vector3 GetLabelPosition(float scaleWid, int i) + { + var grid = chart.GetChartComponent<GridCoord>(component.gridIndex); + if (grid == null) + return Vector3.zero; + + var yAxis = chart.GetChartComponent<YAxis>(component.index); + return GetLabelPosition(i, Orient.Horizonal, component, yAxis, + chart.theme.axis, + scaleWid, + grid.context.x, + grid.context.y, + grid.context.width, + grid.context.height); + } + + private void DrawXAxisSplit(VertexHelper vh, XAxis xAxis) + { + if (AxisHelper.NeedShowSplit(xAxis)) + { + var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + if (grid == null) + return; + + var relativedAxis = chart.GetChartComponent<YAxis>(xAxis.gridIndex); + var dataZoom = chart.GetDataZoomOfAxis(xAxis); + + DrawAxisSplit(vh, chart.theme.axis, dataZoom, + Orient.Horizonal, + grid.context.x, + grid.context.y, + grid.context.width, + grid.context.height, + relativedAxis); + } + } + + private void DrawXAxisTick(VertexHelper vh, XAxis xAxis) + { + if (AxisHelper.NeedShowSplit(xAxis)) + { + var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + if (grid == null) + return; + + var dataZoom = chart.GetDataZoomOfAxis(xAxis); + + DrawAxisTick(vh, xAxis, chart.theme.axis, dataZoom, + Orient.Horizonal, + grid.context.x, + GetAxisLineXOrY(), + grid.context.width); + } + } + + private void DrawXAxisLine(VertexHelper vh, XAxis xAxis) + { + if (xAxis.show && xAxis.axisLine.show) + { + var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + if (grid == null) + return; + + DrawAxisLine(vh, xAxis, chart.theme.axis, + Orient.Horizonal, + grid.context.x, + GetAxisLineXOrY(), + grid.context.width); + } + } + + protected override float GetAxisLineXOrY() + { + var xAxis = component; + var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + var startY = grid.context.y + xAxis.offset; + if (xAxis.IsTop()) + startY += grid.context.height; + else + startY += ComponentHelper.GetXAxisOnZeroOffset(chart.components, xAxis); + return startY; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxisHander.cs.meta b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxisHander.cs.meta new file mode 100644 index 0000000..79717bd --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/XAxis/XAxisHander.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7818e1175663412196de53f19b5ac08 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/YAxis.meta b/Assets/XCharts/Runtime/Component/Axis/YAxis.meta new file mode 100644 index 0000000..ef2fe9c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/YAxis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69f8ba8fcc7d84b12b42f837f9f2b94b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxis.cs b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxis.cs new file mode 100644 index 0000000..aee2bd1 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxis.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + /// <summary> + /// The x axis in cartesian(rectangular) coordinate. + /// |直角坐标系 grid 中的 y 轴。 + /// </summary> + [System.Serializable] + [RequireChartComponent(typeof(GridCoord), typeof(XAxis))] + [ComponentHandler(typeof(YAxisHander), true)] + public class YAxis : Axis + { + public override void SetDefaultValue() + { + m_Show = true; + m_Type = AxisType.Value; + m_Min = 0; + m_Max = 0; + m_SplitNumber = 0; + m_BoundaryGap = false; + m_Position = AxisPosition.Left; + m_Data = new List<string>(5); + splitLine.show = true; + splitLine.lineStyle.type = LineStyle.Type.None; + axisLabel.textLimit.enable = false; + axisTick.showStartTick = true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxis.cs.meta b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxis.cs.meta new file mode 100644 index 0000000..2e38816 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ac60b8329f7a45c3898c7539d78f091 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxisHander.cs b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxisHander.cs new file mode 100644 index 0000000..5d91b08 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxisHander.cs @@ -0,0 +1,149 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class YAxisHander : AxisHandler<YAxis> + { + protected override Orient orient { get { return Orient.Vertical; } } + + public override void InitComponent() + { + InitYAxis(component); + } + + public override void Update() + { + UpdateAxisMinMaxValue(component.index, component); + UpdatePointerValue(component); + } + + public override void DrawBase(VertexHelper vh) + { + DrawYAxisSplit(vh, component.index, component); + DrawYAxisLine(vh, component.index, component); + DrawYAxisTick(vh, component.index, component); + } + + private void InitYAxis(YAxis yAxis) + { + var theme = chart.theme; + var yAxisIndex = yAxis.index; + yAxis.painter = chart.painter; + yAxis.refreshComponent = delegate() + { + var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex); + if (grid != null) + { + var xAxis = chart.GetChartComponent<YAxis>(yAxis.index); + InitAxis(xAxis, + orient, + grid.context.x, + grid.context.y, + grid.context.height, + grid.context.width); + } + }; + yAxis.refreshComponent(); + } + + internal override void UpdateAxisLabelText(Axis axis) + { + base.UpdateAxisLabelText(axis); + if (axis.IsTime() || axis.IsValue()) + { + for (int i = 0; i < axis.context.labelObjectList.Count; i++) + { + var label = axis.context.labelObjectList[i]; + if (label != null) + { + var pos = GetLabelPosition(0, i); + label.SetPosition(pos); + CheckValueLabelActive(axis, i, label, pos); + } + } + } + } + + protected override Vector3 GetLabelPosition(float scaleWid, int i) + { + var grid = chart.GetChartComponent<GridCoord>(component.gridIndex); + if (grid == null) + return Vector3.zero; + + return GetLabelPosition(i, Orient.Vertical, component, null, + chart.theme.axis, + scaleWid, + grid.context.x, + grid.context.y, + grid.context.height, + grid.context.width); + } + + private void DrawYAxisSplit(VertexHelper vh, int yAxisIndex, YAxis yAxis) + { + if (AxisHelper.NeedShowSplit(yAxis)) + { + var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex); + if (grid == null) + return; + var relativedAxis = chart.GetChartComponent<XAxis>(yAxis.gridIndex); + var dataZoom = chart.GetDataZoomOfAxis(yAxis); + DrawAxisSplit(vh, chart.theme.axis, dataZoom, + Orient.Vertical, + grid.context.x, + grid.context.y, + grid.context.height, + grid.context.width, + relativedAxis); + } + } + + private void DrawYAxisTick(VertexHelper vh, int yAxisIndex, YAxis yAxis) + { + if (AxisHelper.NeedShowSplit(yAxis)) + { + var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex); + if (grid == null) + return; + + var dataZoom = chart.GetDataZoomOfAxis(yAxis); + + DrawAxisTick(vh, yAxis, chart.theme.axis, dataZoom, + Orient.Vertical, + GetAxisLineXOrY(), + grid.context.y, + grid.context.height); + } + } + + private void DrawYAxisLine(VertexHelper vh, int yAxisIndex, YAxis yAxis) + { + if (yAxis.show && yAxis.axisLine.show) + { + var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex); + if (grid == null) + return; + + DrawAxisLine(vh, yAxis, chart.theme.axis, + Orient.Vertical, + GetAxisLineXOrY(), + grid.context.y, + grid.context.height); + } + } + + protected override float GetAxisLineXOrY() + { + var yAxis = component; + var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex); + var startX = grid.context.x + yAxis.offset; + if (yAxis.IsRight()) + startX += grid.context.width; + else + startX += ComponentHelper.GetYAxisOnZeroOffset(chart.components, yAxis); + return startX; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxisHander.cs.meta b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxisHander.cs.meta new file mode 100644 index 0000000..0ea465d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Axis/YAxis/YAxisHander.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f09b5dcb5fcc54583bcd7946f18dfa48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Background.meta b/Assets/XCharts/Runtime/Component/Background.meta new file mode 100644 index 0000000..15e2676 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Background.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7db6fdcbbbfd148f58ff7a1f1a569d51 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Background/Background.cs b/Assets/XCharts/Runtime/Component/Background/Background.cs new file mode 100644 index 0000000..68f212c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Background/Background.cs @@ -0,0 +1,80 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// Background component. + /// | + /// 背景组件。 + /// </summary> + [Serializable] + [DisallowMultipleComponent] + [ComponentHandler(typeof(BackgroundHandler), false)] + public class Background : MainComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private Sprite m_Image; + [SerializeField] private Image.Type m_ImageType; + [SerializeField] private Color m_ImageColor = Color.white; + [SerializeField] private bool m_AutoColor = true; + + /// <summary> + /// Whether to enable the background component. + /// |是否启用背景组件。 + /// </summary> + public bool show + { + get { return m_Show; } + internal set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } + } + /// <summary> + /// the image of background. + /// |背景图。 + /// </summary> + public Sprite image + { + get { return m_Image; } + set { if (PropertyUtil.SetClass(ref m_Image, value)) SetComponentDirty(); } + } + + /// <summary> + /// the fill type of background image. + /// |背景图填充类型。 + /// </summary> + public Image.Type imageType + { + get { return m_ImageType; } + set { if (PropertyUtil.SetStruct(ref m_ImageType, value)) SetComponentDirty(); } + } + + /// <summary> + /// 背景图颜色。 + /// </summary> + public Color imageColor + { + get { return m_ImageColor; } + set { if (PropertyUtil.SetColor(ref m_ImageColor, value)) SetComponentDirty(); } + } + + /// <summary> + /// Whether to use theme background color for component color when the background component is on. + /// |当background组件开启时,是否自动使用主题背景色作为backgrounnd组件的颜色。当设置为false时,用imageColor作为颜色。 + /// </summary> + public bool autoColor + { + get { return m_AutoColor; } + set { if (PropertyUtil.SetStruct(ref m_AutoColor, value)) SetVerticesDirty(); } + } + + public override void SetDefaultValue() + { + m_Show = true; + m_Image = null; + m_ImageType = Image.Type.Sliced; + m_ImageColor = Color.white; + m_AutoColor = true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Background/Background.cs.meta b/Assets/XCharts/Runtime/Component/Background/Background.cs.meta new file mode 100644 index 0000000..e531dbc --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Background/Background.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 524f7df5241cc4379ae241a73d5b2ff2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Background/BackgroundHandler.cs b/Assets/XCharts/Runtime/Component/Background/BackgroundHandler.cs new file mode 100644 index 0000000..e99535c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Background/BackgroundHandler.cs @@ -0,0 +1,57 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class BackgroundHandler : MainComponentHandler<Background> + { + private readonly string s_BackgroundObjectName = "background"; + public override void InitComponent() + { + component.painter = chart.painter; + component.refreshComponent = delegate() + { + var backgroundObj = ChartHelper.AddObject(s_BackgroundObjectName, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + component.gameObject = backgroundObj; + backgroundObj.hideFlags = chart.chartHideFlags; + + var backgroundImage = ChartHelper.GetOrAddComponent<Image>(backgroundObj); + ChartHelper.UpdateRectTransform(backgroundObj, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + backgroundImage.sprite = component.image; + backgroundImage.type = component.imageType; + backgroundImage.color = chart.theme.GetBackgroundColor(component); + + backgroundObj.transform.SetSiblingIndex(0); + backgroundObj.SetActive(component.show); + }; + component.refreshComponent(); + } + + public override void Update() + { + if (component.gameObject != null && component.gameObject.transform.GetSiblingIndex() != 0) + component.gameObject.transform.SetSiblingIndex(0); + } + + public override void DrawBase(VertexHelper vh) + { + if (!component.show) + return; + if (component.image != null) + return; + + var p1 = new Vector3(chart.chartX, chart.chartY + chart.chartHeight); + var p2 = new Vector3(chart.chartX + chart.chartWidth, chart.chartY + chart.chartHeight); + var p3 = new Vector3(chart.chartX + chart.chartWidth, chart.chartY); + var p4 = new Vector3(chart.chartX, chart.chartY); + var backgroundColor = chart.theme.GetBackgroundColor(component); + + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, backgroundColor); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Background/BackgroundHandler.cs.meta b/Assets/XCharts/Runtime/Component/Background/BackgroundHandler.cs.meta new file mode 100644 index 0000000..89ce4b6 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Background/BackgroundHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1cb3d1a2aa224bbe84eef2681cf3df4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child.meta b/Assets/XCharts/Runtime/Component/Child.meta new file mode 100644 index 0000000..3f52f89 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20d31ade0390641698e6b846b4294b74 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/AreaStyle.cs b/Assets/XCharts/Runtime/Component/Child/AreaStyle.cs new file mode 100644 index 0000000..0b4a45b --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/AreaStyle.cs @@ -0,0 +1,131 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// The style of area. + /// |区域填充样式。 + /// </summary> + [System.Serializable] + public class AreaStyle : ChildComponent, ISerieExtraComponent, ISerieDataComponent + { + /// <summary> + /// Origin position of area. + /// |图形区域的起始位置。默认情况下,图形会从坐标轴轴线到数据间进行填充。如果需要填充的区域是坐标轴最大值到数据间,或者坐标轴最小值到数据间,则可以通过这个配置项进行设置。 + /// </summary> + public enum AreaOrigin + { + /// <summary> + /// to fill between axis line to data. + /// |填充坐标轴轴线到数据间的区域。 + /// </summary> + Auto, + /// <summary> + /// to fill between min axis value (when not inverse) to data. + /// |填充坐标轴底部到数据间的区域。 + /// </summary> + Start, + /// <summary> + /// to fill between max axis value (when not inverse) to data. + /// |填充坐标轴顶部到数据间的区域。 + /// </summary> + End + } + + [SerializeField] private bool m_Show = true; + [SerializeField] private AreaOrigin m_Origin; + [SerializeField] private Color32 m_Color; + [SerializeField] private Color32 m_ToColor; + [SerializeField][Range(0, 1)] private float m_Opacity = 0.6f; + [SerializeField] private Color32 m_HighlightColor; + [SerializeField] private Color32 m_HighlightToColor; + + /// <summary> + /// Set this to false to prevent the areafrom showing. + /// |是否显示区域填充。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// the origin of area. + /// |区域填充的起始位置。 + /// </summary> + public AreaOrigin origin + { + get { return m_Origin; } + set { if (PropertyUtil.SetStruct(ref m_Origin, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of area,default use serie color. + /// |区域填充的颜色,如果toColor不是默认值,则表示渐变色的起点颜色。 + /// </summary> + public Color32 color + { + get { return m_Color; } + set { if (PropertyUtil.SetColor(ref m_Color, value)) SetVerticesDirty(); } + } + /// <summary> + /// Gradient color, start color to toColor. + /// |渐变色的终点颜色。 + /// </summary> + public Color32 toColor + { + get { return m_ToColor; } + set { if (PropertyUtil.SetColor(ref m_ToColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// Opacity of the component. Supports value from 0 to 1, and the component will not be drawn when set to 0. + /// |图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + /// </summary> + public float opacity + { + get { return m_Opacity; } + set { if (PropertyUtil.SetStruct(ref m_Opacity, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of area,default use serie color. + /// |高亮时区域填充的颜色,如果highlightToColor不是默认值,则表示渐变色的起点颜色。 + /// </summary> + public Color32 highlightColor + { + get { return m_HighlightColor; } + set { if (PropertyUtil.SetColor(ref m_HighlightColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// Gradient color, start highlightColor to highlightToColor. + /// |高亮时渐变色的终点颜色。 + /// </summary> + public Color32 highlightToColor + { + get { return m_HighlightToColor; } + set { if (PropertyUtil.SetColor(ref m_HighlightToColor, value)) SetVerticesDirty(); } + } + + public Color32 GetColor() + { + if (m_Opacity == 1) + return m_Color; + + var color = m_Color; + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public Color32 GetColor(Color32 themeColor) + { + if (!ChartHelper.IsClearColor(color)) + { + return GetColor(); + } + else + { + var color = themeColor; + color.a = (byte) (color.a * opacity); + return color; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/AreaStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/AreaStyle.cs.meta new file mode 100644 index 0000000..53d0f68 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/AreaStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec0d95a9298bb4c159dcae36020beec9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/ArrowStyle.cs b/Assets/XCharts/Runtime/Component/Child/ArrowStyle.cs new file mode 100644 index 0000000..1b78233 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/ArrowStyle.cs @@ -0,0 +1,92 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// </summary> + [Serializable] + public class ArrowStyle : ChildComponent + { + [SerializeField] private float m_Width = 10; + [SerializeField] private float m_Height = 15; + [SerializeField] private float m_Offset = 0; + [SerializeField] private float m_Dent = 3; + [SerializeField] private Color32 m_Color = Color.clear; + + /// <summary> + /// The widht of arrow. + /// |箭头宽。 + /// </summary> + public float width + { + get { return m_Width; } + set { if (PropertyUtil.SetStruct(ref m_Width, value)) SetVerticesDirty(); } + } + /// <summary> + /// The height of arrow. + /// |箭头高。 + /// </summary> + public float height + { + get { return m_Height; } + set { if (PropertyUtil.SetStruct(ref m_Height, value)) SetVerticesDirty(); } + } + /// <summary> + /// The offset of arrow. + /// |箭头偏移。 + /// </summary> + public float offset + { + get { return m_Offset; } + set { if (PropertyUtil.SetStruct(ref m_Offset, value)) SetVerticesDirty(); } + } + /// <summary> + /// The dent of arrow. + /// |箭头的凹度。 + /// </summary> + public float dent + { + get { return m_Dent; } + set { if (PropertyUtil.SetStruct(ref m_Dent, value)) SetVerticesDirty(); } + } + + /// <summary> + /// the color of arrow. + /// |箭头颜色。 + /// </summary> + public Color32 color + { + get { return m_Color; } + set { if (PropertyUtil.SetColor(ref m_Color, value)) SetVerticesDirty(); } + } + + public ArrowStyle Clone() + { + var arrow = new ArrowStyle(); + arrow.width = width; + arrow.height = height; + arrow.offset = offset; + arrow.dent = dent; + arrow.color = color; + return arrow; + } + + public void Copy(ArrowStyle arrow) + { + width = arrow.width; + height = arrow.height; + offset = arrow.offset; + dent = arrow.dent; + color = arrow.color; + } + + public Color32 GetColor(Color32 defaultColor) + { + if (ChartHelper.IsClearColor(color)) + return defaultColor; + else + return color; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/ArrowStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/ArrowStyle.cs.meta new file mode 100644 index 0000000..002958e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/ArrowStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2232b812c68f042d29c44863e38d0417 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/BaseLine.cs b/Assets/XCharts/Runtime/Component/Child/BaseLine.cs new file mode 100644 index 0000000..5472b77 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/BaseLine.cs @@ -0,0 +1,82 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Settings related to base line. + /// |线条基础配置。 + /// </summary> + [System.Serializable] + public class BaseLine : ChildComponent + { + [SerializeField] protected bool m_Show; + [SerializeField] protected LineStyle m_LineStyle = new LineStyle(); + + /// <summary> + /// Set this to false to prevent the axis line from showing. + /// |是否显示坐标轴轴线。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// 线条样式 + /// </summary> + public LineStyle lineStyle + { + get { return m_LineStyle; } + set { if (value != null) { m_LineStyle = value; SetVerticesDirty(); } } + } + + public static BaseLine defaultBaseLine + { + get + { + var axisLine = new BaseLine + { + m_Show = true, + m_LineStyle = new LineStyle() + }; + return axisLine; + } + } + + public BaseLine() + { + lineStyle = new LineStyle(); + } + + public BaseLine(bool show) : base() + { + m_Show = show; + } + + public void Copy(BaseLine axisLine) + { + show = axisLine.show; + lineStyle.Copy(axisLine.lineStyle); + } + + public LineStyle.Type GetType(LineStyle.Type themeType) + { + return lineStyle.GetType(themeType); + } + + public float GetWidth(float themeWidth) + { + return lineStyle.GetWidth(themeWidth); + } + + public float GetLength(float themeLength) + { + return lineStyle.GetLength(themeLength); + } + + public Color32 GetColor(Color32 themeColor) + { + return lineStyle.GetColor(themeColor); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/BaseLine.cs.meta b/Assets/XCharts/Runtime/Component/Child/BaseLine.cs.meta new file mode 100644 index 0000000..de0a9fa --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/BaseLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c431b00ccffe4db4b61179b6df06eb2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/IconStyle.cs b/Assets/XCharts/Runtime/Component/Child/IconStyle.cs new file mode 100644 index 0000000..17d847c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/IconStyle.cs @@ -0,0 +1,118 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class IconStyle : ChildComponent + { + public enum Layer + { + /// <summary> + /// The icon is display under the label text. + /// 图标在标签文字下 + /// </summary> + UnderText, + /// <summary> + /// The icon is display above the label text. + /// 图标在标签文字上 + /// </summary> + AboveText + } + + [SerializeField] private bool m_Show = false; + [SerializeField] private Layer m_Layer; + [SerializeField] private Align m_Align = Align.Left; + [SerializeField] private Sprite m_Sprite; + [SerializeField] private Image.Type m_Type; + [SerializeField] private Color m_Color = Color.white; + [SerializeField] private float m_Width = 20; + [SerializeField] private float m_Height = 20; + [SerializeField] private Vector3 m_Offset; + [SerializeField] private bool m_AutoHideWhenLabelEmpty = false; + + public void Reset() + { + m_Show = false; + m_Layer = Layer.UnderText; + m_Sprite = null; + m_Color = Color.white; + m_Width = 20; + m_Height = 20; + m_Offset = Vector3.zero; + m_AutoHideWhenLabelEmpty = false; + } + /// <summary> + /// Whether the data icon is show. + /// |是否显示图标。 + /// </summary> + public bool show { get { return m_Show; } set { m_Show = value; } } + /// <summary> + /// 显示在上层还是在下层。 + /// </summary> + public Layer layer { get { return m_Layer; } set { m_Layer = value; } } + /// <summary> + /// The image of icon. + /// |图标的图片。 + /// </summary> + public Sprite sprite { get { return m_Sprite; } set { m_Sprite = value; } } + /// <summary> + /// How to display the icon. + /// |图片的显示类型。 + /// </summary> + public Image.Type type { get { return m_Type; } set { m_Type = value; } } + /// <summary> + /// 图标颜色。 + /// </summary> + public Color color { get { return m_Color; } set { m_Color = value; } } + /// <summary> + /// 图标宽。 + /// </summary> + public float width { get { return m_Width; } set { m_Width = value; } } + /// <summary> + /// 图标高。 + /// </summary> + public float height { get { return m_Height; } set { m_Height = value; } } + /// <summary> + /// 图标偏移。 + /// </summary> + public Vector3 offset { get { return m_Offset; } set { m_Offset = value; } } + /// <summary> + /// 水平方向对齐方式。 + /// </summary> + public Align align { get { return m_Align; } set { m_Align = value; } } + /// <summary> + /// 当label内容为空时是否自动隐藏图标 + /// </summary> + public bool autoHideWhenLabelEmpty { get { return m_AutoHideWhenLabelEmpty; } set { m_AutoHideWhenLabelEmpty = value; } } + public IconStyle Clone() + { + var iconStyle = new IconStyle(); + iconStyle.show = show; + iconStyle.layer = layer; + iconStyle.sprite = sprite; + iconStyle.type = type; + iconStyle.color = color; + iconStyle.width = width; + iconStyle.height = height; + iconStyle.offset = offset; + iconStyle.align = align; + iconStyle.autoHideWhenLabelEmpty = autoHideWhenLabelEmpty; + return iconStyle; + } + + public void Copy(IconStyle iconStyle) + { + show = iconStyle.show; + layer = iconStyle.layer; + sprite = iconStyle.sprite; + type = iconStyle.type; + color = iconStyle.color; + width = iconStyle.width; + height = iconStyle.height; + offset = iconStyle.offset; + align = iconStyle.align; + autoHideWhenLabelEmpty = iconStyle.autoHideWhenLabelEmpty; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/IconStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/IconStyle.cs.meta new file mode 100644 index 0000000..53609da --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/IconStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82c4d360f7b5b4ee7845e9bbe611c8a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/ImageStyle.cs b/Assets/XCharts/Runtime/Component/Child/ImageStyle.cs new file mode 100644 index 0000000..d37b392 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/ImageStyle.cs @@ -0,0 +1,81 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class ImageStyle : ChildComponent, ISerieExtraComponent, ISerieDataComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private Sprite m_Sprite; + [SerializeField] private Image.Type m_Type; + [SerializeField] private bool m_AutoColor; + [SerializeField] private Color m_Color = Color.clear; + [SerializeField] private float m_Width = 0; + [SerializeField] private float m_Height = 0; + + public void Reset() + { + m_Show = false; + m_Type = Image.Type.Simple; + m_Sprite = null; + m_AutoColor = false; + m_Color = Color.white; + m_Width = 0; + m_Height = 0; + } + + /// <summary> + /// Whether the data icon is show. + /// |是否显示图标。 + /// </summary> + public bool show { get { return m_Show; } set { m_Show = value; } } + /// <summary> + /// The image of icon. + /// |图标的图片。 + /// </summary> + public Sprite sprite { get { return m_Sprite; } set { m_Sprite = value; } } + /// <summary> + /// How to display the image. + /// |图片的显示类型。 + /// </summary> + public Image.Type type { get { return m_Type; } set { m_Type = value; } } + /// <summary> + /// 是否自动颜色。 + /// </summary> + public bool autoColor { get { return m_AutoColor; } set { m_AutoColor = value; } } + /// <summary> + /// 图标颜色。 + /// </summary> + public Color color { get { return m_Color; } set { m_Color = value; } } + /// <summary> + /// 图标宽。 + /// </summary> + public float width { get { return m_Width; } set { m_Width = value; } } + /// <summary> + /// 图标高。 + /// </summary> + public float height { get { return m_Height; } set { m_Height = value; } } + public ImageStyle Clone() + { + var imageStyle = new ImageStyle(); + imageStyle.type = type; + imageStyle.sprite = sprite; + imageStyle.autoColor = autoColor; + imageStyle.color = color; + imageStyle.width = width; + imageStyle.height = height; + return imageStyle; + } + + public void Copy(ImageStyle imageStyle) + { + type = imageStyle.type; + sprite = imageStyle.sprite; + autoColor = imageStyle.autoColor; + color = imageStyle.color; + width = imageStyle.width; + height = imageStyle.height; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/ImageStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/ImageStyle.cs.meta new file mode 100644 index 0000000..8e9356e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/ImageStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a76d1129783c4f55b0773da2eda9b67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/ItemStyle.cs b/Assets/XCharts/Runtime/Component/Child/ItemStyle.cs new file mode 100644 index 0000000..79e9403 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/ItemStyle.cs @@ -0,0 +1,350 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 图形样式。 + /// </summary> + [System.Serializable] + public class ItemStyle : ChildComponent, ISerieDataComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private Color32 m_Color; + [SerializeField] private Color32 m_Color0; + [SerializeField] private Color32 m_ToColor; + [SerializeField] private Color32 m_ToColor2; + [SerializeField] private Color32 m_BackgroundColor; + [SerializeField] private float m_BackgroundWidth; + [SerializeField] private Color32 m_CenterColor; + [SerializeField] private float m_CenterGap; + [SerializeField] private float m_BorderWidth = 0; + [SerializeField] private float m_BorderGap = 0; + [SerializeField] private Color32 m_BorderColor; + [SerializeField] private Color32 m_BorderColor0; + [SerializeField] private Color32 m_BorderToColor; + [SerializeField][Range(0, 1)] private float m_Opacity = 1; + [SerializeField] private string m_ItemMarker; + [SerializeField] private string m_ItemFormatter; + [SerializeField] private string m_NumericFormatter = ""; + [SerializeField] private float[] m_CornerRadius = new float[] { 0, 0, 0, 0 }; + + public void Reset() + { + m_Show = false; + m_Color = Color.clear; + m_Color0 = Color.clear; + m_ToColor = Color.clear; + m_ToColor2 = Color.clear; + m_BackgroundColor = Color.clear; + m_BackgroundWidth = 0; + m_CenterColor = Color.clear; + m_CenterGap = 0; + m_BorderWidth = 0; + m_BorderGap = 0; + m_BorderColor = Color.clear; + m_BorderColor0 = Color.clear; + m_BorderToColor = Color.clear; + m_Opacity = 1; + m_ItemFormatter = null; + m_ItemMarker = null; + m_NumericFormatter = ""; + if (m_CornerRadius == null) + { + m_CornerRadius = new float[] { 0, 0, 0, 0 }; + } + else + { + for (int i = 0; i < m_CornerRadius.Length; i++) + m_CornerRadius[i] = 0; + } + } + + /// <summary> + /// 是否启用。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// 数据项颜色。 + /// </summary> + public Color32 color + { + get { return m_Color; } + set { if (PropertyUtil.SetColor(ref m_Color, value)) SetVerticesDirty(); } + } + /// <summary> + /// 数据项颜色。 + /// </summary> + public Color32 color0 + { + get { return m_Color0; } + set { if (PropertyUtil.SetColor(ref m_Color0, value)) SetVerticesDirty(); } + } + /// <summary> + /// Gradient color1. + /// |渐变色的颜色1。 + /// </summary> + public Color32 toColor + { + get { return m_ToColor; } + set { if (PropertyUtil.SetColor(ref m_ToColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// Gradient color2.Only valid in line diagrams. + /// |渐变色的颜色2。只在折线图中有效。 + /// </summary> + public Color32 toColor2 + { + get { return m_ToColor2; } + set { if (PropertyUtil.SetColor(ref m_ToColor2, value)) SetVerticesDirty(); } + } + /// <summary> + /// 数据项背景颜色。 + /// </summary> + public Color32 backgroundColor + { + get { return m_BackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_BackgroundColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// 数据项背景宽度。 + /// </summary> + public float backgroundWidth + { + get { return m_BackgroundWidth; } + set { if (PropertyUtil.SetStruct(ref m_BackgroundWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// 中心区域颜色。 + /// </summary> + public Color32 centerColor + { + get { return m_CenterColor; } + set { if (PropertyUtil.SetColor(ref m_CenterColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// 中心区域间隙。 + /// </summary> + public float centerGap + { + get { return m_CenterGap; } + set { if (PropertyUtil.SetStruct(ref m_CenterGap, value)) SetVerticesDirty(); } + } + /// <summary> + /// 边框的颜色。 + /// </summary> + public Color32 borderColor + { + get { return m_BorderColor; } + set { if (PropertyUtil.SetColor(ref m_BorderColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// 边框的颜色。 + /// </summary> + public Color32 borderColor0 + { + get { return m_BorderColor0; } + set { if (PropertyUtil.SetColor(ref m_BorderColor0, value)) SetVerticesDirty(); } + } + /// <summary> + /// 边框的渐变色。 + /// </summary> + public Color32 borderToColor + { + get { return m_BorderToColor; } + set { if (PropertyUtil.SetColor(ref m_BorderToColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// 边框宽。 + /// </summary> + public float borderWidth + { + get { return m_BorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_BorderWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// 边框间隙。 + /// </summary> + public float borderGap + { + get { return m_BorderGap; } + set { if (PropertyUtil.SetStruct(ref m_BorderGap, value)) SetVerticesDirty(); } + } + /// <summary> + /// 透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + /// </summary> + public float opacity + { + get { return m_Opacity; } + set { if (PropertyUtil.SetStruct(ref m_Opacity, value)) SetVerticesDirty(); } + } + /// <summary> + /// 提示框单项的字符串模版格式器。具体配置参考`Tooltip`的`formatter` + /// </summary> + public string itemFormatter + { + get { return m_ItemFormatter; } + set { if (PropertyUtil.SetClass(ref m_ItemFormatter, value)) SetVerticesDirty(); } + } + /// <summary> + /// 提示框单项的字符标志。用在Tooltip中。 + /// </summary> + public string itemMarker + { + get { return m_ItemMarker; } + set { if (PropertyUtil.SetClass(ref m_ItemMarker, value)) SetVerticesDirty(); } + } + /// <summary> + /// Standard numeric format strings. + /// |标准数字格式字符串。用于将数值格式化显示为字符串。 + /// 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 + /// 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings + /// </summary> + /// <value></value> + public string numericFormatter + { + get { return m_NumericFormatter; } + set { if (PropertyUtil.SetClass(ref m_NumericFormatter, value)) SetComponentDirty(); } + } + /// <summary> + /// The radius of rounded corner. Its unit is px. Use array to respectively specify the 4 corner radiuses((clockwise upper left, upper right, bottom right and bottom left)). + /// |圆角半径。用数组分别指定4个圆角半径(顺时针左上,右上,右下,左下)。 + /// </summary> + public float[] cornerRadius + { + get { return m_CornerRadius; } + set { if (PropertyUtil.SetClass(ref m_CornerRadius, value, true)) SetVerticesDirty(); } + } + /// <summary> + /// 实际边框宽。边框不显示时为0。 + /// </summary> + public float runtimeBorderWidth { get { return NeedShowBorder() ? borderWidth : 0; } } + + /// <summary> + /// 是否需要显示边框。 + /// </summary> + public bool NeedShowBorder() + { + return borderWidth != 0 && !ChartHelper.IsClearColor(borderColor); + } + + public Color32 GetColor() + { + if (m_Opacity == 1 || m_Color.a == 0) + return m_Color; + + var color = m_Color; + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public Color32 GetToColor() + { + if (m_Opacity == 1 || m_ToColor.a == 0) + return m_ToColor; + + var color = m_ToColor; + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public Color32 GetColor0() + { + if (m_Opacity == 1 || m_Color0.a == 0) + return m_Color0; + + var color = m_Color0; + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public Color32 GetColor(Color32 defaultColor) + { + var color = ChartHelper.IsClearColor(m_Color) ? defaultColor : m_Color; + + if (m_Opacity == 1 || color.a == 0) + return color; + + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public Color32 GetColor0(Color32 defaultColor) + { + var color = ChartHelper.IsClearColor(m_Color0) ? defaultColor : m_Color0; + + if (m_Opacity == 1 || color.a == 0) + return color; + + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public Color32 GetBorderColor(Color32 defaultColor) + { + var color = ChartHelper.IsClearColor(m_BorderColor) ? defaultColor : m_BorderColor; + + if (m_Opacity == 1 || color.a == 0) + return color; + + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public Color32 GetBorderColor0(Color32 defaultColor) + { + var color = ChartHelper.IsClearColor(m_BorderColor0) ? defaultColor : m_BorderColor0; + + if (m_Opacity == 1 || color.a == 0) + return color; + + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public bool IsNeedGradient() + { + return !ChartHelper.IsClearColor(m_ToColor) || !ChartHelper.IsClearColor(m_ToColor2); + } + + public Color32 GetGradientColor(float value, Color32 defaultColor) + { + if (!IsNeedGradient()) + return ChartConst.clearColor32; + + value = Mathf.Clamp01(value); + var startColor = ChartHelper.IsClearColor(m_Color) ? defaultColor : m_Color; + Color32 color; + + if (!ChartHelper.IsClearColor(m_ToColor2)) + { + if (value <= 0.5f) + color = Color32.Lerp(startColor, m_ToColor, 2 * value); + else + color = Color32.Lerp(m_ToColor, m_ToColor2, 2 * (value - 0.5f)); + } + else + { + color = Color32.Lerp(startColor, m_ToColor, value); + } + if (m_Opacity != 1) + { + color.a = (byte) (color.a * m_Opacity); + } + return color; + } + + public bool IsNeedCorner() + { + if (m_CornerRadius == null) return false; + foreach (var value in m_CornerRadius) + { + if (value != 0) return true; + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/ItemStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/ItemStyle.cs.meta new file mode 100644 index 0000000..83e8a6f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/ItemStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ca9b30f9779c4a16b60cc21334828b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/LevelStyle.cs b/Assets/XCharts/Runtime/Component/Child/LevelStyle.cs new file mode 100644 index 0000000..cdca241 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/LevelStyle.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class Level : ChildComponent + { + [SerializeField] private LabelStyle m_Label = new LabelStyle(); + [SerializeField] private LabelStyle m_UpperLabel = new LabelStyle(); + [SerializeField] private ItemStyle m_ItemStyle = new ItemStyle(); + /// <summary> + /// 文本标签样式。 + /// </summary> + public LabelStyle label { get { return m_Label; } } + /// <summary> + /// 上方的文本标签样式。 + /// </summary> + public LabelStyle upperLabel { get { return m_UpperLabel; } } + /// <summary> + /// 数据项样式。 + /// </summary> + public ItemStyle itemStyle { get { return m_ItemStyle; } } + } + + [System.Serializable] + public class LevelStyle : ChildComponent + { + [SerializeField] private bool m_Show = false; + [SerializeField] private List<Level> m_Levels = new List<Level>() { new Level() }; + + /// <summary> + /// 是否启用LevelStyle + /// </summary> + public bool show { get { return m_Show; } set { m_Show = value; } } + /// <summary> + /// 各层节点对应的配置。当enableLevels为true时生效,levels[0]对应的第一层的配置,levels[1]对应第二层,依次类推。当levels中没有对应层时用默认的设置。 + /// </summary> + public List<Level> levels { get { return m_Levels; } } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/LevelStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/LevelStyle.cs.meta new file mode 100644 index 0000000..1193963 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/LevelStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3760e89d324d7413d95a2ac1d434a546 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/LineArrow.cs b/Assets/XCharts/Runtime/Component/Child/LineArrow.cs new file mode 100644 index 0000000..8b45aa8 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/LineArrow.cs @@ -0,0 +1,63 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// </summary> + [Serializable] + public class LineArrow : ChildComponent, ISerieExtraComponent + { + public enum Position + { + /// <summary> + /// 末端箭头 + /// </summary> + End, + /// <summary> + /// 头端箭头 + /// </summary> + Start + } + + [SerializeField] private bool m_Show; + [SerializeField] private Position m_Position; + [SerializeField] + private ArrowStyle m_Arrow = new ArrowStyle() + { + width = 10, + height = 15, + offset = 0, + dent = 3 + }; + + /// <summary> + /// Whether to show the arrow. + /// |是否显示箭头。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// The position of arrow. + /// |箭头位置。 + /// </summary> + public Position position + { + get { return m_Position; } + set { if (PropertyUtil.SetStruct(ref m_Position, value)) SetVerticesDirty(); } + } + + /// <summary> + /// the arrow of line. + /// |箭头。 + /// </summary> + public ArrowStyle arrow + { + get { return m_Arrow; } + set { if (PropertyUtil.SetClass(ref m_Arrow, value)) SetVerticesDirty(); } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/LineArrow.cs.meta b/Assets/XCharts/Runtime/Component/Child/LineArrow.cs.meta new file mode 100644 index 0000000..ee3425a --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/LineArrow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f2455acb3ba34409896bf03ddba593e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/LineStyle.cs b/Assets/XCharts/Runtime/Component/Child/LineStyle.cs new file mode 100644 index 0000000..d8909a6 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/LineStyle.cs @@ -0,0 +1,238 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// The style of line. + /// |线条样式。 + /// 注: 修改 lineStyle 中的颜色不会影响图例颜色,如果需要图例颜色和折线图颜色一致,需修改 itemStyle.color,线条颜色默认也会取该颜色。 + /// toColor,toColor2可设置水平方向的渐变,如需要设置垂直方向的渐变,可使用VisualMap。 + /// </summary> + [System.Serializable] + public class LineStyle : ChildComponent, ISerieDataComponent + { + /// <summary> + /// 线的类型。 + /// </summary> + public enum Type + { + /// <summary> + /// 实线 + /// </summary> + Solid, + /// <summary> + /// 虚线 + /// </summary> + Dashed, + /// <summary> + /// 点线 + /// </summary> + Dotted, + /// <summary> + /// 点划线 + /// </summary> + DashDot, + /// <summary> + /// 双点划线 + /// </summary> + DashDotDot, + None, + } + + [SerializeField] private bool m_Show = true; + [SerializeField] private Type m_Type = Type.Solid; + [SerializeField] private Color32 m_Color; + [SerializeField] private Color32 m_ToColor; + [SerializeField] private Color32 m_ToColor2; + [SerializeField] private float m_Width = 0; + [SerializeField] private float m_Length = 0; + [SerializeField][Range(0, 1)] private float m_Opacity = 1; + + /// <summary> + /// Whether show line. + /// |是否显示线条。当作为子组件,它的父组件有参数控制是否显示时,改参数无效。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// the type of line. + /// |线的类型。 + /// </summary> + public Type type + { + get { return m_Type; } + set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of line, default use serie color. + /// |线的颜色。 + /// </summary> + public Color32 color + { + get { return m_Color; } + set { if (PropertyUtil.SetColor(ref m_Color, value)) SetVerticesDirty(); } + } + /// <summary> + /// the middle color of line, default use serie color. + /// |线的渐变颜色(需要水平方向渐变时)。 + /// </summary> + public Color32 toColor + { + get { return m_ToColor; } + set { if (PropertyUtil.SetColor(ref m_ToColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// the end color of line, default use serie color. + /// |线的渐变颜色2(需要水平方向三个渐变色的渐变时)。 + /// </summary> + public Color32 toColor2 + { + get { return m_ToColor2; } + set { if (PropertyUtil.SetColor(ref m_ToColor2, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of line. + /// |线宽。 + /// </summary> + public float width + { + get { return m_Width; } + set { if (PropertyUtil.SetStruct(ref m_Width, value)) SetVerticesDirty(); } + } + /// <summary> + /// the length of line. + /// |线长。 + /// </summary> + public float length + { + get { return m_Length; } + set { if (PropertyUtil.SetStruct(ref m_Length, value)) SetVerticesDirty(); } + } + /// <summary> + /// Opacity of the line. Supports value from 0 to 1, and the line will not be drawn when set to 0. + /// |线的透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + /// </summary> + public float opacity + { + get { return m_Opacity; } + set { if (PropertyUtil.SetStruct(ref m_Opacity, value)) SetVerticesDirty(); } + } + + public LineStyle() + { } + + public LineStyle(float width) + { + this.width = width; + } + + public LineStyle(LineStyle.Type type) + { + this.type = type; + } + + public LineStyle(LineStyle.Type type, float width) + { + this.type = type; + this.width = width; + } + + public LineStyle Clone() + { + var lineStyle = new LineStyle(); + lineStyle.show = show; + lineStyle.type = type; + lineStyle.color = color; + lineStyle.toColor = toColor; + lineStyle.toColor2 = toColor2; + lineStyle.width = width; + lineStyle.opacity = opacity; + return lineStyle; + } + + public void Copy(LineStyle lineStyle) + { + show = lineStyle.show; + type = lineStyle.type; + color = lineStyle.color; + toColor = lineStyle.toColor; + toColor2 = lineStyle.toColor2; + width = lineStyle.width; + opacity = lineStyle.opacity; + } + + public Color32 GetColor() + { + if (m_Opacity == 1) + return m_Color; + + var color = m_Color; + color.a = (byte) (color.a * m_Opacity); + return color; + } + + public bool IsNeedGradient() + { + return !ChartHelper.IsClearColor(m_ToColor) || !ChartHelper.IsClearColor(m_ToColor2); + } + + public Color32 GetGradientColor(float value, Color32 defaultColor) + { + var color = ChartConst.clearColor32; + if (!IsNeedGradient()) + return color; + + value = Mathf.Clamp01(value); + var startColor = ChartHelper.IsClearColor(m_Color) ? defaultColor : m_Color; + + if (!ChartHelper.IsClearColor(m_ToColor2)) + { + if (value <= 0.5f) + color = Color32.Lerp(startColor, m_ToColor, 2 * value); + else + color = Color32.Lerp(m_ToColor, m_ToColor2, 2 * (value - 0.5f)); + } + else + { + color = Color32.Lerp(startColor, m_ToColor, value); + } + if (m_Opacity != 1) + { + color.a = (byte) (color.a * m_Opacity); + } + return color; + } + + public Type GetType(Type themeType) + { + return type == Type.None ? themeType : type; + } + + public float GetWidth(float themeWidth) + { + return width == 0 ? themeWidth : width; + } + + public float GetLength(float themeLength) + { + return length == 0 ? themeLength : length; + } + + public Color32 GetColor(Color32 themeColor) + { + if (!ChartHelper.IsClearColor(color)) + { + return GetColor(); + } + else + { + var color = themeColor; + color.a = (byte) (color.a * opacity); + return color; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/LineStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/LineStyle.cs.meta new file mode 100644 index 0000000..2856b89 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/LineStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 092f08a2daa4b4013a72ffc3c9a18f85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/Location.cs b/Assets/XCharts/Runtime/Component/Child/Location.cs new file mode 100644 index 0000000..819e356 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/Location.cs @@ -0,0 +1,321 @@ +using System; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + /// <summary> + /// Location type. Quick to set the general location. + /// |位置类型。通过Align快速设置大体位置,再通过left,right,top,bottom微调具体位置。 + /// </summary> + [Serializable] + public class Location : ChildComponent, IPropertyChanged + { + /// <summary> + /// 对齐方式 + /// </summary> + public enum Align + { + TopLeft, + TopRight, + TopCenter, + BottomLeft, + BottomRight, + BottomCenter, + Center, + CenterLeft, + CenterRight + } + + [SerializeField] private Align m_Align = Align.TopCenter; + [SerializeField] private float m_Left; + [SerializeField] private float m_Right; + [SerializeField] private float m_Top; + [SerializeField] private float m_Bottom; + + private TextAnchor m_TextAlignment; +#if dUI_TextMeshPro + private TextAlignmentOptions m_TMPTextAlignment; +#endif + private Vector2 m_AnchorMin; + private Vector2 m_AnchorMax; + private Vector2 m_Pivot; + + /// <summary> + /// 对齐方式。 + /// </summary> + public Align align + { + get { return m_Align; } + set { if (PropertyUtil.SetStruct(ref m_Align, value)) { SetComponentDirty(); UpdateAlign(); } } + } + /// <summary> + /// Distance between component and the left side of the container. + /// |离容器左侧的距离。 + /// </summary> + public float left + { + get { return m_Left; } + set { if (PropertyUtil.SetStruct(ref m_Left, value)) { SetComponentDirty(); UpdateAlign(); } } + } + /// <summary> + /// Distance between component and the left side of the container. + /// |离容器右侧的距离。 + /// </summary> + public float right + { + get { return m_Right; } + set { if (PropertyUtil.SetStruct(ref m_Right, value)) { SetComponentDirty(); UpdateAlign(); } } + } + /// <summary> + /// Distance between component and the left side of the container. + /// |离容器上侧的距离。 + /// </summary> + public float top + { + get { return m_Top; } + set { if (PropertyUtil.SetStruct(ref m_Top, value)) { SetComponentDirty(); UpdateAlign(); } } + } + /// <summary> + /// Distance between component and the left side of the container. + /// |离容器下侧的距离。 + /// </summary> + public float bottom + { + get { return m_Bottom; } + set { if (PropertyUtil.SetStruct(ref m_Bottom, value)) { SetComponentDirty(); UpdateAlign(); } } + } + + /// <summary> + /// the anchor of text. + /// |Location对应的Anchor锚点 + /// </summary> + /// <value></value> + public TextAnchor runtimeTextAlignment { get { return m_TextAlignment; } } + +#if dUI_TextMeshPro + public TextAlignmentOptions runtimeTMPTextAlignment { get { return m_TMPTextAlignment; } } +#endif + /// <summary> + /// the minimum achor. + /// |Location对应的anchorMin。 + /// </summary> + public Vector2 runtimeAnchorMin { get { return m_AnchorMin; } } + /// <summary> + /// the maximun achor. + /// |Location对应的anchorMax. + /// |</summary> + public Vector2 runtimeAnchorMax { get { return m_AnchorMax; } } + /// <summary> + /// the povot. + /// |Loation对应的中心点。 + /// </summary> + public Vector2 runtimePivot { get { return m_Pivot; } } + public float runtimeLeft { get; private set; } + public float runtimeRight { get; private set; } + public float runtimeBottom { get; private set; } + public float runtimeTop { get; private set; } + + public static Location defaultLeft + { + get + { + return new Location() + { + align = Align.CenterLeft, + left = 0.03f, + right = 0, + top = 0, + bottom = 0 + }; + } + } + + public static Location defaultRight + { + get + { + return new Location() + { + align = Align.CenterRight, + left = 0, + right = 0.03f, + top = 0, + bottom = 0 + }; + } + } + + public static Location defaultTop + { + get + { + return new Location() + { + align = Align.TopCenter, + left = 0, + right = 0, + top = 0.03f, + bottom = 0 + }; + } + } + + public static Location defaultBottom + { + get + { + return new Location() + { + align = Align.BottomCenter, + left = 0, + right = 0, + top = 0, + bottom = 0.03f + }; + } + } + + private void UpdateAlign() + { + switch (m_Align) + { + case Align.BottomCenter: + m_TextAlignment = TextAnchor.LowerCenter; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.Bottom; +#endif + m_AnchorMin = new Vector2(0.5f, 0); + m_AnchorMax = new Vector2(0.5f, 0); + m_Pivot = new Vector2(0.5f, 0); + break; + case Align.BottomLeft: + m_TextAlignment = TextAnchor.LowerLeft; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.BottomLeft; +#endif + m_AnchorMin = new Vector2(0, 0); + m_AnchorMax = new Vector2(0, 0); + m_Pivot = new Vector2(0, 0); + break; + case Align.BottomRight: + m_TextAlignment = TextAnchor.LowerRight; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.BottomRight; +#endif + m_AnchorMin = new Vector2(1, 0); + m_AnchorMax = new Vector2(1, 0); + m_Pivot = new Vector2(1, 0); + break; + case Align.Center: + m_TextAlignment = TextAnchor.MiddleCenter; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.Center; +#endif + m_AnchorMin = new Vector2(0.5f, 0.5f); + m_AnchorMax = new Vector2(0.5f, 0.5f); + m_Pivot = new Vector2(0.5f, 0.5f); + break; + case Align.CenterLeft: + m_TextAlignment = TextAnchor.MiddleLeft; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.Left; +#endif + m_AnchorMin = new Vector2(0, 0.5f); + m_AnchorMax = new Vector2(0, 0.5f); + m_Pivot = new Vector2(0, 0.5f); + break; + case Align.CenterRight: + m_TextAlignment = TextAnchor.MiddleRight; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.Right; +#endif + m_AnchorMin = new Vector2(1, 0.5f); + m_AnchorMax = new Vector2(1, 0.5f); + m_Pivot = new Vector2(1, 0.5f); + break; + case Align.TopCenter: + m_TextAlignment = TextAnchor.UpperCenter; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.Top; +#endif + m_AnchorMin = new Vector2(0.5f, 1); + m_AnchorMax = new Vector2(0.5f, 1); + m_Pivot = new Vector2(0.5f, 1); + break; + case Align.TopLeft: + m_TextAlignment = TextAnchor.UpperLeft; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.TopLeft; +#endif + m_AnchorMin = new Vector2(0, 1); + m_AnchorMax = new Vector2(0, 1); + m_Pivot = new Vector2(0, 1); + break; + case Align.TopRight: + m_TextAlignment = TextAnchor.UpperRight; +#if dUI_TextMeshPro + m_TMPTextAlignment = TextAlignmentOptions.TopRight; +#endif + m_AnchorMin = new Vector2(1, 1); + m_AnchorMax = new Vector2(1, 1); + m_Pivot = new Vector2(1, 1); + break; + default: + break; + } + } + + public void UpdateRuntimeData(float chartWidth, float chartHeight) + { + runtimeLeft = left <= 1 ? left * chartWidth : left; + runtimeRight = right <= 1 ? right * chartWidth : right; + runtimeTop = top <= 1 ? top * chartHeight : top; + runtimeBottom = bottom <= 1 ? bottom * chartHeight : bottom; + } + + /// <summary> + /// 返回在坐标系中的具体位置 + /// </summary> + /// <param name="chartWidth"></param> + /// <param name="chartHeight"></param> + /// <returns></returns> + public Vector3 GetPosition(float chartWidth, float chartHeight) + { + UpdateRuntimeData(chartWidth, chartHeight); + switch (align) + { + case Align.BottomCenter: + return new Vector3(chartWidth / 2, runtimeBottom); + case Align.BottomLeft: + return new Vector3(runtimeLeft, runtimeBottom); + case Align.BottomRight: + return new Vector3(chartWidth - runtimeRight, runtimeBottom); + case Align.Center: + return new Vector3(chartWidth / 2, chartHeight / 2); + case Align.CenterLeft: + return new Vector3(runtimeLeft, chartHeight / 2); + case Align.CenterRight: + return new Vector3(chartWidth - runtimeRight, chartHeight / 2); + case Align.TopCenter: + return new Vector3(chartWidth / 2, chartHeight - runtimeTop); + case Align.TopLeft: + return new Vector3(runtimeLeft, chartHeight - runtimeTop); + case Align.TopRight: + return new Vector3(chartWidth - runtimeRight, chartHeight - runtimeTop); + default: + return Vector2.zero; + } + } + + /// <summary> + /// 属性变更时更新textAnchor,minAnchor,maxAnchor,pivot + /// </summary> + public void OnChanged() + { + UpdateAlign(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/Location.cs.meta b/Assets/XCharts/Runtime/Component/Child/Location.cs.meta new file mode 100644 index 0000000..b209c7c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/Location.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7922ce86a6b0f4813a7f34e004b92e9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/SerieSymbl.cs b/Assets/XCharts/Runtime/Component/Child/SerieSymbl.cs new file mode 100644 index 0000000..34865a8 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/SerieSymbl.cs @@ -0,0 +1,243 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// The way to get serie symbol size. + /// |获取标记图形大小的方式。 + /// </summary> + public enum SymbolSizeType + { + /// <summary> + /// Specify constant for symbol size. + /// |自定义大小。 + /// </summary> + Custom, + /// <summary> + /// Specify the dataIndex and dataScale to calculate symbol size. + /// |通过 dataIndex 从数据中获取,再乘以一个比例系数 dataScale 。 + /// </summary> + FromData, + /// <summary> + /// Specify function for symbol size. + /// |通过委托函数获取。 + /// </summary> + Function, + } + + /// <summary> + /// 系列数据项的标记的图形 + /// </summary> + [System.Serializable] + public class SerieSymbol : SymbolStyle, ISerieDataComponent + { + [SerializeField] private SymbolSizeType m_SizeType = SymbolSizeType.Custom; + [SerializeField] private float m_SelectedSize = 0f; + [SerializeField] private int m_DataIndex = 1; + [SerializeField] private float m_DataScale = 1; + [SerializeField] private float m_SelectedDataScale = 1.5f; + [SerializeField] private SymbolSizeFunction m_SizeFunction; + [SerializeField] private SymbolSizeFunction m_SelectedSizeFunction; + [SerializeField] private int m_StartIndex; + [SerializeField] private int m_Interval; + [SerializeField] private bool m_ForceShowLast = false; + [SerializeField] private bool m_Repeat = false; + + public override void Reset() + { + base.Reset(); + m_SizeType = SymbolSizeType.Custom; + m_SelectedSize = 0f; + m_DataIndex = 1; + m_DataScale = 1; + m_SelectedDataScale = 1.5f; + m_SizeFunction = null; + m_SelectedSizeFunction = null; + m_StartIndex = 0; + m_Interval = 0; + m_ForceShowLast = false; + m_Repeat = false; + } + + /// <summary> + /// the type of symbol size. + /// |标记图形的大小获取方式。 + /// </summary> + public SymbolSizeType sizeType + { + get { return m_SizeType; } + set { if (PropertyUtil.SetStruct(ref m_SizeType, value)) SetVerticesDirty(); } + } + /// <summary> + /// the size of selected symbol. + /// |被选中的标记的大小。 + /// </summary> + public float selectedSize + { + get { return m_SelectedSize; } + set { if (PropertyUtil.SetStruct(ref m_SelectedSize, value)) SetVerticesDirty(); } + } + /// <summary> + /// whitch data index is when the sizeType assined as FromData. + /// |当sizeType指定为FromData时,指定的数据源索引。 + /// </summary> + public int dataIndex + { + get { return m_DataIndex; } + set { if (PropertyUtil.SetStruct(ref m_DataIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// the scale of data when sizeType assined as FromData. + /// |当sizeType指定为FromData时,指定的倍数系数。 + /// </summary> + public float dataScale + { + get { return m_DataScale; } + set { if (PropertyUtil.SetStruct(ref m_DataScale, value)) SetVerticesDirty(); } + } + /// <summary> + /// the scale of selected data when sizeType assined as FromData. + /// |当sizeType指定为FromData时,指定的高亮倍数系数。 + /// </summary> + public float selectedDataScale + { + get { return m_SelectedDataScale; } + set { if (PropertyUtil.SetStruct(ref m_SelectedDataScale, value)) SetVerticesDirty(); } + } + /// <summary> + /// the function of size when sizeType assined as Function. + /// |当sizeType指定为Function时,指定的委托函数。 + /// </summary> + public SymbolSizeFunction sizeFunction + { + get { return m_SizeFunction; } + set { if (PropertyUtil.SetClass(ref m_SizeFunction, value)) SetVerticesDirty(); } + } + /// <summary> + /// the function of size when sizeType assined as Function. + /// |当sizeType指定为Function时,指定的高亮委托函数。 + /// </summary> + public SymbolSizeFunction selectedSizeFunction + { + get { return m_SelectedSizeFunction; } + set { if (PropertyUtil.SetClass(ref m_SelectedSizeFunction, value)) SetVerticesDirty(); } + } + /// <summary> + /// the index start to show symbol. + /// |开始显示图形标记的索引。 + /// </summary> + public int startIndex + { + get { return m_StartIndex; } + set { if (PropertyUtil.SetStruct(ref m_StartIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// the interval of show symbol. + /// |显示图形标记的间隔。0表示显示所有标签,1表示隔一个隔显示一个标签,以此类推。 + /// </summary> + public int interval + { + get { return m_Interval; } + set { if (PropertyUtil.SetStruct(ref m_Interval, value)) SetVerticesDirty(); } + } + /// <summary> + /// whether to show the last symbol. + /// |是否强制显示最后一个图形标记。 + /// </summary> + public bool forceShowLast + { + get { return m_ForceShowLast; } + set { if (PropertyUtil.SetStruct(ref m_ForceShowLast, value)) SetVerticesDirty(); } + } + /// <summary> + /// 图形是否重复。 + /// </summary> + public bool repeat + { + get { return m_Repeat; } + set { if (PropertyUtil.SetStruct(ref m_Repeat, value)) SetAllDirty(); } + } + /// <summary> + /// 根据指定的sizeType获得标记的大小 + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + public float GetSize(List<double> data, float themeSize) + { + switch (m_SizeType) + { + case SymbolSizeType.Custom: + return size == 0 ? themeSize : size; + case SymbolSizeType.FromData: + if (data != null && dataIndex >= 0 && dataIndex < data.Count) + { + return (float) data[dataIndex] * m_DataScale; + } + else + { + return size == 0 ? themeSize : size; + } + case SymbolSizeType.Function: + if (data != null && sizeFunction != null) return sizeFunction(data); + else return size == 0 ? themeSize : size; + default: + return size == 0 ? themeSize : size; + } + } + + /// <summary> + /// 根据sizeType获得高亮时的标记大小 + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + public float GetSelectedSize(List<double> data, float themeSelectedSize) + { + switch (m_SizeType) + { + case SymbolSizeType.Custom: + + return selectedSize == 0 ? themeSelectedSize : selectedSize; + + case SymbolSizeType.FromData: + + if (data != null && dataIndex >= 0 && dataIndex < data.Count) + { + return (float) data[dataIndex] * m_SelectedDataScale; + } + else + { + return selectedSize == 0 ? themeSelectedSize : selectedSize; + } + + case SymbolSizeType.Function: + + if (data != null && selectedSizeFunction != null) + return selectedSizeFunction(data); + else + return selectedSize == 0 ? themeSelectedSize : selectedSize; + + default: + return selectedSize == 0 ? themeSelectedSize : selectedSize; + } + } + + public bool ShowSymbol(int dataIndex, int dataCount) + { + if (!show) + return false; + + if (dataIndex < startIndex) + return false; + + if (m_Interval <= 0) + return true; + + if (m_ForceShowLast && dataIndex == dataCount - 1) + return true; + + return (dataIndex - startIndex) % (m_Interval + 1) == 0; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/SerieSymbl.cs.meta b/Assets/XCharts/Runtime/Component/Child/SerieSymbl.cs.meta new file mode 100644 index 0000000..ccbf533 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/SerieSymbl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd2852f4c46ae4dbd8c105e62dcce9a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/StageColor.cs b/Assets/XCharts/Runtime/Component/Child/StageColor.cs new file mode 100644 index 0000000..592d971 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/StageColor.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class StageColor : ChildComponent + { + [SerializeField] private float m_Percent; + [SerializeField] private Color32 m_Color; + /// <summary> + /// 结束位置百分比。 + /// </summary> + public float percent { get { return m_Percent; } set { m_Percent = value; } } + /// <summary> + /// 颜色。 + /// </summary> + public Color32 color { get { return m_Color; } set { m_Color = value; } } + + public StageColor(float percent, Color32 color) + { + m_Percent = percent; + m_Color = color; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/StageColor.cs.meta b/Assets/XCharts/Runtime/Component/Child/StageColor.cs.meta new file mode 100644 index 0000000..4be512d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/StageColor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d40f9dfbc90e744858784753e0d7109d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/SymbolStyle.cs b/Assets/XCharts/Runtime/Component/Child/SymbolStyle.cs new file mode 100644 index 0000000..3b8677a --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/SymbolStyle.cs @@ -0,0 +1,191 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// the type of symbol. + /// |标记图形的类型。 + /// </summary> + public enum SymbolType + { + /// <summary> + /// 不显示标记。 + /// </summary> + None, + /// <summary> + /// 自定义标记。 + /// </summary> + Custom, + /// <summary> + /// 圆形。 + /// </summary> + Circle, + /// <summary> + /// 空心圆。 + /// </summary> + EmptyCircle, + /// <summary> + /// 正方形。可通过设置`itemStyle`的`cornerRadius`变成圆角矩形。 + /// </summary> + Rect, + /// <summary> + /// 空心正方形。 + /// </summary> + EmptyRect, + /// <summary> + /// 三角形。 + /// </summary> + Triangle, + /// <summary> + /// 空心三角形。 + /// </summary> + EmptyTriangle, + /// <summary> + /// 菱形。 + /// </summary> + Diamond, + /// <summary> + /// 空心菱形。 + /// </summary> + EmptyDiamond, + /// <summary> + /// 箭头。 + /// </summary> + Arrow, + /// <summary> + /// 空心箭头。 + /// </summary> + EmptyArrow + } + + /// <summary> + /// 系列数据项的标记的图形 + /// </summary> + [System.Serializable] + public class SymbolStyle : ChildComponent + { + [SerializeField] protected bool m_Show = true; + [SerializeField] protected SymbolType m_Type = SymbolType.EmptyCircle; + [SerializeField] protected float m_Size = 0f; + [SerializeField] protected float m_Gap = 0; + [SerializeField] protected float m_Width = 0f; + [SerializeField] protected float m_Height = 0f; + [SerializeField] protected Vector2 m_Offset = Vector2.zero; + [SerializeField] protected Sprite m_Image; + [SerializeField] protected Image.Type m_ImageType; + [SerializeField] protected Color32 m_Color; + + public virtual void Reset() + { + m_Show = false; + m_Type = SymbolType.EmptyCircle; + m_Size = 0f; + m_Gap = 0; + m_Width = 0f; + m_Height = 0f; + m_Offset = Vector2.zero; + m_Image = null; + m_ImageType = Image.Type.Simple; + } + + /// <summary> + /// Whether the symbol is showed. + /// |是否显示标记。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetAllDirty(); } + } + /// <summary> + /// the type of symbol. + /// |标记类型。 + /// </summary> + public SymbolType type + { + get { return m_Type; } + set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); } + } + /// <summary> + /// the size of symbol. + /// |标记的大小。 + /// </summary> + public float size + { + get { return m_Size; } + set { if (PropertyUtil.SetStruct(ref m_Size, value)) SetVerticesDirty(); } + } + /// <summary> + /// the gap of symbol and line segment. + /// |图形标记和线条的间隙距离。 + /// </summary> + public float gap + { + get { return m_Gap; } + set { if (PropertyUtil.SetStruct(ref m_Gap, value)) SetVerticesDirty(); } + } + /// <summary> + /// 图形的宽。 + /// </summary> + public float width + { + get { return m_Width; } + set { if (PropertyUtil.SetStruct(ref m_Width, value)) SetAllDirty(); } + } + /// <summary> + /// 图形的高。 + /// </summary> + public float height + { + get { return m_Height; } + set { if (PropertyUtil.SetStruct(ref m_Height, value)) SetAllDirty(); } + } + /// <summary> + /// 自定义的标记图形。 + /// </summary> + public Sprite image + { + get { return m_Image; } + set { if (PropertyUtil.SetClass(ref m_Image, value)) SetAllDirty(); } + } + /// <summary> + /// the fill type of image. + /// |图形填充类型。 + /// </summary> + public Image.Type imageType + { + get { return m_ImageType; } + set { if (PropertyUtil.SetStruct(ref m_ImageType, value)) SetAllDirty(); } + } + /// <summary> + /// 图形的偏移。 + /// </summary> + public Vector2 offset + { + get { return m_Offset; } + set { if (PropertyUtil.SetStruct(ref m_Offset, value)) SetAllDirty(); } + } + /// <summary> + /// 图形的颜色。 + /// </summary> + public Color32 color + { + get { return m_Color; } + set { if (PropertyUtil.SetStruct(ref m_Color, value)) SetAllDirty(); } + } + public Vector3 offset3 { get { return new Vector3(m_Offset.x, m_Offset.y, 0); } } + private List<float> m_AnimationSize = new List<float>() { 0, 5, 10 }; + /// <summary> + /// the setting for effect scatter. + /// |带有涟漪特效动画的散点图的动画参数。 + /// </summary> + public List<float> animationSize { get { return m_AnimationSize; } } + + public Color32 GetColor(Color32 defaultColor) + { + return ChartHelper.IsClearColor(m_Color) ? defaultColor : m_Color; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/SymbolStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/SymbolStyle.cs.meta new file mode 100644 index 0000000..5913032 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/SymbolStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 837d37f4d6f614b38bef9f075a64b6dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/TextLimit.cs b/Assets/XCharts/Runtime/Component/Child/TextLimit.cs new file mode 100644 index 0000000..0d27623 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/TextLimit.cs @@ -0,0 +1,150 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// Text character limitation and adaptation component. When the length of the text exceeds the set length, + /// it is cropped and suffixes are appended to the end.Only valid in the category axis. + /// |文本字符限制和自适应。当文本长度超过设定的长度时进行裁剪,并将后缀附加在最后。 + /// 只在类目轴中有效。 + /// </summary> + [Serializable] + public class TextLimit : ChildComponent + { + [SerializeField] private bool m_Enable = false; + [SerializeField] private float m_MaxWidth = 0; + [SerializeField] private float m_Gap = 1; + [SerializeField] private string m_Suffix = "..."; + + /// <summary> + /// Whether to enable text limit. + /// |是否启用文本自适应。 + /// [default:true] + /// </summary> + public bool enable + { + get { return m_Enable; } + set { if (PropertyUtil.SetStruct(ref m_Enable, value)) SetComponentDirty(); } + } + /// <summary> + /// Set the maximum width. A default of 0 indicates automatic fetch; otherwise, custom. + /// |Clipping occurs when the width of the text is greater than this value. + /// |设定最大宽度。默认为0表示自动获取,否则表示自定义。当文本的宽度大于该值进行裁剪。 + /// </summary> + public float maxWidth + { + get { return m_MaxWidth; } + set { if (PropertyUtil.SetStruct(ref m_MaxWidth, value)) SetComponentDirty(); } + } + /// <summary> + /// White pixel distance at both ends. + /// |两边留白像素距离。 + /// [default:10f] + /// </summary> + public float gap + { + get { return m_Gap; } + set { if (PropertyUtil.SetStruct(ref m_Gap, value)) SetComponentDirty(); } + } + /// <summary> + /// Suffixes when the length exceeds. + /// |长度超出时的后缀。 + /// [default: "..."] + /// </summary> + public string suffix + { + get { return m_Suffix; } + set { if (PropertyUtil.SetClass(ref m_Suffix, value)) SetComponentDirty(); } + } + + private ChartText m_RelatedText; + private float m_RelatedTextWidth = 0; + + public TextLimit Clone() + { + var textLimit = new TextLimit(); + textLimit.enable = enable; + textLimit.maxWidth = maxWidth; + textLimit.gap = gap; + textLimit.suffix = suffix; + return textLimit; + } + + public void Copy(TextLimit textLimit) + { + enable = textLimit.enable; + maxWidth = textLimit.maxWidth; + gap = textLimit.gap; + suffix = textLimit.suffix; + } + + public void SetRelatedText(ChartText txt, float labelWidth) + { + m_RelatedText = txt; + m_RelatedTextWidth = labelWidth; + } + + public string GetLimitContent(string content) + { + float checkWidth = m_MaxWidth > 0 ? m_MaxWidth : m_RelatedTextWidth; + if (m_RelatedText == null || checkWidth <= 0) + { + return content; + } + else + { + if (m_Enable) + { + float len = m_RelatedText.GetPreferredWidth(content); + float suffixLen = m_RelatedText.GetPreferredWidth(suffix); + if (len >= checkWidth - m_Gap * 2) + { + return content.Substring(0, GetAdaptLength(content, suffixLen)) + suffix; + } + else + { + return content; + } + } + else + { + return content; + } + } + } + + private int GetAdaptLength(string content, float suffixLen) + { + int start = 0; + int middle = content.Length / 2; + int end = content.Length; + float checkWidth = m_MaxWidth > 0 ? m_MaxWidth : m_RelatedTextWidth; + + float limit = checkWidth - m_Gap * 2 - suffixLen; + if (limit < 0) + return 0; + + float len = 0; + while (len != limit && middle != start) + { + len = m_RelatedText.GetPreferredWidth(content.Substring(0, middle)); + if (len < limit) + { + start = middle; + } + else if (len > limit) + { + end = middle; + } + else + { + break; + } + middle = (start + end) / 2; + } + return middle; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/TextLimit.cs.meta b/Assets/XCharts/Runtime/Component/Child/TextLimit.cs.meta new file mode 100644 index 0000000..da76507 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/TextLimit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f49509a5de044535b1dd3f192f7008c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/TextPadding.cs b/Assets/XCharts/Runtime/Component/Child/TextPadding.cs new file mode 100644 index 0000000..7031f4f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/TextPadding.cs @@ -0,0 +1,79 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Settings related to text. + /// |文本的内边距设置。 + /// </summary> + [Serializable] + public class TextPadding : ChildComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private float m_Top = 2; + [SerializeField] private float m_Right = 4; + [SerializeField] private float m_Left = 4; + [SerializeField] private float m_Bottom = 2; + + public TextPadding() { } + + public TextPadding(float top, float right, float bottom, float left) + { + SetPadding(top, right, bottom, left); + } + + public void SetPadding(float top, float right, float bottom, float left) + { + m_Top = top;; + m_Right = right; + m_Bottom = bottom; + m_Left = left; + } + /// <summary> + /// show padding. + /// 是否显示。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } + } + /// <summary> + /// padding of top. + /// |顶部间距。 + /// </summary> + public float top + { + get { return m_Top; } + set { if (PropertyUtil.SetStruct(ref m_Top, value)) SetComponentDirty(); } + } + /// <summary> + /// padding of right. + /// |右部间距。 + /// </summary> + public float right + { + get { return m_Right; } + set { if (PropertyUtil.SetStruct(ref m_Right, value)) SetComponentDirty(); } + } + /// <summary> + /// padding of bottom. + /// |底部间距。 + /// </summary> + public float bottom + { + get { return m_Bottom; } + set { if (PropertyUtil.SetStruct(ref m_Bottom, value)) SetComponentDirty(); } + } + /// <summary> + /// padding of left. + /// |左边间距。 + /// </summary> + public float left + { + get { return m_Left; } + set { if (PropertyUtil.SetStruct(ref m_Left, value)) SetComponentDirty(); } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/TextPadding.cs.meta b/Assets/XCharts/Runtime/Component/Child/TextPadding.cs.meta new file mode 100644 index 0000000..cff9472 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/TextPadding.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 407bba126a0854199a4686b44cc9407e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Child/TextStyle.cs b/Assets/XCharts/Runtime/Component/Child/TextStyle.cs new file mode 100644 index 0000000..d8c4179 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/TextStyle.cs @@ -0,0 +1,234 @@ +using System; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + /// <summary> + /// Settings related to text. + /// |文本的相关设置。 + /// </summary> + [Serializable] + public class TextStyle : ChildComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private Font m_Font; + [SerializeField] private bool m_AutoWrap = false; + [SerializeField] private bool m_AutoAlign = true; + [SerializeField] private float m_Rotate = 0; + [SerializeField] private bool m_AutoColor = false; + [SerializeField] private Color m_Color = Color.clear; + [SerializeField] private int m_FontSize = 0; + [SerializeField] private FontStyle m_FontStyle = FontStyle.Normal; + [SerializeField] private float m_LineSpacing = 1f; + [SerializeField] private TextAnchor m_Alignment = TextAnchor.MiddleCenter; +#if dUI_TextMeshPro + [SerializeField] private TMP_FontAsset m_TMPFont; + [SerializeField] private FontStyles m_TMPFontStyle = FontStyles.Normal; + [SerializeField] private TextAlignmentOptions m_TMPAlignment = TextAlignmentOptions.Left; +#endif + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } + } + /// <summary> + /// Rotation of text. + /// |文本的旋转。 + /// [default: `0f`] + /// </summary> + public float rotate + { + get { return m_Rotate; } + set { if (PropertyUtil.SetStruct(ref m_Rotate, value)) SetComponentDirty(); } + } + /// <summary> + /// 是否开启自动颜色。当开启时,会自动设置颜色。 + /// </summary> + public bool autoColor + { + get { return m_AutoColor; } + set { if (PropertyUtil.SetStruct(ref m_AutoColor, value)) SetAllDirty(); } + } + /// <summary> + /// the color of text. + /// |文本的颜色。 + /// [default: `Color.clear`] + /// </summary> + public Color color + { + get { return m_Color; } + set { if (PropertyUtil.SetColor(ref m_Color, value)) SetComponentDirty(); } + } + /// <summary> + /// the font of text. When `null`, the theme's font is used by default. + /// |文本字体。 + /// [default: null] + /// </summary> + public Font font + { + get { return m_Font; } + set { if (PropertyUtil.SetClass(ref m_Font, value)) SetComponentDirty(); } + } + /// <summary> + /// font size. + /// |文本字体大小。 + /// [default: 18] + /// </summary> + public int fontSize + { + get { return m_FontSize; } + set { if (PropertyUtil.SetStruct(ref m_FontSize, value)) SetComponentDirty(); } + } + /// <summary> + /// font style. + /// |文本字体的风格。 + /// [default: FontStyle.Normal] + /// </summary> + public FontStyle fontStyle + { + get { return m_FontStyle; } + set { if (PropertyUtil.SetStruct(ref m_FontStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// text line spacing. + /// |行间距。 + /// [default: 1f] + /// </summary> + public float lineSpacing + { + get { return m_LineSpacing; } + set { if (PropertyUtil.SetStruct(ref m_LineSpacing, value)) SetComponentDirty(); } + } + /// <summary> + /// 是否自动换行。 + /// </summary> + public bool autoWrap + { + get { return m_AutoWrap; } + set { if (PropertyUtil.SetStruct(ref m_AutoWrap, value)) SetComponentDirty(); } + } + /// <summary> + /// 文本是否让系统自动选对齐方式。为false时才会用alignment。 + /// </summary> + public bool autoAlign + { + get { return m_AutoAlign; } + set { if (PropertyUtil.SetStruct(ref m_AutoAlign, value)) SetComponentDirty(); } + } + /// <summary> + /// 对齐方式。 + /// </summary> + public TextAnchor alignment + { + get { return m_Alignment; } + set { if (PropertyUtil.SetStruct(ref m_Alignment, value)) SetComponentDirty(); } + } +#if dUI_TextMeshPro + /// <summary> + /// the font of textmeshpro. + /// |TextMeshPro字体。 + /// </summary> + public TMP_FontAsset tmpFont + { + get { return m_TMPFont; } + set { if (PropertyUtil.SetClass(ref m_TMPFont, value)) SetComponentDirty(); } + } + /// <summary> + /// the font style of TextMeshPro. + /// |TextMeshPro字体类型。 + /// </summary> + public FontStyles tmpFontStyle + { + get { return m_TMPFontStyle; } + set { if (PropertyUtil.SetStruct(ref m_TMPFontStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// the text alignment of TextMeshPro. + /// |TextMeshPro字体对齐方式。 + /// </summary> + public TextAlignmentOptions tmpFontStyle + { + get { return m_TMPAlignment; } + set { if (PropertyUtil.SetStruct(ref m_TMPAlignment, value)) SetComponentDirty(); } + } +#endif + + public TextStyle() { } + + public TextStyle(int fontSize) + { + this.fontSize = fontSize; + } + + public TextStyle(int fontSize, FontStyle fontStyle) + { + this.fontSize = fontSize; + this.fontStyle = fontStyle; + } + + public TextStyle(int fontSize, FontStyle fontStyle, Color color) + { + this.fontSize = fontSize; + this.fontStyle = fontStyle; + this.color = color; + } + + public TextStyle(int fontSize, FontStyle fontStyle, Color color, int rorate) + { + this.fontSize = fontSize; + this.fontStyle = fontStyle; + this.color = color; + this.rotate = rotate; + } + + public void Copy(TextStyle textStyle) + { + font = textStyle.font; + rotate = textStyle.rotate; + color = textStyle.color; + fontSize = textStyle.fontSize; + fontStyle = textStyle.fontStyle; + lineSpacing = textStyle.lineSpacing; + alignment = textStyle.alignment; + autoWrap = textStyle.autoWrap; + autoAlign = textStyle.autoAlign; +#if dUI_TextMeshPro + m_TMPFont = textStyle.tmpFont; + m_TMPFontStyle = textStyle.tmpFontStyle; +#endif + } + + public void UpdateAlignmentByLocation(Location location) + { +#if dUI_TextMeshPro + m_TMPAlignment = location.runtimeTMPTextAlignment; +#else + m_Alignment = location.runtimeTextAlignment; +#endif + } + + public Color GetColor(Color defaultColor) + { + if (ChartHelper.IsClearColor(color)) + return defaultColor; + else + return color; + } + + public int GetFontSize(ComponentTheme defaultTheme) + { + if (fontSize == 0) + return defaultTheme.fontSize; + else + return fontSize; + } + + public TextAnchor GetAlignment(TextAnchor defaultAlignment) + { + return m_AutoAlign ? defaultAlignment : alignment; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Child/TextStyle.cs.meta b/Assets/XCharts/Runtime/Component/Child/TextStyle.cs.meta new file mode 100644 index 0000000..c429b3b --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Child/TextStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8f6b652968894ab195666501dda672c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Comment.meta b/Assets/XCharts/Runtime/Component/Comment.meta new file mode 100644 index 0000000..27242bf --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81fe767917cd3492a9f587f5d5e3a037 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Comment/Comment.cs b/Assets/XCharts/Runtime/Component/Comment/Comment.cs new file mode 100644 index 0000000..b2cb70a --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/Comment.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// comment of chart. + /// |图表注解组件。 + /// </summary> + [Serializable] + [ComponentHandler(typeof(CommentHander), true)] + public class Comment : MainComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private LabelStyle m_LabelStyle = new LabelStyle(); + [SerializeField] private CommentMarkStyle m_MarkStyle; + [SerializeField] private List<CommentItem> m_Items = new List<CommentItem>() { new CommentItem() }; + + /// <summary> + /// Set this to false to prevent the comment from showing. + /// |是否显示注解组件。 + /// </summary> + public bool show { get { return m_Show; } set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } } + public List<CommentItem> items { get { return m_Items; } set { m_Items = value; SetComponentDirty(); } } + /// <summary> + /// The text style of all comments. + /// |所有组件的文本样式。 + /// </summary> + public LabelStyle labelStyle + { + get { return m_LabelStyle; } + set { if (PropertyUtil.SetClass(ref m_LabelStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// The text style of all comments. + /// |所有组件的文本样式。 + /// </summary> + public CommentMarkStyle markStyle + { + get { return m_MarkStyle; } + set { if (PropertyUtil.SetClass(ref m_MarkStyle, value)) SetVerticesDirty(); } + } + + public LabelStyle GetLabelStyle(int index) + { + if (index >= 0 && index < items.Count) + { + var labelStyle = items[index].labelStyle; + if (labelStyle.show) return labelStyle; + } + return m_LabelStyle; + } + + public CommentMarkStyle GetMarkStyle(int index) + { + if (index >= 0 && index < items.Count) + { + var markStyle = items[index].markStyle; + if (markStyle.show) return markStyle; + } + return m_MarkStyle; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Comment/Comment.cs.meta b/Assets/XCharts/Runtime/Component/Comment/Comment.cs.meta new file mode 100644 index 0000000..3a9af59 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/Comment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec99dd6b13a3b4e9789d007f23ffa499 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Comment/CommentHander.cs b/Assets/XCharts/Runtime/Component/Comment/CommentHander.cs new file mode 100644 index 0000000..f1c93ab --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/CommentHander.cs @@ -0,0 +1,71 @@ +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class CommentHander : MainComponentHandler<Comment> + { + private static readonly string s_CommentObjectName = "comment"; + + public override void InitComponent() + { + var comment = component; + comment.painter = null; + comment.refreshComponent = delegate() + { + var objName = ChartCached.GetComponentObjectName(comment); + var commentObj = ChartHelper.AddObject(objName, + chart.transform, + chart.chartMinAnchor, + chart.chartMaxAnchor, + chart.chartPivot, + chart.chartSizeDelta); + + commentObj.SetActive(comment.show); + commentObj.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(commentObj); + for (int i = 0; i < comment.items.Count; i++) + { + var item = comment.items[i]; + var labelStyle = comment.GetLabelStyle(i); + var label = ChartHelper.AddChartLabel(s_CommentObjectName + i, commentObj.transform, labelStyle, chart.theme.common, + GetContent(item), Color.clear, TextAnchor.MiddleCenter); + label.SetActive(comment.show && item.show); + label.SetPosition(item.position + labelStyle.offset); + } + }; + comment.refreshComponent(); + } + + private string GetContent(CommentItem item) + { + if (item.content.IndexOf("{") >= 0) + { + var content = item.content; + FormatterHelper.ReplaceContent(ref content, 0, item.labelStyle.numericFormatter, null, chart); + return content; + } + else + { + return item.content; + } + } + + public override void DrawTop(VertexHelper vh) + { + for (int i = 0; i < component.items.Count; i++) + { + var item = component.items[i]; + var markStyle = component.GetMarkStyle(i); + if (!markStyle.show) continue; + var color = ChartHelper.IsClearColor(markStyle.lineStyle.color) ? + chart.theme.axis.splitLineColor : + markStyle.lineStyle.color; + var width = markStyle.lineStyle.width == 0 ? 1 : markStyle.lineStyle.width; + UGL.DrawBorder(vh, item.markRect, width, color); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Comment/CommentHander.cs.meta b/Assets/XCharts/Runtime/Component/Comment/CommentHander.cs.meta new file mode 100644 index 0000000..a1e30c8 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/CommentHander.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45362c4eed0e54d2880f2ed359ce9385 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Comment/CommentItem.cs b/Assets/XCharts/Runtime/Component/Comment/CommentItem.cs new file mode 100644 index 0000000..5a3a891 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/CommentItem.cs @@ -0,0 +1,55 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// comment of chart. + /// |注解项。 + /// </summary> + [Serializable] + public class CommentItem : ChildComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private string m_Content = "comment"; + [SerializeField] private Vector3 m_Position; + [SerializeField] private Rect m_MarkRect; + [SerializeField] private CommentMarkStyle m_MarkStyle = new CommentMarkStyle() { show = false }; + [SerializeField] private LabelStyle m_LabelStyle = new LabelStyle() { show = false }; + + /// <summary> + /// Set this to false to prevent this comment item from showing. + /// |是否显示当前注解项。 + /// </summary> + public bool show { get { return m_Show; } set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } } + /// <summary> + /// position of comment. + /// |注解项的位置坐标。 + /// </summary> + public Vector3 position { get { return m_Position; } set { if (PropertyUtil.SetStruct(ref m_Position, value)) SetComponentDirty(); } } + /// <summary> + /// content of comment. + /// |注解的文本内容。支持模板参数,可以参考Tooltip的itemFormatter。 + /// </summary> + public string content { get { return m_Content; } set { if (PropertyUtil.SetClass(ref m_Content, value)) SetComponentDirty(); } } + /// <summary> + /// the mark rect of comment. + /// |注解区域。 + /// </summary> + public Rect markRect { get { return m_MarkRect; } set { if (PropertyUtil.SetStruct(ref m_MarkRect, value)) SetVerticesDirty(); } } + /// <summary> + /// the mark rect style. + /// |注解标记区域样式。 + /// </summary> + public CommentMarkStyle markStyle { get { return m_MarkStyle; } set { if (PropertyUtil.SetClass(ref m_MarkStyle, value)) SetVerticesDirty(); } } + /// <summary> + /// The text style of all comments. + /// |注解项的文本样式。 + /// </summary> + public LabelStyle labelStyle + { + get { return m_LabelStyle; } + set { if (PropertyUtil.SetClass(ref m_LabelStyle, value)) SetComponentDirty(); } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Comment/CommentItem.cs.meta b/Assets/XCharts/Runtime/Component/Comment/CommentItem.cs.meta new file mode 100644 index 0000000..29b3cd2 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/CommentItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f082815b255e546019b6b43ac20bf4cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Comment/CommentMarkStyle.cs b/Assets/XCharts/Runtime/Component/Comment/CommentMarkStyle.cs new file mode 100644 index 0000000..174c58a --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/CommentMarkStyle.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// the comment mark style. + /// |注解项区域样式。 + /// </summary> + [Serializable] + public class CommentMarkStyle : ChildComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private LineStyle m_LineStyle; + + /// <summary> + /// Set this to false to prevent this comment item from showing. + /// |是否显示当前注解项。 + /// </summary> + public bool show { get { return m_Show; } set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } } + /// <summary> + /// line style of comment mark area. + /// |线条样式。 + /// </summary> + public LineStyle lineStyle { get { return m_LineStyle; } set { if (PropertyUtil.SetClass(ref m_LineStyle, value)) SetVerticesDirty(); } } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Comment/CommentMarkStyle.cs.meta b/Assets/XCharts/Runtime/Component/Comment/CommentMarkStyle.cs.meta new file mode 100644 index 0000000..9e4c5dd --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Comment/CommentMarkStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 764734b787d72455782bf75bb38e465e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/DataZoom.meta b/Assets/XCharts/Runtime/Component/DataZoom.meta new file mode 100644 index 0000000..c51556f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a017b088954fb499eae363f4182fbeed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoom.cs b/Assets/XCharts/Runtime/Component/DataZoom/DataZoom.cs new file mode 100644 index 0000000..33692b6 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoom.cs @@ -0,0 +1,687 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// DataZoom component is used for zooming a specific area, + /// which enables user to investigate data in detail, + /// or get an overview of the data, or get rid of outlier points. + /// |DataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(DataZoomHandler), true)] + public class DataZoom : MainComponent, IUpdateRuntimeData + { + /// <summary> + /// Generally dataZoom component zoom or roam coordinate system through data filtering + /// and set the windows of axes internally. + /// Its behaviours vary according to filtering mode settings. + /// |dataZoom 的运行原理是通过 数据过滤 来达到 数据窗口缩放 的效果。数据过滤模式的设置不同,效果也不同。 + /// </summary> + public enum FilterMode + { + /// <summary> + /// data that outside the window will be filtered, which may lead to some changes of windows of other axes. + /// For each data item, it will be filtered if one of the relevant dimensions is out of the window. + /// |当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只要有一个维度在数据窗口外,整个数据项就会被过滤掉。 + /// </summary> + Filter, + /// <summary> + /// data that outside the window will be filtered, which may lead to some changes of windows of other axes. + /// For each data item, it will be filtered only if all of the relevant dimensions are out of the same side of the window. + /// |当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉。 + /// </summary> + WeakFilter, + /// <summary> + /// data that outside the window will be set to NaN, which will not lead to changes of windows of other axes. + /// |当前数据窗口外的数据,被 设置为空。即 不会 影响其他轴的数据范围。 + /// </summary> + Empty, + /// <summary> + /// Do not filter data. + /// |不过滤数据,只改变数轴范围。 + /// </summary> + None + } + /// <summary> + /// The value type of start and end.取值类型 + /// </summary> + public enum RangeMode + { + //Value, + /// <summary> + /// percent value. + /// |百分比。 + /// </summary> + Percent + } + + [SerializeField] private bool m_Enable = true; + [SerializeField] private FilterMode m_FilterMode; + [SerializeField] private List<int> m_XAxisIndexs = new List<int>() { 0 }; + [SerializeField] private List<int> m_YAxisIndexs = new List<int>() { }; + [SerializeField] private bool m_SupportInside; + [SerializeField] private bool m_SupportInsideScroll = true; + [SerializeField] private bool m_SupportInsideDrag = true; + [SerializeField] private bool m_SupportSlider; + [SerializeField] private bool m_SupportSelect; + [SerializeField] private bool m_ShowDataShadow; + [SerializeField] private bool m_ShowDetail; + [SerializeField] private bool m_ZoomLock; + //[SerializeField] private bool m_Realtime; + [SerializeField] protected Color32 m_FillerColor; + [SerializeField] protected Color32 m_BorderColor; + [SerializeField] protected float m_BorderWidth; + [SerializeField] protected Color32 m_BackgroundColor; + [SerializeField] private float m_Left; + [SerializeField] private float m_Right; + [SerializeField] private float m_Top; + [SerializeField] private float m_Bottom; + [SerializeField] private RangeMode m_RangeMode; + [SerializeField] private float m_Start; + [SerializeField] private float m_End; + //[SerializeField] private float m_StartValue; + //[SerializeField] private float m_EndValue; + [SerializeField] private int m_MinShowNum = 1; + [Range(1f, 20f)] + [SerializeField] private float m_ScrollSensitivity = 1.1f; + [SerializeField] private Orient m_Orient = Orient.Horizonal; + [SerializeField] private LabelStyle m_LabelStyle = new LabelStyle(); + [SerializeField] private LineStyle m_LineStyle = new LineStyle(LineStyle.Type.Solid); + [SerializeField] private AreaStyle m_AreaStyle = new AreaStyle(); + + public DataZoomContext context = new DataZoomContext(); + + /// <summary> + /// Whether to show dataZoom. + /// |是否显示缩放区域。 + /// </summary> + public bool enable + { + get { return m_Enable; } + set { if (PropertyUtil.SetStruct(ref m_Enable, value)) SetVerticesDirty(); } + } + /// <summary> + /// The mode of data filter. + /// |数据过滤类型。 + /// </summary> + public FilterMode filterMode + { + get { return m_FilterMode; } + set { if (PropertyUtil.SetStruct(ref m_FilterMode, value)) SetVerticesDirty(); } + } + /// <summary> + /// Specify which xAxis is controlled by the dataZoom. + /// |控制的 x 轴索引列表。 + /// </summary> + public List<int> xAxisIndexs + { + get { return m_XAxisIndexs; } + set { if (PropertyUtil.SetClass(ref m_XAxisIndexs, value)) SetVerticesDirty(); } + } + /// <summary> + /// Specify which yAxis is controlled by the dataZoom. + /// |控制的 y 轴索引列表。 + /// </summary> + public List<int> yAxisIndexs + { + get { return m_YAxisIndexs; } + set { if (PropertyUtil.SetClass(ref m_YAxisIndexs, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether built-in support is supported. + /// Built into the coordinate system to allow the user to zoom in and out of the coordinate system by mouse dragging, + /// mouse wheel, finger swiping (on the touch screen). + /// |是否支持内置。内置于坐标系中,使用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系。 + /// </summary> + public bool supportInside + { + get { return m_SupportInside; } + set { if (PropertyUtil.SetStruct(ref m_SupportInside, value)) SetVerticesDirty(); } + } + /// <summary> + /// 是否支持坐标系内滚动 + /// </summary> + public bool supportInsideScroll + { + get { return m_SupportInsideScroll; } + set { if (PropertyUtil.SetStruct(ref m_SupportInsideScroll, value)) SetVerticesDirty(); } + } + /// <summary> + /// 是否支持坐标系内拖拽 + /// </summary> + public bool supportInsideDrag + { + get { return m_SupportInsideDrag; } + set { if (PropertyUtil.SetStruct(ref m_SupportInsideDrag, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether a slider is supported. There are separate sliders on which the user zooms or roams. + /// |是否支持滑动条。有单独的滑动条,用户在滑动条上进行缩放或漫游。 + /// </summary> + public bool supportSlider + { + get { return m_SupportSlider; } + set { if (PropertyUtil.SetStruct(ref m_SupportSlider, value)) SetVerticesDirty(); } + } + /// <summary> + /// 是否支持框选。提供一个选框进行数据区域缩放。 + /// </summary> + public bool supportSelect + { + get { return m_SupportSelect; } + set { if (PropertyUtil.SetStruct(ref m_SupportSelect, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to show data shadow, to indicate the data tendency in brief. + /// |是否显示数据阴影。数据阴影可以简单地反应数据走势。 + /// </summary> + public bool showDataShadow + { + get { return m_ShowDataShadow; } + set { if (PropertyUtil.SetStruct(ref m_ShowDataShadow, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to show detail, that is, show the detailed data information when dragging. + /// |是否显示detail,即拖拽时候显示详细数值信息。 + /// </summary> + public bool showDetail + { + get { return m_ShowDetail; } + set { if (PropertyUtil.SetStruct(ref m_ShowDetail, value)) SetVerticesDirty(); } + } + /// <summary> + /// Specify whether to lock the size of window (selected area). + /// |是否锁定选择区域(或叫做数据窗口)的大小。 + /// 如果设置为 true 则锁定选择区域的大小,也就是说,只能平移,不能缩放。 + /// </summary> + public bool zoomLock + { + get { return m_ZoomLock; } + set { if (PropertyUtil.SetStruct(ref m_ZoomLock, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to show data shadow in dataZoom-silder component, to indicate the data tendency in brief. + /// |拖动时,是否实时更新系列的视图。如果设置为 false,则只在拖拽结束的时候更新。默认为true,暂不支持修改。 + /// </summary> + public bool realtime { get { return true; } } + /// <summary> + /// The background color of the component. + /// |组件的背景颜色。 + /// </summary> + public Color backgroundColor + { + get { return m_BackgroundColor; } + set { if (PropertyUtil.SetStruct(ref m_BackgroundColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of dataZoom data area. + /// |数据区域颜色。 + /// </summary> + public Color32 fillerColor + { + get { return m_FillerColor; } + set { if (PropertyUtil.SetColor(ref m_FillerColor, value)) SetVerticesDirty(); } + } + + /// <summary> + /// the color of dataZoom border. + /// |边框颜色。 + /// </summary> + public Color32 borderColor + { + get { return m_BorderColor; } + set { if (PropertyUtil.SetColor(ref m_BorderColor, value)) SetComponentDirty(); } + } + /// <summary> + /// 边框宽。 + /// </summary> + public float borderWidth + { + get { return m_BorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_BorderWidth, value)) SetComponentDirty(); } + } + /// <summary> + /// Distance between dataZoom component and the bottom side of the container. + /// bottom value is a instant pixel value like 10 or float value [0-1]. + /// |组件离容器下侧的距离。 + /// </summary> + public float bottom + { + get { return m_Bottom; } + set { if (PropertyUtil.SetStruct(ref m_Bottom, value)) SetVerticesDirty(); } + } + /// <summary> + /// Distance between dataZoom component and the top side of the container. + /// top value is a instant pixel value like 10 or float value [0-1]. + /// |组件离容器上侧的距离。 + /// </summary> + public float top + { + get { return m_Top; } + set { if (PropertyUtil.SetStruct(ref m_Top, value)) SetVerticesDirty(); } + } + /// <summary> + /// Distance between dataZoom component and the left side of the container. + /// left value is a instant pixel value like 10 or float value [0-1]. + /// |组件离容器左侧的距离。 + /// </summary> + public float left + { + get { return m_Left; } + set { if (PropertyUtil.SetStruct(ref m_Left, value)) SetVerticesDirty(); } + } + /// <summary> + /// Distance between dataZoom component and the right side of the container. + /// right value is a instant pixel value like 10 or float value [0-1]. + /// |组件离容器右侧的距离。 + /// </summary> + public float right + { + get { return m_Right; } + set { if (PropertyUtil.SetStruct(ref m_Right, value)) SetVerticesDirty(); } + } + /// <summary> + /// Use absolute value or percent value in DataZoom.start and DataZoom.end. + /// |取绝对值还是百分比。 + /// </summary> + public RangeMode rangeMode + { + get { return m_RangeMode; } + set { if (PropertyUtil.SetStruct(ref m_RangeMode, value)) SetVerticesDirty(); } + } + /// <summary> + /// The start percentage of the window out of the data extent, in the range of 0 ~ 100. + /// |数据窗口范围的起始百分比。范围是:0 ~ 100。 + /// </summary> + public float start + { + get { return m_Start; } + set { m_Start = value; if (m_Start < 0) m_Start = 0; if (m_Start > 100) m_Start = 100; SetVerticesDirty(); } + } + /// <summary> + /// The end percentage of the window out of the data extent, in the range of 0 ~ 100. + /// |数据窗口范围的结束百分比。范围是:0 ~ 100。 + /// </summary> + public float end + { + get { return m_End; } + set { m_End = value; if (m_End < 0) m_End = 0; if (m_End > 100) m_End = 100; SetVerticesDirty(); } + } + /// <summary> + /// Minimum number of display data. Minimum number of data displayed when DataZoom is enlarged to maximum. + /// |最小显示数据个数。当DataZoom放大到最大时,最小显示的数据个数。 + /// </summary> + public int minShowNum + { + get { return m_MinShowNum; } + set { if (PropertyUtil.SetStruct(ref m_MinShowNum, value)) SetVerticesDirty(); } + } + /// <summary> + /// The sensitivity of dataZoom scroll. + /// The larger the number, the more sensitive it is. + /// |缩放区域组件的敏感度。值越高每次缩放所代表的数据越多。 + /// </summary> + public float scrollSensitivity + { + get { return m_ScrollSensitivity; } + set { if (PropertyUtil.SetStruct(ref m_ScrollSensitivity, value)) SetVerticesDirty(); } + } + /// <summary> + /// Specify whether the layout of dataZoom component is horizontal or vertical. What's more, + /// it indicates whether the horizontal axis or vertical axis is controlled by default in catesian coordinate system. + /// |布局方式是横还是竖。不仅是布局方式,对于直角坐标系而言,也决定了,缺省情况控制横向数轴还是纵向数轴。 + /// </summary> + public Orient orient + { + get { return m_Orient; } + set { if (PropertyUtil.SetStruct(ref m_Orient, value)) SetVerticesDirty(); } + } + /// <summary> + /// label style. + /// |文本标签格式。 + /// </summary> + public LabelStyle labelStyle + { + get { return m_LabelStyle; } + set { if (PropertyUtil.SetClass(ref m_LabelStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// 阴影线条样式。 + /// </summary> + public LineStyle lineStyle + { + get { return m_LineStyle; } + set { if (PropertyUtil.SetClass(ref m_LineStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// 阴影填充样式。 + /// </summary> + public AreaStyle areaStyle + { + get { return m_AreaStyle; } + set { if (PropertyUtil.SetClass(ref m_AreaStyle, value)) SetComponentDirty(); } + } + + class AxisIndexValueInfo + { + public double min; + public double max; + } + private Dictionary<int, AxisIndexValueInfo> m_XAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>(); + private Dictionary<int, AxisIndexValueInfo> m_YAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>(); + + /// <summary> + /// The start label. + /// |组件的开始信息文本。 + /// </summary> + private ChartLabel m_StartLabel { get; set; } + /// <summary> + /// The end label. + /// |组件的结束信息文本。 + /// </summary> + private ChartLabel m_EndLabel { get; set; } + + public override void SetDefaultValue() + { + supportInside = true; + supportSlider = true; + filterMode = FilterMode.None; + xAxisIndexs = new List<int>() { 0 }; + yAxisIndexs = new List<int>() { }; + showDataShadow = true; + showDetail = false; + zoomLock = false; + m_Bottom = 10; + m_Left = 10; + m_Right = 10; + m_Top = 0.9f; + rangeMode = RangeMode.Percent; + start = 30; + end = 70; + m_Orient = Orient.Horizonal; + m_ScrollSensitivity = 10; + m_LabelStyle = new LabelStyle(); + m_LineStyle = new LineStyle(LineStyle.Type.Solid) + { + opacity = 0.3f + }; + m_AreaStyle = new AreaStyle() + { + show = true, + opacity = 0.3f + }; + } + + /// <summary> + /// 给定的坐标是否在缩放区域内 + /// </summary> + /// <param name="pos"></param> + /// <param name="startX"></param> + /// <param name="width"></param> + /// <returns></returns> + public bool IsInZoom(Vector2 pos) + { + if (pos.x < context.x - 1 || pos.x > context.x + context.width + 1 || + pos.y < context.y - 1 || pos.y > context.y + context.height + 1) + { + return false; + } + return true; + } + + /// <summary> + /// 给定的坐标是否在选中区域内 + /// </summary> + /// <param name="pos"></param> + /// <returns></returns> + public bool IsInSelectedZoom(Vector2 pos) + { + switch (m_Orient) + { + case Orient.Horizonal: + var start = context.x + context.width * m_Start / 100; + var end = context.x + context.width * m_End / 100; + return ChartHelper.IsInRect(pos, start, end, context.y, context.y + context.height); + case Orient.Vertical: + start = context.y + context.height * m_Start / 100; + end = context.y + context.height * m_End / 100; + return ChartHelper.IsInRect(pos, context.x, context.x + context.width, start, end); + default: + return false; + } + } + + public bool IsInSelectedZoom(int totalIndex, int index, bool invert) + { + if (totalIndex <= 0) + return false; + + var tstart = invert ? 100 - end : start; + var tend = invert ? 100 - start : end; + var range = Mathf.RoundToInt(totalIndex * (tend - tstart) / 100); + var min = Mathf.FloorToInt(totalIndex * tstart / 100); + var max = Mathf.CeilToInt(totalIndex * tend / 100); + if (min == 0) max = min + range; + if (max == totalIndex) min = max - range; + var flag = index >= min && index < min + range; + return flag; + } + + /// <summary> + /// 给定的坐标是否在开始活动条触发区域内 + /// </summary> + /// <param name="pos"></param> + /// <param name="startX"></param> + /// <param name="width"></param> + /// <returns></returns> + public bool IsInStartZoom(Vector2 pos) + { + switch (m_Orient) + { + case Orient.Horizonal: + var start = context.x + context.width * m_Start / 100; + return ChartHelper.IsInRect(pos, start - 10, start + 10, context.y, context.y + context.height); + case Orient.Vertical: + start = context.y + context.height * m_Start / 100; + return ChartHelper.IsInRect(pos, context.x, context.x + context.width, start - 10, start + 10); + default: + return false; + } + } + + /// <summary> + /// 给定的坐标是否在结束活动条触发区域内 + /// </summary> + /// <param name="pos"></param> + /// <param name="startX"></param> + /// <param name="width"></param> + /// <returns></returns> + public bool IsInEndZoom(Vector2 pos) + { + switch (m_Orient) + { + case Orient.Horizonal: + var end = context.x + context.width * m_End / 100; + return ChartHelper.IsInRect(pos, end - 10, end + 10, context.y, context.y + context.height); + case Orient.Vertical: + end = context.y + context.height * m_End / 100; + return ChartHelper.IsInRect(pos, context.x, context.x + context.width, end - 10, end + 10); + default: + return false; + } + } + + public bool IsContainsAxis(Axis axis) + { + if (axis == null) + return false; + else if (axis is XAxis) + return xAxisIndexs.Contains(axis.index); + else if (axis is YAxis) + return yAxisIndexs.Contains(axis.index); + else + return false; + } + public bool IsContainsXAxis(int index) + { + return xAxisIndexs != null && xAxisIndexs.Contains(index); + } + + public bool IsContainsYAxis(int index) + { + return yAxisIndexs != null && yAxisIndexs.Contains(index); + } + + public Color32 GetFillerColor(Color32 themeColor) + { + if (ChartHelper.IsClearColor(fillerColor)) + return themeColor; + else + return fillerColor; + } + + public Color32 GetBackgroundColor(Color32 themeColor) + { + if (ChartHelper.IsClearColor(backgroundColor)) + return themeColor; + else + return backgroundColor; + } + public Color32 GetBorderColor(Color32 themeColor) + { + if (ChartHelper.IsClearColor(borderColor)) + return themeColor; + else + return borderColor; + } + + /// <summary> + /// 是否显示文本 + /// </summary> + /// <param name="flag"></param> + internal void SetLabelActive(bool flag) + { + m_StartLabel.SetActive(flag); + m_EndLabel.SetActive(flag); + } + + /// <summary> + /// 设置开始文本内容 + /// </summary> + /// <param name="text"></param> + internal void SetStartLabelText(string text) + { + if (m_StartLabel != null) m_StartLabel.SetText(text); + } + + /// <summary> + /// 设置结束文本内容 + /// </summary> + /// <param name="text"></param> + internal void SetEndLabelText(string text) + { + if (m_EndLabel != null) m_EndLabel.SetText(text); + } + + internal void SetStartLabel(ChartLabel startLabel) + { + m_StartLabel = startLabel; + } + + internal void SetEndLabel(ChartLabel endLabel) + { + m_EndLabel = endLabel; + } + + internal void UpdateStartLabelPosition(Vector3 pos) + { + m_StartLabel.SetPosition(pos); + } + + internal void UpdateEndLabelPosition(Vector3 pos) + { + m_EndLabel.SetPosition(pos); + } + + public void UpdateRuntimeData(float chartX, float chartY, float chartWidth, float chartHeight) + { + var runtimeLeft = left <= 1 ? left * chartWidth : left; + var runtimeBottom = bottom <= 1 ? bottom * chartHeight : bottom; + var runtimeTop = top <= 1 ? top * chartHeight : top; + var runtimeRight = right <= 1 ? right * chartWidth : right; + context.x = chartX + runtimeLeft; + context.y = chartY + runtimeBottom; + context.width = chartWidth - runtimeLeft - runtimeRight; + context.height = chartHeight - runtimeTop - runtimeBottom; + } + + internal void SetXAxisIndexValueInfo(int xAxisIndex, double min, double max) + { + if (!m_XAxisIndexInfos.ContainsKey(xAxisIndex)) + { + m_XAxisIndexInfos[xAxisIndex] = new AxisIndexValueInfo() + { + min = min, + max = max + }; + } + else + { + m_XAxisIndexInfos[xAxisIndex].min = min; + m_XAxisIndexInfos[xAxisIndex].max = max; + } + } + + internal void SetYAxisIndexValueInfo(int yAxisIndex, double min, double max) + { + if (!m_YAxisIndexInfos.ContainsKey(yAxisIndex)) + { + m_YAxisIndexInfos[yAxisIndex] = new AxisIndexValueInfo() + { + min = min, + max = max + }; + } + else + { + m_YAxisIndexInfos[yAxisIndex].min = min; + m_YAxisIndexInfos[yAxisIndex].max = max; + } + } + + internal bool IsXAxisIndexValue(int axisIndex) + { + return m_XAxisIndexInfos.ContainsKey(axisIndex); + } + + internal bool IsYAxisIndexValue(int axisIndex) + { + return m_YAxisIndexInfos.ContainsKey(axisIndex); + } + + internal void GetXAxisIndexValue(int axisIndex, out double min, out double max) + { + min = 0; + max = 0; + if (m_XAxisIndexInfos.ContainsKey(axisIndex)) + { + var info = m_XAxisIndexInfos[axisIndex]; + min = info.min; + max = info.max; + } + } + internal void GetYAxisIndexValue(int axisIndex, out double min, out double max) + { + min = 0; + max = 0; + if (m_YAxisIndexInfos.ContainsKey(axisIndex)) + { + var info = m_YAxisIndexInfos[axisIndex]; + min = info.min; + max = info.max; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoom.cs.meta b/Assets/XCharts/Runtime/Component/DataZoom/DataZoom.cs.meta new file mode 100644 index 0000000..1f760ce --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoom.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dc01046451b8f406896eb1a5c50433db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoomContext.cs b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomContext.cs new file mode 100644 index 0000000..49cf852 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomContext.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public class DataZoomContext : MainComponentContext + { + public float x { get; internal set; } + public float y { get; internal set; } + public float width { get; internal set; } + public float height { get; internal set; } + public bool isDrag { get; internal set; } + public bool isCoordinateDrag { get; internal set; } + public bool isStartDrag { get; internal set; } + public bool isEndDrag { get; internal set; } + /// <summary> + /// 运行时实际范围的开始值 + /// </summary> + public double startValue { get; set; } + /// <summary> + /// 运行时实际范围的结束值 + /// </summary> + public double endValue { get; set; } + public bool invert { get; set; } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoomContext.cs.meta b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomContext.cs.meta new file mode 100644 index 0000000..0bf1d45 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 899bbe0691c1c450c99f775d8d5f38c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHandler.cs b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHandler.cs new file mode 100644 index 0000000..6fce889 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHandler.cs @@ -0,0 +1,614 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class DataZoomHandler : MainComponentHandler<DataZoom> + { + private static readonly string s_DefaultDataZoom = "datazoom"; + private Vector2 m_LastTouchPos0; + private Vector2 m_LastTouchPos1; + private bool m_CheckDataZoomLabel; + private float m_DataZoomLastStartIndex; + private float m_DataZoomLastEndIndex; + + public override void InitComponent() + { + var dataZoom = component; + dataZoom.painter = chart.m_PainterTop; + dataZoom.refreshComponent = delegate() + { + var dataZoomObject = ChartHelper.AddObject(s_DefaultDataZoom + dataZoom.index, chart.transform, + chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + dataZoom.gameObject = dataZoomObject; + dataZoomObject.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(dataZoomObject); + + var startLabel = ChartHelper.AddChartLabel(s_DefaultDataZoom + "start", dataZoomObject.transform, + dataZoom.labelStyle, chart.theme.dataZoom, "", Color.clear, TextAnchor.MiddleRight); + startLabel.gameObject.SetActive(true); + + var endLabel = ChartHelper.AddChartLabel(s_DefaultDataZoom + "end", dataZoomObject.transform, + dataZoom.labelStyle, chart.theme.dataZoom, "", Color.clear, TextAnchor.MiddleLeft); + endLabel.gameObject.SetActive(true); + + dataZoom.SetStartLabel(startLabel); + dataZoom.SetEndLabel(endLabel); + dataZoom.SetLabelActive(false); + + foreach (var index in dataZoom.xAxisIndexs) + { + var xAxis = chart.GetChartComponent<XAxis>(index); + if (xAxis != null) + { + xAxis.UpdateFilterData(dataZoom); + } + } + + foreach (var serie in chart.series) + { + SerieHelper.UpdateFilterData(serie, dataZoom); + } + }; + dataZoom.refreshComponent(); + } + public override void Update() + { + CheckDataZoomScale(component); + CheckDataZoomLabel(component); + } + + public override void DrawTop(VertexHelper vh) + { + if (chart == null) + return; + + var dataZoom = component; + switch (dataZoom.orient) + { + case Orient.Horizonal: + DrawHorizonalDataZoomSlider(vh, dataZoom); + break; + case Orient.Vertical: + DrawVerticalDataZoomSlider(vh, dataZoom); + break; + } + } + + public override void OnBeginDrag(PointerEventData eventData) + { + if (chart == null) + return; + + if (Input.touchCount > 1) + return; + + Vector2 pos; + if (!chart.ScreenPointToChartPoint(eventData.position, out pos)) + return; + + var dataZoom = component; + if (!dataZoom.enable) + return; + + var grid = chart.GetGridOfDataZoom(dataZoom); + if (dataZoom.supportInside && dataZoom.supportInsideDrag) + { + if (grid.Contains(pos)) + { + dataZoom.context.isCoordinateDrag = true; + } + } + if (dataZoom.supportSlider) + { + if (!dataZoom.zoomLock) + { + if (dataZoom.IsInStartZoom(pos)) + { + dataZoom.context.isStartDrag = true; + } + else if (dataZoom.IsInEndZoom(pos)) + { + dataZoom.context.isEndDrag = true; + } + else if (dataZoom.IsInSelectedZoom(pos)) + { + dataZoom.context.isDrag = true; + } + } + else if (dataZoom.IsInSelectedZoom(pos)) + { + dataZoom.context.isDrag = true; + } + } + } + + public override void OnDrag(PointerEventData eventData) + { + if (chart == null) + return; + if (Input.touchCount > 1) + return; + + var dataZoom = component; + var grid = chart.GetGridOfDataZoom(dataZoom); + switch (dataZoom.orient) + { + case Orient.Horizonal: + var deltaPercent = eventData.delta.x / grid.context.width * 100; + OnDragInside(dataZoom, deltaPercent); + OnDragSlider(dataZoom, deltaPercent); + break; + case Orient.Vertical: + deltaPercent = eventData.delta.y / grid.context.height * 100; + OnDragInside(dataZoom, deltaPercent); + OnDragSlider(dataZoom, deltaPercent); + break; + } + } + + public override void OnEndDrag(PointerEventData eventData) + { + if (chart == null) + return; + + var dataZoom = component; + if (dataZoom.context.isDrag || dataZoom.context.isStartDrag || dataZoom.context.isEndDrag || + dataZoom.context.isCoordinateDrag) + { + chart.RefreshChart(); + } + dataZoom.context.isDrag = false; + dataZoom.context.isCoordinateDrag = false; + dataZoom.context.isStartDrag = false; + dataZoom.context.isEndDrag = false; + } + public override void OnPointerDown(PointerEventData eventData) + { + if (chart == null) + return; + if (Input.touchCount > 1) + return; + + Vector2 localPos; + if (!chart.ScreenPointToChartPoint(eventData.position, out localPos)) + return; + + var dataZoom = component; + var grid = chart.GetGridOfDataZoom(dataZoom); + if (dataZoom.IsInStartZoom(localPos) || + dataZoom.IsInEndZoom(localPos)) + { + return; + } + + if (dataZoom.IsInZoom(localPos) && + !dataZoom.IsInSelectedZoom(localPos)) + { + var pointerX = localPos.x; + var selectWidth = grid.context.width * (dataZoom.end - dataZoom.start) / 100; + var startX = pointerX - selectWidth / 2; + var endX = pointerX + selectWidth / 2; + if (startX < grid.context.x) + { + startX = grid.context.x; + endX = grid.context.x + selectWidth; + } + else if (endX > grid.context.x + grid.context.width) + { + endX = grid.context.x + grid.context.width; + startX = grid.context.x + grid.context.width - selectWidth; + } + var start = (startX - grid.context.x) / grid.context.width * 100; + var end = (endX - grid.context.x) / grid.context.width * 100; + UpdateDataZoomRange(dataZoom, start, end); + } + } + public override void OnScroll(PointerEventData eventData) + { + if (chart == null) + return; + if (Input.touchCount > 1) + return; + + Vector2 pos; + if (!chart.ScreenPointToChartPoint(eventData.position, out pos)) + return; + + var dataZoom = component; + if (!dataZoom.enable || dataZoom.zoomLock) + return; + + var grid = chart.GetGridOfDataZoom(dataZoom); + if ((dataZoom.supportInside && dataZoom.supportInsideScroll && grid.Contains(pos)) || + dataZoom.IsInZoom(pos)) + { + ScaleDataZoom(dataZoom, eventData.scrollDelta.y * dataZoom.scrollSensitivity); + } + } + + private void OnDragInside(DataZoom dataZoom, float deltaPercent) + { + if (deltaPercent == 0) + return; + if (Input.touchCount > 1) + return; + if (!dataZoom.supportInside || !dataZoom.supportInsideDrag) + return; + if (!dataZoom.context.isCoordinateDrag) + return; + + var diff = dataZoom.end - dataZoom.start; + if (deltaPercent > 0) + { + if (dataZoom.start > 0) + { + var start = dataZoom.start - deltaPercent; + if (start < 0) start = 0; + var end = start + diff; + UpdateDataZoomRange(dataZoom, start, end); + } + } + else + { + if (dataZoom.end < 100) + { + var end = dataZoom.end - deltaPercent; + if (end > 100) end = 100; + var start = end - diff; + UpdateDataZoomRange(dataZoom, start, end); + } + } + } + + private void OnDragSlider(DataZoom dataZoom, float deltaPercent) + { + if (Input.touchCount > 1) + return; + if (!dataZoom.supportSlider) + return; + + if (dataZoom.context.isStartDrag) + { + var start = dataZoom.start + deltaPercent; + if (start > dataZoom.end) + { + start = dataZoom.end; + dataZoom.context.isEndDrag = true; + dataZoom.context.isStartDrag = false; + } + UpdateDataZoomRange(dataZoom, start, dataZoom.end); + } + else if (dataZoom.context.isEndDrag) + { + var end = dataZoom.end + deltaPercent; + if (end < dataZoom.start) + { + end = dataZoom.start; + dataZoom.context.isStartDrag = true; + dataZoom.context.isEndDrag = false; + } + UpdateDataZoomRange(dataZoom, dataZoom.start, end); + } + else if (dataZoom.context.isDrag) + { + if (deltaPercent > 0) + { + if (dataZoom.end + deltaPercent > 100) deltaPercent = 100 - dataZoom.end; + } + else + { + if (dataZoom.start + deltaPercent < 0) deltaPercent = -dataZoom.start; + } + UpdateDataZoomRange(dataZoom, dataZoom.start + deltaPercent, dataZoom.end + deltaPercent); + } + } + + private void ScaleDataZoom(DataZoom dataZoom, float delta) + { + var grid = chart.GetGridOfDataZoom(dataZoom); + var deltaPercent = dataZoom.orient == Orient.Horizonal ? + Mathf.Abs(delta / grid.context.width * 100) : + Mathf.Abs(delta / grid.context.height * 100); + if (delta > 0) + { + if (dataZoom.end <= dataZoom.start) + return; + UpdateDataZoomRange(dataZoom, dataZoom.start + deltaPercent, dataZoom.end - deltaPercent); + } + else + { + UpdateDataZoomRange(dataZoom, dataZoom.start - deltaPercent, dataZoom.end + deltaPercent); + } + } + + public void UpdateDataZoomRange(DataZoom dataZoom, float start, float end) + { + if (end > 100) + end = 100; + + if (start < 0) + start = 0; + + if (end < start) + end = start; + + dataZoom.start = start; + dataZoom.end = end; + if (dataZoom.realtime) + { + chart.OnDataZoomRangeChanged(dataZoom); + chart.RefreshChart(); + } + } + + public void RefreshDataZoomLabel() + { + m_CheckDataZoomLabel = true; + } + + private void CheckDataZoomScale(DataZoom dataZoom) + { + if (!dataZoom.enable || dataZoom.zoomLock || !dataZoom.supportInside || !dataZoom.supportInsideDrag) + return; + + if (Input.touchCount == 2) + { + var touch0 = Input.GetTouch(0); + var touch1 = Input.GetTouch(1); + if (touch1.phase == TouchPhase.Began) + { + m_LastTouchPos0 = touch0.position; + m_LastTouchPos1 = touch1.position; + } + else if (touch0.phase == TouchPhase.Moved || touch1.phase == TouchPhase.Moved) + { + var tempPos0 = touch0.position; + var tempPos1 = touch1.position; + var currDist = Vector2.Distance(tempPos0, tempPos1); + var lastDist = Vector2.Distance(m_LastTouchPos0, m_LastTouchPos1); + var delta = (currDist - lastDist); + ScaleDataZoom(dataZoom, delta / dataZoom.scrollSensitivity); + m_LastTouchPos0 = tempPos0; + m_LastTouchPos1 = tempPos1; + } + } + } + + private void CheckDataZoomLabel(DataZoom dataZoom) + { + if (dataZoom.enable && dataZoom.supportSlider && dataZoom.showDetail) + { + Vector2 local; + if (!chart.ScreenPointToChartPoint(Input.mousePosition, out local)) + { + dataZoom.SetLabelActive(false); + return; + } + if (dataZoom.IsInSelectedZoom(local) || + dataZoom.IsInStartZoom(local) || + dataZoom.IsInEndZoom(local)) + { + dataZoom.SetLabelActive(true); + RefreshDataZoomLabel(); + } + else + { + dataZoom.SetLabelActive(false); + } + } + if (m_CheckDataZoomLabel && dataZoom.xAxisIndexs.Count > 0) + { + m_CheckDataZoomLabel = false; + var xAxis = chart.GetChartComponent<XAxis>(dataZoom.xAxisIndexs[0]); + var startIndex = (int) ((xAxis.data.Count - 1) * dataZoom.start / 100); + var endIndex = (int) ((xAxis.data.Count - 1) * dataZoom.end / 100); + + if (m_DataZoomLastStartIndex != startIndex || m_DataZoomLastEndIndex != endIndex) + { + m_DataZoomLastStartIndex = startIndex; + m_DataZoomLastEndIndex = endIndex; + if (xAxis.data.Count > 0) + { + dataZoom.SetStartLabelText(xAxis.data[startIndex]); + dataZoom.SetEndLabelText(xAxis.data[endIndex]); + } + else if (xAxis.IsTime()) + { + //TODO: + dataZoom.SetStartLabelText(""); + dataZoom.SetEndLabelText(""); + } + xAxis.SetAllDirty(); + } + var start = dataZoom.context.x + dataZoom.context.width * dataZoom.start / 100; + var end = dataZoom.context.x + dataZoom.context.width * dataZoom.end / 100; + var hig = dataZoom.context.height; + dataZoom.UpdateStartLabelPosition(new Vector3(start - 10, chart.chartY + dataZoom.bottom + hig / 2)); + dataZoom.UpdateEndLabelPosition(new Vector3(end + 10, chart.chartY + dataZoom.bottom + hig / 2)); + } + } + + private void DrawHorizonalDataZoomSlider(VertexHelper vh, DataZoom dataZoom) + { + if (!dataZoom.enable || !dataZoom.supportSlider) + return; + var p1 = new Vector3(dataZoom.context.x, dataZoom.context.y); + var p2 = new Vector3(dataZoom.context.x, dataZoom.context.y + dataZoom.context.height); + var p3 = new Vector3(dataZoom.context.x + dataZoom.context.width, dataZoom.context.y + dataZoom.context.height); + var p4 = new Vector3(dataZoom.context.x + dataZoom.context.width, dataZoom.context.y); + + var lineColor = dataZoom.lineStyle.GetColor(chart.theme.dataZoom.dataLineColor); + var lineWidth = dataZoom.lineStyle.GetWidth(chart.theme.dataZoom.dataLineWidth); + var borderWidth = dataZoom.borderWidth == 0 ? chart.theme.dataZoom.borderWidth : dataZoom.borderWidth; + var borderColor = dataZoom.GetBorderColor(chart.theme.dataZoom.borderColor); + var backgroundColor = dataZoom.GetBackgroundColor(chart.theme.dataZoom.backgroundColor); + var areaColor = dataZoom.areaStyle.GetColor(chart.theme.dataZoom.dataAreaColor); + + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, backgroundColor); + + var centerPos = new Vector3(dataZoom.context.x + dataZoom.context.width / 2, + dataZoom.context.y + dataZoom.context.height / 2); + UGL.DrawBorder(vh, centerPos, dataZoom.context.width, dataZoom.context.height, borderWidth, borderColor); + if (dataZoom.showDataShadow && chart.series.Count > 0) + { + Serie serie = chart.series[0]; + Axis axis = chart.GetChartComponent<YAxis>(0); + var showData = serie.GetDataList(null); + float scaleWid = dataZoom.context.width / (showData.Count - 1); + Vector3 lp = Vector3.zero; + Vector3 np = Vector3.zero; + double minValue = 0; + double maxValue = 0; + SeriesHelper.GetYMinMaxValue(chart.series, null, 0, chart.IsAllAxisValue(), axis.inverse, out minValue, out maxValue); + AxisHelper.AdjustMinMaxValue(axis, ref minValue, ref maxValue, true); + + int rate = 1; + var sampleDist = serie.sampleDist < 2 ? 2 : serie.sampleDist; + var maxCount = showData.Count; + if (sampleDist > 0) + rate = (int) ((maxCount - serie.minShow) / (dataZoom.context.width / sampleDist)); + if (rate < 1) + rate = 1; + + var totalAverage = serie.sampleAverage > 0 ? serie.sampleAverage : + DataHelper.DataAverage(ref showData, serie.sampleType, serie.minShow, maxCount, rate); + var dataChanging = false; + + for (int i = 0; i < maxCount; i += rate) + { + double value = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, i, + serie.animation.GetUpdateAnimationDuration(), ref dataChanging, axis); + float pX = dataZoom.context.x + i * scaleWid; + float dataHig = (float) ((maxValue - minValue) == 0 ? 0 : + (value - minValue) / (maxValue - minValue) * dataZoom.context.height); + np = new Vector3(pX, chart.chartY + dataZoom.bottom + dataHig); + if (i > 0) + { + UGL.DrawLine(vh, lp, np, lineWidth, lineColor); + Vector3 alp = new Vector3(lp.x, lp.y - lineWidth); + Vector3 anp = new Vector3(np.x, np.y - lineWidth); + + Vector3 tnp = new Vector3(np.x, chart.chartY + dataZoom.bottom + lineWidth); + Vector3 tlp = new Vector3(lp.x, chart.chartY + dataZoom.bottom + lineWidth); + UGL.DrawQuadrilateral(vh, alp, anp, tnp, tlp, areaColor); + } + lp = np; + } + if (dataChanging) + { + chart.RefreshTopPainter(); + } + } + switch (dataZoom.rangeMode) + { + case DataZoom.RangeMode.Percent: + var start = dataZoom.context.x + dataZoom.context.width * dataZoom.start / 100; + var end = dataZoom.context.x + dataZoom.context.width * dataZoom.end / 100; + var fillerColor = dataZoom.GetFillerColor(chart.theme.dataZoom.fillerColor); + + p1 = new Vector2(start, dataZoom.context.y); + p2 = new Vector2(start, dataZoom.context.y + dataZoom.context.height); + p3 = new Vector2(end, dataZoom.context.y + dataZoom.context.height); + p4 = new Vector2(end, dataZoom.context.y); + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, fillerColor); + UGL.DrawLine(vh, p1, p2, lineWidth, fillerColor); + UGL.DrawLine(vh, p3, p4, lineWidth, fillerColor); + break; + } + } + + private void DrawVerticalDataZoomSlider(VertexHelper vh, DataZoom dataZoom) + { + if (!dataZoom.enable || !dataZoom.supportSlider) + return; + + var p1 = new Vector3(dataZoom.context.x, dataZoom.context.y); + var p2 = new Vector3(dataZoom.context.x, dataZoom.context.y + dataZoom.context.height); + var p3 = new Vector3(dataZoom.context.x + dataZoom.context.width, dataZoom.context.y + dataZoom.context.height); + var p4 = new Vector3(dataZoom.context.x + dataZoom.context.width, dataZoom.context.y); + var lineColor = dataZoom.lineStyle.GetColor(chart.theme.dataZoom.dataLineColor); + var lineWidth = dataZoom.lineStyle.GetWidth(chart.theme.dataZoom.dataLineWidth); + var borderWidth = dataZoom.borderWidth == 0 ? chart.theme.dataZoom.borderWidth : dataZoom.borderWidth; + var borderColor = dataZoom.GetBorderColor(chart.theme.dataZoom.borderColor); + var backgroundColor = dataZoom.GetBackgroundColor(chart.theme.dataZoom.backgroundColor); + var areaColor = dataZoom.areaStyle.GetColor(chart.theme.dataZoom.dataAreaColor); + + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, backgroundColor); + var centerPos = new Vector3(dataZoom.context.x + dataZoom.context.width / 2, + dataZoom.context.y + dataZoom.context.height / 2); + UGL.DrawBorder(vh, centerPos, dataZoom.context.width, dataZoom.context.height, borderWidth, borderColor); + + if (dataZoom.showDataShadow && chart.series.Count > 0) + { + Serie serie = chart.series[0]; + Axis axis = chart.GetChartComponent<YAxis>(0); + var showData = serie.GetDataList(null); + float scaleWid = dataZoom.context.height / (showData.Count - 1); + Vector3 lp = Vector3.zero; + Vector3 np = Vector3.zero; + double minValue = 0; + double maxValue = 0; + SeriesHelper.GetYMinMaxValue(chart.series, null, 0, chart.IsAllAxisValue(), axis.inverse, out minValue, out maxValue); + AxisHelper.AdjustMinMaxValue(axis, ref minValue, ref maxValue, true); + + int rate = 1; + var sampleDist = serie.sampleDist < 2 ? 2 : serie.sampleDist; + var maxCount = showData.Count; + if (sampleDist > 0) + rate = (int) ((maxCount - serie.minShow) / (dataZoom.context.height / sampleDist)); + if (rate < 1) + rate = 1; + + var totalAverage = serie.sampleAverage > 0 ? serie.sampleAverage : + DataHelper.DataAverage(ref showData, serie.sampleType, serie.minShow, maxCount, rate); + var dataChanging = false; + + for (int i = 0; i < maxCount; i += rate) + { + double value = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, i, + serie.animation.GetUpdateAnimationDuration(), ref dataChanging, axis); + float pY = dataZoom.context.y + i * scaleWid; + float dataHig = (maxValue - minValue) == 0 ? 0 : + (float) ((value - minValue) / (maxValue - minValue) * dataZoom.context.width); + np = new Vector3(chart.chartX + chart.chartWidth - dataZoom.right - dataHig, pY); + if (i > 0) + { + UGL.DrawLine(vh, lp, np, lineWidth, lineColor); + Vector3 alp = new Vector3(lp.x, lp.y - lineWidth); + Vector3 anp = new Vector3(np.x, np.y - lineWidth); + + Vector3 tnp = new Vector3(np.x, chart.chartY + dataZoom.bottom + lineWidth); + Vector3 tlp = new Vector3(lp.x, chart.chartY + dataZoom.bottom + lineWidth); + UGL.DrawQuadrilateral(vh, alp, anp, tnp, tlp, areaColor); + } + lp = np; + } + if (dataChanging) + { + chart.RefreshTopPainter(); + } + } + switch (dataZoom.rangeMode) + { + case DataZoom.RangeMode.Percent: + var start = dataZoom.context.y + dataZoom.context.height * dataZoom.start / 100; + var end = dataZoom.context.y + dataZoom.context.height * dataZoom.end / 100; + var fillerColor = dataZoom.GetFillerColor(chart.theme.dataZoom.fillerColor); + + p1 = new Vector2(dataZoom.context.x, start); + p2 = new Vector2(dataZoom.context.x + dataZoom.context.width, start); + p3 = new Vector2(dataZoom.context.x + dataZoom.context.width, end); + p4 = new Vector2(dataZoom.context.x, end); + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, fillerColor); + UGL.DrawLine(vh, p1, p2, lineWidth, fillerColor); + UGL.DrawLine(vh, p3, p4, lineWidth, fillerColor); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHandler.cs.meta b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHandler.cs.meta new file mode 100644 index 0000000..5f39e61 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f980f43c96a748e0913a1a0054ecd9d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHelper.cs b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHelper.cs new file mode 100644 index 0000000..c7f8b81 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHelper.cs @@ -0,0 +1,62 @@ +namespace XCharts.Runtime +{ + public static class DataZoomHelper + { + public static void UpdateDataZoomRuntimeStartEndValue(DataZoom dataZoom, Serie serie) + { + if (dataZoom == null || serie == null) + return; + + double min = 0; + double max = 0; + SerieHelper.GetMinMaxData(serie, out min, out max, null); + dataZoom.context.startValue = min + (max - min) * dataZoom.start / 100; + dataZoom.context.endValue = min + (max - min) * dataZoom.end / 100; + } + + public static void UpdateDataZoomRuntimeStartEndValue<T>(BaseChart chart) where T : Serie + { + foreach (var component in chart.components) + { + if (component is DataZoom) + { + var dataZoom = component as DataZoom; + if (!dataZoom.enable) + continue; + + double min = double.MaxValue; + double max = double.MinValue; + foreach (var serie in chart.series) + { + if (!serie.show || !(serie is T)) + continue; + if (!dataZoom.IsContainsXAxis(serie.xAxisIndex)) + continue; + + var axis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + + if (axis.minMaxType == Axis.AxisMinMaxType.Custom) + { + if (axis.min < min) + min = axis.min; + if (axis.max > max) + max = axis.max; + } + else + { + double serieMinValue = 0; + double serieMaxValue = 0; + SerieHelper.GetMinMaxData(serie, out serieMinValue, out serieMaxValue, null, 2); + if (serieMinValue < min) + min = serieMinValue; + if (serieMaxValue > max) + max = serieMaxValue; + } + } + dataZoom.context.startValue = min + (max - min) * dataZoom.start / 100; + dataZoom.context.endValue = min + (max - min) * dataZoom.end / 100; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHelper.cs.meta b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHelper.cs.meta new file mode 100644 index 0000000..070730e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/DataZoom/DataZoomHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3cc7a61abc3a74004a079f796e51dfc9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Debug.meta b/Assets/XCharts/Runtime/Component/Debug.meta new file mode 100644 index 0000000..aefd3c3 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Debug.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76abe02f90a34419dbd45292ed7000d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Debug/DebugInfo.cs b/Assets/XCharts/Runtime/Component/Debug/DebugInfo.cs new file mode 100644 index 0000000..5daca29 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Debug/DebugInfo.cs @@ -0,0 +1,158 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + public class DebugInfo + { +#pragma warning disable 0414 + [SerializeField] private bool m_Show = true; +#pragma warning restore 0414 + [SerializeField] private bool m_ShowDebugInfo = false; + [SerializeField] protected bool m_ShowAllChartObject = false; + [SerializeField] protected bool m_FoldSeries = false; + [SerializeField] + private LabelStyle m_LabelStyle = new LabelStyle() + { + background = new ImageStyle() + { + color = new Color32(32, 32, 32, 170) + }, + textStyle = new TextStyle() + { + fontSize = 18, + color = Color.white + } + }; + + private static StringBuilder s_Sb = new StringBuilder(); + + private static readonly float INTERVAL = 0.2f; + private static readonly float MAXCACHE = 20; + private int m_FrameCount = 0; + private float m_LastTime = 0f; + private float m_LastCheckShowTime = 0f; + private int m_LastRefreshCount = 0; + private BaseChart m_Chart; + private ChartLabel m_Label; + private List<float> m_FpsList = new List<float>(); + + public bool showAllChartObject { get { return m_ShowAllChartObject; } set { m_ShowAllChartObject = value; } } + public bool foldSeries { get { return m_FoldSeries; } set { m_FoldSeries = value; } } + public float fps { get; private set; } + public float avgFps { get; private set; } + public int refreshCount { get; internal set; } + internal int clickChartCount { get; set; } + + public void Init(BaseChart chart) + { + m_Chart = chart; + m_Label = AddDebugInfoObject("debug", chart.transform, m_LabelStyle, chart.theme); + } + + public void Update() + { + if (clickChartCount > 2) + { + m_ShowDebugInfo = !m_ShowDebugInfo; + ChartHelper.SetActive(m_Label.transform, m_ShowDebugInfo); + clickChartCount = 0; + m_LastCheckShowTime = Time.realtimeSinceStartup; + return; + } + if (Time.realtimeSinceStartup - m_LastCheckShowTime > 0.5f) + { + m_LastCheckShowTime = Time.realtimeSinceStartup; + clickChartCount = 0; + } + if (!m_ShowDebugInfo || m_Label == null) + return; + + m_FrameCount++; + if (Time.realtimeSinceStartup - m_LastTime >= INTERVAL) + { + fps = m_FrameCount / (Time.realtimeSinceStartup - m_LastTime); + m_FrameCount = 0; + m_LastTime = Time.realtimeSinceStartup; + if (m_LastRefreshCount == refreshCount) + { + m_LastRefreshCount = 0; + refreshCount = 0; + } + m_LastRefreshCount = refreshCount; + if (m_FpsList.Count > MAXCACHE) + { + m_FpsList.RemoveAt(0); + } + m_FpsList.Add(fps); + avgFps = GetAvg(m_FpsList); + if (m_Label != null) + { + s_Sb.Length = 0; + s_Sb.AppendFormat("v{0}\n", XChartsMgr.version); + s_Sb.AppendFormat("fps : {0:f0} / {1:f0}\n", fps, avgFps); + s_Sb.AppendFormat("draw : {0}\n", refreshCount); + + var dataCount = m_Chart.GetAllSerieDataCount(); + SetValueWithKInfo(s_Sb, "data", dataCount); + + var vertCount = 0; + foreach (var serie in m_Chart.series) + vertCount += serie.context.vertCount; + + SetValueWithKInfo(s_Sb, "b-vert", m_Chart.m_BasePainterVertCount); + SetValueWithKInfo(s_Sb, "s-vert", vertCount); + SetValueWithKInfo(s_Sb, "t-vert", m_Chart.m_TopPainterVertCount, false); + + var serie0 = m_Chart.GetSerie(0); + for (int i = 0; i < serie0.dataCount; i++) + { + var serieData = serie0.data[i]; + s_Sb.AppendFormat("{0}:{1}\n", i, serieData.interact.targetVaue); + } + + m_Label.SetText(s_Sb.ToString()); + } + } + } + + private static void SetValueWithKInfo(StringBuilder s_Sb, string key, int value, bool newLine = true) + { + if (value >= 1000) + s_Sb.AppendFormat("{0} : {1:f1}k", key, value * 0.001f); + else + s_Sb.AppendFormat("{0} : {1}", key, value); + if (newLine) + s_Sb.Append("\n"); + } + + private static float GetAvg(List<float> list) + { + var total = 0f; + foreach (var v in list) total += v; + return total / list.Count; + } + + private ChartLabel AddDebugInfoObject(string name, Transform parent, LabelStyle labelStyle, + ThemeStyle theme) + { + var anchorMax = new Vector2(0, 1); + var anchorMin = new Vector2(0, 1); + var pivot = new Vector2(0, 1); + var sizeDelta = new Vector2(100, 100); + + var labelGameObject = ChartHelper.AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta); + labelGameObject.transform.SetAsLastSibling(); + labelGameObject.hideFlags = m_Chart.chartHideFlags; + ChartHelper.SetActive(labelGameObject, m_ShowDebugInfo); + + var label = ChartHelper.AddChartLabel("info", labelGameObject.transform, labelStyle, theme.common, + "", Color.clear, TextAnchor.UpperLeft); + label.SetActive(labelStyle.show); + return label; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Debug/DebugInfo.cs.meta b/Assets/XCharts/Runtime/Component/Debug/DebugInfo.cs.meta new file mode 100644 index 0000000..be8f760 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Debug/DebugInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6accb0ff71304b56a019db8ee3139d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Emphasis.meta b/Assets/XCharts/Runtime/Component/Emphasis.meta new file mode 100644 index 0000000..68dbdad --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4cd4074bb11fc40059363dd78b9ee98d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Emphasis/Emphasis.cs b/Assets/XCharts/Runtime/Component/Emphasis/Emphasis.cs new file mode 100644 index 0000000..90d6464 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/Emphasis.cs @@ -0,0 +1,74 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 高亮的图形样式和文本标签样式。 + /// </summary> + [System.Serializable] + public class Emphasis : ChildComponent, ISerieExtraComponent, ISerieDataComponent + { + [SerializeField] private bool m_Show; + [SerializeField] private LabelStyle m_Label = new LabelStyle(); + [SerializeField] private LabelLine m_LabelLine = new LabelLine(); + [SerializeField] private ItemStyle m_ItemStyle = new ItemStyle(); + + public void Reset() + { + m_Show = false; + m_Label.Reset(); + m_LabelLine.Reset(); + m_ItemStyle.Reset(); + } + + /// <summary> + /// 是否启用高亮样式。 + /// </summary> + public bool show + { + get { return m_Show; } + set { m_Show = value; } + } + /// <summary> + /// 图形文本标签。 + /// </summary> + public LabelStyle label + { + get { return m_Label; } + set { if (PropertyUtil.SetClass(ref m_Label, value, true)) SetAllDirty(); } + } + /// <summary> + /// 图形文本引导线样式。 + /// </summary> + public LabelLine labelLine + { + get { return m_LabelLine; } + set { if (PropertyUtil.SetClass(ref m_LabelLine, value, true)) SetAllDirty(); } + } + /// <summary> + /// 图形样式。 + /// </summary> + public ItemStyle itemStyle + { + get { return m_ItemStyle; } + set { if (PropertyUtil.SetClass(ref m_ItemStyle, value, true)) SetVerticesDirty(); } + } + + public override bool vertsDirty { get { return m_VertsDirty || label.vertsDirty || itemStyle.vertsDirty; } } + + public override bool componentDirty { get { return m_ComponentDirty || label.componentDirty; } } + + public override void ClearVerticesDirty() + { + base.ClearVerticesDirty(); + label.ClearVerticesDirty(); + itemStyle.ClearVerticesDirty(); + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + label.ClearComponentDirty(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Emphasis/Emphasis.cs.meta b/Assets/XCharts/Runtime/Component/Emphasis/Emphasis.cs.meta new file mode 100644 index 0000000..8aeb094 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/Emphasis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e0b1690532674b24952a87e0aead6fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Emphasis/EmphasisItemStyle.cs b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisItemStyle.cs new file mode 100644 index 0000000..ca5ad8e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisItemStyle.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 高亮的图形样式 + /// </summary> + [System.Serializable] + public class EmphasisItemStyle : ItemStyle, ISerieExtraComponent, ISerieDataComponent + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Emphasis/EmphasisItemStyle.cs.meta b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisItemStyle.cs.meta new file mode 100644 index 0000000..73b3363 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisItemStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d1095175540449f99bb9da27a5aaf04 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelLine.cs b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelLine.cs new file mode 100644 index 0000000..9a132ad --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelLine.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 高亮的标签引导线样式 + /// </summary> + [System.Serializable] + public class EmphasisLabelLine : LabelLine, ISerieExtraComponent, ISerieDataComponent + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelLine.cs.meta b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelLine.cs.meta new file mode 100644 index 0000000..b6bd83f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0d9ff3b8e09d464e9b5ea996b941314 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelStyle.cs b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelStyle.cs new file mode 100644 index 0000000..0279fc6 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelStyle.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 高亮的标签样式 + /// </summary> + [System.Serializable] + public class EmphasisLabelStyle : LabelStyle, ISerieExtraComponent, ISerieDataComponent + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelStyle.cs.meta b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelStyle.cs.meta new file mode 100644 index 0000000..77199dd --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Emphasis/EmphasisLabelStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e025b0f4be6d4141aa08bdad0102aa7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Interaction.meta b/Assets/XCharts/Runtime/Component/Interaction.meta new file mode 100644 index 0000000..9dd74cb --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Interaction.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8445ec442e5314aa891cbbd6d4d966c4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Interaction/InteractData.cs b/Assets/XCharts/Runtime/Component/Interaction/InteractData.cs new file mode 100644 index 0000000..fd9122c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Interaction/InteractData.cs @@ -0,0 +1,207 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + public class InteractData + { + private float m_PreviousValue = 0; + private float m_TargetValue = 0; + private Color32 m_PreviousColor; + private Color32 m_TargetColor; + private Color32 m_PreviousToColor; + private Color32 m_TargetToColor; + private float m_UpdateTime = 0; + private bool m_UpdateFlag = false; + private bool m_ValueEnable = false; + + internal float targetVaue { get { return m_TargetValue; } } + + public void SetValue(ref bool needInteract, float size, bool highlight, float rate = 1.3f) + { + size = highlight ? size * rate : size; + SetValue(ref needInteract, size); + } + + public void SetValue(ref bool needInteract, float size) + { + if (m_TargetValue != size) + { + needInteract = true; + m_UpdateFlag = true; + m_ValueEnable = true; + m_UpdateTime = Time.time; + m_PreviousValue = m_TargetValue; + m_TargetValue = size; + } + } + + public void SetColor(ref bool needInteract, Color32 color) + { + if (!ChartHelper.IsValueEqualsColor(color, m_TargetColor)) + { + if (!ChartHelper.IsClearColor(m_TargetColor)) + { + needInteract = true; + m_UpdateFlag = true; + m_ValueEnable = true; + m_UpdateTime = Time.time; + m_PreviousColor = m_TargetColor; + } + m_TargetColor = color; + } + } + public void SetColor(ref bool needInteract, Color32 color, Color32 toColor) + { + SetColor(ref needInteract, color); + if (!ChartHelper.IsValueEqualsColor(toColor, m_TargetToColor)) + { + if (!ChartHelper.IsClearColor(m_TargetToColor)) + { + needInteract = true; + m_UpdateFlag = true; + m_ValueEnable = true; + m_UpdateTime = Time.time; + m_PreviousToColor = m_TargetToColor; + } + m_TargetToColor = toColor; + } + } + + public void SetValueAndColor(ref bool needInteract, float value, Color32 color) + { + SetValue(ref needInteract, value); + SetColor(ref needInteract, color); + } + + public void SetValueAndColor(ref bool needInteract, float value, Color32 color, Color32 toColor) + { + SetValue(ref needInteract, value); + SetColor(ref needInteract, color, toColor); + } + + public bool TryGetValue(ref float value, ref bool interacting, float animationDuration = 250) + { + if (!IsValueEnable() || m_PreviousValue == 0) + return false; + if (m_UpdateFlag) + { + var time = Time.time - m_UpdateTime; + var total = animationDuration / 1000; + var rate = time / total; + if (rate > 1) rate = 1; + if (rate < 1) + { + interacting = true; + value = Mathf.Lerp(m_PreviousValue, m_TargetValue, rate); + return true; + } + else + { + m_UpdateFlag = false; + } + } + value = m_TargetValue; + return true; + } + + public bool TryGetColor(ref Color32 color, ref bool interacting, float animationDuration = 250) + { + if (!IsValueEnable()) + return false; + if (m_UpdateFlag) + { + var time = Time.time - m_UpdateTime; + var total = animationDuration / 1000; + var rate = time / total; + if (rate > 1) rate = 1; + if (rate < 1) + { + interacting = true; + color = Color32.Lerp(m_PreviousColor, m_TargetColor, rate); + return true; + } + else + { + m_UpdateFlag = false; + } + } + color = m_TargetColor; + return true; + } + + public bool TryGetColor(ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250) + { + if (!IsValueEnable()) + return false; + if (m_UpdateFlag) + { + var time = Time.time - m_UpdateTime; + var total = animationDuration / 1000; + var rate = time / total; + if (rate > 1) rate = 1; + if (rate < 1) + { + interacting = true; + color = Color32.Lerp(m_PreviousColor, m_TargetColor, rate); + toColor = Color32.Lerp(m_PreviousToColor, m_TargetToColor, rate); + return true; + } + else + { + m_UpdateFlag = false; + } + } + color = m_TargetColor; + toColor = m_TargetToColor; + return true; + } + public bool TryGetValueAndColor(ref float value, ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250) + { + if (!IsValueEnable()) + return false; + if (m_UpdateFlag) + { + var time = Time.time - m_UpdateTime; + var total = animationDuration / 1000; + var rate = time / total; + if (rate > 1) rate = 1; + if (rate < 1) + { + interacting = true; + value = Mathf.Lerp(m_PreviousValue, m_TargetValue, rate); + color = Color32.Lerp(m_PreviousColor, m_TargetColor, rate); + toColor = Color32.Lerp(m_PreviousToColor, m_TargetToColor, rate); + return true; + } + else + { + m_UpdateFlag = false; + } + } + value = m_TargetValue; + color = m_TargetColor; + toColor = m_TargetToColor; + return true; + } + + public void Reset() + { + m_UpdateFlag = false; + m_ValueEnable = false; + m_PreviousValue = float.NaN; + m_TargetColor = ColorUtil.clearColor32; + m_TargetToColor = ColorUtil.clearColor32; + m_PreviousColor = ColorUtil.clearColor32; + m_PreviousToColor = ColorUtil.clearColor32; + } + + private bool IsValueEnable() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + return false; +#endif + return m_ValueEnable; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Interaction/InteractData.cs.meta b/Assets/XCharts/Runtime/Component/Interaction/InteractData.cs.meta new file mode 100644 index 0000000..4e09507 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Interaction/InteractData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42f150814cce84d66b931eed0a07d4ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Label.meta b/Assets/XCharts/Runtime/Component/Label.meta new file mode 100644 index 0000000..401c628 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Label.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad378dd158b5d438a87405d35a3a6546 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Label/EndLabelStyle.cs b/Assets/XCharts/Runtime/Component/Label/EndLabelStyle.cs new file mode 100644 index 0000000..ecdd7e9 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Label/EndLabelStyle.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class EndLabelStyle : LabelStyle + { + public EndLabelStyle() + { + m_Offset = new Vector3(5, 0, 0); + m_TextStyle.alignment = TextAnchor.MiddleLeft; + m_NumericFormatter = "f0"; + m_Formatter = "{a}:{c}"; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Label/EndLabelStyle.cs.meta b/Assets/XCharts/Runtime/Component/Label/EndLabelStyle.cs.meta new file mode 100644 index 0000000..deca912 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Label/EndLabelStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3ca55f3ab0314339ae171c8ac07c4e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Label/LabelLine.cs b/Assets/XCharts/Runtime/Component/Label/LabelLine.cs new file mode 100644 index 0000000..a0b1c2c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Label/LabelLine.cs @@ -0,0 +1,145 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 标签的引导线 + /// </summary> + [System.Serializable] + public class LabelLine : ChildComponent, ISerieExtraComponent, ISerieDataComponent + { + /// <summary> + /// 标签视觉引导线类型 + /// </summary> + public enum LineType + { + /// <summary> + /// 折线 + /// </summary> + BrokenLine, + /// <summary> + /// 曲线 + /// </summary> + Curves, + /// <summary> + /// 水平线 + /// </summary> + HorizontalLine + } + + [SerializeField] private bool m_Show = true; + [SerializeField] private LineType m_LineType = LineType.BrokenLine; + [SerializeField] private Color32 m_LineColor = ChartConst.clearColor32; + [SerializeField] private float m_LineAngle = 0; + [SerializeField] private float m_LineWidth = 1.0f; + [SerializeField] private float m_LineGap = 1.0f; + [SerializeField] private float m_LineLength1 = 25f; + [SerializeField] private float m_LineLength2 = 15f; + [SerializeField] private SymbolStyle m_StartSymbol = new SymbolStyle() { type = SymbolType.Circle, size = 3 }; + [SerializeField] private SymbolStyle m_EndSymbol = new SymbolStyle() { type = SymbolType.Circle, size = 3 }; + + public void Reset() + { + m_Show = false; + m_LineType = LineType.BrokenLine; + m_LineColor = Color.clear; + m_LineAngle = 0; + m_LineWidth = 1.0f; + m_LineGap = 1.0f; + m_LineLength1 = 25f; + m_LineLength2 = 15f; + } + + /// <summary> + /// Whether the label line is showed. + /// |是否显示视觉引导线。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetAllDirty(); } + } + /// <summary> + /// the type of visual guide line. + /// |视觉引导线类型。 + /// </summary> + public LineType lineType + { + get { return m_LineType; } + set { if (PropertyUtil.SetStruct(ref m_LineType, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of visual guild line. + /// |视觉引导线颜色。默认和serie一致取自调色板。 + /// </summary> + public Color32 lineColor + { + get { return m_LineColor; } + set { if (PropertyUtil.SetStruct(ref m_LineColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// the angle of visual guild line. + /// |视觉引导线的固定角度。对折线和曲线有效。 + /// </summary> + public float lineAngle + { + get { return m_LineAngle; } + set { if (PropertyUtil.SetStruct(ref m_LineAngle, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of visual guild line. + /// |视觉引导线的宽度。 + /// </summary> + public float lineWidth + { + get { return m_LineWidth; } + set { if (PropertyUtil.SetStruct(ref m_LineWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the gap of container and guild line. + /// |视觉引导线和容器的间距。 + /// </summary> + public float lineGap + { + get { return m_LineGap; } + set { if (PropertyUtil.SetStruct(ref m_LineGap, value)) SetVerticesDirty(); } + } + /// <summary> + /// The length of the first segment of visual guide line. + /// |视觉引导线第一段的长度。 + /// </summary> + public float lineLength1 + { + get { return m_LineLength1; } + set { if (PropertyUtil.SetStruct(ref m_LineLength1, value)) SetVerticesDirty(); } + } + /// <summary> + /// The length of the second segment of visual guide line. + /// |视觉引导线第二段的长度。 + /// </summary> + public float lineLength2 + { + get { return m_LineLength2; } + set { if (PropertyUtil.SetStruct(ref m_LineLength2, value)) SetVerticesDirty(); } + } + /// <summary> + /// The symbol of the start point of labelline. + /// |起始点的图形标记。 + /// </summary> + public SymbolStyle startSymbol + { + get { return m_StartSymbol; } + set { if (PropertyUtil.SetClass(ref m_StartSymbol, value)) SetVerticesDirty(); } + } + /// <summary> + /// The symbol of the end point of labelline. + /// |结束点的图形标记。 + /// </summary> + public SymbolStyle endSymbol + { + get { return m_EndSymbol; } + set { if (PropertyUtil.SetClass(ref m_EndSymbol, value)) SetVerticesDirty(); } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Label/LabelLine.cs.meta b/Assets/XCharts/Runtime/Component/Label/LabelLine.cs.meta new file mode 100644 index 0000000..2f3d51f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Label/LabelLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c3977205b6f14d8a97ae32177691580 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Label/LabelStyle.cs b/Assets/XCharts/Runtime/Component/Label/LabelStyle.cs new file mode 100644 index 0000000..4d96a02 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Label/LabelStyle.cs @@ -0,0 +1,319 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Text label of chart, to explain some data information about graphic item like value, name and so on. + /// |图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。 + /// </summary> + [System.Serializable] + public class LabelStyle : ChildComponent, ISerieExtraComponent, ISerieDataComponent + { + /// <summary> + /// The position of label. + /// |标签的位置。 + /// </summary> + public enum Position + { + Default, + /// <summary> + /// Outside of sectors of pie chart, which relates to corresponding sector through visual guide line. + /// |饼图扇区外侧,通过视觉引导线连到相应的扇区。 + /// </summary> + Outside, + /// <summary> + /// Inside the sectors of pie chart. + /// |饼图扇区内部。 + /// </summary> + Inside, + /// <summary> + /// In the center of pie chart. + /// |在饼图中心位置。 + /// </summary> + Center, + /// <summary> + /// top of symbol. + /// |图形标志的顶部。 + /// </summary> + Top, + /// <summary> + /// the bottom of symbol. + /// |图形标志的底部。 + /// </summary> + Bottom, + /// <summary> + /// the left of symbol. + /// |图形标志的左边。 + /// </summary> + Left, + /// <summary> + /// the right of symbol. + /// |图形标志的右边。 + /// </summary> + Right, + /// <summary> + /// the start of line. + /// |线的起始点。 + /// </summary> + Start, + /// <summary> + /// the middle of line. + /// |线的中点。 + /// </summary> + Middle, + /// <summary> + /// the end of line. + /// |线的结束点。 + /// </summary> + End + } + + [SerializeField] protected bool m_Show = true; + [SerializeField] Position m_Position = Position.Default; + [SerializeField] protected bool m_AutoOffset = false; + [SerializeField] protected Vector3 m_Offset; + [SerializeField] protected float m_Rotate; + [SerializeField] protected float m_Distance; + [SerializeField] protected string m_Formatter; + [SerializeField] protected string m_NumericFormatter = ""; + [SerializeField] protected float m_Width = 0; + [SerializeField] protected float m_Height = 0; + + [SerializeField] protected IconStyle m_Icon = new IconStyle(); + [SerializeField] protected ImageStyle m_Background = new ImageStyle(); + [SerializeField] protected TextPadding m_TextPadding = new TextPadding(); + [SerializeField] protected TextStyle m_TextStyle = new TextStyle(); + protected LabelFormatterFunction m_FormatterFunction; + + public void Reset() + { + m_Show = false; + m_Position = Position.Default; + m_Offset = Vector3.zero; + m_Distance = 0; + m_Rotate = 0; + m_Width = 0; + m_Height = 0; + m_NumericFormatter = ""; + m_AutoOffset = false; + } + + /// <summary> + /// Whether the label is showed. + /// |是否显示文本标签。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetAllDirty(); } + } + /// <summary> + /// The position of label. + /// |标签的位置。 + /// </summary> + public Position position + { + get { return m_Position; } + set { if (PropertyUtil.SetStruct(ref m_Position, value)) SetVerticesDirty(); } + } + /// <summary> + /// formatter of label. + /// |标签内容字符串模版格式器。支持用 \n 换行。 + /// 模板变量有: + /// {.}:圆点标记。 + /// {a}:系列名。 + /// {a}:系列名。 + /// {b}:类目值或数据名。 + /// {c}:数据值。 + /// {d}:百分比。 + /// {e}:数据名。 + /// {f}:数据和。 + /// 示例:“{b}:{c}” + /// </summary> + public string formatter + { + get { return m_Formatter; } + set { if (PropertyUtil.SetClass(ref m_Formatter, value)) SetVerticesDirty(); } + } + /// <summary> + /// offset to the host graphic element. + /// |距离图形元素的偏移 + /// </summary> + public Vector3 offset + { + get { return m_Offset; } + set { if (PropertyUtil.SetStruct(ref m_Offset, value)) SetVerticesDirty(); } + } + /// <summary> + /// Rotation of label. + /// |文本的旋转。 + /// </summary> + public float rotate + { + get { return m_Rotate; } + set { if (PropertyUtil.SetStruct(ref m_Rotate, value)) SetComponentDirty(); } + } + /// <summary> + /// 距离轴线的距离。 + /// </summary> + public float distance + { + get { return m_Distance; } + set { if (PropertyUtil.SetStruct(ref m_Distance, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of label. If set as default value 0, it means than the label width auto set as the text width. + /// |标签的宽度。一般不用指定,不指定时则自动是文字的宽度。 + /// </summary> + /// <value></value> + public float width + { + get { return m_Width; } + set { if (PropertyUtil.SetStruct(ref m_Width, value)) SetComponentDirty(); } + } + /// <summary> + /// the height of label. If set as default value 0, it means than the label height auto set as the text height. + /// |标签的高度。一般不用指定,不指定时则自动是文字的高度。 + /// </summary> + /// <value></value> + public float height + { + get { return m_Height; } + set { if (PropertyUtil.SetStruct(ref m_Height, value)) SetComponentDirty(); } + } + /// <summary> + /// the text padding of label. + /// |文本的边距。 + /// </summary> + public TextPadding textPadding + { + get { return m_TextPadding; } + set { if (PropertyUtil.SetClass(ref m_TextPadding, value)) SetComponentDirty(); } + } + /// <summary> + /// Standard numeric format strings. + /// |标准数字格式字符串。用于将数值格式化显示为字符串。 + /// 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 + /// 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings + /// </summary> + /// <value></value> + public string numericFormatter + { + get { return m_NumericFormatter; } + set { if (PropertyUtil.SetClass(ref m_NumericFormatter, value)) SetComponentDirty(); } + } + /// <summary> + /// 是否开启自动偏移。当开启时,Y的偏移会自动判断曲线的开口来决定向上还是向下偏移。 + /// </summary> + public bool autoOffset + { + get { return m_AutoOffset; } + set { if (PropertyUtil.SetStruct(ref m_AutoOffset, value)) SetAllDirty(); } + } + /// <summary> + /// the sytle of background. + /// |背景图样式。 + /// </summary> + public ImageStyle background + { + get { return m_Background; } + set { if (PropertyUtil.SetClass(ref m_Background, value)) SetAllDirty(); } + } + /// <summary> + /// the sytle of icon. + /// |图标样式。 + /// </summary> + public IconStyle icon + { + get { return m_Icon; } + set { if (PropertyUtil.SetClass(ref m_Icon, value)) SetAllDirty(); } + } + /// <summary> + /// the sytle of text. + /// |文本样式。 + /// </summary> + public TextStyle textStyle + { + get { return m_TextStyle; } + set { if (PropertyUtil.SetClass(ref m_TextStyle, value)) SetAllDirty(); } + } + public LabelFormatterFunction formatterFunction + { + get { return m_FormatterFunction; } + set { m_FormatterFunction = value; } + } + + public bool IsInside() + { + return m_Position == Position.Inside || m_Position == Position.Center; + } + + public bool IsDefaultPosition(Position position) + { + return m_Position == Position.Default || m_Position == position; + } + + public bool IsAutoSize() + { + return width == 0 && height == 0; + } + + public Vector3 GetOffset(float radius) + { + var x = ChartHelper.GetActualValue(m_Offset.x, radius); + var y = ChartHelper.GetActualValue(m_Offset.y, radius); + var z = ChartHelper.GetActualValue(m_Offset.z, radius); + return new Vector3(x, y, z); + } + + public Color GetColor(Color defaultColor) + { + if (ChartHelper.IsClearColor(textStyle.color)) + { + return IsInside() ? Color.black : defaultColor; + } + else + { + return textStyle.color; + } + } + + public virtual LabelStyle Clone() + { + var label = new LabelStyle(); + label.m_Show = m_Show; + label.m_Position = m_Position; + label.m_Offset = m_Offset; + label.m_Rotate = m_Rotate; + label.m_Distance = m_Distance; + label.m_Formatter = m_Formatter; + label.m_Width = m_Width; + label.m_Height = m_Height; + label.m_NumericFormatter = m_NumericFormatter; + label.m_AutoOffset = m_AutoOffset; + label.m_Icon.Copy(m_Icon); + label.m_Background.Copy(m_Background); + label.m_TextPadding = m_TextPadding; + label.m_TextStyle.Copy(m_TextStyle); + return label; + } + + public virtual void Copy(LabelStyle label) + { + m_Show = label.m_Show; + m_Position = label.m_Position; + m_Offset = label.m_Offset; + m_Rotate = label.m_Rotate; + m_Distance = label.m_Distance; + m_Formatter = label.m_Formatter; + m_Width = label.m_Width; + m_Height = label.m_Height; + m_NumericFormatter = label.m_NumericFormatter; + m_AutoOffset = label.m_AutoOffset; + m_Icon.Copy(label.m_Icon); + m_Background.Copy(label.m_Background); + m_TextPadding = label.m_TextPadding; + m_TextStyle.Copy(label.m_TextStyle); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Label/LabelStyle.cs.meta b/Assets/XCharts/Runtime/Component/Label/LabelStyle.cs.meta new file mode 100644 index 0000000..9f25d62 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Label/LabelStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b2c690f282f04752898422894f61738 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Legend.meta b/Assets/XCharts/Runtime/Component/Legend.meta new file mode 100644 index 0000000..cbd5c63 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5bf1d7d1b565e45b6aacd4a261ddef9f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Legend/Legend.cs b/Assets/XCharts/Runtime/Component/Legend/Legend.cs new file mode 100644 index 0000000..4c59156 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/Legend.cs @@ -0,0 +1,425 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Legend component.The legend component shows different sets of tags, colors, and names. + /// You can control which series are not displayed by clicking on the legend. + /// |图例组件。 + /// 图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(LegendHandler), true)] + public class Legend : MainComponent, IPropertyChanged + { + public enum Type + { + /// <summary> + /// 自动匹配。 + /// </summary> + Auto, + /// <summary> + /// 自定义图标。 + /// </summary> + Custom, + /// <summary> + /// 空心圆。 + /// </summary> + EmptyCircle, + /// <summary> + /// 圆形。 + /// </summary> + Circle, + /// <summary> + /// 正方形。可通过Setting的legendIconCornerRadius参数调整圆角。 + /// </summary> + Rect, + /// <summary> + /// 三角形。 + /// </summary> + Triangle, + /// <summary> + /// 菱形。 + /// </summary> + Diamond, + } + /// <summary> + /// Selected mode of legend, which controls whether series can be toggled displaying by clicking legends. + /// |图例选择的模式,控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 None 关闭。 + /// </summary> + public enum SelectedMode + { + /// <summary> + /// 多选。 + /// </summary> + Multiple, + /// <summary> + /// 单选。 + /// </summary> + Single, + /// <summary> + /// 无法选择。 + /// </summary> + None + } + + [SerializeField] private bool m_Show = true; + [SerializeField] private Type m_IconType = Type.Auto; + [SerializeField] private SelectedMode m_SelectedMode = SelectedMode.Multiple; + [SerializeField] private Orient m_Orient = Orient.Horizonal; + [SerializeField] private Location m_Location = new Location() { align = Location.Align.TopCenter, top = 0.125f }; + [SerializeField] private float m_ItemWidth = 25.0f; + [SerializeField] private float m_ItemHeight = 12.0f; + [SerializeField] private float m_ItemGap = 10f; + [SerializeField] private bool m_ItemAutoColor = true; + [SerializeField] private float m_ItemOpacity = 1; + [SerializeField] private string m_Formatter; + [SerializeField] protected string m_NumericFormatter = ""; + [SerializeField] private LabelStyle m_LabelStyle = new LabelStyle(); + [SerializeField] private List<string> m_Data = new List<string>(); + [SerializeField] private List<Sprite> m_Icons = new List<Sprite>(); + [SerializeField] private List<Color> m_Colors = new List<Color>(); + + public LegendContext context = new LegendContext(); + + /// <summary> + /// Whether to show legend component. + /// |是否显示图例组件。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } + } + /// <summary> + /// Type of legend. + /// |图例类型。 + /// [default:Type.Auto] + /// </summary> + public Type iconType + { + get { return m_IconType; } + set { if (PropertyUtil.SetStruct(ref m_IconType, value)) SetAllDirty(); } + } + /// <summary> + /// Selected mode of legend, which controls whether series can be toggled displaying by clicking legends. + /// |选择模式。控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 None 关闭。 + /// [default:SelectedMode.Multiple] + /// </summary> + public SelectedMode selectedMode + { + get { return m_SelectedMode; } + set { if (PropertyUtil.SetStruct(ref m_SelectedMode, value)) SetComponentDirty(); } + } + /// <summary> + /// Specify whether the layout of legend component is horizontal or vertical. + /// |布局方式是横还是竖。 + /// [default:Orient.Horizonal] + /// </summary> + public Orient orient + { + get { return m_Orient; } + set { if (PropertyUtil.SetStruct(ref m_Orient, value)) SetComponentDirty(); } + } + /// <summary> + /// The location of legend. + /// |图例显示的位置。 + /// [default:Location.defaultTop] + /// </summary> + public Location location + { + get { return m_Location; } + set { if (PropertyUtil.SetClass(ref m_Location, value)) SetComponentDirty(); } + } + /// <summary> + /// Image width of legend symbol. + /// |图例标记的图形宽度。 + /// [default:24f] + /// </summary> + public float itemWidth + { + get { return m_ItemWidth; } + set { if (PropertyUtil.SetStruct(ref m_ItemWidth, value)) SetComponentDirty(); } + } + /// <summary> + /// Image height of legend symbol. + /// |图例标记的图形高度。 + /// [default:12f] + /// </summary> + public float itemHeight + { + get { return m_ItemHeight; } + set { if (PropertyUtil.SetStruct(ref m_ItemHeight, value)) SetComponentDirty(); } + } + /// <summary> + /// The distance between each legend, horizontal distance in horizontal layout, and vertical distance in vertical layout. + /// |图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。 + /// [default:10f] + /// </summary> + public float itemGap + { + get { return m_ItemGap; } + set { if (PropertyUtil.SetStruct(ref m_ItemGap, value)) SetComponentDirty(); } + } + /// <summary> + /// Whether the legend symbol matches the color automatically. + /// |图例标记的图形是否自动匹配颜色。 + /// [default:true] + /// </summary> + public bool itemAutoColor + { + get { return m_ItemAutoColor; } + set { if (PropertyUtil.SetStruct(ref m_ItemAutoColor, value)) SetComponentDirty(); } + } + /// <summary> + /// the opacity of item color. + /// |图例标记的图形的颜色透明度。 + /// </summary> + public float itemOpacity + { + get { return m_ItemOpacity; } + set { if (PropertyUtil.SetStruct(ref m_ItemOpacity, value)) SetComponentDirty(); } + } + /// <summary> + /// Standard numeric format strings. + /// |标准数字格式字符串。用于将数值格式化显示为字符串。 + /// 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 + /// 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings + /// </summary> + /// <value></value> + public string numericFormatter + { + get { return m_NumericFormatter; } + set { if (PropertyUtil.SetClass(ref m_NumericFormatter, value)) SetComponentDirty(); } + } + /// <summary> + /// Legend content string template formatter. Support for wrapping lines with \n. Template:{value}. + /// |图例内容字符串模版格式器。支持用 \n 换行。 + /// 模板变量为图例名称 {value}。其他模板变量参考Toolip的itemFormatter。 + /// </summary> + public string formatter + { + get { return m_Formatter; } + set { if (PropertyUtil.SetClass(ref m_Formatter, value)) SetComponentDirty(); } + } + /// <summary> + /// the style of text. + /// |文本样式。 + /// </summary> + public LabelStyle labelStyle + { + get { return m_LabelStyle; } + set { if (PropertyUtil.SetClass(ref m_LabelStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// Data array of legend. An array item is usually a name representing string. (If it is a pie chart, + /// it could also be the name of a single data in the pie chart) of a series. + /// |If data is not specified, it will be auto collected from series. + /// |图例的数据数组。数组项通常为一个字符串,每一项代表一个系列的 name(如果是饼图,也可以是饼图单个数据的 name)。 + /// 如果 data 没有被指定,会自动从当前系列中获取。指定data时里面的数据项和serie匹配时才会生效。 + /// </summary> + public List<string> data + { + get { return m_Data; } + set { if (value != null) { m_Data = value; SetComponentDirty(); } } + } + /// <summary> + /// 自定义的图例标记图形。 + /// </summary> + public List<Sprite> icons + { + get { return m_Icons; } + set { if (value != null) { m_Icons = value; SetComponentDirty(); } } + } + /// <summary> + /// the colors of legend item. + /// 图例标记的颜色列表。 + /// </summary> + public List<Color> colors + { + get { return m_Colors; } + set { if (value != null) { m_Colors = value; SetAllDirty(); } } + } + /// <summary> + /// 图表是否需要刷新(图例组件不需要刷新图表) + /// </summary> + public override bool vertsDirty { get { return false; } } + /// <summary> + /// 组件是否需要刷新 + /// </summary> + public override bool componentDirty + { + get { return m_ComponentDirty || location.componentDirty || labelStyle.componentDirty; } + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + location.ClearComponentDirty(); + labelStyle.ClearComponentDirty(); + } + + /// <summary> + /// Clear legend data. + /// |清空。 + /// </summary> + public override void ClearData() + { + m_Data.Clear(); + SetComponentDirty(); + } + + /// <summary> + /// Whether include in legend data by the specified name. + /// |是否包括由指定名字的图例 + /// </summary> + /// <param name="name"></param> + /// <returns></returns> + public bool ContainsData(string name) + { + return m_Data.Contains(name); + } + + /// <summary> + /// Removes the legend with the specified name. + /// |移除指定名字的图例。 + /// </summary> + /// <param name="name"></param> + public void RemoveData(string name) + { + if (m_Data.Contains(name)) + { + m_Data.Remove(name); + SetComponentDirty(); + } + } + + /// <summary> + /// Add legend data. + /// |添加图例。 + /// </summary> + /// <param name="name"></param> + public void AddData(string name) + { + if (!m_Data.Contains(name) && !string.IsNullOrEmpty(name)) + { + m_Data.Add(name); + SetComponentDirty(); + } + } + + /// <summary> + /// Gets the legend for the specified index. + /// |获得指定索引的图例。 + /// </summary> + /// <param name="index"></param> + /// <returns></returns> + public string GetData(int index) + { + if (index >= 0 && index < m_Data.Count) + { + return m_Data[index]; + } + return null; + } + + /// <summary> + /// Gets the index of the specified legend. + /// |获得指定图例的索引。 + /// </summary> + /// <param name="legendName"></param> + /// <returns></returns> + public int GetIndex(string legendName) + { + return m_Data.IndexOf(legendName); + } + + /// <summary> + /// Remove all legend buttons. + /// |移除所有图例按钮。 + /// </summary> + public void RemoveButton() + { + context.buttonList.Clear(); + } + + /// <summary> + /// Bind buttons to legends. + /// |给图例绑定按钮。 + /// </summary> + /// <param name="name"></param> + /// <param name="btn"></param> + /// <param name="total"></param> + public void SetButton(string name, LegendItem item, int total) + { + context.buttonList[name] = item; + int index = context.buttonList.Values.Count; + item.SetIconActive(iconType == Type.Custom); + item.SetActive(show); + } + + /// <summary> + /// Update the legend button color. + /// |更新图例按钮颜色。 + /// </summary> + /// <param name="name"></param> + /// <param name="color"></param> + public void UpdateButtonColor(string name, Color color) + { + if (context.buttonList.ContainsKey(name)) + { + context.buttonList[name].SetIconColor(color); + } + } + + /// <summary> + /// Update the text color of legend. + /// |更新图例文字颜色。 + /// </summary> + /// <param name="name"></param> + /// <param name="color"></param> + public void UpdateContentColor(string name, Color color) + { + if (context.buttonList.ContainsKey(name)) + { + context.buttonList[name].SetContentColor(color); + } + } + + /// <summary> + /// Gets the legend button for the specified index. + /// |获得指定索引的图例按钮。 + /// </summary> + /// <param name="index"></param> + /// <returns></returns> + public Sprite GetIcon(int index) + { + if (index >= 0 && index < m_Icons.Count) + { + return m_Icons[index]; + } + else + { + return null; + } + } + + public Color GetColor(int index) + { + if (index >= 0 && index < m_Colors.Count) + return m_Colors[index]; + else + return Color.white; + } + + /// <summary> + /// Callback handling when parameters change. + /// |参数变更时的回调处理。 + /// </summary> + public void OnChanged() + { + m_Location.OnChanged(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Legend/Legend.cs.meta b/Assets/XCharts/Runtime/Component/Legend/Legend.cs.meta new file mode 100644 index 0000000..c0193d1 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/Legend.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c53210fe487d047b6a51bacc0d3e7a71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Legend/LegendContext.cs b/Assets/XCharts/Runtime/Component/Legend/LegendContext.cs new file mode 100644 index 0000000..9bead40 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/LegendContext.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + + public class LegendContext : MainComponentContext + { + /// <summary> + /// 运行时图例的总宽度 + /// </summary> + public float width { get; internal set; } + /// <summary> + /// 运行时图例的总高度 + /// </summary> + public float height { get; internal set; } + /// <summary> + /// the button list of legend. + /// |图例按钮列表。 + /// </summary> + internal Dictionary<string, LegendItem> buttonList = new Dictionary<string, LegendItem>(); + /// <summary> + /// 多列时每列的宽度 + /// </summary> + internal Dictionary<int, float> eachWidthDict = new Dictionary<int, float>(); + /// <summary> + /// 单列高度 + /// </summary> + internal float eachHeight { get; set; } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Legend/LegendContext.cs.meta b/Assets/XCharts/Runtime/Component/Legend/LegendContext.cs.meta new file mode 100644 index 0000000..59d2e50 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/LegendContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c62c17c9d5b2b4a0fb260103c3ceb5ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Legend/LegendHandler.cs b/Assets/XCharts/Runtime/Component/Legend/LegendHandler.cs new file mode 100644 index 0000000..75b7161 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/LegendHandler.cs @@ -0,0 +1,253 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class LegendHandler : MainComponentHandler<Legend> + { + private static readonly string s_LegendObjectName = "legend"; + + public override void InitComponent() + { + InitLegend(component); + } + + public override void CheckComponent(System.Text.StringBuilder sb) + { + var legend = component; + if (ChartHelper.IsColorAlphaZero(legend.labelStyle.textStyle.color)) + sb.AppendFormat("warning:legend{0}->textStyle->color alpha is 0\n", legend.index); + var serieNameList = SeriesHelper.GetLegalSerieNameList(chart.series); + if (serieNameList.Count == 0) + sb.AppendFormat("warning:legend{0} need serie.serieName or serieData.name not empty\n", legend.index); + foreach (var category in legend.data) + { + if (!serieNameList.Contains(category)) + { + sb.AppendFormat("warning:legend{0} [{1}] is invalid, must be one of serie.serieName or serieData.name\n", + legend.index, category); + } + } + } + public override void DrawTop(VertexHelper vh) + { + DrawLegend(vh); + } + + public override void OnSerieDataUpdate(int serieIndex) + { + if (FormatterHelper.NeedFormat(component.formatter)) + component.refreshComponent(); + } + + private void InitLegend(Legend legend) + { + legend.painter = null; + legend.refreshComponent = delegate() + { + legend.OnChanged(); + var legendObject = ChartHelper.AddObject(s_LegendObjectName + legend.index, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + legend.gameObject = legendObject; + legendObject.hideFlags = chart.chartHideFlags; + SeriesHelper.UpdateSerieNameList(chart, ref chart.m_LegendRealShowName); + List<string> datas; + if (legend.show && legend.data.Count > 0) + { + datas = new List<string>(); + foreach (var data in legend.data) + { + if (chart.m_LegendRealShowName.Contains(data) || chart.IsSerieName(data)) + datas.Add(data); + } + } + else + { + datas = chart.m_LegendRealShowName; + } + int totalLegend = 0; + for (int i = 0; i < datas.Count; i++) + { + if (!SeriesHelper.IsLegalLegendName(datas[i])) continue; + totalLegend++; + } + legend.RemoveButton(); + ChartHelper.HideAllObject(legendObject); + if (!legend.show) return; + for (int i = 0; i < datas.Count; i++) + { + if (!SeriesHelper.IsLegalLegendName(datas[i])) continue; + string legendName = GetFormatterContent(legend, i, datas[i]); + var readIndex = chart.m_LegendRealShowName.IndexOf(datas[i]); + var active = chart.IsActiveByLegend(datas[i]); + var bgColor = LegendHelper.GetIconColor(chart, legend, readIndex, datas[i], active); + bgColor.a = legend.itemOpacity; + var item = LegendHelper.AddLegendItem(chart, legend, i, datas[i], legendObject.transform, chart.theme, + legendName, bgColor, active, readIndex); + legend.SetButton(legendName, item, totalLegend); + ChartHelper.ClearEventListener(item.button.gameObject); + ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerDown, (data) => + { + if (data.selectedObject == null || legend.selectedMode == Legend.SelectedMode.None) return; + var temp = data.selectedObject.name.Split('_'); + string selectedName = temp[1]; + int clickedIndex = int.Parse(temp[0]); + if (legend.selectedMode == Legend.SelectedMode.Multiple) + { + OnLegendButtonClick(legend, clickedIndex, selectedName, !chart.IsActiveByLegend(selectedName)); + } + else + { + var btnList = legend.context.buttonList.Values.ToArray(); + if (btnList.Length == 1) + { + OnLegendButtonClick(legend, 0, selectedName, !chart.IsActiveByLegend(selectedName)); + } + else + { + for (int n = 0; n < btnList.Length; n++) + { + temp = btnList[n].name.Split('_'); + selectedName = btnList[n].legendName; + var index = btnList[n].index; + OnLegendButtonClick(legend, n, selectedName, index == clickedIndex ? true : false); + } + } + } + }); + ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerEnter, (data) => + { + if (item.button == null) return; + var temp = item.button.name.Split('_'); + string selectedName = temp[1]; + int index = int.Parse(temp[0]); + OnLegendButtonEnter(legend, index, selectedName); + }); + ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerExit, (data) => + { + if (item.button == null) return; + var temp = item.button.name.Split('_'); + string selectedName = temp[1]; + int index = int.Parse(temp[0]); + OnLegendButtonExit(legend, index, selectedName); + }); + } + LegendHelper.ResetItemPosition(legend, chart.chartPosition, chart.chartWidth, chart.chartHeight); + }; + legend.refreshComponent(); + } + + private string GetFormatterContent(Legend legend, int dataIndex, string category) + { + if (string.IsNullOrEmpty(legend.formatter)) + return category; + else + { + var content = legend.formatter.Replace("{name}", category); + content = content.Replace("{value}", category); + var serie = chart.GetSerie(0); + FormatterHelper.ReplaceContent(ref content, dataIndex, legend.numericFormatter, serie, chart); + return content; + } + } + + private void OnLegendButtonClick(Legend legend, int index, string legendName, bool show) + { + chart.OnLegendButtonClick(index, legendName, show); + if (chart.onLegendClick != null) + chart.onLegendClick(legend, index, legendName, show); + } + + private void OnLegendButtonEnter(Legend legend, int index, string legendName) + { + chart.OnLegendButtonEnter(index, legendName); + if (chart.onLegendEnter != null) + chart.onLegendEnter(legend, index, legendName); + } + + private void OnLegendButtonExit(Legend legend, int index, string legendName) + { + chart.OnLegendButtonExit(index, legendName); + if (chart.onLegendExit != null) + chart.onLegendExit(legend, index, legendName); + } + + private void DrawLegend(VertexHelper vh) + { + if (chart.series.Count == 0) return; + var legend = component; + if (!legend.show) return; + if (legend.iconType == Legend.Type.Custom) return; + foreach (var kv in legend.context.buttonList) + { + var item = kv.Value; + var rect = item.GetIconRect(); + var radius = Mathf.Min(rect.width, rect.height) / 2; + var color = item.GetIconColor(); + var iconType = legend.iconType; + if (legend.iconType == Legend.Type.Auto) + { + var serie = chart.GetSerie(item.legendName); + if (serie != null && serie is Line) + { + var sp = new Vector3(rect.center.x - rect.width / 2, rect.center.y); + var ep = new Vector3(rect.center.x + rect.width / 2, rect.center.y); + UGL.DrawLine(vh, sp, ep, chart.settings.legendIconLineWidth, color); + if (!serie.symbol.show) continue; + switch (serie.symbol.type) + { + case SymbolType.None: + continue; + case SymbolType.Circle: + iconType = Legend.Type.Circle; + break; + case SymbolType.Diamond: + iconType = Legend.Type.Diamond; + break; + case SymbolType.EmptyCircle: + iconType = Legend.Type.EmptyCircle; + break; + case SymbolType.Rect: + iconType = Legend.Type.Rect; + break; + case SymbolType.Triangle: + iconType = Legend.Type.Triangle; + break; + } + } + else + { + iconType = Legend.Type.Rect; + } + } + switch (iconType) + { + case Legend.Type.Rect: + var cornerRadius = chart.settings.legendIconCornerRadius; + UGL.DrawRoundRectangle(vh, rect.center, rect.width, rect.height, color, color, + 0, cornerRadius, false, 0.5f); + break; + case Legend.Type.Circle: + UGL.DrawCricle(vh, rect.center, radius, color); + break; + case Legend.Type.Diamond: + UGL.DrawDiamond(vh, rect.center, radius, color); + break; + case Legend.Type.EmptyCircle: + var backgroundColor = chart.GetChartBackgroundColor(); + UGL.DrawEmptyCricle(vh, rect.center, radius, 2 * chart.settings.legendIconLineWidth, + color, color, backgroundColor, 1f); + break; + case Legend.Type.Triangle: + UGL.DrawTriangle(vh, rect.center, 1.2f * radius, color); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Legend/LegendHandler.cs.meta b/Assets/XCharts/Runtime/Component/Legend/LegendHandler.cs.meta new file mode 100644 index 0000000..3d332f8 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/LegendHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d05c7e75b9d3c4a839099bf152752af1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Legend/LegendHelper.cs b/Assets/XCharts/Runtime/Component/Legend/LegendHelper.cs new file mode 100644 index 0000000..422eb2a --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/LegendHelper.cs @@ -0,0 +1,276 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public static class LegendHelper + { + public static Color GetContentColor(BaseChart chart, int legendIndex, string legendName, Legend legend, ThemeStyle theme, bool active) + { + var textStyle = legend.labelStyle.textStyle; + if (active) + { + if (legend.labelStyle.textStyle.autoColor) + return SeriesHelper.GetNameColor(chart, legendIndex, legendName); + else + return !ChartHelper.IsClearColor(textStyle.color) ? textStyle.color : theme.legend.textColor; + } + else return theme.legend.unableColor; + } + + public static Color GetIconColor(BaseChart chart, Legend legend, int readIndex, string legendName, bool active) + { + if (active) + { + if (legend.itemAutoColor) + { + return SeriesHelper.GetNameColor(chart, readIndex, legendName); + } + else + return legend.GetColor(readIndex); + } + else return chart.theme.legend.unableColor; + } + + public static LegendItem AddLegendItem(BaseChart chart, Legend legend, int i, string legendName, Transform parent, + ThemeStyle theme, string content, Color itemColor, bool active, int legendIndex) + { + var objName = i + "_" + legendName; + var anchorMin = new Vector2(0, 0.5f); + var anchorMax = new Vector2(0, 0.5f); + var pivot = new Vector2(0, 0.5f); + var sizeDelta = new Vector2(100, 30); + var iconSizeDelta = new Vector2(legend.itemWidth, legend.itemHeight); + var textStyle = legend.labelStyle.textStyle; + var contentColor = GetContentColor(chart, legendIndex, legendName, legend, theme, active); + + var objAnchorMin = new Vector2(0, 1); + var objAnchorMax = new Vector2(0, 1); + var objPivot = new Vector2(0, 1); + var btnObj = ChartHelper.AddObject(objName, parent, objAnchorMin, objAnchorMax, objPivot, sizeDelta, i); + var iconObj = ChartHelper.AddObject("icon", btnObj.transform, anchorMin, anchorMax, pivot, iconSizeDelta); + var img = ChartHelper.GetOrAddComponent<Image>(btnObj); + img.color = Color.clear; + ChartHelper.GetOrAddComponent<Button>(btnObj); + ChartHelper.GetOrAddComponent<Image>(iconObj); + + var label = ChartHelper.AddChartLabel("content", btnObj.transform, legend.labelStyle, theme.legend, + content, contentColor, TextAnchor.MiddleLeft); + label.SetActive(true); + + var item = new LegendItem(); + item.index = i; + item.name = objName; + item.legendName = legendName; + item.SetObject(btnObj); + item.SetIconSize(legend.itemWidth, legend.itemHeight); + item.SetIconColor(itemColor); + item.SetIconImage(legend.GetIcon(i)); + item.SetContentPosition(legend.labelStyle.offset); + item.SetContent(content); + return item; + } + + public static void ResetItemPosition(Legend legend, Vector3 chartPos, float chartWidth, float chartHeight) + { + legend.location.UpdateRuntimeData(chartWidth, chartHeight); + var startX = 0f; + var startY = 0f; + var legendMaxWidth = chartWidth - legend.location.runtimeLeft - legend.location.runtimeRight; + var legendMaxHeight = chartHeight - legend.location.runtimeTop - legend.location.runtimeBottom; + UpdateLegendWidthAndHeight(legend, legendMaxWidth, legendMaxHeight); + var legendRuntimeWidth = legend.context.width; + var legendRuntimeHeight = legend.context.height; + var isVertical = legend.orient == Orient.Vertical; + switch (legend.location.align) + { + case Location.Align.TopCenter: + startX = chartPos.x + chartWidth / 2 - legendRuntimeWidth / 2; + startY = chartPos.y + chartHeight - legend.location.runtimeTop; + break; + case Location.Align.TopLeft: + startX = chartPos.x + legend.location.runtimeLeft; + startY = chartPos.y + chartHeight - legend.location.runtimeTop; + break; + case Location.Align.TopRight: + startX = chartPos.x + chartWidth - legendRuntimeWidth - legend.location.runtimeRight; + startY = chartPos.y + chartHeight - legend.location.runtimeTop; + break; + case Location.Align.Center: + startX = chartPos.x + chartWidth / 2 - legendRuntimeWidth / 2; + startY = chartPos.y + chartHeight / 2 + legendRuntimeHeight / 2; + break; + case Location.Align.CenterLeft: + startX = chartPos.x + legend.location.runtimeLeft; + startY = chartPos.y + chartHeight / 2 + legendRuntimeHeight / 2; + break; + case Location.Align.CenterRight: + startX = chartPos.x + chartWidth - legendRuntimeWidth - legend.location.runtimeRight; + startY = chartPos.y + chartHeight / 2 + legendRuntimeHeight / 2; + break; + case Location.Align.BottomCenter: + startX = chartPos.x + chartWidth / 2 - legendRuntimeWidth / 2; + startY = chartPos.y + legendRuntimeHeight + legend.location.runtimeBottom; + break; + case Location.Align.BottomLeft: + startX = chartPos.x + legend.location.runtimeLeft; + startY = chartPos.y + legendRuntimeHeight + legend.location.runtimeBottom; + break; + case Location.Align.BottomRight: + startX = chartPos.x + chartWidth - legendRuntimeWidth - legend.location.runtimeRight; + startY = chartPos.y + legendRuntimeHeight + legend.location.runtimeBottom; + break; + } + if (isVertical) SetVerticalItemPosition(legend, legendMaxHeight, startX, startY); + else SetHorizonalItemPosition(legend, legendMaxWidth, startX, startY); + } + + private static void SetVerticalItemPosition(Legend legend, float legendMaxHeight, float startX, float startY) + { + var currHeight = 0f; + var offsetX = 0f; + var row = 0; + foreach (var kv in legend.context.buttonList) + { + var item = kv.Value; + if (currHeight + item.height > legendMaxHeight) + { + currHeight = 0; + offsetX += legend.context.eachWidthDict[row]; + row++; + } + item.SetPosition(new Vector3(startX + offsetX, startY - currHeight)); + currHeight += item.height + legend.itemGap; + } + } + private static void SetHorizonalItemPosition(Legend legend, float legendMaxWidth, float startX, float startY) + { + var currWidth = 0f; + var offsetY = 0f; + foreach (var kv in legend.context.buttonList) + { + var item = kv.Value; + if (currWidth + item.width > legendMaxWidth) + { + currWidth = 0; + offsetY += legend.context.eachHeight; + } + item.SetPosition(new Vector3(startX + currWidth, startY - offsetY)); + currWidth += item.width + legend.itemGap; + } + } + + private static void UpdateLegendWidthAndHeight(Legend legend, float maxWidth, float maxHeight) + { + var width = 0f; + var height = 0f; + var realHeight = 0f; + var realWidth = 0f; + legend.context.eachWidthDict.Clear(); + legend.context.eachHeight = 0; + if (legend.orient == Orient.Horizonal) + { + foreach (var kv in legend.context.buttonList) + { + if (width + kv.Value.width > maxWidth) + { + realWidth = width - legend.itemGap; + realHeight += height + legend.itemGap; + if (legend.context.eachHeight < height + legend.itemGap) + { + legend.context.eachHeight = height + legend.itemGap; + } + height = 0; + width = 0; + } + width += kv.Value.width + legend.itemGap; + if (kv.Value.height > height) + height = kv.Value.height; + } + width -= legend.itemGap; + legend.context.height = realHeight + height; + legend.context.width = realWidth > 0 ? realWidth : width; + } + else + { + var row = 0; + foreach (var kv in legend.context.buttonList) + { + if (height + kv.Value.height > maxHeight) + { + realHeight = height - legend.itemGap; + realWidth += width + legend.itemGap; + legend.context.eachWidthDict[row] = width + legend.itemGap; + row++; + height = 0; + width = 0; + } + height += kv.Value.height + legend.itemGap; + if (kv.Value.width > width) + width = kv.Value.width; + } + height -= legend.itemGap; + legend.context.height = realHeight > 0 ? realHeight : height; + legend.context.width = realWidth + width; + } + } + + private static bool IsBeyondWidth(Legend legend, float maxWidth) + { + var totalWidth = 0f; + foreach (var kv in legend.context.buttonList) + { + var item = kv.Value; + totalWidth += item.width + legend.itemGap; + if (totalWidth > maxWidth) return true; + } + return false; + } + + public static bool CheckDataShow(Serie serie, string legendName, bool show) + { + bool needShow = false; + if (legendName.Equals(serie.serieName)) + { + serie.show = show; + serie.highlight = false; + if (serie.show) needShow = true; + } + else + { + foreach (var data in serie.data) + { + if (legendName.Equals(data.name)) + { + data.show = show; + data.context.highlight = false; + if (data.show) needShow = true; + } + } + } + return needShow; + } + + public static bool CheckDataHighlighted(Serie serie, string legendName, bool heighlight) + { + bool show = false; + if (legendName.Equals(serie.serieName)) + { + serie.highlight = heighlight; + } + else + { + foreach (var data in serie.data) + { + if (legendName.Equals(data.name)) + { + data.context.highlight = heighlight; + if (data.context.highlight) show = true; + } + } + } + return show; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Legend/LegendHelper.cs.meta b/Assets/XCharts/Runtime/Component/Legend/LegendHelper.cs.meta new file mode 100644 index 0000000..18e7596 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Legend/LegendHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc1c14527667e4475a275768371b3b9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Mark.meta b/Assets/XCharts/Runtime/Component/Mark.meta new file mode 100644 index 0000000..57971b8 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69bae12c156de4372a9680df180e91df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkArea.cs b/Assets/XCharts/Runtime/Component/Mark/MarkArea.cs new file mode 100644 index 0000000..560d6af --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkArea.cs @@ -0,0 +1,192 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 标域类型 + /// </summary> + public enum MarkAreaType + { + None, + /// <summary> + /// 最小值。 + /// </summary> + Min, + /// <summary> + /// 最大值。 + /// </summary> + Max, + /// <summary> + /// 平均值。 + /// </summary> + Average, + /// <summary> + /// 中位数。 + /// </summary> + Median + } + + /// <summary> + /// Used to mark an area in chart. For example, mark a time interval. + /// |图表标域,常用于标记图表中某个范围的数据。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(MarkAreaHandler), true)] + public class MarkArea : MainComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private string m_Text = ""; + [SerializeField] private int m_SerieIndex = 0; + [SerializeField] private MarkAreaData m_Start = new MarkAreaData(); + [SerializeField] private MarkAreaData m_End = new MarkAreaData(); + [SerializeField] private ItemStyle m_ItemStyle = new ItemStyle(); + [SerializeField] private LabelStyle m_Label = new LabelStyle(); + public ChartLabel runtimeLabel { get; internal set; } + public Vector3 runtimeLabelPosition { get; internal set; } + public Rect runtimeRect { get; internal set; } + /// <summary> + /// 是否显示标域。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// The text of markArea. + /// 标域显示的文本。 + /// </summary> + public string text + { + get { return m_Text; } + set { if (PropertyUtil.SetClass(ref m_Text, value)) SetComponentDirty(); } + } + /// <summary> + /// Serie index of markArea. + /// 标域影响的Serie索引。 + /// </summary> + public int serieIndex + { + get { return m_SerieIndex; } + set { if (PropertyUtil.SetStruct(ref m_SerieIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// 标域范围的起始数据。 + /// </summary> + public MarkAreaData start + { + get { return m_Start; } + set { if (PropertyUtil.SetClass(ref m_Start, value)) SetVerticesDirty(); } + } + /// <summary> + /// 标域范围的结束数据。 + /// </summary> + public MarkAreaData end + { + get { return m_End; } + set { if (PropertyUtil.SetClass(ref m_End, value)) SetVerticesDirty(); } + } + /// <summary> + /// 标域样式。 + /// </summary> + public ItemStyle itemStyle + { + get { return m_ItemStyle; } + set { if (PropertyUtil.SetClass(ref m_ItemStyle, value)) SetVerticesDirty(); } + } + /// <summary> + /// 标域文本样式。 + /// </summary> + public LabelStyle label + { + get { return m_Label; } + set { if (PropertyUtil.SetClass(ref m_Label, value)) SetComponentDirty(); } + } + public override void SetDefaultValue() + { + m_ItemStyle = new ItemStyle(); + m_ItemStyle.opacity = 0.6f; + m_Label = new LabelStyle(); + m_Label.show = true; + } + } + + /// <summary> + /// 标域的数据。 + /// </summary> + [System.Serializable] + public class MarkAreaData : ChildComponent + { + [SerializeField] private MarkAreaType m_Type = MarkAreaType.None; + [SerializeField] private string m_Name; + [SerializeField] private int m_Dimension = 1; + [SerializeField] private float m_XPosition; + [SerializeField] private float m_YPosition; + [SerializeField] private double m_XValue; + [SerializeField] private double m_YValue; + public double runtimeValue { get; internal set; } + /// <summary> + /// Name of the marker, which will display as a label. + /// |标注名称。会作为文字显示。 + /// </summary> + public string name + { + get { return m_Name; } + set { if (PropertyUtil.SetClass(ref m_Name, value)) SetVerticesDirty(); } + } + /// <summary> + /// Special markArea types, are used to label maximum value, minimum value and so on. + /// |特殊的标域类型,用于标注最大值最小值等。 + /// </summary> + public MarkAreaType type + { + get { return m_Type; } + set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); } + } + /// <summary> + /// From which dimension of data to calculate the maximum and minimum value and so on. + /// |从哪个维度的数据计算最大最小值等。 + /// </summary> + public int dimension + { + get { return m_Dimension; } + set { if (PropertyUtil.SetStruct(ref m_Dimension, value)) SetVerticesDirty(); } + } + /// <summary> + /// The x coordinate relative to the origin, in pixels. + /// |相对原点的 x 坐标,单位像素。当type为None时有效。 + /// </summary> + public float xPosition + { + get { return m_XPosition; } + set { if (PropertyUtil.SetStruct(ref m_XPosition, value)) SetVerticesDirty(); } + } + /// <summary> + /// The y coordinate relative to the origin, in pixels. + /// |相对原点的 y 坐标,单位像素。当type为None时有效。 + /// </summary> + public float yPosition + { + get { return m_YPosition; } + set { if (PropertyUtil.SetStruct(ref m_YPosition, value)) SetVerticesDirty(); } + } + /// <summary> + /// The value specified on the X-axis. A value specified when the X-axis is the category axis represents the index of the category axis data, otherwise a specific value. + /// |X轴上的指定值。当X轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 + /// </summary> + public double xValue + { + get { return m_XValue; } + set { if (PropertyUtil.SetStruct(ref m_XValue, value)) SetVerticesDirty(); } + } + /// <summary> + /// That's the value on the Y-axis. The value specified when the Y axis is the category axis represents the index of the category axis data, otherwise the specific value. + /// |Y轴上的指定值。当Y轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 + /// </summary> + public double yValue + { + get { return m_YValue; } + set { if (PropertyUtil.SetStruct(ref m_YValue, value)) SetVerticesDirty(); } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkArea.cs.meta b/Assets/XCharts/Runtime/Component/Mark/MarkArea.cs.meta new file mode 100644 index 0000000..3173d1c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkArea.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c7f98347a0d54e1c82866b041a473ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkAreaHandler.cs b/Assets/XCharts/Runtime/Component/Mark/MarkAreaHandler.cs new file mode 100644 index 0000000..9e1345b --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkAreaHandler.cs @@ -0,0 +1,195 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class MarkAreaHandler : MainComponentHandler<MarkArea> + { + private GameObject m_MarkLineLabelRoot; + private bool m_NeedUpdateLabelPosition; + + public override void InitComponent() + { + m_MarkLineLabelRoot = ChartHelper.AddObject("markarea" + component.index, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + m_MarkLineLabelRoot.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(m_MarkLineLabelRoot); + InitMarkArea(component); + } + + public override void DrawBase(VertexHelper vh) + { + DrawMarkArea(vh, component); + } + + public override void Update() + { + if (m_NeedUpdateLabelPosition) + { + m_NeedUpdateLabelPosition = false; + if (component.runtimeLabel != null) + { + component.runtimeLabel.SetPosition(component.runtimeLabelPosition); + } + } + } + + private void InitMarkArea(MarkArea markArea) + { + markArea.painter = chart.m_PainterTop; + markArea.refreshComponent = delegate() + { + var label = ChartHelper.AddChartLabel("label", m_MarkLineLabelRoot.transform, markArea.label, chart.theme.axis, + component.text, Color.clear, TextAnchor.MiddleCenter); + UpdateRuntimeData(component); + label.SetActive(markArea.label.show); + label.SetPosition(component.runtimeLabelPosition); + label.SetText(component.text); + markArea.runtimeLabel = label; + }; + markArea.refreshComponent(); + } + + private void DrawMarkArea(VertexHelper vh, MarkArea markArea) + { + if (!markArea.show) return; + var serie = chart.GetSerie(markArea.serieIndex); + if (serie == null || !serie.show || !markArea.show) return; + + UpdateRuntimeData(markArea); + + var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); + var serieColor = SerieHelper.GetLineColor(serie, null, chart.theme, colorIndex, false); + var areaColor = markArea.itemStyle.GetColor(serieColor); + UGL.DrawRectangle(vh, markArea.runtimeRect, areaColor, areaColor); + } + + private void UpdateRuntimeData(MarkArea markArea) + { + var serie = chart.GetSerie(markArea.serieIndex); + if (serie == null || !serie.show || !markArea.show) return; + var yAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + var xAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + var dataZoom = chart.GetDataZoomOfAxis(xAxis); + var showData = serie.GetDataList(dataZoom); + + var lt = GetPosition(markArea.start, serie, dataZoom, xAxis, yAxis, grid, showData, true); + var rb = GetPosition(markArea.end, serie, dataZoom, xAxis, yAxis, grid, showData, false); + var lb = new Vector3(lt.x, rb.y); + + markArea.runtimeRect = new Rect(lb.x, lb.y, rb.x - lb.x, lt.y - lb.y); + UpdateLabelPosition(markArea); + } + + private void UpdateLabelPosition(MarkArea markArea) + { + if (!markArea.label.show) return; + m_NeedUpdateLabelPosition = true; + var rect = markArea.runtimeRect; + switch (markArea.label.position) + { + case LabelStyle.Position.Center: + markArea.runtimeLabelPosition = rect.center; + break; + case LabelStyle.Position.Left: + markArea.runtimeLabelPosition = rect.center + new Vector2(rect.width / 2, 0); + break; + case LabelStyle.Position.Right: + markArea.runtimeLabelPosition = rect.center - new Vector2(rect.width / 2, 0); + break; + case LabelStyle.Position.Top: + markArea.runtimeLabelPosition = rect.center + new Vector2(0, rect.height / 2); + break; + case LabelStyle.Position.Bottom: + markArea.runtimeLabelPosition = rect.center - new Vector2(0, rect.height / 2); + break; + default: + markArea.runtimeLabelPosition = rect.center + new Vector2(0, rect.height / 2); + break; + } + markArea.runtimeLabelPosition += markArea.label.offset; + } + + private Vector3 GetPosition(MarkAreaData data, Serie serie, DataZoom dataZoom, XAxis xAxis, YAxis yAxis, + GridCoord grid, List<SerieData> showData, bool start) + { + var pos = Vector3.zero; + switch (data.type) + { + case MarkAreaType.Min: + data.runtimeValue = SerieHelper.GetMinData(serie, data.dimension, dataZoom); + return GetPosition(xAxis, yAxis, grid, data.runtimeValue, start); + case MarkAreaType.Max: + data.runtimeValue = SerieHelper.GetMaxData(serie, data.dimension, dataZoom); + return GetPosition(xAxis, yAxis, grid, data.runtimeValue, start); + case MarkAreaType.Average: + data.runtimeValue = SerieHelper.GetAverageData(serie, data.dimension, dataZoom); + return GetPosition(xAxis, yAxis, grid, data.runtimeValue, start); + case MarkAreaType.Median: + data.runtimeValue = SerieHelper.GetMedianData(serie, data.dimension, dataZoom); + return GetPosition(xAxis, yAxis, grid, data.runtimeValue, start); + case MarkAreaType.None: + if (data.xPosition != 0 || data.yPosition != 0) + { + var pX = grid.context.x + data.xPosition; + var pY = grid.context.y + data.yPosition; + return new Vector3(pX, pY); + } + else if (data.yValue != 0) + { + data.runtimeValue = data.yValue; + if (yAxis.IsCategory()) + { + var pY = AxisHelper.GetAxisPosition(grid, yAxis, data.yValue, showData.Count, dataZoom); + return start ? + new Vector3(grid.context.x, pY) : + new Vector3(grid.context.x + grid.context.width, pY); + } + else + { + return GetPosition(xAxis, yAxis, grid, data.runtimeValue, start); + } + } + else + { + data.runtimeValue = data.xValue; + if (xAxis.IsCategory()) + { + var pX = AxisHelper.GetAxisPosition(grid, xAxis, data.xValue, showData.Count, dataZoom); + return start ? new Vector3(pX, grid.context.y + grid.context.height) : + new Vector3(pX, grid.context.y); + } + else + { + return GetPosition(xAxis, yAxis, grid, data.xValue, start); + } + } + default: + break; + } + return pos; + } + + private Vector3 GetPosition(Axis xAxis, Axis yAxis, GridCoord grid, double value, bool start) + { + if (yAxis.IsCategory()) + { + var pX = AxisHelper.GetAxisPosition(grid, xAxis, value); + return start ? + new Vector3(pX, grid.context.y + grid.context.height) : + new Vector3(pX, grid.context.y); + } + else + { + var pY = AxisHelper.GetAxisPosition(grid, yAxis, value); + return start ? + new Vector3(grid.context.x, pY + grid.context.height) : + new Vector3(grid.context.x + grid.context.width, pY); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkAreaHandler.cs.meta b/Assets/XCharts/Runtime/Component/Mark/MarkAreaHandler.cs.meta new file mode 100644 index 0000000..534da72 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkAreaHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5ffb2d23b0574e6eb5805a2f3783081 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkLine.cs b/Assets/XCharts/Runtime/Component/Mark/MarkLine.cs new file mode 100644 index 0000000..7692929 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkLine.cs @@ -0,0 +1,256 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// 标线类型 + /// </summary> + public enum MarkLineType + { + None, + /// <summary> + /// 最小值。 + /// </summary> + Min, + /// <summary> + /// 最大值。 + /// </summary> + Max, + /// <summary> + /// 平均值。 + /// </summary> + Average, + /// <summary> + /// 中位数。 + /// </summary> + Median + } + + /// <summary> + /// Use a line in the chart to illustrate. + /// |图表标线。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(MarkLineHandler), true)] + public class MarkLine : MainComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private int m_SerieIndex = 0; + [SerializeField] private AnimationStyle m_Animation = new AnimationStyle(); + [SerializeField] private List<MarkLineData> m_Data = new List<MarkLineData>(); + + /// <summary> + /// Whether to display the marking line. + /// |是否显示标线。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// The serie index of markLine. + /// |标线影响的Serie索引。 + /// </summary> + public int serieIndex + { + get { return m_SerieIndex; } + set { if (PropertyUtil.SetStruct(ref m_SerieIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// The animation of markline. + /// |标线的动画样式。 + /// </summary> + public AnimationStyle animation + { + get { return m_Animation; } + set { if (PropertyUtil.SetClass(ref m_Animation, value)) SetVerticesDirty(); } + } + /// <summary> + /// A list of marked data. When the group of data item is 0, each data item represents a line; + /// When the group is not 0, two data items of the same group represent the starting point and + /// the ending point of the line respectively to form a line. In this case, the relevant style + /// parameters of the line are the parameters of the starting point. + /// |标线的数据列表。当数据项的group为0时,每个数据项表示一条标线;当group不为0时,相同group的两个数据项分别表 + /// 示标线的起始点和终止点来组成一条标线,此时标线的相关样式参数取起始点的参数。 + /// </summary> + public List<MarkLineData> data + { + get { return m_Data; } + set { if (PropertyUtil.SetClass(ref m_Data, value)) SetVerticesDirty(); } + } + + public override void SetDefaultValue() + { + data.Clear(); + var item = new MarkLineData(); + item.name = "average"; + item.type = MarkLineType.Average; + item.lineStyle.type = LineStyle.Type.Dashed; + item.lineStyle.color = Color.clear; + item.startSymbol.show = true; + item.startSymbol.type = SymbolType.Circle; + item.startSymbol.size = 4; + item.endSymbol.show = true; + item.endSymbol.type = SymbolType.Arrow; + item.endSymbol.size = 5; + item.label.show = true; + item.label.numericFormatter = "f1"; + item.label.formatter = "{c}"; + data.Add(item); + } + } + /// <summary> + /// Data of marking line. + /// |图表标线的数据。 + /// </summary> + [System.Serializable] + public class MarkLineData : ChildComponent + { + [SerializeField] private MarkLineType m_Type = MarkLineType.None; + [SerializeField] private string m_Name; + [SerializeField] private int m_Dimension = 1; + [SerializeField] private float m_XPosition; + [SerializeField] private float m_YPosition; + [SerializeField] private double m_XValue; + [SerializeField] private double m_YValue; + [SerializeField] private int m_Group = 0; + [SerializeField] private bool m_ZeroPosition = false; + + [SerializeField] private SymbolStyle m_StartSymbol = new SymbolStyle(); + [SerializeField] private SymbolStyle m_EndSymbol = new SymbolStyle(); + [SerializeField] private LineStyle m_LineStyle = new LineStyle(); + [SerializeField] private LabelStyle m_Label = new LabelStyle(); + //[SerializeField] private Emphasis m_Emphasis = new Emphasis(); + + public Vector3 runtimeStartPosition { get; internal set; } + public Vector3 runtimeEndPosition { get; internal set; } + public Vector3 runtimeCurrentEndPosition { get; internal set; } + public ChartLabel runtimeLabel { get; internal set; } + public double runtimeValue { get; internal set; } + + /// <summary> + /// Name of the marker, which will display as a label. + /// |标线名称,将会作为文字显示。label的formatter可通过{b}显示名称,通过{c}显示数值。 + /// </summary> + public string name + { + get { return m_Name; } + set { if (PropertyUtil.SetClass(ref m_Name, value)) SetVerticesDirty(); } + } + /// <summary> + /// Special label types, are used to label maximum value, minimum value and so on. + /// |特殊的标线类型,用于标注最大值最小值等。 + /// </summary> + public MarkLineType type + { + get { return m_Type; } + set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); } + } + /// <summary> + /// From which dimension of data to calculate the maximum and minimum value and so on. + /// |从哪个维度的数据计算最大最小值等。 + /// </summary> + public int dimension + { + get { return m_Dimension; } + set { if (PropertyUtil.SetStruct(ref m_Dimension, value)) SetVerticesDirty(); } + } + /// <summary> + /// The x coordinate relative to the origin, in pixels. + /// |相对原点的 x 坐标,单位像素。当type为None时有效。 + /// </summary> + public float xPosition + { + get { return m_XPosition; } + set { if (PropertyUtil.SetStruct(ref m_XPosition, value)) SetVerticesDirty(); } + } + /// <summary> + /// The y coordinate relative to the origin, in pixels. + /// |相对原点的 y 坐标,单位像素。当type为None时有效。 + /// </summary> + public float yPosition + { + get { return m_YPosition; } + set { if (PropertyUtil.SetStruct(ref m_YPosition, value)) SetVerticesDirty(); } + } + /// <summary> + /// The value specified on the X-axis. A value specified when the X-axis is the category axis represents the index of the category axis data, otherwise a specific value. + /// |X轴上的指定值。当X轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 + /// </summary> + public double xValue + { + get { return m_XValue; } + set { if (PropertyUtil.SetStruct(ref m_XValue, value)) SetVerticesDirty(); } + } + /// <summary> + /// That's the value on the Y-axis. The value specified when the Y axis is the category axis represents the index of the category axis data, otherwise the specific value. + /// |Y轴上的指定值。当Y轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。 + /// </summary> + public double yValue + { + get { return m_YValue; } + set { if (PropertyUtil.SetStruct(ref m_YValue, value)) SetVerticesDirty(); } + } + /// <summary> + /// Grouping. When the group is not 0, it means that this data is the starting point or end point of the marking line. Data consistent with the group form a marking line. + /// |分组。当group不为0时,表示这个data是标线的起点或终点,group一致的data组成一条标线。 + /// </summary> + public int group + { + get { return m_Group; } + set { if (PropertyUtil.SetStruct(ref m_Group, value)) SetVerticesDirty(); } + } + /// <summary> + /// Is the origin of the coordinate system. + /// |是否为坐标系原点。 + /// </summary> + public bool zeroPosition + { + get { return m_ZeroPosition; } + set { if (PropertyUtil.SetStruct(ref m_ZeroPosition, value)) SetVerticesDirty(); } + } + /// <summary> + /// The symbol of the start point of markline. + /// |起始点的图形标记。 + /// </summary> + public SymbolStyle startSymbol + { + get { return m_StartSymbol; } + set { if (PropertyUtil.SetClass(ref m_StartSymbol, value)) SetVerticesDirty(); } + } + /// <summary> + /// The symbol of the end point of markline. + /// |结束点的图形标记。 + /// </summary> + public SymbolStyle endSymbol + { + get { return m_EndSymbol; } + set { if (PropertyUtil.SetClass(ref m_EndSymbol, value)) SetVerticesDirty(); } + } + /// <summary> + /// The line style of markline. + /// |标线样式。 + /// </summary> + public LineStyle lineStyle + { + get { return m_LineStyle; } + set { if (PropertyUtil.SetClass(ref m_LineStyle, value)) SetVerticesDirty(); } + } + /// <summary> + /// Text styles of label. You can set position to Start, Middle, and End to display text in different locations. + /// |文本样式。可设置position为Start、Middle和End在不同的位置显示文本。 + /// </summary> + public LabelStyle label + { + get { return m_Label; } + set { if (PropertyUtil.SetClass(ref m_Label, value)) SetVerticesDirty(); } + } + // public Emphasis emphasis + // { + // get { return m_Emphasis; } + // set { if (PropertyUtil.SetClass(ref m_Emphasis, value)) SetVerticesDirty(); } + // } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkLine.cs.meta b/Assets/XCharts/Runtime/Component/Mark/MarkLine.cs.meta new file mode 100644 index 0000000..5bf2ec6 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e728b47a96c74b3f986d9abe3b03934 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkLineHandler.cs b/Assets/XCharts/Runtime/Component/Mark/MarkLineHandler.cs new file mode 100644 index 0000000..5be581f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkLineHandler.cs @@ -0,0 +1,310 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class MarkLineHandler : MainComponentHandler<MarkLine> + { + private GameObject m_MarkLineLabelRoot; + private bool m_RefreshLabel = false; + + public override void InitComponent() + { + m_MarkLineLabelRoot = ChartHelper.AddObject("markline", chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + m_MarkLineLabelRoot.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(m_MarkLineLabelRoot); + InitMarkLine(component); + } + + public override void DrawTop(VertexHelper vh) + { + DrawMarkLine(vh, component); + } + + public override void Update() + { + if (m_RefreshLabel) + { + m_RefreshLabel = false; + var serie = chart.GetSerie(component.serieIndex); + if (!serie.show || !component.show) return; + foreach (var data in component.data) + { + if (data.runtimeLabel != null) + { + data.runtimeLabel.SetActive(data.label.show); + data.runtimeLabel.SetPosition(MarkLineHelper.GetLabelPosition(data)); + data.runtimeLabel.SetText(MarkLineHelper.GetFormatterContent(serie, data)); + } + } + } + } + + private void InitMarkLine(MarkLine markLine) + { + var serie = chart.GetSerie(markLine.serieIndex); + if (!serie.show || !markLine.show) return; + ResetTempMarkLineGroupData(markLine); + var serieColor = (Color) chart.GetItemColor(serie); + if (m_TempGroupData.Count > 0) + { + foreach (var kv in m_TempGroupData) + { + if (kv.Value.Count >= 2) + { + var data = kv.Value[0]; + InitMarkLineLabel(serie, data, serieColor); + } + } + } + foreach (var data in markLine.data) + { + if (data.group != 0) continue; + InitMarkLineLabel(serie, data, serieColor); + } + } + + private void InitMarkLineLabel(Serie serie, MarkLineData data, Color serieColor) + { + data.painter = chart.m_PainterTop; + data.refreshComponent = delegate() + { + var textName = string.Format("markLine_{0}_{1}", serie.index, data.index); + var content = MarkLineHelper.GetFormatterContent(serie, data); + var label = ChartHelper.AddChartLabel(textName, m_MarkLineLabelRoot.transform, data.label, chart.theme.axis, + content, Color.clear, TextAnchor.MiddleCenter); + + label.SetIconActive(false); + label.SetActive(data.label.show); + label.SetPosition(MarkLineHelper.GetLabelPosition(data)); + data.runtimeLabel = label; + }; + data.refreshComponent(); + } + + private Dictionary<int, List<MarkLineData>> m_TempGroupData = new Dictionary<int, List<MarkLineData>>(); + private void DrawMarkLine(VertexHelper vh, MarkLine markLine) + { + var serie = chart.GetSerie(markLine.serieIndex); + if (!serie.show || !markLine.show) return; + if (markLine.data.Count == 0) return; + var yAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + var xAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + var dataZoom = chart.GetDataZoomOfAxis(xAxis); + var animation = markLine.animation; + var showData = serie.GetDataList(dataZoom); + var sp = Vector3.zero; + var ep = Vector3.zero; + var colorIndex = chart.GetLegendRealShowNameIndex(serie.serieName); + var serieColor = SerieHelper.GetLineColor(serie, null, chart.theme, colorIndex, false); + animation.InitProgress(0, 1f); + ResetTempMarkLineGroupData(markLine); + if (m_TempGroupData.Count > 0) + { + foreach (var kv in m_TempGroupData) + { + if (kv.Value.Count >= 2) + { + sp = GetSinglePos(xAxis, yAxis, grid, serie, dataZoom, kv.Value[0], showData.Count); + ep = GetSinglePos(xAxis, yAxis, grid, serie, dataZoom, kv.Value[1], showData.Count); + kv.Value[0].runtimeStartPosition = sp; + kv.Value[1].runtimeEndPosition = ep; + DrawMakLineData(vh, kv.Value[0], animation, serie, grid, serieColor, sp, ep); + } + } + } + foreach (var data in markLine.data) + { + if (data.group != 0) continue; + switch (data.type) + { + case MarkLineType.Min: + data.runtimeValue = SerieHelper.GetMinData(serie, data.dimension, dataZoom); + GetStartEndPos(xAxis, yAxis, grid, data.runtimeValue, ref sp, ref ep); + break; + case MarkLineType.Max: + data.runtimeValue = SerieHelper.GetMaxData(serie, data.dimension, dataZoom); + GetStartEndPos(xAxis, yAxis, grid, data.runtimeValue, ref sp, ref ep); + break; + case MarkLineType.Average: + data.runtimeValue = SerieHelper.GetAverageData(serie, data.dimension, dataZoom); + GetStartEndPos(xAxis, yAxis, grid, data.runtimeValue, ref sp, ref ep); + break; + case MarkLineType.Median: + data.runtimeValue = SerieHelper.GetMedianData(serie, data.dimension, dataZoom); + GetStartEndPos(xAxis, yAxis, grid, data.runtimeValue, ref sp, ref ep); + break; + case MarkLineType.None: + if (data.xPosition != 0) + { + data.runtimeValue = data.xPosition; + var pX = grid.context.x + data.xPosition; + sp = new Vector3(pX, grid.context.y); + ep = new Vector3(pX, grid.context.y + grid.context.height); + } + else if (data.yPosition != 0) + { + data.runtimeValue = data.yPosition; + var pY = grid.context.y + data.yPosition; + sp = new Vector3(grid.context.x, pY); + ep = new Vector3(grid.context.x + grid.context.width, pY); + } + else if (data.yValue != 0) + { + data.runtimeValue = data.yValue; + if (yAxis.IsCategory()) + { + var pY = AxisHelper.GetAxisPosition(grid, yAxis, data.yValue, showData.Count, dataZoom); + sp = new Vector3(grid.context.x, pY); + ep = new Vector3(grid.context.x + grid.context.width, pY); + } + else + { + GetStartEndPos(xAxis, yAxis, grid, data.yValue, ref sp, ref ep); + } + } + else + { + data.runtimeValue = data.xValue; + if (xAxis.IsCategory()) + { + var pX = AxisHelper.GetAxisPosition(grid, xAxis, data.xValue, showData.Count, dataZoom); + sp = new Vector3(pX, grid.context.y); + ep = new Vector3(pX, grid.context.y + grid.context.height); + } + else + { + GetStartEndPos(xAxis, yAxis, grid, data.xValue, ref sp, ref ep); + } + } + break; + default: + break; + } + data.runtimeStartPosition = sp; + data.runtimeEndPosition = ep; + DrawMakLineData(vh, data, animation, serie, grid, serieColor, sp, ep); + } + if (!animation.IsFinish()) + { + animation.CheckProgress(1f); + chart.RefreshTopPainter(); + } + } + + private void ResetTempMarkLineGroupData(MarkLine markLine) + { + m_TempGroupData.Clear(); + for (int i = 0; i < markLine.data.Count; i++) + { + var data = markLine.data[i]; + // data.index = i; + data.index = markLine.index; + if (data.group == 0) continue; + if (!m_TempGroupData.ContainsKey(data.group)) + { + m_TempGroupData[data.group] = new List<MarkLineData>(); + } + m_TempGroupData[data.group].Add(data); + } + } + + private void DrawMakLineData(VertexHelper vh, MarkLineData data, AnimationStyle animation, Serie serie, + GridCoord grid, Color32 serieColor, Vector3 sp, Vector3 ep) + { + if (!animation.IsFinish()) + ep = Vector3.Lerp(sp, ep, animation.GetCurrDetail()); + data.runtimeCurrentEndPosition = ep; + if (sp != Vector3.zero || ep != Vector3.zero) + { + m_RefreshLabel = true; + chart.ClampInChart(ref sp); + chart.ClampInChart(ref ep); + var theme = chart.theme.axis; + var lineColor = ChartHelper.IsClearColor(data.lineStyle.color) ? serieColor : data.lineStyle.color; + var lineWidth = data.lineStyle.width == 0 ? theme.lineWidth : data.lineStyle.width; + ChartDrawer.DrawLineStyle(vh, data.lineStyle, sp, ep, lineWidth, LineStyle.Type.Dashed, lineColor, lineColor); + if (data.startSymbol != null && data.startSymbol.show) + { + DrawMarkLineSymbol(vh, data.startSymbol, serie, grid, chart.theme, sp, sp, lineColor); + } + if (data.endSymbol != null && data.endSymbol.show) + { + DrawMarkLineSymbol(vh, data.endSymbol, serie, grid, chart.theme, ep, sp, lineColor); + } + } + } + + private void DrawMarkLineSymbol(VertexHelper vh, SymbolStyle symbol, Serie serie, GridCoord grid, ThemeStyle theme, + Vector3 pos, Vector3 startPos, Color32 lineColor) + { + var tickness = SerieHelper.GetSymbolBorder(serie, null, theme, false); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, null, theme, false); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, null, false); + chart.DrawClipSymbol(vh, symbol.type, symbol.size, tickness, pos, lineColor, lineColor, + ColorUtil.clearColor32, borderColor, symbol.gap, true, cornerRadius, grid, startPos); + } + + private void GetStartEndPos(Axis xAxis, Axis yAxis, GridCoord grid, double value, ref Vector3 sp, ref Vector3 ep) + { + if (xAxis.IsCategory()) + { + var pY = AxisHelper.GetAxisPosition(grid, yAxis, value); + sp = new Vector3(grid.context.x, pY); + ep = new Vector3(grid.context.x + grid.context.width, pY); + } + else + { + var pX = AxisHelper.GetAxisPosition(grid, xAxis, value); + sp = new Vector3(pX, grid.context.y); + ep = new Vector3(pX, grid.context.y + grid.context.height); + } + } + + private float GetAxisPosition(GridCoord grid, Axis axis, DataZoom dataZoom, int dataCount, double value) + { + return AxisHelper.GetAxisPosition(grid, axis, value, dataCount, dataZoom); + } + + private Vector3 GetSinglePos(Axis xAxis, Axis yAxis, GridCoord grid, Serie serie, DataZoom dataZoom, MarkLineData data, + int serieDataCount) + { + switch (data.type) + { + case MarkLineType.Min: + var serieData = SerieHelper.GetMinSerieData(serie, data.dimension, dataZoom); + data.runtimeValue = serieData.GetData(data.dimension); + var pX = GetAxisPosition(grid, xAxis, dataZoom, serieDataCount, serieData.index); + var pY = GetAxisPosition(grid, yAxis, dataZoom, serieDataCount, data.runtimeValue); + return new Vector3(pX, pY); + case MarkLineType.Max: + serieData = SerieHelper.GetMaxSerieData(serie, data.dimension, dataZoom); + data.runtimeValue = serieData.GetData(data.dimension); + pX = GetAxisPosition(grid, xAxis, dataZoom, serieDataCount, serieData.index); + pY = GetAxisPosition(grid, yAxis, dataZoom, serieDataCount, data.runtimeValue); + return new Vector3(pX, pY); + case MarkLineType.None: + if (data.zeroPosition) + { + data.runtimeValue = 0; + return grid.context.position; + } + else + { + pX = data.xPosition != 0 ? grid.context.x + data.xPosition : + GetAxisPosition(grid, xAxis, dataZoom, serieDataCount, data.xValue); + pY = data.yPosition != 0 ? grid.context.y + data.yPosition : + GetAxisPosition(grid, yAxis, dataZoom, serieDataCount, data.yValue); + data.runtimeValue = data.yValue; + return new Vector3(pX, pY); + } + default: + return grid.context.position; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkLineHandler.cs.meta b/Assets/XCharts/Runtime/Component/Mark/MarkLineHandler.cs.meta new file mode 100644 index 0000000..0b0c3dd --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkLineHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: faa35bab8fc6e42d5b5d19731c1a20a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkLineHelper.cs b/Assets/XCharts/Runtime/Component/Mark/MarkLineHelper.cs new file mode 100644 index 0000000..98511fa --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkLineHelper.cs @@ -0,0 +1,48 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + internal static class MarkLineHelper + { + public static string GetFormatterContent(Serie serie, MarkLineData data) + { + var serieLabel = data.label; + var numericFormatter = serieLabel.numericFormatter; + if (serieLabel.formatterFunction != null) + { + return serieLabel.formatterFunction(data.index, data.runtimeValue, null); + } + if (string.IsNullOrEmpty(serieLabel.formatter)) + return ChartCached.NumberToStr(data.runtimeValue, numericFormatter); + else + { + var content = serieLabel.formatter; + FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, data.runtimeValue, + 0, serie.serieName, data.name, data.name, Color.clear); + return content; + } + } + + public static Vector3 GetLabelPosition(MarkLineData data) + { + if (!data.label.show) return Vector3.zero; + var dir = (data.runtimeEndPosition - data.runtimeStartPosition).normalized; + var horizontal = Mathf.Abs(Vector3.Dot(dir, Vector3.right)) == 1; + var labelWidth = data.runtimeLabel == null ? 50 : data.runtimeLabel.GetTextWidth(); + var labelHeight = data.runtimeLabel == null ? 20 : data.runtimeLabel.GetTextHeight(); + switch (data.label.position) + { + case LabelStyle.Position.Start: + if (horizontal) return data.runtimeStartPosition + data.label.offset + labelWidth / 2 * Vector3.left; + else return data.runtimeStartPosition + data.label.offset + labelHeight / 2 * Vector3.down; + case LabelStyle.Position.Middle: + var center = (data.runtimeStartPosition + data.runtimeCurrentEndPosition) / 2; + if (horizontal) return center + data.label.offset + labelHeight / 2 * Vector3.up; + else return center + data.label.offset + labelWidth / 2 * Vector3.right; + default: + if (horizontal) return data.runtimeCurrentEndPosition + data.label.offset + labelWidth / 2 * Vector3.right; + else return data.runtimeCurrentEndPosition + data.label.offset + labelHeight / 2 * Vector3.up; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Mark/MarkLineHelper.cs.meta b/Assets/XCharts/Runtime/Component/Mark/MarkLineHelper.cs.meta new file mode 100644 index 0000000..e95ca4b --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Mark/MarkLineHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b472a7e4755b74fb6a3ec2c410650833 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Radar.meta b/Assets/XCharts/Runtime/Component/Radar.meta new file mode 100644 index 0000000..eae8071 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Radar.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5fb4a3817487149f680a509a5247105e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Radar/RadarCoord.cs b/Assets/XCharts/Runtime/Component/Radar/RadarCoord.cs new file mode 100644 index 0000000..8a2c6bb --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Radar/RadarCoord.cs @@ -0,0 +1,447 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// Radar coordinate conponnet for radar charts. + /// 雷达图坐标系组件,只适用于雷达图。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(RadarCoordHandler), true)] + [CoordOptions(typeof(RadarCoord))] + public class RadarCoord : CoordSystem, ISerieContainer + { + /// <summary> + /// Radar render type, in which 'Polygon' and 'Circle' are supported. + /// |雷达图绘制类型,支持 'Polygon' 和 'Circle'。 + /// </summary> + public enum Shape + { + Polygon, + Circle + } + /// <summary> + /// The position type of radar. + /// |显示位置。 + /// </summary> + public enum PositionType + { + /// <summary> + /// Display at the vertex. + /// |显示在顶点处。 + /// </summary> + Vertice, + /// <summary> + /// Display at the middle of line. + /// |显示在两者之间。 + /// </summary> + Between, + } + /// <summary> + /// Indicator of radar chart, which is used to assign multiple variables(dimensions) in radar chart. + /// |雷达图的指示器,用来指定雷达图中的多个变量(维度)。 + /// </summary> + [System.Serializable] + public class Indicator + { + [SerializeField] private string m_Name; + [SerializeField] private double m_Max; + [SerializeField] private double m_Min; + [SerializeField] private double[] m_Range = new double[2] { 0, 0 }; + + /// <summary> + /// The name of indicator. + /// |指示器名称。 + /// </summary> + public string name { get { return FormatterHelper.TrimAndReplaceLine(m_Name); } set { m_Name = value; } } + /// <summary> + /// The maximum value of indicator, with default value of 0, but we recommend to set it manually. + /// |指示器的最大值,默认为 0 无限制。 + /// </summary> + public double max { get { return m_Max; } set { m_Max = value; } } + /// <summary> + /// The minimum value of indicator, with default value of 0. + /// |指示器的最小值,默认为 0 无限制。 + /// </summary> + public double min { get { return m_Min; } set { m_Min = value; } } + /// <summary> + /// the text conponent of indicator. + /// |指示器的文本组件。 + /// </summary> + public Text text { get; set; } + /// <summary> + /// Normal range. When the value is outside this range, the display color is automatically changed. + /// |正常值范围。当数值不在这个范围时,会自动变更显示颜色。 + /// </summary> + public double[] range + { + get { return m_Range; } + set { if (value != null && value.Length == 2) { m_Range = value; } } + } + + public bool IsInRange(double value) + { + if (m_Range == null || m_Range.Length < 2) return true; + if (m_Range[0] != 0 || m_Range[1] != 0) + return value >= m_Range[0] && value <= m_Range[1]; + else + return true; + } + } + + [SerializeField] private bool m_Show; + [SerializeField] private Shape m_Shape; + [SerializeField] private float m_Radius = 100; + [SerializeField] private int m_SplitNumber = 5; + [SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.5f }; + [SerializeField] private AxisLine m_AxisLine = AxisLine.defaultAxisLine; + [SerializeField] private AxisName m_AxisName = AxisName.defaultAxisName; + [SerializeField] private AxisSplitLine m_SplitLine = AxisSplitLine.defaultSplitLine; + [SerializeField] private AxisSplitArea m_SplitArea = AxisSplitArea.defaultSplitArea; + [SerializeField] private bool m_Indicator = true; + [SerializeField] private PositionType m_PositionType = PositionType.Vertice; + [SerializeField] private float m_IndicatorGap = 10; + [SerializeField] private int m_CeilRate = 0; + [SerializeField] private bool m_IsAxisTooltip; + [SerializeField] private Color32 m_OutRangeColor = Color.red; + [SerializeField] private bool m_ConnectCenter = false; + [SerializeField] private bool m_LineGradient = true; + [SerializeField] private List<Indicator> m_IndicatorList = new List<Indicator>(); + + public RadarCoordContext context = new RadarCoordContext(); + + /// <summary> + /// [default:true] + /// Set this to false to prevent the radar from showing. + /// |是否显示雷达坐标系组件。 + /// </summary> + public bool show { get { return m_Show; } set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } } + /// <summary> + /// Radar render type, in which 'Polygon' and 'Circle' are supported. + /// |雷达图绘制类型,支持 'Polygon' 和 'Circle'。 + /// </summary> + /// <value></value> + public Shape shape + { + get { return m_Shape; } + set { if (PropertyUtil.SetStruct(ref m_Shape, value)) SetAllDirty(); } + } + /// <summary> + /// the radius of radar. + /// |雷达图的半径。 + /// </summary> + public float radius + { + get { return m_Radius; } + set { if (PropertyUtil.SetStruct(ref m_Radius, value)) SetAllDirty(); } + } + /// <summary> + /// Segments of indicator axis. + /// |指示器轴的分割段数。 + /// </summary> + public int splitNumber + { + get { return m_SplitNumber; } + set { if (PropertyUtil.SetStruct(ref m_SplitNumber, value)) SetAllDirty(); } + } + /// <summary> + /// the center of radar chart. + /// |雷达图的中心点。数组的第一项是横坐标,第二项是纵坐标。 + /// 当值为0-1之间时表示百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度。 + /// </summary> + public float[] center + { + get { return m_Center; } + set { if (value != null) { m_Center = value; SetAllDirty(); } } + } + /// <summary> + /// axis line. + /// |轴线。 + /// </summary> + public AxisLine axisLine + { + get { return m_AxisLine; } + set { if (PropertyUtil.SetClass(ref m_AxisLine, value, true)) SetAllDirty(); } + } + /// <summary> + /// Name options for radar indicators. + /// |雷达图每个指示器名称的配置项。 + /// </summary> + public AxisName axisName + { + get { return m_AxisName; } + set { if (PropertyUtil.SetClass(ref m_AxisName, value, true)) SetAllDirty(); } + } + /// <summary> + /// split line. + /// |分割线。 + /// </summary> + public AxisSplitLine splitLine + { + get { return m_SplitLine; } + set { if (PropertyUtil.SetClass(ref m_SplitLine, value, true)) SetAllDirty(); } + } + /// <summary> + /// Split area of axis in grid area. + /// |分割区域。 + /// </summary> + public AxisSplitArea splitArea + { + get { return m_SplitArea; } + set { if (PropertyUtil.SetClass(ref m_SplitArea, value, true)) SetAllDirty(); } + } + /// <summary> + /// Whether to show indicator. + /// |是否显示指示器。 + /// </summary> + public bool indicator + { + get { return m_Indicator; } + set { if (PropertyUtil.SetStruct(ref m_Indicator, value)) SetComponentDirty(); } + } + /// <summary> + /// The gap of indicator and radar. + /// |指示器和雷达的间距。 + /// </summary> + public float indicatorGap + { + get { return m_IndicatorGap; } + set { if (PropertyUtil.SetStruct(ref m_IndicatorGap, value)) SetComponentDirty(); } + } + /// <summary> + /// The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated. + /// |最大最小值向上取整的倍率。默认为0时自动计算。 + /// </summary> + public int ceilRate + { + get { return m_CeilRate; } + set { if (PropertyUtil.SetStruct(ref m_CeilRate, value < 0 ? 0 : value)) SetAllDirty(); } + } + /// <summary> + /// 是否Tooltip显示轴线上的所有数据。 + /// </summary> + public bool isAxisTooltip + { + get { return m_IsAxisTooltip; } + set { if (PropertyUtil.SetStruct(ref m_IsAxisTooltip, value)) SetAllDirty(); } + } + /// <summary> + /// The position type of indicator. + /// |显示位置类型。 + /// </summary> + public PositionType positionType + { + get { return m_PositionType; } + set { if (PropertyUtil.SetStruct(ref m_PositionType, value)) SetAllDirty(); } + } + /// <summary> + /// The color displayed when data out of range. + /// |数值超出范围时显示的颜色。 + /// </summary> + public Color32 outRangeColor + { + get { return m_OutRangeColor; } + set { if (PropertyUtil.SetStruct(ref m_OutRangeColor, value)) SetAllDirty(); } + } + /// <summary> + /// Whether serie data connect to radar center with line. + /// |数值是否连线到中心点。 + /// </summary> + public bool connectCenter + { + get { return m_ConnectCenter; } + set { if (PropertyUtil.SetStruct(ref m_ConnectCenter, value)) SetAllDirty(); } + } + /// <summary> + /// Whether need gradient for data line. + /// |数值线段是否需要渐变。 + /// </summary> + public bool lineGradient + { + get { return m_LineGradient; } + set { if (PropertyUtil.SetStruct(ref m_LineGradient, value)) SetAllDirty(); } + } + /// <summary> + /// the indicator list. + /// |指示器列表。 + /// </summary> + public List<Indicator> indicatorList { get { return m_IndicatorList; } } + + public bool IsPointerEnter() + { + return context.isPointerEnter; + } + + public override void SetDefaultValue() + { + m_Show = true; + m_Shape = Shape.Polygon; + m_Radius = 0.35f; + m_SplitNumber = 5; + m_Indicator = true; + m_IndicatorList = new List<Indicator>(5) + { + new Indicator() { name = "indicator1", max = 0 }, + new Indicator() { name = "indicator2", max = 0 }, + new Indicator() { name = "indicator3", max = 0 }, + new Indicator() { name = "indicator4", max = 0 }, + new Indicator() { name = "indicator5", max = 0 }, + }; + center[0] = 0.5f; + center[1] = 0.4f; + splitLine.show = true; + splitArea.show = true; + axisName.show = true; + axisName.name = null; + } + + private bool IsEqualsIndicatorList(List<Indicator> indicators1, List<Indicator> indicators2) + { + if (indicators1.Count != indicators2.Count) return false; + for (int i = 0; i < indicators1.Count; i++) + { + var indicator1 = indicators1[i]; + var indicator2 = indicators2[i]; + if (!indicator1.Equals(indicator2)) return false; + } + return true; + } + + public bool IsInIndicatorRange(int index, double value) + { + var indicator = GetIndicator(index); + return indicator == null ? true : indicator.IsInRange(value); + } + + public double GetIndicatorMin(int index) + { + if (index >= 0 && index < m_IndicatorList.Count) + { + return m_IndicatorList[index].min; + } + return 0; + } + public double GetIndicatorMax(int index) + { + if (index >= 0 && index < m_IndicatorList.Count) + { + return m_IndicatorList[index].max; + } + return 0; + } + + internal void UpdateRadarCenter(Vector3 chartPosition, float chartWidth, float chartHeight) + { + if (center.Length < 2) return; + var centerX = center[0] <= 1 ? chartWidth * center[0] : center[0]; + var centerY = center[1] <= 1 ? chartHeight * center[1] : center[1]; + context.center = chartPosition + new Vector3(centerX, centerY); + if (radius <= 0) + { + context.radius = 0; + } + else if (radius <= 1) + { + context.radius = Mathf.Min(chartWidth, chartHeight) * radius; + } + else + { + context.radius = radius; + } + if (shape == RadarCoord.Shape.Polygon && positionType == PositionType.Between) + { + var angle = Mathf.PI / indicatorList.Count; + context.dataRadius = context.radius * Mathf.Cos(angle); + } + else + { + context.dataRadius = context.radius; + } + } + + public Vector3 GetIndicatorPosition(int index) + { + int indicatorNum = indicatorList.Count; + var angle = 0f; + switch (positionType) + { + case PositionType.Vertice: + angle = 2 * Mathf.PI / indicatorNum * index; + break; + case PositionType.Between: + angle = 2 * Mathf.PI / indicatorNum * (index + 0.5f); + break; + } + var x = context.center.x + (context.radius + indicatorGap) * Mathf.Sin(angle); + var y = context.center.y + (context.radius + indicatorGap) * Mathf.Cos(angle); + return new Vector3(x, y); + } + + public void AddIndicator(RadarCoord.Indicator indicator) + { + indicatorList.Add(indicator); + SetAllDirty(); + } + + public RadarCoord.Indicator AddIndicator(string name, float min, float max) + { + var indicator = new RadarCoord.Indicator(); + indicator.name = name; + indicator.min = min; + indicator.max = max; + indicatorList.Add(indicator); + SetAllDirty(); + return indicator; + } + + public bool UpdateIndicator(int indicatorIndex, string name, float min, float max) + { + var indicator = GetIndicator(indicatorIndex); + if (indicator == null) return false; + indicator.name = name; + indicator.min = min; + indicator.max = max; + SetAllDirty(); + return true; + } + + public RadarCoord.Indicator GetIndicator(int indicatorIndex) + { + if (indicatorIndex < 0 || indicatorIndex > indicatorList.Count - 1) return null; + return indicatorList[indicatorIndex]; + } + + public override void ClearData() + { + indicatorList.Clear(); + } + + public string GetFormatterIndicatorContent(int indicatorIndex) + { + var indicator = GetIndicator(indicatorIndex); + if (indicator == null) + return string.Empty; + else + return GetFormatterIndicatorContent(indicator.name); + } + + public string GetFormatterIndicatorContent(string indicatorName) + { + if (string.IsNullOrEmpty(indicatorName)) + return indicatorName; + + if (string.IsNullOrEmpty(m_AxisName.labelStyle.formatter)) + { + return indicatorName; + } + else + { + var content = m_AxisName.labelStyle.formatter; + FormatterHelper.ReplaceAxisLabelContent(ref content, indicatorName); + return content; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Radar/RadarCoord.cs.meta b/Assets/XCharts/Runtime/Component/Radar/RadarCoord.cs.meta new file mode 100644 index 0000000..6d3d5aa --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Radar/RadarCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 876512c564bd144be99d0acbe079cf8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Radar/RadarCoordContext.cs b/Assets/XCharts/Runtime/Component/Radar/RadarCoordContext.cs new file mode 100644 index 0000000..dc45f60 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Radar/RadarCoordContext.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public class RadarCoordContext : MainComponentContext + { + /// <summary> + /// the center position of radar in container. + /// |雷达图在容器中的具体中心点。 + /// </summary> + public Vector3 center { get; internal set; } + /// <summary> + /// the true radius of radar. + /// |雷达图的运行时实际半径。 + /// </summary> + public float radius { get; internal set; } + public float dataRadius { get; internal set; } + public bool isPointerEnter { get; set; } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Radar/RadarCoordContext.cs.meta b/Assets/XCharts/Runtime/Component/Radar/RadarCoordContext.cs.meta new file mode 100644 index 0000000..147702f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Radar/RadarCoordContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f7419e8466e048cb9689ab85d20e4de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Radar/RadarCoordHandler.cs b/Assets/XCharts/Runtime/Component/Radar/RadarCoordHandler.cs new file mode 100644 index 0000000..4c72ccb --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Radar/RadarCoordHandler.cs @@ -0,0 +1,170 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class RadarCoordHandler : MainComponentHandler<RadarCoord> + { + private const string INDICATOR_TEXT = "indicator"; + + public override void InitComponent() + { + InitRadarCoord(component); + } + + public override void Update() + { + if (!chart.isPointerInChart) + { + component.context.isPointerEnter = false; + return; + } + var radar = component; + radar.context.isPointerEnter = radar.show && + Vector3.Distance(radar.context.center, chart.pointerPos) <= radar.context.radius; + } + + public override void DrawBase(VertexHelper vh) + { + DrawRadarCoord(vh, component); + } + + private void InitRadarCoord(RadarCoord radar) + { + float txtHig = 20; + radar.painter = chart.GetPainter(radar.index); + radar.refreshComponent = delegate() + { + radar.UpdateRadarCenter(chart.chartPosition, chart.chartWidth, chart.chartHeight); + var radarObject = ChartHelper.AddObject("Radar" + radar.index, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + radar.gameObject = radarObject; + radar.gameObject.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(radarObject.transform, INDICATOR_TEXT); + for (int i = 0; i < radar.indicatorList.Count; i++) + { + var indicator = radar.indicatorList[i]; + var pos = radar.GetIndicatorPosition(i); + var objName = INDICATOR_TEXT + "_" + i; + + var label = ChartHelper.AddChartLabel(objName, radarObject.transform, radar.axisName.labelStyle, + chart.theme.common, radar.GetFormatterIndicatorContent(i), Color.clear, TextAnchor.MiddleCenter); + label.SetActive(radar.indicator && radar.axisName.labelStyle.show); + AxisHelper.AdjustCircleLabelPos(label, pos, radar.context.center, txtHig, radar.axisName.labelStyle.offset); + } + chart.RefreshBasePainter(); + }; + radar.refreshComponent.Invoke(); + } + + private void DrawRadarCoord(VertexHelper vh, RadarCoord radar) + { + if (!radar.show) return; + radar.UpdateRadarCenter(chart.chartPosition, chart.chartWidth, chart.chartHeight); + if (radar.shape == RadarCoord.Shape.Circle) + { + DrawCricleRadar(vh, radar); + } + else + { + DrawPolygonRadar(vh, radar); + } + } + + private void DrawCricleRadar(VertexHelper vh, RadarCoord radar) + { + float insideRadius = 0, outsideRadius = 0; + float block = radar.context.radius / radar.splitNumber; + int indicatorNum = radar.indicatorList.Count; + Vector3 p = radar.context.center; + Vector3 p1; + float angle = 2 * Mathf.PI / indicatorNum; + var lineColor = radar.axisLine.GetColor(chart.theme.axis.splitLineColor); + var lineWidth = radar.axisLine.GetWidth(chart.theme.axis.lineWidth); + var lineType = radar.axisLine.GetType(chart.theme.axis.lineType); + var splitLineColor = radar.splitLine.GetColor(chart.theme.axis.splitLineColor); + var splitLineWidth = radar.splitLine.GetWidth(chart.theme.axis.splitLineWidth); + for (int i = 0; i < radar.splitNumber; i++) + { + var color = radar.splitArea.GetColor(i, chart.theme.axis); + outsideRadius = insideRadius + block; + if (radar.splitArea.show) + { + UGL.DrawDoughnut(vh, p, insideRadius, outsideRadius, color, Color.clear, + 0, 360, chart.settings.cicleSmoothness); + } + if (radar.splitLine.show) + { + UGL.DrawEmptyCricle(vh, p, outsideRadius, splitLineWidth, splitLineColor, + Color.clear, chart.settings.cicleSmoothness); + } + insideRadius = outsideRadius; + } + if (radar.axisLine.show) + { + for (int j = 0; j <= indicatorNum; j++) + { + float currAngle = j * angle; + p1 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle), + p.y + outsideRadius * Mathf.Cos(currAngle)); + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, p, p1, lineColor); + } + } + } + + private void DrawPolygonRadar(VertexHelper vh, RadarCoord radar) + { + float insideRadius = 0, outsideRadius = 0; + float block = radar.context.radius / radar.splitNumber; + int indicatorNum = radar.indicatorList.Count; + Vector3 p1, p2, p3, p4; + Vector3 p = radar.context.center; + float angle = 2 * Mathf.PI / indicatorNum; + var lineColor = radar.axisLine.GetColor(chart.theme.axis.splitLineColor); + var lineWidth = radar.axisLine.GetWidth(chart.theme.axis.lineWidth); + var lineType = radar.axisLine.GetType(chart.theme.axis.lineType); + var splitLineColor = radar.splitLine.GetColor(chart.theme.axis.splitLineColor); + var splitLineWidth = radar.splitLine.GetWidth(chart.theme.axis.splitLineWidth); + var splitLineType = radar.splitLine.GetType(chart.theme.axis.splitLineType); + for (int i = 0; i < radar.splitNumber; i++) + { + var color = radar.splitArea.GetColor(i, chart.theme.axis); + outsideRadius = insideRadius + block; + p1 = new Vector3(p.x + insideRadius * Mathf.Sin(0), p.y + insideRadius * Mathf.Cos(0)); + p2 = new Vector3(p.x + outsideRadius * Mathf.Sin(0), p.y + outsideRadius * Mathf.Cos(0)); + for (int j = 0; j <= indicatorNum; j++) + { + float currAngle = j * angle; + p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle), + p.y + outsideRadius * Mathf.Cos(currAngle)); + p4 = new Vector3(p.x + insideRadius * Mathf.Sin(currAngle), + p.y + insideRadius * Mathf.Cos(currAngle)); + if (radar.splitArea.show) + { + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, color); + } + if (radar.splitLine.NeedShow(i)) + { + ChartDrawer.DrawLineStyle(vh, splitLineType, splitLineWidth, p2, p3, splitLineColor); + } + p1 = p4; + p2 = p3; + } + insideRadius = outsideRadius; + } + if (radar.axisLine.show) + { + for (int j = 0; j <= indicatorNum; j++) + { + float currAngle = j * angle; + p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle), + p.y + outsideRadius * Mathf.Cos(currAngle)); + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, p, p3, lineColor); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Radar/RadarCoordHandler.cs.meta b/Assets/XCharts/Runtime/Component/Radar/RadarCoordHandler.cs.meta new file mode 100644 index 0000000..1c042d0 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Radar/RadarCoordHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27622e3c95fec42daafff901970daf8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Settings.meta b/Assets/XCharts/Runtime/Component/Settings.meta new file mode 100644 index 0000000..d09a812 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 592a52c7f32a046c689bd54aae7eff59 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Settings/Settings.cs b/Assets/XCharts/Runtime/Component/Settings/Settings.cs new file mode 100644 index 0000000..4d8bc80 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Settings/Settings.cs @@ -0,0 +1,169 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Global parameter setting component. The default value can be used in general, and can be adjusted when necessary. + /// |全局参数设置组件。一般情况下可使用默认值,当有需要时可进行调整。 + /// </summary> + [Serializable] + public class Settings : MainComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField][Range(1, 20)] protected int m_MaxPainter = 10; + [SerializeField] protected bool m_ReversePainter = false; + [SerializeField] protected Material m_BasePainterMaterial; + [SerializeField] protected Material m_SeriePainterMaterial; + [SerializeField] protected Material m_TopPainterMaterial; + [SerializeField][Range(1, 10)] protected float m_LineSmoothStyle = 3f; + [SerializeField][Range(1f, 20)] protected float m_LineSmoothness = 2f; + [SerializeField][Range(0.5f, 20)] protected float m_LineSegmentDistance = 3f; + [SerializeField][Range(1, 10)] protected float m_CicleSmoothness = 2f; + [SerializeField] protected float m_LegendIconLineWidth = 2; + [SerializeField] private float[] m_LegendIconCornerRadius = new float[] { 0.25f, 0.25f, 0.25f, 0.25f }; + + public bool show { get { return m_Show; } } + /// <summary> + /// max painter. + /// |设定的painter数量。 + /// </summary> + public int maxPainter + { + get { return m_MaxPainter; } + set { if (PropertyUtil.SetStruct(ref m_MaxPainter, value < 0 ? 1 : value)) SetVerticesDirty(); } + } + /// <summary> + /// Painter是否逆序。逆序时index大的serie最先绘制。 + /// </summary> + public bool reversePainter + { + get { return m_ReversePainter; } + set { if (PropertyUtil.SetStruct(ref m_ReversePainter, value)) SetVerticesDirty(); } + } + /// <summary> + /// Base Pointer 材质球,设置后会影响Axis等。 + /// </summary> + public Material basePainterMaterial + { + get { return m_BasePainterMaterial; } + set { if (PropertyUtil.SetClass(ref m_BasePainterMaterial, value)) SetComponentDirty(); } + } + /// <summary> + /// Serie Pointer 材质球,设置后会影响所有Serie。 + /// </summary> + public Material seriePainterMaterial + { + get { return m_SeriePainterMaterial; } + set { if (PropertyUtil.SetClass(ref m_SeriePainterMaterial, value)) SetComponentDirty(); } + } + /// <summary> + /// Top Pointer 材质球,设置后会影响Tooltip等。 + /// </summary> + public Material topPainterMaterial + { + get { return m_TopPainterMaterial; } + set { if (PropertyUtil.SetClass(ref m_TopPainterMaterial, value)) SetComponentDirty(); } + } + /// <summary> + /// Curve smoothing factor. By adjusting the smoothing coefficient, the curvature of the curve can be changed, + /// and different curves with slightly different appearance can be obtained. + /// |曲线平滑系数。通过调整平滑系数可以改变曲线的曲率,得到外观稍微有变化的不同曲线。 + /// </summary> + public float lineSmoothStyle + { + get { return m_LineSmoothStyle; } + set { if (PropertyUtil.SetStruct(ref m_LineSmoothStyle, value < 0 ? 1f : value)) SetVerticesDirty(); } + } + /// <summary> + /// Smoothness of curve. The smaller the value, the smoother the curve, but the number of vertices will increase. + /// |When the area with gradient is filled, the larger the value, the worse the transition effect. + /// |曲线平滑度。值越小曲线越平滑,但顶点数也会随之增加。当开启有渐变的区域填充时,数值越大渐变过渡效果越差。 + /// </summary> + /// <value></value> + public float lineSmoothness + { + get { return m_LineSmoothness; } + set { if (PropertyUtil.SetStruct(ref m_LineSmoothStyle, value < 0 ? 1f : value)) SetVerticesDirty(); } + } + /// <summary> + /// The partition distance of a line segment. A line in a normal line chart is made up of many segments, + /// the number of which is determined by the change in value. The smaller the number of segments, + /// the higher the number of vertices. When the area with gradient is filled, the larger the value, the worse the transition effect. + /// |线段的分割距离。普通折线图的线是由很多线段组成,段数由该数值决定。值越小段数越多,但顶点数也会随之增加。当开启有渐变的区域填充时,数值越大渐变过渡效果越差。 + /// </summary> + /// <value></value> + public float lineSegmentDistance + { + get { return m_LineSegmentDistance; } + set { if (PropertyUtil.SetStruct(ref m_LineSegmentDistance, value < 0 ? 1f : value)) SetVerticesDirty(); } + } + /// <summary> + /// the smoothess of cricle. + /// |圆形的平滑度。数越小圆越平滑,但顶点数也会随之增加。 + /// </summary> + public float cicleSmoothness + { + get { return m_CicleSmoothness; } + set { if (PropertyUtil.SetStruct(ref m_CicleSmoothness, value < 0 ? 1f : value)) SetVerticesDirty(); } + } + + /// <summary> + /// the width of line serie legend. + /// |Line类型图例图标的线条宽度。 + /// </summary> + public float legendIconLineWidth + { + get { return m_LegendIconLineWidth; } + set { if (PropertyUtil.SetStruct(ref m_LegendIconLineWidth, value)) SetVerticesDirty(); } + } + + /// <summary> + /// The radius of rounded corner. Its unit is px. Use array to respectively specify the 4 corner radiuses((clockwise upper left, upper right, bottom right and bottom left)). + /// |图例圆角半径。用数组分别指定4个圆角半径(顺时针左上,右上,右下,左下)。 + /// </summary> + public float[] legendIconCornerRadius + { + get { return m_LegendIconCornerRadius; } + set { if (PropertyUtil.SetClass(ref m_LegendIconCornerRadius, value, true)) SetVerticesDirty(); } + } + + public void Copy(Settings settings) + { + m_ReversePainter = settings.reversePainter; + m_MaxPainter = settings.maxPainter; + m_BasePainterMaterial = settings.basePainterMaterial; + m_SeriePainterMaterial = settings.seriePainterMaterial; + m_TopPainterMaterial = settings.topPainterMaterial; + m_LineSmoothStyle = settings.lineSmoothStyle; + m_LineSmoothness = settings.lineSmoothness; + m_LineSegmentDistance = settings.lineSegmentDistance; + m_CicleSmoothness = settings.cicleSmoothness; + m_LegendIconLineWidth = settings.legendIconLineWidth; + ChartHelper.CopyArray(m_LegendIconCornerRadius, settings.legendIconCornerRadius); + } + + public override void Reset() + { + Copy(DefaultSettings); + } + + public static Settings DefaultSettings + { + get + { + return new Settings() + { + m_ReversePainter = false, + m_MaxPainter = XCSettings.maxPainter, + m_LineSmoothStyle = XCSettings.lineSmoothStyle, + m_LineSmoothness = XCSettings.lineSmoothness, + m_LineSegmentDistance = XCSettings.lineSegmentDistance, + m_CicleSmoothness = XCSettings.cicleSmoothness, + m_LegendIconLineWidth = 2, + m_LegendIconCornerRadius = new float[] { 0.25f, 0.25f, 0.25f, 0.25f } + }; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Settings/Settings.cs.meta b/Assets/XCharts/Runtime/Component/Settings/Settings.cs.meta new file mode 100644 index 0000000..b064a39 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Settings/Settings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e57c4afa48c2455b8a91b20eca25321 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Title.meta b/Assets/XCharts/Runtime/Component/Title.meta new file mode 100644 index 0000000..71e29ea --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Title.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cea6be3fa2a9e4ae6be4b3fd882f7352 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Title/Title.cs b/Assets/XCharts/Runtime/Component/Title/Title.cs new file mode 100644 index 0000000..ac4ca74 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Title/Title.cs @@ -0,0 +1,105 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Title component, including main title and subtitle. + /// |标题组件,包含主标题和副标题。 + /// </summary> + [Serializable] + [ComponentHandler(typeof(TitleHander), true)] + public class Title : MainComponent, IPropertyChanged + { + [SerializeField] private bool m_Show = true; + [SerializeField] private string m_Text = "Chart Title"; + [SerializeField] private string m_SubText = ""; + [SerializeField] private LabelStyle m_LabelStyle = new LabelStyle(); + [SerializeField] private LabelStyle m_SubLabelStyle = new LabelStyle(); + [SerializeField] private float m_ItemGap = 0; + [SerializeField] private Location m_Location = Location.defaultTop; + + /// <summary> + /// [default:true] + /// Set this to false to prevent the title from showing. + /// |是否显示标题组件。 + /// </summary> + public bool show { get { return m_Show; } set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } } + /// <summary> + /// The main title text, supporting \n for newlines. + /// |主标题文本,支持使用 \n 换行。 + /// </summary> + public string text { get { return m_Text; } set { if (PropertyUtil.SetClass(ref m_Text, value)) SetComponentDirty(); } } + /// <summary> + /// The text style of main title. + /// |主标题文本样式。 + /// </summary> + public LabelStyle labelStyle + { + get { return m_LabelStyle; } + set { if (PropertyUtil.SetClass(ref m_LabelStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// Subtitle text, supporting for \n for newlines. + /// |副标题文本,支持使用 \n 换行。 + /// </summary> + public string subText + { + get { return m_SubText; } + set { if (PropertyUtil.SetClass(ref m_SubText, value)) SetComponentDirty(); } + } + /// <summary> + /// The text style of sub title. + /// |副标题文本样式。 + /// </summary> + public LabelStyle subLabelStyle + { + get { return m_SubLabelStyle; } + set { if (PropertyUtil.SetClass(ref m_SubLabelStyle, value)) SetComponentDirty(); } + } + /// <summary> + /// [default:8] + /// The gap between the main title and subtitle. + /// |主副标题之间的间距。 + /// </summary> + public float itemGap + { + get { return m_ItemGap; } + set { if (PropertyUtil.SetStruct(ref m_ItemGap, value)) SetComponentDirty(); } + } + /// <summary> + /// The location of title component. + /// |标题显示位置。 + /// </summary> + public Location location + { + get { return m_Location; } + set { if (PropertyUtil.SetClass(ref m_Location, value)) SetComponentDirty(); } + } + + public override bool vertsDirty { get { return false; } } + public override bool componentDirty + { + get + { + return m_ComponentDirty || + location.componentDirty || + m_LabelStyle.componentDirty || + m_SubLabelStyle.componentDirty; + } + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + location.ClearComponentDirty(); + m_LabelStyle.ClearComponentDirty(); + m_SubLabelStyle.ClearComponentDirty(); + } + + public void OnChanged() + { + m_Location.OnChanged(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Title/Title.cs.meta b/Assets/XCharts/Runtime/Component/Title/Title.cs.meta new file mode 100644 index 0000000..1d57b56 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Title/Title.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c4f5a39710624b94a3d015eb552f53a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Title/TitleHandler.cs b/Assets/XCharts/Runtime/Component/Title/TitleHandler.cs new file mode 100644 index 0000000..63e3294 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Title/TitleHandler.cs @@ -0,0 +1,88 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class TitleHander : MainComponentHandler<Title> + { + private static readonly string s_TitleObjectName = "title"; + private static readonly string s_SubTitleObjectName = "title_sub"; + private ChartLabel m_LabelObject; + private ChartLabel m_SubLabelObject; + + public override void InitComponent() + { + var title = component; + title.painter = null; + title.refreshComponent = delegate() + { + title.OnChanged(); + var anchorMin = title.location.runtimeAnchorMin; + var anchorMax = title.location.runtimeAnchorMax; + var pivot = title.location.runtimePivot; + var objName = ChartCached.GetComponentObjectName(title); + var titleObject = ChartHelper.AddObject(objName, chart.transform, anchorMin, anchorMax, + pivot, chart.chartSizeDelta); + title.gameObject = titleObject; + title.gameObject.transform.SetSiblingIndex(chart.m_PainterTop.transform.GetSiblingIndex() + 1); + anchorMin = title.location.runtimeAnchorMin; + anchorMax = title.location.runtimeAnchorMax; + pivot = title.location.runtimePivot; + var fontSize = title.labelStyle.textStyle.GetFontSize(chart.theme.title); + ChartHelper.UpdateRectTransform(titleObject, anchorMin, anchorMax, pivot, new Vector2(chart.chartWidth, chart.chartHeight)); + var titlePosition = chart.GetTitlePosition(title); + var subTitlePosition = -new Vector3(0, fontSize + title.itemGap, 0); + + titleObject.transform.localPosition = titlePosition; + titleObject.hideFlags = chart.chartHideFlags; + ChartHelper.HideAllObject(titleObject); + + m_LabelObject = ChartHelper.AddChartLabel(s_TitleObjectName, titleObject.transform, title.labelStyle, chart.theme.title, + GetTitleText(title), Color.clear, title.location.runtimeTextAlignment); + m_LabelObject.SetActive(title.show && title.labelStyle.show); + + m_SubLabelObject = ChartHelper.AddChartLabel(s_SubTitleObjectName, titleObject.transform, title.subLabelStyle, chart.theme.subTitle, + GetSubTitleText(title), Color.clear, title.location.runtimeTextAlignment); + m_SubLabelObject.SetActive(title.show && title.subLabelStyle.show); + m_SubLabelObject.transform.localPosition = subTitlePosition + title.subLabelStyle.offset; + }; + title.refreshComponent(); + } + + public override void OnSerieDataUpdate(int serieIndex) + { + if (m_LabelObject != null && FormatterHelper.NeedFormat(component.text)) + m_LabelObject.SetText(GetTitleText(component)); + if (m_SubLabelObject != null && FormatterHelper.NeedFormat(component.subText)) + m_SubLabelObject.SetText(GetSubTitleText(component)); + } + + private string GetTitleText(Title title) + { + if (FormatterHelper.NeedFormat(title.text)) + { + var content = title.text; + FormatterHelper.ReplaceContent(ref content, 0, title.labelStyle.numericFormatter, null, chart); + return content; + } + else + { + return title.text; + } + } + + private string GetSubTitleText(Title title) + { + if (FormatterHelper.NeedFormat(title.subText)) + { + var content = title.subText; + FormatterHelper.ReplaceContent(ref content, 0, title.subLabelStyle.numericFormatter, null, chart); + return content; + } + else + { + return title.subText; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Title/TitleHandler.cs.meta b/Assets/XCharts/Runtime/Component/Title/TitleHandler.cs.meta new file mode 100644 index 0000000..bc42e0d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Title/TitleHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbe3062b7770040e6b4a98026f0ad044 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Title/TitleStyle.cs b/Assets/XCharts/Runtime/Component/Title/TitleStyle.cs new file mode 100644 index 0000000..2befc2d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Title/TitleStyle.cs @@ -0,0 +1,15 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// the title of serie. + /// |标题相关设置。 + /// </summary> + [Serializable] + public class TitleStyle : LabelStyle, ISerieDataComponent, ISerieExtraComponent + { + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Title/TitleStyle.cs.meta b/Assets/XCharts/Runtime/Component/Title/TitleStyle.cs.meta new file mode 100644 index 0000000..1a44da0 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Title/TitleStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd97375f7d84f4fd18dab048c465cdd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Tooltip.meta b/Assets/XCharts/Runtime/Component/Tooltip.meta new file mode 100644 index 0000000..7161b85 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17e248f354e9b4e3fa75170f7919e297 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Tooltip/Tooltip.cs b/Assets/XCharts/Runtime/Component/Tooltip/Tooltip.cs new file mode 100644 index 0000000..8e13e31 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/Tooltip.cs @@ -0,0 +1,549 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + /// <summary> + /// Tooltip component. + /// |提示框组件。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(TooltipHandler), true)] + public class Tooltip : MainComponent + { + /// <summary> + /// Indicator type. + /// |指示器类型。 + /// </summary> + public enum Type + { + /// <summary> + /// line indicator. + /// |直线指示器 + /// </summary> + Line, + /// <summary> + /// shadow crosshair indicator. + /// |阴影指示器 + /// </summary> + Shadow, + /// <summary> + /// no indicator displayed. + /// |无指示器 + /// </summary> + None, + /// <summary> + /// crosshair indicator, which is actually the shortcut of enable two axisPointers of two orthometric axes. + /// |十字准星指示器。坐标轴显示Label和交叉线。 + /// </summary> + Corss + } + + public enum Trigger + { + /// <summary> + /// Triggered by data item, which is mainly used for charts that don't have a category axis like scatter charts or pie charts. + /// |数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。 + /// </summary> + Item, + /// <summary> + /// Triggered by axes, which is mainly used for charts that have category axes, like bar charts or line charts. + /// |坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。 + /// </summary> + Axis, + /// <summary> + /// Trigger nothing. + /// |什么都不触发。 + /// </summary> + None + } + + [SerializeField] private bool m_Show = true; + [SerializeField] private Type m_Type; + [SerializeField] private Trigger m_Trigger = Trigger.Item; + [SerializeField] private string m_ItemFormatter; + [SerializeField] private string m_TitleFormatter; + [SerializeField] private string m_Marker = "●"; + [SerializeField] private float m_FixedWidth = 0; + [SerializeField] private float m_FixedHeight = 0; + [SerializeField] private float m_MinWidth = 0; + [SerializeField] private float m_MinHeight = 0; + [SerializeField] private string m_NumericFormatter = ""; + [SerializeField] private int m_PaddingLeftRight = 10; + [SerializeField] private int m_PaddingTopBottom = 10; + [SerializeField] private bool m_IgnoreDataShow = false; + [SerializeField] private string m_IgnoreDataDefaultContent = "-"; + [SerializeField] private bool m_ShowContent = true; + [SerializeField] private bool m_AlwayShowContent = false; + [SerializeField] private Vector2 m_Offset = new Vector2(18f, -25f); + [SerializeField] private Sprite m_BackgroundImage; + [SerializeField] private Image.Type m_BackgroundType = Image.Type.Simple; + [SerializeField] private Color m_BackgroundColor; + [SerializeField] private float m_BorderWidth = 2f; + [SerializeField] private bool m_FixedXEnable = false; + [SerializeField] private float m_FixedX = 0f; + [SerializeField] private bool m_FixedYEnable = false; + [SerializeField] private float m_FixedY = 0f; + [SerializeField] private float m_TitleHeight = 25f; + [SerializeField] private float m_ItemHeight = 25f; + [SerializeField] private Color32 m_BorderColor = new Color32(230, 230, 230, 255); + [SerializeField] private LineStyle m_LineStyle = new LineStyle(LineStyle.Type.None); + [SerializeField] private LabelStyle m_IndicatorLabelStyle = new LabelStyle(); + [SerializeField] + private LabelStyle m_TitleLabelStyle = new LabelStyle() + { + textStyle = new TextStyle() { alignment = TextAnchor.MiddleLeft } + }; + [SerializeField] + private List<LabelStyle> m_ContentLabelStyles = new List<LabelStyle>() + { + new LabelStyle() { textPadding = new TextPadding(0, 5, 0, 0), textStyle = new TextStyle() { alignment = TextAnchor.MiddleLeft } }, + new LabelStyle() { textPadding = new TextPadding(0, 20, 0, 0), textStyle = new TextStyle() { alignment = TextAnchor.MiddleLeft } }, + new LabelStyle() { textPadding = new TextPadding(0, 0, 0, 0), textStyle = new TextStyle() { alignment = TextAnchor.MiddleRight } } + }; + + public TooltipContext context = new TooltipContext(); + public TooltipView view; + + /// <summary> + /// Whether to show the tooltip component. + /// |是否显示提示框组件。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) { SetAllDirty(); SetActive(value); } } + } + /// <summary> + /// Indicator type. + /// |提示框指示器类型。 + /// </summary> + public Type type + { + get { return m_Type; } + set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetAllDirty(); } + } + /// <summary> + /// Type of triggering. + /// |触发类型。 + /// </summary> + public Trigger trigger + { + get { return m_Trigger; } + set { if (PropertyUtil.SetStruct(ref m_Trigger, value)) SetAllDirty(); } + } + /// <summary> + /// The string template formatter for the tooltip title content. Support for wrapping lines with \n. + /// The placeholder {I} can be set separately to indicate that the title is ignored and not displayed. + /// Template see itemFormatter. + /// |提示框标题内容的字符串模版格式器。支持用 \n 换行。可以单独设置占位符{i}表示忽略不显示title。 + /// 模板变量参考Toolip的itemFormatter。 + /// </summary> + public string titleFormatter { get { return m_TitleFormatter; } set { m_TitleFormatter = value; } } + /// <summary> + /// a string template formatter for a single Serie or data item content. Support for wrapping lines with \n. + /// Template variables are {.}, {a}, {b}, {c}, {d}.</br> + /// {.} is the dot of the corresponding color of a Serie that is currently indicated or whose index is 0.</br> + /// {a} is the series name of the serie that is currently indicated or whose index is 0.</br> + /// {b} is the name of the data item serieData that is currently indicated or whose index is 0, or a category value (such as the X-axis of a line chart).</br> + /// {c} is the value of a Y-dimension (dimesion is 1) from a Serie that is currently indicated or whose index is 0.</br> + /// {d} is the percentage value of Y-dimensions (dimesion is 1) from serie that is currently indicated or whose index is 0, with no % sign.</br> + /// {e} is the name of the data item serieData that is currently indicated or whose index is 0.</br> + /// {f} is sum of data.</br> + /// {.1} represents a dot from serie corresponding color that specifies index as 1.</br> + /// 1 in {a1}, {b1}, {c1} represents a serie that specifies an index of 1.</br> + /// {c1:2} represents the third data from serie's current indication data item indexed to 1 (a data item has multiple data, index 2 represents the third data).</br> + /// {c1:2-2} represents the third data item from serie's third data item indexed to 1 (i.e., which data item must be specified to specify).</br> + /// {d1:2: F2} indicates that a formatted string with a value specified separately is F2 (numericFormatter is used when numericFormatter is not specified).</br> + /// {d:0.##} indicates that a formatted string with a value specified separately is 0.## (used for percentage, reserved 2 valid digits while avoiding the situation similar to "100.00%" when using f2 ).</br> + /// Example: "{a}, {c}", "{a1}, {c1: f1}", "{a1}, {c1:0: f1}", "{a1} : {c1:1-1: f1}"</br> + /// |提示框单个serie或数据项内容的字符串模版格式器。支持用 \n 换行。 + /// 模板变量有{.}、{a}、{b}、{c}、{d}、{e}。</br> + /// {.}为当前所指示或index为0的serie的对应颜色的圆点。</br> + /// {a}为当前所指示或index为0的serie的系列名name。</br> + /// {b}为当前所指示或index为0的serie的数据项serieData的name,或者类目值(如折线图的X轴)。</br> + /// {c}为当前所指示或index为0的serie的y维(dimesion为1)的数值。</br> + /// {d}为当前所指示或index为0的serie的y维(dimesion为1)百分比值,注意不带%号。</br> + /// {e}为当前所指示或index为0的serie的数据项serieData的name。</br> + /// {f}为数据总和。</br> + /// {.1}表示指定index为1的serie对应颜色的圆点。</br> + /// {a1}、{b1}、{c1}中的1表示指定index为1的serie。</br> + /// {c1:2}表示索引为1的serie的当前指示数据项的第3个数据(一个数据项有多个数据,index为2表示第3个数据)。</br> + /// {c1:2-2}表示索引为1的serie的第3个数据项的第3个数据(也就是要指定第几个数据项时必须要指定第几个数据)。</br> + /// {d1:2:f2}表示单独指定了数值的格式化字符串为f2(不指定时用numericFormatter)。</br> + /// {d:0.##} 表示单独指定了数值的格式化字符串为 0.## (用于百分比,保留2位有效数同时又能避免使用 f2 而出现的类似于"100.00%"的情况 )。</br> + /// 示例:"{a}:{c}"、"{a1}:{c1:f1}"、"{a1}:{c1:0:f1}"、"{a1}:{c1:1-1:f1}" + /// </summary> + public string itemFormatter { get { return m_ItemFormatter; } set { m_ItemFormatter = value; } } + /// <summary> + /// the marker of serie. + /// |serie的符号标志。 + /// </summary> + public string marker { get { return m_Marker; } set { m_Marker = value; } } + /// <summary> + /// Fixed width. Higher priority than minWidth. + /// |固定宽度。比 minWidth 优先。 + /// </summary> + public float fixedWidth { get { return m_FixedWidth; } set { m_FixedWidth = value; } } + /// <summary> + /// Fixed height. Higher priority than minHeight. + /// |固定高度。比 minHeight 优先。 + /// </summary> + public float fixedHeight { get { return m_FixedHeight; } set { m_FixedHeight = value; } } + /// <summary> + /// Minimum width. If fixedWidth has a value, get fixedWidth first. + /// |最小宽度。如若 fixedWidth 设有值,优先取 fixedWidth。 + /// </summary> + public float minWidth { get { return m_MinWidth; } set { m_MinWidth = value; } } + /// <summary> + /// Minimum height. If fixedHeight has a value, take priority over fixedHeight. + /// |最小高度。如若 fixedHeight 设有值,优先取 fixedHeight。 + /// </summary> + public float minHeight { get { return m_MinHeight; } set { m_MinHeight = value; } } + /// <summary> + /// Standard numeric format string. Used to format numeric values to display as strings. + /// Using 'Axx' form: 'A' is the single character of the format specifier, supporting 'C' currency, + /// 'D' decimal, 'E' exponent, 'F' number of vertices, 'G' regular, 'N' digits, 'P' percentage, + /// 'R' round tripping, 'X' hex etc. 'XX' is the precision specification, from '0' - '99'. + /// |标准数字格式字符串。用于将数值格式化显示为字符串。 + /// 使用Axx的形式:A是格式说明符的单字符,支持C货币、D十进制、E指数、F定点数、G常规、N数字、P百分比、R往返、X十六进制的。xx是精度说明,从0-99。 + /// 参考:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings + /// </summary> + /// <value></value> + public string numericFormatter + { + get { return m_NumericFormatter; } + set { if (PropertyUtil.SetClass(ref m_NumericFormatter, value)) SetComponentDirty(); } + } + /// <summary> + /// the text padding of left and right. defaut:5. + /// |左右边距。 + /// </summary> + public int paddingLeftRight { get { return m_PaddingLeftRight; } set { m_PaddingLeftRight = value; } } + /// <summary> + /// the text padding of top and bottom. defaut:5. + /// |上下边距。 + /// </summary> + public int paddingTopBottom { get { return m_PaddingTopBottom; } set { m_PaddingTopBottom = value; } } + /// <summary> + /// Whether to show ignored data on tooltip. + /// |是否显示忽略数据在tooltip上。 + /// </summary> + public bool ignoreDataShow { get { return m_IgnoreDataShow; } set { m_IgnoreDataShow = value; } } + /// <summary> + /// The default display character information for ignored data. + /// |被忽略数据的默认显示字符信息。 + /// </summary> + public string ignoreDataDefaultContent { get { return m_IgnoreDataDefaultContent; } set { m_IgnoreDataDefaultContent = value; } } + /// <summary> + /// The background image of tooltip. + /// |提示框的背景图片。 + /// </summary> + public Sprite backgroundImage { get { return m_BackgroundImage; } set { m_BackgroundImage = value; SetComponentDirty(); } } + /// <summary> + /// The background type of tooltip. + /// |提示框的背景图片显示类型。 + /// </summary> + public Image.Type backgroundType { get { return m_BackgroundType; } set { m_BackgroundType = value; SetComponentDirty(); } } + /// <summary> + /// The background color of tooltip. + /// |提示框的背景颜色。 + /// </summary> + public Color backgroundColor { get { return m_BackgroundColor; } set { m_BackgroundColor = value; SetComponentDirty(); } } + /// <summary> + /// Whether to trigger after always display. + /// |是否触发后一直显示提示框浮层。 + /// </summary> + public bool alwayShowContent { get { return m_AlwayShowContent; } set { m_AlwayShowContent = value; } } + /// <summary> + /// Whether to show the tooltip floating layer, whose default value is true. + /// It should be configurated to be false, if you only need tooltip to trigger the event or show the axisPointer without content. + /// |是否显示提示框浮层,默认显示。只需tooltip触发事件或显示axisPointer而不需要显示内容时可配置该项为false。 + /// </summary> + public bool showContent { get { return m_ShowContent; } set { m_ShowContent = value; } } + /// <summary> + /// The position offset of tooltip relative to the mouse position. + /// |提示框相对于鼠标位置的偏移。 + /// </summary> + public Vector2 offset { get { return m_Offset; } set { m_Offset = value; } } + /// <summary> + /// the width of tooltip border. + /// |边框线宽。 + /// </summary> + public float borderWidth + { + get { return m_BorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_BorderWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of tooltip border. + /// |边框颜色。 + /// </summary> + public Color32 borderColor + { + get { return m_BorderColor; } + set { if (PropertyUtil.SetColor(ref m_BorderColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// enable fixedX. + /// |是否固定X位置。 + /// </summary> + public bool fixedXEnable + { + get { return m_FixedXEnable; } + set { if (PropertyUtil.SetStruct(ref m_FixedXEnable, value)) SetVerticesDirty(); } + } + /// <summary> + /// the x positionn of fixedX. + /// |固定X位置的坐标。 + /// </summary> + public float fixedX + { + get { return m_FixedX; } + set { if (PropertyUtil.SetStruct(ref m_FixedX, value)) SetVerticesDirty(); } + } + /// <summary> + /// enable fixedY. + /// |是否固定Y位置。 + /// </summary> + public bool fixedYEnable + { + get { return m_FixedYEnable; } + set { if (PropertyUtil.SetStruct(ref m_FixedYEnable, value)) SetVerticesDirty(); } + } + /// <summary> + /// the y position of fixedY. + /// |固定Y位置的坐标。 + /// </summary> + public float fixedY + { + get { return m_FixedY; } + set { if (PropertyUtil.SetStruct(ref m_FixedY, value)) SetVerticesDirty(); } + } + /// <summary> + /// height of title text. + /// |标题文本的高。 + /// </summary> + public float titleHeight + { + get { return m_TitleHeight; } + set { if (PropertyUtil.SetStruct(ref m_TitleHeight, value)) SetComponentDirty(); } + } + /// <summary> + /// height of content text. + /// |数据项文本的高。 + /// </summary> + public float itemHeight + { + get { return m_ItemHeight; } + set { if (PropertyUtil.SetStruct(ref m_ItemHeight, value)) SetComponentDirty(); } + } + /// <summary> + /// the label style of tooltip axis indicator label. + /// |提示框的坐标轴指示器文本的样式。 + /// </summary> + public LabelStyle indicatorLabelStyle + { + get { return m_IndicatorLabelStyle; } + set { if (value != null) { m_IndicatorLabelStyle = value; SetComponentDirty(); } } + } + /// <summary> + /// the textstyle of title. + /// |标题的文本样式。 + /// </summary> + public LabelStyle titleLabelStyle + { + get { return m_TitleLabelStyle; } + set { if (value != null) { m_TitleLabelStyle = value; SetComponentDirty(); } } + } + /// <summary> + /// the textstyle list of content. + /// |内容部分的文本样式列表。和列一一对应。 + /// </summary> + public List<LabelStyle> contentLabelStyles + { + get { return m_ContentLabelStyles; } + set { if (value != null) { m_ContentLabelStyles = value; SetComponentDirty(); } } + } + + /// <summary> + /// the line style of indicator line. + /// |指示线样式。 + /// </summary> + public LineStyle lineStyle + { + get { return m_LineStyle; } + set { if (value != null) m_LineStyle = value; SetComponentDirty(); } + } + + /// <summary> + /// 组件是否需要刷新 + /// </summary> + public override bool componentDirty + { + get { return m_ComponentDirty || lineStyle.componentDirty || indicatorLabelStyle.componentDirty; } + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + lineStyle.ClearComponentDirty(); + indicatorLabelStyle.ClearComponentDirty(); + } + /// <summary> + /// 当前提示框所指示的Serie索引(目前只对散点图有效)。 + /// </summary> + public Dictionary<int, List<int>> runtimeSerieIndex = new Dictionary<int, List<int>>(); + /// <summary> + /// The data index currently indicated by Tooltip. + /// |当前提示框所指示的数据项索引。 + /// </summary> + public List<int> runtimeDataIndex { get { return m_RuntimeDateIndex; } internal set { m_RuntimeDateIndex = value; } } + private List<int> m_RuntimeDateIndex = new List<int>() {-1, -1 }; + + /// <summary> + /// Keep Tooltiop displayed at the top. + /// |保持Tooltiop显示在最顶上 + /// </summary> + public void KeepTop() + { + gameObject.transform.SetAsLastSibling(); + } + + public override void ClearData() + { + ClearValue(); + } + + /// <summary> + /// 清除提示框指示数据 + /// </summary> + internal void ClearValue() + { + for (int i = 0; i < runtimeDataIndex.Count; i++) runtimeDataIndex[i] = -1; + } + + /// <summary> + /// 提示框是否显示 + /// </summary> + /// <returns></returns> + public bool IsActive() + { + return gameObject != null && gameObject.activeInHierarchy; + } + + /// <summary> + /// 设置Tooltip组件是否显示 + /// </summary> + /// <param name="flag"></param> + public void SetActive(bool flag) + { + if (gameObject && gameObject.activeInHierarchy != flag) + { + gameObject.SetActive(alwayShowContent ? true : flag); + } + SetContentActive(flag); + } + + /// <summary> + /// 更新文本框位置 + /// </summary> + /// <param name="pos"></param> + public void UpdateContentPos(Vector2 pos) + { + if (view != null) + { + if (fixedXEnable) pos.x = fixedX; + if (fixedYEnable) pos.y = fixedY; + view.UpdatePosition(pos); + } + } + + /// <summary> + /// 设置文本框是否显示 + /// </summary> + /// <param name="flag"></param> + public void SetContentActive(bool flag) + { + if (view == null) + return; + + view.SetActive(alwayShowContent ? true : flag); + } + + /// <summary> + /// 当前提示框是否选中数据项 + /// </summary> + /// <returns></returns> + public bool IsSelected() + { + foreach (var index in runtimeDataIndex) + if (index >= 0) return true; + return false; + } + + /// <summary> + /// 指定索引的数据项是否被提示框选中 + /// </summary> + /// <param name="index"></param> + /// <returns></returns> + public bool IsSelected(int index) + { + foreach (var temp in runtimeDataIndex) + if (temp == index) return true; + return false; + } + + public void ClearSerieDataIndex() + { + foreach (var kv in runtimeSerieIndex) + { + kv.Value.Clear(); + } + } + + public void AddSerieDataIndex(int serieIndex, int dataIndex) + { + if (!runtimeSerieIndex.ContainsKey(serieIndex)) + { + runtimeSerieIndex[serieIndex] = new List<int>(); + } + runtimeSerieIndex[serieIndex].Add(dataIndex); + } + + public bool isAnySerieDataIndex() + { + foreach (var kv in runtimeSerieIndex) + { + if (kv.Value.Count > 0) return true; + } + return false; + } + + public bool IsTriggerItem() + { + return trigger == Trigger.Item; + } + + public bool IsTriggerAxis() + { + return trigger == Trigger.Axis; + } + + public LabelStyle GetContentLabelStyle(int index) + { + if (m_ContentLabelStyles.Count == 0) + return null; + + if (index < 0) + index = 0; + else if (index > m_ContentLabelStyles.Count - 1) + index = m_ContentLabelStyles.Count - 1; + + return m_ContentLabelStyles[index]; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Tooltip/Tooltip.cs.meta b/Assets/XCharts/Runtime/Component/Tooltip/Tooltip.cs.meta new file mode 100644 index 0000000..441a06e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/Tooltip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dff3b0d6d38ee49838f054d30ab9b733 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipContext.cs b/Assets/XCharts/Runtime/Component/Tooltip/TooltipContext.cs new file mode 100644 index 0000000..f00c7d0 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipContext.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + public class TooltipData + { + public string title; + public List<SerieParams> param = new List<SerieParams>(); + } + + public class TooltipContext + { + public Vector2 pointer; + public float width; + public float height; + public float angle; + public TooltipData data = new TooltipData(); + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipContext.cs.meta b/Assets/XCharts/Runtime/Component/Tooltip/TooltipContext.cs.meta new file mode 100644 index 0000000..2dd6ed0 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7324ce36c9b2c475bb18abd6618b107c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipHandler.cs b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHandler.cs new file mode 100644 index 0000000..e55d367 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHandler.cs @@ -0,0 +1,641 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class TooltipHandler : MainComponentHandler<Tooltip> + { + private List<ChartLabel> m_IndicatorLabels = new List<ChartLabel>(); + private GameObject m_LabelRoot; + private ISerieContainer m_PointerContainer; + + public override void InitComponent() + { + InitTooltip(component); + } + + public override void Update() + { + UpdateTooltip(component); + UpdateTooltipIndicatorLabelText(component); + if (component.view != null) + component.view.Update(); + } + + public override void DrawTop(VertexHelper vh) + { + DrawTooltipIndicator(vh, component); + } + + private void InitTooltip(Tooltip tooltip) + { + tooltip.painter = chart.m_PainterTop; + tooltip.refreshComponent = delegate() + { + var objName = ChartCached.GetComponentObjectName(tooltip); + tooltip.gameObject = ChartHelper.AddObject(objName, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + var tooltipObject = tooltip.gameObject; + tooltipObject.transform.localPosition = Vector3.zero; + tooltipObject.hideFlags = chart.chartHideFlags; + var parent = tooltipObject.transform; + ChartHelper.HideAllObject(tooltipObject.transform); + + tooltip.view = TooltipView.CreateView(tooltip, chart.theme, parent); + tooltip.SetActive(false); + + m_LabelRoot = ChartHelper.AddObject("label", tooltip.gameObject.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + ChartHelper.HideAllObject(m_LabelRoot); + m_IndicatorLabels.Clear(); + for (int i = 0; i < 2; i++) + { + var labelName = "label_" + i; + var item = ChartHelper.AddTooltipIndicatorLabel(component, labelName, m_LabelRoot.transform, + chart.theme, TextAnchor.MiddleCenter); + item.SetActive(false); + m_IndicatorLabels.Add(item); + } + }; + tooltip.refreshComponent(); + } + + private ChartLabel GetIndicatorLabel(int index) + { + if (m_LabelRoot == null) return null; + if (index < m_IndicatorLabels.Count) return m_IndicatorLabels[index]; + else + { + var labelName = "label_" + index; + var item = ChartHelper.AddTooltipIndicatorLabel(component, labelName, m_LabelRoot.transform, + chart.theme, TextAnchor.MiddleCenter); + m_IndicatorLabels.Add(item); + return item; + } + } + + private void UpdateTooltip(Tooltip tooltip) + { + if (tooltip.trigger == Tooltip.Trigger.None) return; + if (!chart.isPointerInChart || !tooltip.show) + { + if (tooltip.IsActive()) + { + tooltip.ClearValue(); + tooltip.SetActive(false); + } + return; + } + var showTooltip = false; + for (int i = chart.series.Count - 1; i >= 0; i--) + { + var serie = chart.series[i]; + if (!(serie is INeedSerieContainer)) + { + if (SetSerieTooltip(tooltip, serie)) + { + showTooltip = true; + chart.RefreshTopPainter(); + return; + } + } + } + var containerSeries = ListPool<Serie>.Get(); + m_PointerContainer = GetPointerContainerAndSeries(tooltip, containerSeries); + if (containerSeries.Count > 0) + { + if (SetSerieTooltip(tooltip, containerSeries)) + showTooltip = true; + } + ListPool<Serie>.Release(containerSeries); + if (!showTooltip) + { + if (tooltip.type == Tooltip.Type.Corss && m_PointerContainer != null && m_PointerContainer.IsPointerEnter()) + { + tooltip.SetActive(true); + tooltip.SetContentActive(false); + } + else + { + tooltip.SetActive(false); + } + } + else + { + chart.RefreshTopPainter(); + } + } + + private void UpdateTooltipIndicatorLabelText(Tooltip tooltip) + { + if (!tooltip.show) return; + if (tooltip.type == Tooltip.Type.None) return; + if (m_PointerContainer != null) + { + if (tooltip.type == Tooltip.Type.Corss) + { + var labelCount = 0; + if (m_PointerContainer is GridCoord) + { + var grid = m_PointerContainer as GridCoord; + ChartHelper.HideAllObject(m_LabelRoot); + foreach (var component in chart.components) + { + if (component is XAxis || component is YAxis) + { + var axis = component as Axis; + if (axis.gridIndex == grid.index) + { + var label = GetIndicatorLabel(labelCount++); + SetTooltipIndicatorLabel(tooltip, axis, label); + } + } + } + } + else if (m_PointerContainer is PolarCoord) + { + var polar = m_PointerContainer as PolarCoord; + ChartHelper.HideAllObject(m_LabelRoot); + foreach (var component in chart.components) + { + if (component is AngleAxis || component is RadiusAxis) + { + var axis = component as Axis; + if (axis.polarIndex == polar.index) + { + var label = GetIndicatorLabel(labelCount++); + SetTooltipIndicatorLabel(tooltip, axis, label); + } + } + } + } + } + } + } + + private void SetTooltipIndicatorLabel(Tooltip tooltip, Axis axis, ChartLabel label) + { + if (label == null) return; + if (double.IsPositiveInfinity(axis.context.pointerValue)) return; + label.SetActive(true); + label.SetTextActive(true); + label.SetPosition(axis.context.pointerLabelPosition); + if (axis.IsCategory()) + label.SetText(axis.GetData((int) axis.context.pointerValue)); + else + label.SetText(axis.context.pointerValue.ToString("f2")); + var textColor = axis.axisLabel.textStyle.GetColor(chart.theme.axis.textColor); + if (ChartHelper.IsClearColor(tooltip.indicatorLabelStyle.background.color)) + label.color = textColor; + else + label.color = tooltip.indicatorLabelStyle.background.color; + label.SetTextColor(Color.white); + } + + private ISerieContainer GetPointerContainerAndSeries(Tooltip tooltip, List<Serie> list) + { + list.Clear(); + for (int i = chart.components.Count - 1; i >= 0; i--) + { + var component = chart.components[i]; + if (component is ISerieContainer) + { + var container = component as ISerieContainer; + if (container.IsPointerEnter()) + { + foreach (var serie in chart.series) + { + if (serie is INeedSerieContainer && + (serie as INeedSerieContainer).containterInstanceId == component.instanceId) + { + var isTriggerAxis = tooltip.IsTriggerAxis(); + if (container is GridCoord) + { + var xAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + var yAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + serie.context.pointerEnter = true; + UpdateAxisPointerDataIndex(serie, xAxis, yAxis, container as GridCoord, isTriggerAxis); + } + else if (container is PolarCoord) + { + var m_AngleAxis = ComponentHelper.GetAngleAxis(chart.components, container.index); + tooltip.context.angle = (float) m_AngleAxis.context.pointerValue; + } + list.Add(serie); + if (!isTriggerAxis) + chart.RefreshTopPainter(); + } + } + return container; + } + } + } + return null; + } + + private void UpdateAxisPointerDataIndex(Serie serie, XAxis xAxis, YAxis yAxis, GridCoord grid, bool isTriggerAxis) + { + serie.context.pointerAxisDataIndexs.Clear(); + if (yAxis.IsCategory()) + { + serie.context.pointerAxisDataIndexs.Add((int) yAxis.context.pointerValue); + yAxis.context.axisTooltipValue = yAxis.context.pointerValue; + } + else if (yAxis.IsTime()) + { + if (isTriggerAxis) + GetSerieDataIndexByAxis(serie, yAxis, grid); + else + GetSerieDataIndexByItem(serie, yAxis, grid); + } + else if (xAxis.IsCategory()) + { + serie.context.pointerAxisDataIndexs.Add((int) xAxis.context.pointerValue); + xAxis.context.axisTooltipValue = xAxis.context.pointerValue; + } + else + { + if (isTriggerAxis) + GetSerieDataIndexByAxis(serie, xAxis, grid); + else + GetSerieDataIndexByItem(serie, xAxis, grid); + } + } + + private void GetSerieDataIndexByAxis(Serie serie, Axis axis, GridCoord grid, int dimension = 0) + { + var currValue = 0d; + var lastValue = 0d; + var nextValue = 0d; + var axisValue = axis.context.pointerValue; + var isTimeAxis = axis.IsTime(); + var dataCount = serie.dataCount; + var themeSymbolSize = chart.theme.serie.scatterSymbolSize; + var data = serie.data; + if (!isTimeAxis) + { + serie.context.sortedData.Clear(); + for (int i = 0; i < dataCount; i++) + { + var serieData = serie.data[i]; + serieData.index = i; + serie.context.sortedData.Add(serieData); + } + serie.context.sortedData.Sort(delegate(SerieData a, SerieData b) + { + return a.GetData(dimension).CompareTo(b.GetData(dimension)); + }); + data = serie.context.sortedData; + } + serie.context.pointerAxisDataIndexs.Clear(); + for (int i = 0; i < dataCount; i++) + { + var serieData = data[i]; + currValue = serieData.GetData(dimension); + if (i == 0) + { + nextValue = data[i + 1].GetData(dimension); + if (axisValue <= currValue + (nextValue - currValue) / 2) + { + serie.context.pointerAxisDataIndexs.Add(serieData.index); + break; + } + } + else if (i == dataCount - 1) + { + if (axisValue > lastValue + (currValue - lastValue) / 2) + { + serie.context.pointerAxisDataIndexs.Add(serieData.index); + break; + } + } + else + { + nextValue = data[i + 1].GetData(dimension); + if (axisValue > (currValue - (currValue - lastValue) / 2) && axisValue <= currValue + (nextValue - currValue) / 2) + { + serie.context.pointerAxisDataIndexs.Add(serieData.index); + break; + } + } + lastValue = currValue; + } + if (serie.context.pointerAxisDataIndexs.Count > 0) + { + var index = serie.context.pointerAxisDataIndexs[0]; + serie.context.pointerItemDataIndex = index; + axis.context.axisTooltipValue = serie.GetSerieData(index).GetData(dimension); + } + else + { + serie.context.pointerItemDataIndex = -1; + axis.context.axisTooltipValue = 0; + } + } + + private void GetSerieDataIndexByItem(Serie serie, Axis axis, GridCoord grid, int dimension = 0) + { + if (serie.context.pointerItemDataIndex >= 0) + { + axis.context.axisTooltipValue = serie.GetSerieData(serie.context.pointerItemDataIndex).GetData(dimension); + } + else if (component.type == Tooltip.Type.Corss) + { + axis.context.axisTooltipValue = axis.context.pointerValue; + } + else + { + axis.context.axisTooltipValue = 0; + } + } + + private bool SetSerieTooltip(Tooltip tooltip, Serie serie) + { + if (tooltip.trigger == Tooltip.Trigger.None) return false; + if (serie.context.pointerItemDataIndex < 0) return false; + + tooltip.context.data.param.Clear(); + tooltip.context.data.title = serie.serieName; + tooltip.context.pointer = chart.pointerPos; + + serie.handler.UpdateTooltipSerieParams(serie.context.pointerItemDataIndex, false, null, + tooltip.marker, tooltip.itemFormatter, tooltip.numericFormatter, + ref tooltip.context.data.param, + ref tooltip.context.data.title); + TooltipHelper.ResetTooltipParamsByItemFormatter(tooltip, chart); + + tooltip.SetActive(true); + tooltip.view.Refresh(); + TooltipHelper.LimitInRect(tooltip, chart.chartRect); + return true; + } + + private bool SetSerieTooltip(Tooltip tooltip, List<Serie> series) + { + if (tooltip.trigger == Tooltip.Trigger.None) + return false; + + if (series.Count <= 0) + return false; + + string category = null; + var showCategory = false; + var isTriggerByAxis = false; + var dataIndex = -1; + tooltip.context.data.param.Clear(); + tooltip.context.pointer = chart.pointerPos; + if (m_PointerContainer is GridCoord) + { + if (tooltip.trigger == Tooltip.Trigger.Axis) + { + isTriggerByAxis = true; + GetAxisCategory(m_PointerContainer.index, ref dataIndex, ref category); + if (series.Count <= 1) + { + showCategory = true; + tooltip.context.data.title = series[0].serieName; + } + else + tooltip.context.data.title = category; + } + } + + for (int i = 0; i < series.Count; i++) + { + var serie = series[i]; + serie.context.isTriggerByAxis = isTriggerByAxis; + if (isTriggerByAxis && dataIndex >= 0) + serie.context.pointerItemDataIndex = dataIndex; + serie.handler.UpdateTooltipSerieParams(dataIndex, showCategory, category, + tooltip.marker, tooltip.itemFormatter, tooltip.numericFormatter, + ref tooltip.context.data.param, + ref tooltip.context.data.title); + } + TooltipHelper.ResetTooltipParamsByItemFormatter(tooltip, chart); + if (tooltip.context.data.param.Count > 0) + { + tooltip.SetActive(true); + if (tooltip.view != null) + tooltip.view.Refresh(); + TooltipHelper.LimitInRect(tooltip, chart.chartRect); + return true; + } + return false; + } + + private bool GetAxisCategory(int gridIndex, ref int dataIndex, ref string category) + { + foreach (var component in chart.components) + { + if (component is Axis) + { + var axis = component as Axis; + if (axis.gridIndex == gridIndex && axis.IsCategory()) + { + dataIndex = (int) axis.context.pointerValue; + category = axis.GetData(dataIndex); + return true; + } + } + } + return false; + } + + private void DrawTooltipIndicator(VertexHelper vh, Tooltip tooltip) + { + if (!tooltip.show) return; + if (tooltip.type == Tooltip.Type.None) return; + if (m_PointerContainer is GridCoord) + { + var grid = m_PointerContainer as GridCoord; + if (!grid.context.isPointerEnter) return; + if (IsYCategoryOfGrid(grid.index)) + DrawYAxisIndicator(vh, tooltip, grid); + else + DrawXAxisIndicator(vh, tooltip, grid); + } + else if (m_PointerContainer is PolarCoord) + { + DrawPolarIndicator(vh, tooltip, m_PointerContainer as PolarCoord); + } + } + + private bool IsYCategoryOfGrid(int gridIndex) + { + var yAxes = chart.GetChartComponents<YAxis>(); + foreach (var component in yAxes) + { + var yAxis = component as YAxis; + if (yAxis.gridIndex == gridIndex && yAxis.IsCategory()) return true; + } + return false; + } + + private void DrawXAxisIndicator(VertexHelper vh, Tooltip tooltip, GridCoord grid) + { + var xAxes = chart.GetChartComponents<XAxis>(); + var lineType = tooltip.lineStyle.GetType(chart.theme.tooltip.lineType); + var lineWidth = tooltip.lineStyle.GetWidth(chart.theme.tooltip.lineWidth); + foreach (var component in xAxes) + { + var xAxis = component as XAxis; + if (xAxis.gridIndex == grid.index) + { + var dataZoom = chart.GetDataZoomOfAxis(xAxis); + int dataCount = chart.series.Count > 0 ? chart.series[0].GetDataList(dataZoom).Count : 0; + float splitWidth = AxisHelper.GetDataWidth(xAxis, grid.context.width, dataCount, dataZoom); + switch (tooltip.type) + { + case Tooltip.Type.Corss: + case Tooltip.Type.Line: + float pX = grid.context.x; + pX += xAxis.IsCategory() ? + (float) (xAxis.context.pointerValue * splitWidth + (xAxis.boundaryGap ? splitWidth / 2 : 0)) : + xAxis.GetDistance(xAxis.context.axisTooltipValue, grid.context.width); + Vector2 sp = new Vector2(pX, grid.context.y); + Vector2 ep = new Vector2(pX, grid.context.y + grid.context.height); + var lineColor = TooltipHelper.GetLineColor(tooltip, chart.theme); + // if (xAxis.IsCategory() && tooltip.type == Tooltip.Type.Corss) + // { + // float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth; + // pX = (float)(grid.context.x + splitWidth * xAxis.context.pointerValue - + // (xAxis.boundaryGap ? 0 : splitWidth / 2)); + // float pY = grid.context.y + grid.context.height; + // Vector3 p1 = new Vector3(pX, grid.context.y); + // Vector3 p2 = new Vector3(pX, pY); + // Vector3 p3 = new Vector3(pX + tooltipSplitWid, pY); + // Vector3 p4 = new Vector3(pX + tooltipSplitWid, grid.context.y); + // UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, chart.theme.tooltip.areaColor); + // } + // else + { + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); + } + if (tooltip.type == Tooltip.Type.Corss) + { + sp = new Vector2(grid.context.x, chart.pointerPos.y); + ep = new Vector2(grid.context.x + grid.context.width, chart.pointerPos.y); + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); + } + break; + case Tooltip.Type.Shadow: + if (xAxis.IsCategory()) + { + float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth; + pX = (float) (grid.context.x + splitWidth * xAxis.context.pointerValue - + (xAxis.boundaryGap ? 0 : splitWidth / 2)); + float pY = grid.context.y + grid.context.height; + Vector3 p1 = new Vector3(pX, grid.context.y); + Vector3 p2 = new Vector3(pX, pY); + Vector3 p3 = new Vector3(pX + tooltipSplitWid, pY); + Vector3 p4 = new Vector3(pX + tooltipSplitWid, grid.context.y); + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, chart.theme.tooltip.areaColor); + } + break; + } + } + } + } + private void DrawYAxisIndicator(VertexHelper vh, Tooltip tooltip, GridCoord grid) + { + var yAxes = chart.GetChartComponents<YAxis>(); + var lineType = tooltip.lineStyle.GetType(chart.theme.tooltip.lineType); + var lineWidth = tooltip.lineStyle.GetWidth(chart.theme.tooltip.lineWidth); + + foreach (var component in yAxes) + { + var yAxis = component as YAxis; + if (yAxis.gridIndex == grid.index) + { + var dataZoom = chart.GetDataZoomOfAxis(yAxis); + int dataCount = chart.series.Count > 0 ? chart.series[0].GetDataList(dataZoom).Count : 0; + float splitWidth = AxisHelper.GetDataWidth(yAxis, grid.context.height, dataCount, dataZoom); + switch (tooltip.type) + { + case Tooltip.Type.Corss: + case Tooltip.Type.Line: + float pY = (float) (grid.context.y + yAxis.context.pointerValue * splitWidth + + (yAxis.boundaryGap ? splitWidth / 2 : 0)); + Vector2 sp = new Vector2(grid.context.x, pY); + Vector2 ep = new Vector2(grid.context.x + grid.context.width, pY); + var lineColor = TooltipHelper.GetLineColor(tooltip, chart.theme); + // if (yAxis.IsCategory() && tooltip.type == Tooltip.Type.Corss) + // { + // float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth; + // float pX = grid.context.x + grid.context.width; + // pY = (float)(grid.context.y + splitWidth * yAxis.context.pointerValue - + // (yAxis.boundaryGap ? 0 : splitWidth / 2)); + // Vector3 p1 = new Vector3(grid.context.x, pY); + // Vector3 p2 = new Vector3(grid.context.x, pY + tooltipSplitWid); + // Vector3 p3 = new Vector3(pX, pY + tooltipSplitWid); + // Vector3 p4 = new Vector3(pX, pY); + // UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, chart.theme.tooltip.areaColor); + // } + // else + { + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); + } + if (tooltip.type == Tooltip.Type.Corss) + { + sp = new Vector2(chart.pointerPos.x, grid.context.y); + ep = new Vector2(chart.pointerPos.x, grid.context.y + grid.context.height); + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); + } + break; + case Tooltip.Type.Shadow: + if (yAxis.IsCategory()) + { + float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth; + float pX = grid.context.x + grid.context.width; + pY = (float) (grid.context.y + splitWidth * yAxis.context.pointerValue - + (yAxis.boundaryGap ? 0 : splitWidth / 2)); + Vector3 p1 = new Vector3(grid.context.x, pY); + Vector3 p2 = new Vector3(grid.context.x, pY + tooltipSplitWid); + Vector3 p3 = new Vector3(pX, pY + tooltipSplitWid); + Vector3 p4 = new Vector3(pX, pY); + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, chart.theme.tooltip.areaColor); + } + break; + } + } + } + } + + private void DrawPolarIndicator(VertexHelper vh, Tooltip tooltip, PolarCoord m_Polar) + { + if (tooltip.context.angle < 0) return; + var theme = chart.theme; + var m_AngleAxis = ComponentHelper.GetAngleAxis(chart.components, m_Polar.index); + var lineColor = TooltipHelper.GetLineColor(tooltip, theme); + var lineType = tooltip.lineStyle.GetType(theme.tooltip.lineType); + var lineWidth = tooltip.lineStyle.GetWidth(theme.tooltip.lineWidth); + var cenPos = m_Polar.context.center; + var radius = m_Polar.context.radius; + var sp = m_Polar.context.center; + var tooltipAngle = m_AngleAxis.GetValueAngle(tooltip.context.angle); + + var ep = ChartHelper.GetPos(sp, radius, tooltipAngle, true); + + switch (tooltip.type) + { + case Tooltip.Type.Corss: + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); + var dist = Vector2.Distance(chart.pointerPos, cenPos); + if (dist > radius) dist = radius; + var outsideRaidus = dist + tooltip.lineStyle.GetWidth(theme.tooltip.lineWidth) * 2; + UGL.DrawDoughnut(vh, cenPos, dist, outsideRaidus, lineColor, Color.clear); + break; + case Tooltip.Type.Line: + ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); + break; + case Tooltip.Type.Shadow: + UGL.DrawSector(vh, cenPos, radius, lineColor, tooltipAngle - 2, tooltipAngle + 2, chart.settings.cicleSmoothness); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipHandler.cs.meta b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHandler.cs.meta new file mode 100644 index 0000000..7fb5702 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d25a5b5e3d6f45b8a06b94e33792087 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipHelper.cs b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHelper.cs new file mode 100644 index 0000000..9e099bd --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHelper.cs @@ -0,0 +1,99 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class TooltipHelper + { + internal static void ResetTooltipParamsByItemFormatter(Tooltip tooltip, BaseChart chart) + { + if (!string.IsNullOrEmpty(tooltip.titleFormatter)) + { + if (tooltip.titleFormatter.Equals("{i}", StringComparison.CurrentCultureIgnoreCase)) + { + tooltip.context.data.title = string.Empty; + } + else + { + tooltip.context.data.title = tooltip.titleFormatter; + FormatterHelper.ReplaceContent(ref tooltip.context.data.title, 0, + tooltip.numericFormatter, null, chart); + } + } + for (int i = tooltip.context.data.param.Count - 1; i >= 0; i--) + { + var param = tooltip.context.data.param[i]; + if (TooltipHelper.IsIgnoreItemFormatter(param.itemFormatter)) + { + tooltip.context.data.param.RemoveAt(i); + } + } + foreach (var param in tooltip.context.data.param) + { + if (!string.IsNullOrEmpty(param.itemFormatter)) + { + param.columns.Clear(); + var content = param.itemFormatter; + FormatterHelper.ReplaceSerieLabelContent(ref content, + param.numericFormatter, + param.dataCount, + param.value, + param.total, + param.serieName, + param.category, + param.serieData.name, + param.color); + foreach (var item in content.Split('|')) + { + param.columns.Add(item); + } + } + } + } + + public static bool IsIgnoreItemFormatter(string itemFormatter) + { + return "-".Equals(itemFormatter); + } + + public static void LimitInRect(Tooltip tooltip, Rect chartRect) + { + if (tooltip.view == null) + return; + + var pos = tooltip.view.GetTargetPos(); + if (pos.x + tooltip.context.width > chartRect.x + chartRect.width) + { + //pos.x = chartRect.x + chartRect.width - tooltip.context.width; + pos.x = pos.x - tooltip.context.width - tooltip.offset.x; + } + if (pos.y - tooltip.context.height < chartRect.y) + { + pos.y = chartRect.y + tooltip.context.height; + } + tooltip.UpdateContentPos(pos); + } + + public static string GetItemNumericFormatter(Tooltip tooltip, Serie serie, SerieData serieData) + { + var itemStyle = SerieHelper.GetItemStyle(serie, serieData); + if (!string.IsNullOrEmpty(itemStyle.numericFormatter)) return itemStyle.numericFormatter; + else return tooltip.numericFormatter; + } + + public static Color32 GetLineColor(Tooltip tooltip, ThemeStyle theme) + { + var lineStyle = tooltip.lineStyle; + if (!ChartHelper.IsClearColor(lineStyle.color)) + { + return lineStyle.GetColor(); + } + else + { + var color = theme.tooltip.lineColor; + ChartHelper.SetColorOpacity(ref color, lineStyle.opacity); + return color; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipHelper.cs.meta b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHelper.cs.meta new file mode 100644 index 0000000..169f2a5 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 184e190de6da6486b8b4d333a302477a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipView.cs b/Assets/XCharts/Runtime/Component/Tooltip/TooltipView.cs new file mode 100644 index 0000000..2fe075f --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipView.cs @@ -0,0 +1,270 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + public class TooltipViewItem + { + public GameObject gameObject; + public List<ChartLabel> columns = new List<ChartLabel>(); + } + public class TooltipView + { + private static Vector2 anchorMax = new Vector2(0, 1); + private static Vector2 anchorMin = new Vector2(0, 1); + private static Vector2 pivot = new Vector2(0, 1); + private static Vector2 v2_0_05 = new Vector2(0, 0.5f); + + public Tooltip tooltip; + public ComponentTheme theme; + public GameObject gameObject; + public Transform transform; + public Image background; + public Outline border; + public VerticalLayoutGroup layout; + public ChartLabel title; + private List<TooltipViewItem> m_Items = new List<TooltipViewItem>(); + private List<float> m_ColumnMaxWidth = new List<float>(); + private bool m_Active = false; + private Vector3 m_TargetPos; + private Vector3 m_CurrentVelocity; + + public void Update() + { + if (!m_Active) + return; + transform.localPosition = Vector3.SmoothDamp(transform.localPosition, m_TargetPos, ref m_CurrentVelocity, 0.08f); + } + + public Vector3 GetCurrentPos() + { + return transform.localPosition; + } + + public Vector3 GetTargetPos() + { + return m_TargetPos; + } + + public void UpdatePosition(Vector3 pos) + { + m_TargetPos = pos; + } + + public void SetActive(bool flag) + { + m_Active = flag && tooltip.showContent; + ChartHelper.SetActive(gameObject, m_Active); + } + + public void Refresh() + { + if (tooltip == null) return; + var data = tooltip.context.data; + + var titleActive = !string.IsNullOrEmpty(data.title); + if (titleActive != title.gameObject.activeSelf) + title.gameObject.SetActive(titleActive); + title.SetText(data.title); + + m_ColumnMaxWidth.Clear(); + for (int i = 0; i < data.param.Count; i++) + { + var item = GetItem(i); + var param = data.param[i]; + if (param.columns.Count <= 0) + { + item.gameObject.SetActive(false); + continue; + } + item.gameObject.SetActive(true); + for (int j = 0; j < param.columns.Count; j++) + { + var column = GetItemColumn(item, j); + column.SetActive(true); + column.SetText(param.columns[j]); + + if (j == 0) + column.text.SetColor(param.color); + + if (j >= m_ColumnMaxWidth.Count) + m_ColumnMaxWidth.Add(0); + + var columnWidth = column.GetWidth(); + if (m_ColumnMaxWidth[j] < columnWidth) + m_ColumnMaxWidth[j] = columnWidth; + } + for (int j = param.columns.Count; j < item.columns.Count; j++) + { + item.columns[j].SetActive(false); + } + } + for (int i = data.param.Count; i < m_Items.Count; i++) + { + m_Items[i].gameObject.SetActive(false); + } + ResetSize(); + // border.effectColor = data.param.Count == 1 + // ? data.param[0].color + // : tooltip.borderColor; + UpdatePosition(tooltip.context.pointer + tooltip.offset); + tooltip.gameObject.transform.SetAsLastSibling(); + } + + private void ResetSize() + { + var maxHig = 0f; + var maxWid = 0f; + if (tooltip.fixedWidth > 0) + { + maxWid = tooltip.fixedWidth; + } + else + { + maxWid = TotalMaxWidth(); + var titleWid = title.GetTextWidth(); + if (maxWid < titleWid) + maxWid = titleWid; + } + + if (tooltip.fixedHeight > 0) + { + maxHig = tooltip.fixedHeight; + } + else + { + if (!string.IsNullOrEmpty(title.text.GetText())) + maxHig += tooltip.titleHeight; + maxHig += tooltip.itemHeight * tooltip.context.data.param.Count; + maxHig += tooltip.paddingTopBottom * 2; + } + + if (tooltip.minWidth > 0 && maxWid < tooltip.minWidth) + maxWid = tooltip.minWidth; + + if (tooltip.minHeight > 0 && maxHig < tooltip.minHeight) + maxHig = tooltip.minHeight; + + for (int i = 0; i < m_Items.Count; i++) + { + var item = m_Items[i]; + item.gameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(maxWid, tooltip.itemHeight); + var xPos = 0f; + for (int j = 0; j < m_ColumnMaxWidth.Count; j++) + { + var deltaX = j == m_ColumnMaxWidth.Count - 1 ? maxWid - xPos : m_ColumnMaxWidth[j]; + item.columns[j].text.SetSizeDelta(new Vector2(deltaX, tooltip.itemHeight)); + item.columns[j].SetRectPosition(new Vector3(xPos, 0)); + xPos += m_ColumnMaxWidth[j]; + } + } + tooltip.context.width = maxWid + tooltip.paddingLeftRight * 2; + tooltip.context.height = maxHig; + background.GetComponent<RectTransform>().sizeDelta = new Vector2(tooltip.context.width, tooltip.context.height); + } + + private float TotalMaxWidth() + { + var total = 0f; + foreach (var max in m_ColumnMaxWidth) + total += max; + return total; + } + + private TooltipViewItem GetItem(int i) + { + if (i < 0) i = 0; + if (i < m_Items.Count) + { + return m_Items[i]; + } + else + { + var item = CreateViewItem(i, gameObject.transform, tooltip, theme); + m_Items.Add(item); + return item; + } + } + + private ChartLabel GetItemColumn(TooltipViewItem item, int i) + { + if (i < 0) i = 0; + if (i < item.columns.Count) + { + return item.columns[i]; + } + else + { + var column = CreateViewItemColumn(i, item.gameObject.transform, tooltip, theme); + item.columns.Add(column); + return column; + } + } + + public static TooltipView CreateView(Tooltip tooltip, ThemeStyle theme, Transform parent) + { + var view = new TooltipView(); + view.tooltip = tooltip; + view.theme = theme.tooltip; + + view.gameObject = ChartHelper.AddObject("view", parent, anchorMin, anchorMax, pivot, Vector3.zero); + view.gameObject.transform.localPosition = Vector3.zero; + view.transform = view.gameObject.transform; + + view.background = ChartHelper.GetOrAddComponent<Image>(view.gameObject); + view.background.sprite = tooltip.backgroundImage; + view.background.type = tooltip.backgroundType; + view.background.color = ChartHelper.IsClearColor(tooltip.backgroundColor) ? + Color.white : tooltip.backgroundColor; + + view.border = ChartHelper.GetOrAddComponent<Outline>(view.gameObject); + view.border.enabled = tooltip.borderWidth > 0; + view.border.useGraphicAlpha = false; + view.border.effectColor = tooltip.borderColor; + view.border.effectDistance = new Vector2(tooltip.borderWidth, -tooltip.borderWidth); + + view.layout = ChartHelper.GetOrAddComponent<VerticalLayoutGroup>(view.gameObject); + view.layout.childControlHeight = false; + view.layout.childControlWidth = false; + view.layout.childForceExpandHeight = false; + view.layout.childForceExpandWidth = false; + view.layout.padding = new RectOffset(tooltip.paddingLeftRight, + tooltip.paddingLeftRight, + tooltip.paddingTopBottom, + tooltip.paddingTopBottom); + + view.title = ChartHelper.AddChartLabel("title", view.gameObject.transform, tooltip.titleLabelStyle, theme.tooltip, + "", Color.clear, TextAnchor.MiddleLeft); + + var item = CreateViewItem(0, view.gameObject.transform, tooltip, theme.tooltip); + view.m_Items.Add(item); + + view.Refresh(); + + return view; + } + + private static TooltipViewItem CreateViewItem(int i, Transform parent, Tooltip tooltip, ComponentTheme theme) + { + GameObject item1 = ChartHelper.AddObject("item" + i, parent, anchorMin, anchorMax, v2_0_05, Vector3.zero); + + var item = new TooltipViewItem(); + item.gameObject = item1; + item.columns.Add(CreateViewItemColumn(0, item1.transform, tooltip, theme)); + item.columns.Add(CreateViewItemColumn(1, item1.transform, tooltip, theme)); + item.columns.Add(CreateViewItemColumn(2, item1.transform, tooltip, theme)); + return item; + } + + private static ChartLabel CreateViewItemColumn(int i, Transform parent, Tooltip tooltip, ComponentTheme theme) + { + var labelStyle = tooltip.GetContentLabelStyle(i); + var label = ChartHelper.AddChartLabel("column" + i, parent, labelStyle, theme, + "", Color.clear, TextAnchor.MiddleLeft); + return label; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/Tooltip/TooltipView.cs.meta b/Assets/XCharts/Runtime/Component/Tooltip/TooltipView.cs.meta new file mode 100644 index 0000000..bdc9a34 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/Tooltip/TooltipView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20bbaf6c402824f5d8abcaf1cee57865 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/VisualMap.meta b/Assets/XCharts/Runtime/Component/VisualMap.meta new file mode 100644 index 0000000..1077d02 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c21848eac9668493db23591788d54bf0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMap.cs b/Assets/XCharts/Runtime/Component/VisualMap/VisualMap.cs new file mode 100644 index 0000000..165aa80 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMap.cs @@ -0,0 +1,641 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class VisualMapRange : ChildComponent + { + [SerializeField] private double m_Min; + [SerializeField] private double m_Max; + [SerializeField] private string m_Label; + [SerializeField] private Color32 m_Color; + + /// <summary> + /// 范围最小值 + /// </summary> + public double min { get { return m_Min; } set { m_Min = value; } } + /// <summary> + /// 范围最大值 + /// </summary> + public double max { get { return m_Max; } set { m_Max = value; } } + /// <summary> + /// 文字描述 + /// </summary> + public string label { get { return m_Label; } set { m_Label = value; } } + /// <summary> + /// 颜色 + /// </summary> + public Color32 color { get { return m_Color; } set { m_Color = value; } } + + public bool Contains(double value, double minMaxRange) + { + if (m_Min == 0 && m_Max == 0) return false; + var cmin = System.Math.Abs(m_Min) < 1 ? minMaxRange * m_Min : m_Min; + var cmax = System.Math.Abs(m_Max) < 1 ? minMaxRange * m_Max : m_Max; + return value >= cmin && value < cmax; + } + } + + /// <summary> + /// VisualMap component. Mapping data to visual elements such as colors. + /// |视觉映射组件。用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)。 + /// </summary> + [System.Serializable] + [ComponentHandler(typeof(VisualMapHandler), true)] + public class VisualMap : MainComponent + { + /// <summary> + /// 类型。分为连续型和分段型。 + /// </summary> + public enum Type + { + /// <summary> + /// 连续型。 + /// </summary> + Continuous, + /// <summary> + /// 分段型。 + /// </summary> + Piecewise + } + + /// <summary> + /// 选择模式 + /// </summary> + public enum SelectedMode + { + /// <summary> + /// 多选。 + /// </summary> + Multiple, + /// <summary> + /// 单选。 + /// </summary> + Single + } + + [SerializeField] private bool m_Show = true; + [SerializeField] private bool m_ShowUI = false; + [SerializeField] private Type m_Type = Type.Continuous; + [SerializeField] private SelectedMode m_SelectedMode = SelectedMode.Multiple; + [SerializeField] private int m_SerieIndex = 0; + [SerializeField] private double m_Min = 0; + [SerializeField] private double m_Max = 100; + + [SerializeField] private double[] m_Range = new double[2] { 0, 100 }; + [SerializeField] private string[] m_Text = new string[2] { "", "" }; + [SerializeField] private float[] m_TextGap = new float[2] { 10f, 10f }; + [SerializeField] private int m_SplitNumber = 5; + [SerializeField] private bool m_Calculable = false; + [SerializeField] private bool m_Realtime = true; + [SerializeField] private float m_ItemWidth = 20f; + [SerializeField] private float m_ItemHeight = 140f; + [SerializeField] private float m_ItemGap = 10f; + [SerializeField] private float m_BorderWidth = 0; + [SerializeField] private int m_Dimension = -1; + [SerializeField] private bool m_HoverLink = true; + [SerializeField] private bool m_AutoMinMax = true; + [SerializeField] private Orient m_Orient = Orient.Horizonal; + [SerializeField] private Location m_Location = Location.defaultLeft; + [SerializeField] private bool m_WorkOnLine = true; + [SerializeField] private bool m_WorkOnArea = false; + + [SerializeField] private List<VisualMapRange> m_OutOfRange = new List<VisualMapRange>() { new VisualMapRange() { color = Color.gray } }; + [SerializeField] private List<VisualMapRange> m_InRange = new List<VisualMapRange>(); + + public VisualMapContext context = new VisualMapContext(); + + /// <summary> + /// Whether to enable components. + /// |组件是否生效。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to display components. If set to false, it will not show up, but the data mapping function still exists. + /// |是否显示组件。如果设置为 false,不会显示,但是数据映射的功能还存在。 + /// </summary> + public bool showUI + { + get { return m_ShowUI; } + set { if (PropertyUtil.SetStruct(ref m_ShowUI, value)) SetVerticesDirty(); } + } + /// <summary> + /// the type of visualmap component. + /// |组件类型。 + /// </summary> + public Type type + { + get { return m_Type; } + set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); } + } + /// <summary> + /// the selected mode for Piecewise visualMap. + /// |选择模式。 + /// </summary> + public SelectedMode selectedMode + { + get { return m_SelectedMode; } + set { if (PropertyUtil.SetStruct(ref m_SelectedMode, value)) SetVerticesDirty(); } + } + /// <summary> + /// the serie index of visualMap. + /// |影响的serie索引。 + /// </summary> + public int serieIndex + { + get { return m_SerieIndex; } + set { if (PropertyUtil.SetStruct(ref m_SerieIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// The minimum allowed. 'min' must be user specified. [visualmap.min, visualmap.max] forms the "domain" of the visualMap. + /// | + /// 允许的最小值。`autoMinMax`为`false`时必须指定。[visualMap.min, visualMap.max] 形成了视觉映射的『定义域』。 + /// </summary> + public double min + { + get { return m_Min; } + set { if (PropertyUtil.SetStruct(ref m_Min, value)) SetVerticesDirty(); } + } + /// <summary> + /// The maximum allowed. 'max' must be user specified. [visualmap.min, visualmap.max] forms the "domain" of the visualMap. + /// | + /// 允许的最大值。`autoMinMax`为`false`时必须指定。[visualMap.min, visualMax.max] 形成了视觉映射的『定义域』。 + /// </summary> + public double max + { + get { return m_Max; } + set { m_Max = (value < min ? min + 1 : value); SetVerticesDirty(); } + } + /// <summary> + /// Specifies the position of the numeric value corresponding to the handle. Range should be within the range of [min,max]. + /// | + /// 指定手柄对应数值的位置。range 应在[min,max]范围内。 + /// </summary> + public double[] range { get { return m_Range; } } + /// <summary> + /// Text on both ends. + /// |两端的文本,如 ['High', 'Low']。 + /// </summary> + public string[] text { get { return m_Text; } } + /// <summary> + /// The distance between the two text bodies. + /// |两端文字主体之间的距离,单位为px。 + /// </summary> + public float[] textGap { get { return m_TextGap; } } + /// <summary> + /// For continuous data, it is automatically evenly divided into several segments + /// and automatically matches the size of inRange color list when the default is 0. + /// | + /// 对于连续型数据,自动平均切分成几段,默认为0时自动匹配inRange颜色列表大小。 + /// </summary> + /// <value></value> + public int splitNumber + { + get { return m_SplitNumber; } + set { if (PropertyUtil.SetStruct(ref m_SplitNumber, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether the handle used for dragging is displayed (the handle can be dragged to adjust the selected range). + /// | + /// 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。 + /// </summary> + public bool calculable + { + get { return m_Calculable; } + set { if (PropertyUtil.SetStruct(ref m_Calculable, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to update in real time while dragging. + /// | + /// 拖拽时,是否实时更新。 + /// </summary> + public bool realtime + { + get { return m_Realtime; } + set { if (PropertyUtil.SetStruct(ref m_Realtime, value)) SetVerticesDirty(); } + } + /// <summary> + /// The width of the figure, that is, the width of the color bar. + /// | + /// 图形的宽度,即颜色条的宽度。 + /// </summary> + public float itemWidth + { + get { return m_ItemWidth; } + set { if (PropertyUtil.SetStruct(ref m_ItemWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// The height of the figure, that is, the height of the color bar. + /// | + /// 图形的高度,即颜色条的高度。 + /// </summary> + public float itemHeight + { + get { return m_ItemHeight; } + set { if (PropertyUtil.SetStruct(ref m_ItemHeight, value)) SetVerticesDirty(); } + } + /// <summary> + /// 每个图元之间的间隔距离。 + /// </summary> + public float itemGap + { + get { return m_ItemGap; } + set { if (PropertyUtil.SetStruct(ref m_ItemGap, value)) SetVerticesDirty(); } + } + /// <summary> + /// Border line width. + /// | + /// 边框线宽,单位px。 + /// </summary> + public float borderWidth + { + get { return m_BorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_BorderWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// Specifies "which dimension" of the data to map to the visual element. "Data" is series.data. + /// |Starting at 1, the default is 0 to take the last dimension in data. + /// | + /// 指定用数据的『哪个维度』,映射到视觉元素上。『数据』即 series.data。从1开始,默认为0取 data 中最后一个维度。 + /// </summary> + public int dimension + { + get { return m_Dimension; } + set { if (PropertyUtil.SetStruct(ref m_Dimension, value)) SetVerticesDirty(); } + } + /// <summary> + /// When the hoverLink function is turned on, when the mouse hovers over the visualMap component, + /// the corresponding value of the mouse position is highlighted in the corresponding graphic element in the diagram. + /// |Conversely, when the mouse hovers over a graphic element in a diagram, + /// the corresponding value of the visualMap component is triangulated in the corresponding position. + /// | + /// 打开 hoverLink 功能时,鼠标悬浮到 visualMap 组件上时,鼠标位置对应的数值 在 图表中对应的图形元素,会高亮。 + /// 反之,鼠标悬浮到图表中的图形元素上时,在 visualMap 组件的相应位置会有三角提示其所对应的数值。 + /// </summary> + /// <value></value> + public bool hoverLink + { + get { return m_HoverLink; } + set { if (PropertyUtil.SetStruct(ref m_HoverLink, value)) SetVerticesDirty(); } + } + /// <summary> + /// Automatically set min, Max value + /// 自动设置min,max的值 + /// </summary> + public bool autoMinMax + { + get { return m_AutoMinMax; } + set { if (PropertyUtil.SetStruct(ref m_AutoMinMax, value)) SetVerticesDirty(); } + } + /// <summary> + /// Specify whether the layout of component is horizontal or vertical. + /// | + /// 布局方式是横还是竖。 + /// </summary> + public Orient orient + { + get { return m_Orient; } + set { if (PropertyUtil.SetStruct(ref m_Orient, value)) SetVerticesDirty(); } + } + /// <summary> + /// The location of component. + /// |组件显示的位置。 + /// </summary> + public Location location + { + get { return m_Location; } + set { if (PropertyUtil.SetClass(ref m_Location, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether the visualmap is work on linestyle of linechart. + /// |组件是否对LineChart的LineStyle有效。 + /// </summary> + public bool workOnLine + { + get { return m_WorkOnLine; } + set { if (PropertyUtil.SetStruct(ref m_WorkOnLine, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether the visualmap is work on areaStyle of linechart. + /// |组件是否对LineChart的AreaStyle有效。 + /// </summary> + public bool workOnArea + { + get { return m_WorkOnArea; } + set { if (PropertyUtil.SetStruct(ref m_WorkOnArea, value)) SetVerticesDirty(); } + } + /// <summary> + /// Defines a visual color outside of the selected range. + /// |定义 在选中范围外 的视觉颜色。 + /// </summary> + public List<VisualMapRange> outOfRange + { + get { return m_OutOfRange; } + set { if (value != null) { m_OutOfRange = value; SetVerticesDirty(); } } + } + /// <summary> + /// 分段式每一段的相关配置。 + /// </summary> + public List<VisualMapRange> inRange + { + get { return m_InRange; } + set { if (value != null) { m_InRange = value; SetVerticesDirty(); } } + } + + public override bool vertsDirty { get { return m_VertsDirty || location.anyDirty; } } + public override void ClearVerticesDirty() + { + base.ClearVerticesDirty(); + location.ClearVerticesDirty(); + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + location.ClearComponentDirty(); + } + + public double rangeMin + { + get + { + if (m_Range[0] < min || m_Range[0] > max) return min; + else return m_Range[0]; + } + set + { + if (value >= min && value <= m_Range[1]) m_Range[0] = value; + } + } + + public double rangeMax + { + get + { + if (m_Range[1] >= m_Range[0] && m_Range[1] < max) return m_Range[1]; + else return max; + } + set + { + if (value >= m_Range[0] && value <= max) m_Range[1] = value; + } + } + + public float runtimeRangeMinHeight { get { return (float) ((rangeMin - min) / (max - min) * itemHeight); } } + public float runtimeRangeMaxHeight { get { return (float) ((rangeMax - min) / (max - min) * itemHeight); } } + + public void AddColors(List<Color32> colors) + { + m_InRange.Clear(); + foreach (var color in colors) + { + m_InRange.Add(new VisualMapRange() + { + color = color + }); + } + } + + public void AddColors(List<string> colors) + { + m_InRange.Clear(); + foreach (var str in colors) + { + m_InRange.Add(new VisualMapRange() + { + color = ThemeStyle.GetColor(str) + }); + } + } + + public Color32 GetColor(double value) + { + int index = GetIndex(value); + if (index == -1) + { + if (m_OutOfRange.Count > 0) + return m_OutOfRange[0].color; + else + return ChartConst.clearColor32; + } + + if (m_Type == VisualMap.Type.Piecewise) + { + return m_InRange[index].color; + } + else + { + int splitNumber = m_InRange.Count; + var diff = (m_Max - m_Min) / (splitNumber - 1); + var nowMin = m_Min + index * diff; + var rate = (value - nowMin) / diff; + if (index == splitNumber - 1) + return m_InRange[index].color; + else + return Color32.Lerp(m_InRange[index].color, m_InRange[index + 1].color, (float) rate); + } + } + + private bool IsNeedPieceColor(double value, out int index) + { + bool flag = false; + index = -1; + for (int i = 0; i < m_InRange.Count; i++) + { + var range = m_InRange[i]; + if (range.min != 0 || range.max != 0) + { + flag = true; + if (range.Contains(value, max - min)) + { + index = i; + return true; + } + } + } + return flag; + } + + private Color32 GetPiecesColor(double value) + { + foreach (var piece in m_InRange) + { + if (piece.Contains(value, max - min)) + { + return piece.color; + } + } + if (m_OutOfRange.Count > 0) + return m_OutOfRange[0].color; + else + return ChartConst.clearColor32; + } + + public int GetIndex(double value) + { + int splitNumber = m_InRange.Count; + if (splitNumber <= 0) + return -1; + var index = -1; + if (IsNeedPieceColor(value, out index)) + { + return index; + } + value = MathUtil.Clamp(value, m_Min, m_Max); + + var diff = (m_Max - m_Min) / (splitNumber - 1); + + for (int i = 0; i < splitNumber; i++) + { + if (value <= m_Min + (i + 1) * diff) + { + index = i; + break; + } + } + return index; + } + + public bool IsPiecewise() + { + return m_Type == VisualMap.Type.Piecewise; + } + + public bool IsInSelectedValue(double value) + { + if (context.pointerIndex < 0) + return true; + else + return context.pointerIndex == GetIndex(value); + } + + public double GetValue(Vector3 pos, Rect chartRect) + { + var vertical = orient == Orient.Vertical; + var centerPos = new Vector3(chartRect.x, chartRect.y) + location.GetPosition(chartRect.width, chartRect.height); + var pos1 = centerPos + (vertical ? Vector3.down : Vector3.left) * itemHeight / 2; + var pos2 = centerPos + (vertical ? Vector3.up : Vector3.right) * itemHeight / 2; + + if (vertical) + { + if (pos.y < pos1.y) + return min; + else if (pos.y > pos2.y) + return max; + else + return min + (pos.y - pos1.y) / (pos2.y - pos1.y) * (max - min); + } + else + { + if (pos.x < pos1.x) + return min; + else if (pos.x > pos2.x) + return max; + else + return min + (pos.x - pos1.x) / (pos2.x - pos1.x) * (max - min); + } + } + + public bool IsInRect(Vector3 local, Rect chartRect, float triangleLen = 20) + { + var centerPos = new Vector3(chartRect.x, chartRect.y) + location.GetPosition(chartRect.width, chartRect.height); + var diff = calculable ? triangleLen : 0; + + if (local.x >= centerPos.x - itemWidth / 2 - diff && + local.x <= centerPos.x + itemWidth / 2 + diff && + local.y >= centerPos.y - itemHeight / 2 - diff && + local.y <= centerPos.y + itemHeight / 2 + diff) + { + return true; + } + else + { + return false; + } + } + + public bool IsInRangeRect(Vector3 local, Rect chartRect) + { + var centerPos = new Vector3(chartRect.x, chartRect.y) + location.GetPosition(chartRect.width, chartRect.height); + + if (orient == Orient.Vertical) + { + var pos1 = centerPos + Vector3.down * itemHeight / 2; + + return local.x >= centerPos.x - itemWidth / 2 && + local.x <= centerPos.x + itemWidth / 2 && + local.y >= pos1.y + runtimeRangeMinHeight && + local.y <= pos1.y + runtimeRangeMaxHeight; + } + else + { + var pos1 = centerPos + Vector3.left * itemHeight / 2; + return local.x >= pos1.x + runtimeRangeMinHeight && + local.x <= pos1.x + runtimeRangeMaxHeight && + local.y >= centerPos.y - itemWidth / 2 && + local.y <= centerPos.y + itemWidth / 2; + } + } + + public bool IsInRangeMinRect(Vector3 local, Rect chartRect, float triangleLen) + { + var centerPos = new Vector3(chartRect.x, chartRect.y) + location.GetPosition(chartRect.width, chartRect.height); + + if (orient == Orient.Vertical) + { + var radius = triangleLen / 2; + var pos1 = centerPos + Vector3.down * itemHeight / 2; + var cpos = new Vector3(pos1.x + itemWidth / 2 + radius, pos1.y + runtimeRangeMinHeight - radius); + + return local.x >= cpos.x - radius && + local.x <= cpos.x + radius && + local.y >= cpos.y - radius && + local.y <= cpos.y + radius; + } + else + { + var radius = triangleLen / 2; + var pos1 = centerPos + Vector3.left * itemHeight / 2; + var cpos = new Vector3(pos1.x + runtimeRangeMinHeight, pos1.y + itemWidth / 2 + radius); + + return local.x >= cpos.x - radius && + local.x <= cpos.x + radius && + local.y >= cpos.y - radius && + local.y <= cpos.y + radius; + } + } + + public bool IsInRangeMaxRect(Vector3 local, Rect chartRect, float triangleLen) + { + var centerPos = new Vector3(chartRect.x, chartRect.y) + location.GetPosition(chartRect.width, chartRect.height); + + if (orient == Orient.Vertical) + { + var radius = triangleLen / 2; + var pos1 = centerPos + Vector3.down * itemHeight / 2; + var cpos = new Vector3(pos1.x + itemWidth / 2 + radius, pos1.y + runtimeRangeMaxHeight + radius); + + return local.x >= cpos.x - radius && + local.x <= cpos.x + radius && + local.y >= cpos.y - radius && + local.y <= cpos.y + radius; + } + else + { + var radius = triangleLen / 2; + var pos1 = centerPos + Vector3.left * itemHeight / 2; + var cpos = new Vector3(pos1.x + runtimeRangeMaxHeight + radius, pos1.y + itemWidth / 2 + radius); + + return local.x >= cpos.x - radius && + local.x <= cpos.x + radius && + local.y >= cpos.y - radius && + local.y <= cpos.y + radius; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMap.cs.meta b/Assets/XCharts/Runtime/Component/VisualMap/VisualMap.cs.meta new file mode 100644 index 0000000..63b8bc2 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a684cb32850c4df6aa39ed4fa5efb3f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMapContext.cs b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapContext.cs new file mode 100644 index 0000000..730b537 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapContext.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public class VisualMapContext : MainComponentContext + { + /// <summary> + /// 鼠标悬停选中的index + /// </summary> + public int pointerIndex { get; set; } + public double pointerValue { get; set; } + public bool minDrag { get; internal set; } + public bool maxDrag { get; internal set; } + + internal List<Color32> inRangeColors = new List<Color32>(); + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMapContext.cs.meta b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapContext.cs.meta new file mode 100644 index 0000000..b2eea4c --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b81ad95b4747442daa716953c7c02638 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHandler.cs b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHandler.cs new file mode 100644 index 0000000..a6f672d --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHandler.cs @@ -0,0 +1,371 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class VisualMapHandler : MainComponentHandler<VisualMap> + { + public override void OnBeginDrag(PointerEventData eventData) + { + OnDragVisualMapStart(component); + } + public override void OnDrag(PointerEventData eventData) + { + OnDragVisualMap(component); + } + + public override void OnEndDrag(PointerEventData eventData) + { + OnDragVisualMapEnd(component); + } + + public override void Update() + { + CheckVisualMap(component); + } + + public override void DrawBase(VertexHelper vh) + { + var visualMap = component; + if (!visualMap.show || !visualMap.showUI) return; + switch (visualMap.type) + { + case VisualMap.Type.Continuous: + DrawContinuousVisualMap(vh, visualMap); + break; + case VisualMap.Type.Piecewise: + //DrawPiecewiseVisualMap(vh, visualMap); + break; + } + } + + private void CheckVisualMap(VisualMap visualMap) + { + if (visualMap == null || !visualMap.show) + return; + + if (chart.canvas == null) + return; + + Vector2 local; + if (!chart.ScreenPointToChartPoint(Input.mousePosition, out local)) + { + if (visualMap.context.pointerIndex >= 0) + { + visualMap.context.pointerIndex = -1; + chart.RefreshChart(); + } + return; + } + + if (local.x < chart.chartX || + local.x > chart.chartX + chart.chartWidth || + local.y < chart.chartY || + local.y > chart.chartY + chart.chartHeight || + !visualMap.IsInRangeRect(local, chart.chartRect)) + { + if (visualMap.context.pointerIndex >= 0) + { + visualMap.context.pointerIndex = -1; + chart.RefreshChart(); + } + return; + } + + var pos1 = Vector3.zero; + var pos2 = Vector3.zero; + var halfHig = visualMap.itemHeight / 2; + var centerPos = chart.chartPosition + visualMap.location.GetPosition(chart.chartWidth, chart.chartHeight); + var selectedIndex = -1; + double value = 0; + + switch (visualMap.orient) + { + case Orient.Horizonal: + pos1 = centerPos + Vector3.left * halfHig; + pos2 = centerPos + Vector3.right * halfHig; + value = visualMap.min + (local.x - pos1.x) / (pos2.x - pos1.x) * (visualMap.max - visualMap.min); + selectedIndex = visualMap.GetIndex(value); + break; + + case Orient.Vertical: + pos1 = centerPos + Vector3.down * halfHig; + pos2 = centerPos + Vector3.up * halfHig; + value = visualMap.min + (local.y - pos1.y) / (pos2.y - pos1.y) * (visualMap.max - visualMap.min); + selectedIndex = visualMap.GetIndex(value); + break; + } + + visualMap.context.pointerValue = value; + visualMap.context.pointerIndex = selectedIndex; + chart.RefreshChart(); + } + + private void DrawContinuousVisualMap(VertexHelper vh, VisualMap visualMap) + { + var centerPos = chart.chartPosition + visualMap.location.GetPosition(chart.chartWidth, chart.chartHeight); + var pos1 = Vector3.zero; + var pos2 = Vector3.zero; + var dir = Vector3.zero; + var halfWid = visualMap.itemWidth / 2; + var halfHig = visualMap.itemHeight / 2; + var xRadius = 0f; + var yRadius = 0f; + var splitNum = visualMap.inRange.Count; + var splitWid = visualMap.itemHeight / (splitNum - 1); + var isVertical = false; + var colors = visualMap.inRange; + var triangeLen = chart.theme.visualMap.triangeLen; + + switch (visualMap.orient) + { + case Orient.Horizonal: + pos1 = centerPos + Vector3.left * halfHig; + pos2 = centerPos + Vector3.right * halfHig; + dir = Vector3.right; + xRadius = splitWid / 2; + yRadius = halfWid; + isVertical = false; + if (visualMap.calculable) + { + var p0 = pos1 + Vector3.right * visualMap.runtimeRangeMinHeight; + var p1 = p0 + Vector3.up * halfWid; + var p2 = p0 + Vector3.up * (halfWid + triangeLen); + var p3 = p2 + Vector3.left * triangeLen; + var color = visualMap.GetColor(visualMap.rangeMin); + UGL.DrawTriangle(vh, p1, p2, p3, color); + p0 = pos1 + Vector3.right * visualMap.runtimeRangeMaxHeight; + p1 = p0 + Vector3.up * halfWid; + p2 = p0 + Vector3.up * (halfWid + triangeLen); + p3 = p2 + Vector3.right * triangeLen; + color = visualMap.GetColor(visualMap.rangeMax); + UGL.DrawTriangle(vh, p1, p2, p3, color); + } + break; + + case Orient.Vertical: + pos1 = centerPos + Vector3.down * halfHig; + pos2 = centerPos + Vector3.up * halfHig; + dir = Vector3.up; + xRadius = halfWid; + yRadius = splitWid / 2; + isVertical = true; + if (visualMap.calculable) + { + var p0 = pos1 + Vector3.up * visualMap.runtimeRangeMinHeight; + var p1 = p0 + Vector3.right * halfWid; + var p2 = p0 + Vector3.right * (halfWid + triangeLen); + var p3 = p2 + Vector3.down * triangeLen; + var color = visualMap.GetColor(visualMap.rangeMin); + UGL.DrawTriangle(vh, p1, p2, p3, color); + p0 = pos1 + Vector3.up * visualMap.runtimeRangeMaxHeight; + p1 = p0 + Vector3.right * halfWid; + p2 = p0 + Vector3.right * (halfWid + triangeLen); + p3 = p2 + Vector3.up * triangeLen; + color = visualMap.GetColor(visualMap.rangeMax); + UGL.DrawTriangle(vh, p1, p2, p3, color); + } + break; + } + if (visualMap.calculable && + (visualMap.rangeMin > visualMap.min || visualMap.rangeMax < visualMap.max)) + { + var rangeMin = visualMap.rangeMin; + var rangeMax = visualMap.rangeMax; + var diff = (visualMap.max - visualMap.min) / (splitNum - 1); + for (int i = 1; i < splitNum; i++) + { + var splitMin = visualMap.min + (i - 1) * diff; + var splitMax = splitMin + diff; + if (rangeMin > splitMax || rangeMax < splitMin) + { + continue; + } + else if (rangeMin <= splitMin && rangeMax >= splitMax) + { + var splitPos = pos1 + dir * (i - 1 + 0.5f) * splitWid; + var startColor = colors[i - 1].color; + var toColor = visualMap.IsPiecewise() ? startColor : colors[i].color; + UGL.DrawRectangle(vh, splitPos, xRadius, yRadius, startColor, toColor, isVertical); + } + else if (rangeMin > splitMin && rangeMax >= splitMax) + { + var p0 = pos1 + dir * visualMap.runtimeRangeMinHeight; + var splitMaxPos = pos1 + dir * i * splitWid; + var splitPos = p0 + (splitMaxPos - p0) / 2; + var startColor = visualMap.GetColor(visualMap.rangeMin); + var toColor = visualMap.IsPiecewise() ? startColor : colors[i].color; + var yRadius1 = Vector3.Distance(p0, splitMaxPos) / 2; + + if (visualMap.orient == Orient.Vertical) + UGL.DrawRectangle(vh, splitPos, xRadius, yRadius1, startColor, toColor, isVertical); + else + UGL.DrawRectangle(vh, splitPos, yRadius1, yRadius, startColor, toColor, isVertical); + } + else if (rangeMax < splitMax && rangeMin <= splitMin) + { + var p0 = pos1 + dir * visualMap.runtimeRangeMaxHeight; + var splitMinPos = pos1 + dir * (i - 1) * splitWid; + var splitPos = splitMinPos + (p0 - splitMinPos) / 2; + var startColor = colors[i - 1].color; + var toColor = visualMap.IsPiecewise() ? startColor : visualMap.GetColor(visualMap.rangeMax); + var yRadius1 = Vector3.Distance(p0, splitMinPos) / 2; + + if (visualMap.orient == Orient.Vertical) + UGL.DrawRectangle(vh, splitPos, xRadius, yRadius1, startColor, toColor, isVertical); + else + UGL.DrawRectangle(vh, splitPos, yRadius1, yRadius, startColor, toColor, isVertical); + } + else + { + var p0 = pos1 + dir * visualMap.runtimeRangeMinHeight; + var p1 = pos1 + dir * visualMap.runtimeRangeMaxHeight; + var splitPos = (p0 + p1) / 2; + var startColor = visualMap.GetColor(visualMap.rangeMin); + var toColor = visualMap.GetColor(visualMap.rangeMax); + var yRadius1 = Vector3.Distance(p0, p1) / 2; + + if (visualMap.orient == Orient.Vertical) + UGL.DrawRectangle(vh, splitPos, xRadius, yRadius1, startColor, toColor, isVertical); + else + UGL.DrawRectangle(vh, splitPos, yRadius1, yRadius, startColor, toColor, isVertical); + } + } + } + else + { + for (int i = 1; i < splitNum; i++) + { + var splitPos = pos1 + dir * (i - 1 + 0.5f) * splitWid; + var startColor = colors[i - 1].color; + var toColor = visualMap.IsPiecewise() ? startColor : colors[i].color; + UGL.DrawRectangle(vh, splitPos, xRadius, yRadius, startColor, toColor, isVertical); + } + } + + if (visualMap.rangeMin > visualMap.min) + { + var p0 = pos1 + dir * visualMap.runtimeRangeMinHeight; + UGL.DrawRectangle(vh, pos1, p0, visualMap.itemWidth / 2, chart.theme.visualMap.backgroundColor); + } + if (visualMap.rangeMax < visualMap.max) + { + var p1 = pos1 + dir * visualMap.runtimeRangeMaxHeight; + UGL.DrawRectangle(vh, p1, pos2, visualMap.itemWidth / 2, chart.theme.visualMap.backgroundColor); + } + + if (visualMap.hoverLink) + { + if (visualMap.context.pointerIndex >= 0) + { + var p0 = pos1 + dir * visualMap.runtimeRangeMinHeight; + var p1 = pos1 + dir * visualMap.runtimeRangeMaxHeight; + var pointerPos = chart.pointerPos; + + if (visualMap.orient == Orient.Vertical) + { + var p2 = new Vector3(centerPos.x + halfWid, Mathf.Clamp(pointerPos.y + (triangeLen / 2), p0.y, p1.y)); + var p3 = new Vector3(centerPos.x + halfWid, Mathf.Clamp(pointerPos.y - (triangeLen / 2), p0.y, p1.y)); + var p4 = new Vector3(centerPos.x + halfWid + triangeLen / 2, pointerPos.y); + UGL.DrawTriangle(vh, p2, p3, p4, colors[visualMap.context.pointerIndex].color); + } + else + { + var p2 = new Vector3(Mathf.Clamp(pointerPos.x + (triangeLen / 2), p0.x, p1.x), centerPos.y + halfWid); + var p3 = new Vector3(Mathf.Clamp(pointerPos.x - (triangeLen / 2), p0.x, p1.x), centerPos.y + halfWid); + var p4 = new Vector3(pointerPos.x, centerPos.y + halfWid + triangeLen / 2); + UGL.DrawTriangle(vh, p2, p3, p4, colors[visualMap.context.pointerIndex].color); + } + } + } + } + + private void DrawPiecewiseVisualMap(VertexHelper vh, VisualMap visualMap) + { + var centerPos = chart.chartPosition + visualMap.location.GetPosition(chart.chartWidth, chart.chartHeight); + var pos1 = Vector3.zero; + var pos2 = Vector3.zero; + var dir = Vector3.zero; + var halfWid = visualMap.itemWidth / 2; + var halfHig = visualMap.itemHeight / 2; + + switch (visualMap.orient) + { + case Orient.Horizonal: + for (int i = 0; i < visualMap.inRange.Count; i++) + { + var piece = visualMap.inRange[i]; + } + break; + + case Orient.Vertical: + var each = visualMap.itemHeight + visualMap.itemGap; + for (int i = 0; i < visualMap.inRange.Count; i++) + { + var piece = visualMap.inRange[i]; + var pos = new Vector3(centerPos.x, centerPos.y - each * i); + UGL.DrawRectangle(vh, pos, halfWid, halfHig, piece.color); + } + break; + } + } + + private void OnDragVisualMapStart(VisualMap visualMap) + { + if (!visualMap.show || !visualMap.showUI || !visualMap.calculable) + return; + + var inMinRect = visualMap.IsInRangeMinRect(chart.pointerPos, chart.chartRect, chart.theme.visualMap.triangeLen); + var inMaxRect = visualMap.IsInRangeMaxRect(chart.pointerPos, chart.chartRect, chart.theme.visualMap.triangeLen); + + if (inMinRect || inMaxRect) + { + if (inMinRect) + { + visualMap.context.minDrag = true; + } + else + { + visualMap.context.maxDrag = true; + } + } + } + + private void OnDragVisualMap(VisualMap visualMap) + { + if (!visualMap.show || !visualMap.showUI || !visualMap.calculable) + return; + + if (!visualMap.context.minDrag && !visualMap.context.maxDrag) + return; + + var value = visualMap.GetValue(chart.pointerPos, chart.chartRect); + if (visualMap.context.minDrag) + { + visualMap.rangeMin = value; + } + else + { + visualMap.rangeMax = value; + } + chart.RefreshChart(); + } + + private void OnDragVisualMapEnd(VisualMap visualMap) + { + if (!visualMap.show || !visualMap.showUI || !visualMap.calculable) + return; + + if (visualMap.context.minDrag || visualMap.context.maxDrag) + { + chart.RefreshChart(); + visualMap.context.minDrag = false; + visualMap.context.maxDrag = false; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHandler.cs.meta b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHandler.cs.meta new file mode 100644 index 0000000..022611e --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8db5a57b5961a493db94ac8974238d18 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHelper.cs b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHelper.cs new file mode 100644 index 0000000..6351dea --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHelper.cs @@ -0,0 +1,191 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class VisualMapHelper + { + public static void AutoSetLineMinMax(VisualMap visualMap, Serie serie, bool isY, Axis axis, Axis relativedAxis) + { + if (!IsNeedGradient(visualMap) || !visualMap.autoMinMax) + return; + + double min = 0; + double max = 0; + var xAxis = isY ? relativedAxis : axis; + var yAxis = isY ? axis : relativedAxis; + if (visualMap.dimension == 0) + { + min = xAxis.IsCategory() ? 0 : xAxis.context.minValue; + max = xAxis.IsCategory() ? serie.dataCount - 1 : xAxis.context.maxValue; + SetMinMax(visualMap, min, max); + } + else + { + min = yAxis.IsCategory() ? 0 : yAxis.context.minValue; + max = yAxis.IsCategory() ? serie.dataCount - 1 : yAxis.context.maxValue; + SetMinMax(visualMap, min, max); + } + } + + public static void SetMinMax(VisualMap visualMap, double min, double max) + { + if ((visualMap.min != min || visualMap.max != max)) + { + if (max >= min) + { + visualMap.min = min; + visualMap.max = max; + } + else + { + throw new Exception("SetMinMax:max < min:" + min + "," + max); + } + } + } + + public static void GetLineGradientColor(VisualMap visualMap, float xValue, float yValue, + out Color32 startColor, out Color32 toColor) + { + startColor = ChartConst.clearColor32; + toColor = ChartConst.clearColor32; + if (visualMap.dimension == 0) + { + startColor = visualMap.IsPiecewise() ? visualMap.GetColor(xValue) : visualMap.GetColor(xValue - 1); + toColor = visualMap.IsPiecewise() ? startColor : visualMap.GetColor(xValue); + } + else + { + startColor = visualMap.IsPiecewise() ? visualMap.GetColor(yValue) : visualMap.GetColor(yValue - 1); + toColor = visualMap.IsPiecewise() ? startColor : visualMap.GetColor(yValue); + } + } + + public static Color32 GetLineGradientColor(VisualMap visualMap, Vector3 pos, GridCoord grid, Axis axis, + Axis relativedAxis, Color32 defaultColor) + { + double value = 0; + double min = 0; + double max = 0; + + if (visualMap.dimension == 0) + { + min = axis.context.minValue; + max = axis.context.maxValue; + if (axis.IsCategory() && axis.boundaryGap) + { + float startX = grid.context.x + axis.context.scaleWidth / 2; + value = (min + (pos.x - startX) / (grid.context.width - axis.context.scaleWidth) * (max - min)); + if (visualMap.IsPiecewise()) + value = (int) value; + } + else + { + value = min + (pos.x - grid.context.x) / grid.context.width * (max - min); + } + } + else + { + min = relativedAxis.context.minValue; + max = relativedAxis.context.maxValue; + if (relativedAxis.IsCategory() && relativedAxis.boundaryGap) + { + float startY = grid.context.y + relativedAxis.context.scaleWidth / 2; + value = (min + (pos.y - startY) / (grid.context.height - relativedAxis.context.scaleWidth) * (max - min)); + if (visualMap.IsPiecewise()) + value = (int) value; + } + else + { + value = min + (pos.y - grid.context.y) / grid.context.height * (max - min); + } + } + + var color = visualMap.GetColor(value); + if (ChartHelper.IsClearColor(color)) + { + return defaultColor; + } + else + { + if (color.a != 0) + color.a = defaultColor.a; + + return color; + } + } + + public static Color32 GetItemStyleGradientColor(ItemStyle itemStyle, Vector3 pos, BaseChart chart, + Axis axis, Color32 defaultColor) + { + var min = axis.context.minValue; + var max = axis.context.maxValue; + var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + var value = min + (pos.x - grid.context.x) / grid.context.width * (max - min); + var rate = (value - min) / (max - min); + var color = itemStyle.GetGradientColor((float) rate, defaultColor); + + if (ChartHelper.IsClearColor(color)) + return defaultColor; + else + return color; + } + + public static Color32 GetLineStyleGradientColor(LineStyle lineStyle, Vector3 pos, GridCoord grid, + Axis axis, Color32 defaultColor) + { + var min = axis.context.minValue; + var max = axis.context.maxValue; + var value = min + (pos.x - grid.context.x) / grid.context.width * (max - min); + var rate = (value - min) / (max - min); + var color = lineStyle.GetGradientColor((float) rate, defaultColor); + + if (ChartHelper.IsClearColor(color)) + return defaultColor; + else + return color; + } + + public static bool IsNeedGradient(VisualMap visualMap) + { + if (visualMap == null) + return false; + if (!visualMap.show || (!visualMap.workOnLine && !visualMap.workOnArea)) + return false; + if (visualMap.inRange.Count <= 0) + return false; + return true; + } + public static bool IsNeedLineGradient(VisualMap visualMap) + { + if (visualMap == null) + return false; + if (!visualMap.show || !visualMap.workOnLine) + return false; + if (visualMap.inRange.Count <= 0) + return false; + return true; + } + public static bool IsNeedAreaGradient(VisualMap visualMap) + { + if (visualMap == null) + return false; + if (!visualMap.show || !visualMap.workOnArea) + return false; + if (visualMap.inRange.Count <= 0) + return false; + return true; + } + + public static int GetDimension(VisualMap visualMap, int serieDataCount) + { + var dimension = visualMap != null && visualMap.dimension >= 0 ? + visualMap.dimension : serieDataCount - 1; + + if (dimension > serieDataCount - 1) + dimension = serieDataCount - 1; + + return dimension; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHelper.cs.meta b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHelper.cs.meta new file mode 100644 index 0000000..7b98866 --- /dev/null +++ b/Assets/XCharts/Runtime/Component/VisualMap/VisualMapHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eddf18450477b4502804d13fa724e45d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord.meta b/Assets/XCharts/Runtime/Coord.meta new file mode 100644 index 0000000..fe2fbe1 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19968e8512641421f82ca8213ca6a907 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Calendar.meta b/Assets/XCharts/Runtime/Coord/Calendar.meta new file mode 100644 index 0000000..e62b633 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Calendar.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da5534d24de514e54911c0efb7b7b2ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoord.cs b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoord.cs new file mode 100644 index 0000000..8d16210 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoord.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + [ComponentHandler(typeof(CalendarCoordHandler), true)] + public class CalendarCoord : CoordSystem, IUpdateRuntimeData, ISerieContainer + { + public bool IsPointerEnter() + { + return false; + } + + public void UpdateRuntimeData(float chartX, float chartY, float chartWidth, float chartHeight) + { } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoord.cs.meta b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoord.cs.meta new file mode 100644 index 0000000..457c73a --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eccc042d880064df8a2a99be68969918 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoordHandler.cs b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoordHandler.cs new file mode 100644 index 0000000..69eb333 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoordHandler.cs @@ -0,0 +1,9 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class CalendarCoordHandler : MainComponentHandler<CalendarCoord> + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoordHandler.cs.meta b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoordHandler.cs.meta new file mode 100644 index 0000000..6825dad --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Calendar/CalendarCoordHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57a6c8647580846888712d387da72d1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Grid.meta b/Assets/XCharts/Runtime/Coord/Grid.meta new file mode 100644 index 0000000..a6c4710 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Grid.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d09a247055fa44dcab4eb4c61401a9b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Grid/GridCoord.cs b/Assets/XCharts/Runtime/Coord/Grid/GridCoord.cs new file mode 100644 index 0000000..f279faa --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Grid/GridCoord.cs @@ -0,0 +1,173 @@ +using System; +using UnityEngine; +using XUGL; + +namespace XCharts.Runtime +{ + /// <summary> + /// Grid component. + /// |Drawing grid in rectangular coordinate. Line chart, bar chart, and scatter chart can be drawn in grid. + /// |网格组件。 + /// 直角坐标系内绘图网格。可以在网格上绘制折线图,柱状图,散点图。 + /// </summary> + [Serializable] + [ComponentHandler(typeof(GridCoordHandler), true)] + public class GridCoord : CoordSystem, IUpdateRuntimeData, ISerieContainer + { + [SerializeField] private bool m_Show = true; + [SerializeField] private float m_Left = 0.1f; + [SerializeField] private float m_Right = 0.08f; + [SerializeField] private float m_Top = 0.22f; + [SerializeField] private float m_Bottom = 0.12f; + [SerializeField] private Color32 m_BackgroundColor; + [SerializeField] private bool m_ShowBorder = false; + [SerializeField] private float m_BorderWidth = 0f; + [SerializeField] private Color32 m_BorderColor; + + public GridCoordContext context = new GridCoordContext(); + + /// <summary> + /// Whether to show the grid in rectangular coordinate. + /// |是否显示直角坐标系网格。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// Distance between grid component and the left side of the container. + /// |grid 组件离容器左侧的距离。 + /// </summary> + public float left + { + get { return m_Left; } + set { if (PropertyUtil.SetStruct(ref m_Left, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between grid component and the right side of the container. + /// |grid 组件离容器右侧的距离。 + /// </summary> + public float right + { + get { return m_Right; } + set { if (PropertyUtil.SetStruct(ref m_Right, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between grid component and the top side of the container. + /// |grid 组件离容器上侧的距离。 + /// </summary> + public float top + { + get { return m_Top; } + set { if (PropertyUtil.SetStruct(ref m_Top, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between grid component and the bottom side of the container. + /// |grid 组件离容器下侧的距离。 + /// </summary> + public float bottom + { + get { return m_Bottom; } + set { if (PropertyUtil.SetStruct(ref m_Bottom, value)) SetAllDirty(); } + } + /// <summary> + /// Background color of grid, which is transparent by default. + /// |网格背景色,默认透明。 + /// </summary> + public Color32 backgroundColor + { + get { return m_BackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_BackgroundColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to show the grid border. + /// |是否显示网格边框。 + /// </summary> + public bool showBorder + { + get { return m_ShowBorder; } + set { if (PropertyUtil.SetStruct(ref m_ShowBorder, value)) SetVerticesDirty(); } + } + /// <summary> + /// Border width of grid. + /// |网格边框宽。 + /// </summary> + public float borderWidth + { + get { return m_BorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_BorderWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// The color of grid border. + /// |网格边框颜色。 + /// </summary> + public Color32 borderColor + { + get { return m_BorderColor; } + set { if (PropertyUtil.SetColor(ref m_BorderColor, value)) SetVerticesDirty(); } + } + + public bool IsPointerEnter() + { + return context.isPointerEnter; + } + + public void UpdateRuntimeData(float chartX, float chartY, float chartWidth, float chartHeight) + { + context.left = left <= 1 ? left * chartWidth : left; + context.bottom = bottom <= 1 ? bottom * chartHeight : bottom; + context.top = top <= 1 ? top * chartHeight : top; + context.right = right <= 1 ? right * chartWidth : right; + context.x = chartX + context.left; + context.y = chartY + context.bottom; + context.width = chartWidth - context.left - context.right; + context.height = chartHeight - context.top - context.bottom; + context.position = new Vector3(context.x, context.y); + context.center = new Vector3(context.x + context.width / 2, context.y + context.height / 2); + } + + public bool Contains(Vector3 pos) + { + return Contains(pos.x, pos.y); + } + + public bool Contains(float x, float y) + { + if (x < context.x - 1 || x > context.x + context.width + 1 || + y < context.y - 1 || y > context.y + context.height + 1) + { + return false; + } + return true; + } + + /// <summary> + /// 给定的线段和Grid边界的交点 + /// </summary> + /// <param name="sp"></param> + /// <param name="ep"></param> + /// <returns></returns> + public bool BoundaryPoint(Vector3 sp, Vector3 ep, ref Vector3 point) + { + if (Contains(sp) && Contains(ep)) + { + point = ep; + return false; + } + var lb = new Vector3(context.x, context.y); + var lt = new Vector3(context.x, context.y + context.height); + var rt = new Vector3(context.x + context.width, context.y + context.height); + var rb = new Vector3(context.x + context.width, context.y); + if (UGLHelper.GetIntersection(sp, ep, rb, rt, ref point)) + return true; + if (UGLHelper.GetIntersection(sp, ep, lt, rt, ref point)) + return true; + if (UGLHelper.GetIntersection(sp, ep, lb, rb, ref point)) + return true; + if (UGLHelper.GetIntersection(sp, ep, lb, lt, ref point)) + return true; + return false; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Grid/GridCoord.cs.meta b/Assets/XCharts/Runtime/Coord/Grid/GridCoord.cs.meta new file mode 100644 index 0000000..9c3e968 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Grid/GridCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f99c74cc7f2c44bfcae9f5c40e6b7c46 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Grid/GridCoordContext.cs b/Assets/XCharts/Runtime/Coord/Grid/GridCoordContext.cs new file mode 100644 index 0000000..be4ac7a --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Grid/GridCoordContext.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public class GridCoordContext : MainComponentContext + { + public float x; + public float y; + public float width; + public float height; + public Vector3 position; + public Vector3 center; + public float left; + public float right; + public float bottom; + public float top; + public bool isPointerEnter; + public List<ChartLabel> endLabelList = new List<ChartLabel>(); + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Grid/GridCoordContext.cs.meta b/Assets/XCharts/Runtime/Coord/Grid/GridCoordContext.cs.meta new file mode 100644 index 0000000..13f0b39 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Grid/GridCoordContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a7c139761fe64d93be4c65619a0fd38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Grid/GridCoordHandler.cs b/Assets/XCharts/Runtime/Coord/Grid/GridCoordHandler.cs new file mode 100644 index 0000000..03dec59 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Grid/GridCoordHandler.cs @@ -0,0 +1,90 @@ +using System; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class GridCoordHandler : MainComponentHandler<GridCoord> + { + public override void InitComponent() + { + var grid = component; + grid.painter = chart.painter; + grid.refreshComponent = delegate() + { + grid.UpdateRuntimeData(chart.chartX, chart.chartY, chart.chartWidth, chart.chartHeight); + chart.OnCoordinateChanged(); + }; + grid.refreshComponent(); + } + + public override void CheckComponent(StringBuilder sb) + { + var grid = component; + if (grid.left >= chart.chartWidth) + sb.Append("warning:grid->left > chartWidth\n"); + if (grid.right >= chart.chartWidth) + sb.Append("warning:grid->right > chartWidth\n"); + if (grid.top >= chart.chartHeight) + sb.Append("warning:grid->top > chartHeight\n"); + if (grid.bottom >= chart.chartHeight) + sb.Append("warning:grid->bottom > chartHeight\n"); + if (grid.left + grid.right >= chart.chartWidth) + sb.Append("warning:grid.left + grid.right > chartWidth\n"); + if (grid.top + grid.bottom >= chart.chartHeight) + sb.Append("warning:grid.top + grid.bottom > chartHeight\n"); + } + + public override void Update() + { + if (chart.isPointerInChart) + { + component.context.isPointerEnter = component.Contains(chart.pointerPos); + } + else + { + component.context.isPointerEnter = false; + } + } + + public override void DrawBase(VertexHelper vh) + { + if (!SeriesHelper.IsAnyClipSerie(chart.series)) + { + DrawCoord(vh, component); + } + } + public override void DrawTop(VertexHelper vh) + { + if (SeriesHelper.IsAnyClipSerie(chart.series)) + { + DrawCoord(vh, component); + } + } + + private void DrawCoord(VertexHelper vh, GridCoord grid) + { + if (!grid.show) return; + if (!ChartHelper.IsClearColor(grid.backgroundColor)) + { + var p1 = new Vector2(grid.context.x, grid.context.y); + var p2 = new Vector2(grid.context.x, grid.context.y + grid.context.height); + var p3 = new Vector2(grid.context.x + grid.context.width, grid.context.y + grid.context.height); + var p4 = new Vector2(grid.context.x + grid.context.width, grid.context.y); + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, grid.backgroundColor); + } + if (grid.showBorder) + { + var borderWidth = grid.borderWidth == 0 ? chart.theme.axis.lineWidth * 2 : grid.borderWidth; + var borderColor = ChartHelper.IsClearColor(grid.borderColor) ? + chart.theme.axis.lineColor : + grid.borderColor; + UGL.DrawBorder(vh, grid.context.center, grid.context.width - borderWidth, + grid.context.height - borderWidth, borderWidth, borderColor); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Grid/GridCoordHandler.cs.meta b/Assets/XCharts/Runtime/Coord/Grid/GridCoordHandler.cs.meta new file mode 100644 index 0000000..ed91ce7 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Grid/GridCoordHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e22a9b603e57459f97040b285f3936a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Parallel.meta b/Assets/XCharts/Runtime/Coord/Parallel.meta new file mode 100644 index 0000000..081c678 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Parallel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 30b1519a34fcc4ca3a56834527584719 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoord.cs b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoord.cs new file mode 100644 index 0000000..73147bc --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoord.cs @@ -0,0 +1,123 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Grid component. + /// |Drawing grid in rectangular coordinate. Line chart, bar chart, and scatter chart can be drawn in grid. + /// |网格组件。 + /// 直角坐标系内绘图网格。可以在网格上绘制折线图,柱状图,散点图。 + /// </summary> + [Serializable] + [ComponentHandler(typeof(ParallelCoordHandler), true)] + public class ParallelCoord : CoordSystem, IUpdateRuntimeData, ISerieContainer + { + [SerializeField] private bool m_Show = true; + [SerializeField] protected Orient m_Orient = Orient.Vertical; + [SerializeField] private float m_Left = 0.1f; + [SerializeField] private float m_Right = 0.08f; + [SerializeField] private float m_Top = 0.22f; + [SerializeField] private float m_Bottom = 0.12f; + [SerializeField] private Color m_BackgroundColor; + + public ParallelCoordContext context = new ParallelCoordContext(); + + /// <summary> + /// Whether to show the grid in rectangular coordinate. + /// |是否显示直角坐标系网格。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// Orientation of the axis. By default, it's 'Vertical'. You can set it to be 'Horizonal' to make a vertical axis. + /// |坐标轴朝向。默认为垂直朝向。 + /// </summary> + public Orient orient + { + get { return m_Orient; } + set { if (PropertyUtil.SetStruct(ref m_Orient, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between grid component and the left side of the container. + /// |grid 组件离容器左侧的距离。 + /// </summary> + public float left + { + get { return m_Left; } + set { if (PropertyUtil.SetStruct(ref m_Left, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between grid component and the right side of the container. + /// |grid 组件离容器右侧的距离。 + /// </summary> + public float right + { + get { return m_Right; } + set { if (PropertyUtil.SetStruct(ref m_Right, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between grid component and the top side of the container. + /// |grid 组件离容器上侧的距离。 + /// </summary> + public float top + { + get { return m_Top; } + set { if (PropertyUtil.SetStruct(ref m_Top, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between grid component and the bottom side of the container. + /// |grid 组件离容器下侧的距离。 + /// </summary> + public float bottom + { + get { return m_Bottom; } + set { if (PropertyUtil.SetStruct(ref m_Bottom, value)) SetAllDirty(); } + } + /// <summary> + /// Background color of grid, which is transparent by default. + /// |网格背景色,默认透明。 + /// </summary> + public Color backgroundColor + { + get { return m_BackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_BackgroundColor, value)) SetVerticesDirty(); } + } + + public bool IsPointerEnter() + { + return context.runtimeIsPointerEnter; + } + + public void UpdateRuntimeData(float chartX, float chartY, float chartWidth, float chartHeight) + { + context.left = left <= 1 ? left * chartWidth : left; + context.bottom = bottom <= 1 ? bottom * chartHeight : bottom; + context.top = top <= 1 ? top * chartHeight : top; + context.right = right <= 1 ? right * chartWidth : right; + context.x = chartX + context.left; + context.y = chartY + context.bottom; + context.width = chartWidth - context.left - context.right; + context.height = chartHeight - context.top - context.bottom; + context.position = new Vector3(context.x, context.y); + } + + public bool Contains(Vector3 pos) + { + return Contains(pos.x, pos.y); + } + + public bool Contains(float x, float y) + { + if (x < context.x - 1 || x > context.x + context.width + 1 || + y < context.y - 1 || y > context.y + context.height + 1) + { + return false; + } + return true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoord.cs.meta b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoord.cs.meta new file mode 100644 index 0000000..273d285 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7be31c76736845a9b2c92a7b8051290 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordContext.cs b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordContext.cs new file mode 100644 index 0000000..1d545f9 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordContext.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public class ParallelCoordContext : MainComponentContext + { + public float x; + public float y; + public float width; + public float height; + public Vector3 position; + public float left; + public float right; + public float bottom; + public float top; + public bool runtimeIsPointerEnter; + internal List<ParallelAxis> parallelAxes = new List<ParallelAxis>(); + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordContext.cs.meta b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordContext.cs.meta new file mode 100644 index 0000000..ac0ce5f --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14f338556609b48568d2504a1b153be7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordHandler.cs b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordHandler.cs new file mode 100644 index 0000000..315e477 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordHandler.cs @@ -0,0 +1,176 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class ParallelCoordHandler : MainComponentHandler<ParallelCoord> + { + private Dictionary<int, double> m_SerieDimMin = new Dictionary<int, double>(); + private Dictionary<int, double> m_SerieDimMax = new Dictionary<int, double>(); + private double m_LastInterval; + private int m_LastSplitNumber; + + public override void InitComponent() + { + var grid = component; + grid.painter = chart.painter; + grid.refreshComponent = delegate() + { + grid.UpdateRuntimeData(chart.chartX, chart.chartY, chart.chartWidth, chart.chartHeight); + chart.OnCoordinateChanged(); + }; + grid.refreshComponent(); + } + + public override void CheckComponent(StringBuilder sb) + { + var grid = component; + if (grid.left >= chart.chartWidth) + sb.Append("warning:grid->left > chartWidth\n"); + if (grid.right >= chart.chartWidth) + sb.Append("warning:grid->right > chartWidth\n"); + if (grid.top >= chart.chartHeight) + sb.Append("warning:grid->top > chartHeight\n"); + if (grid.bottom >= chart.chartHeight) + sb.Append("warning:grid->bottom > chartHeight\n"); + if (grid.left + grid.right >= chart.chartWidth) + sb.Append("warning:grid.left + grid.right > chartWidth\n"); + if (grid.top + grid.bottom >= chart.chartHeight) + sb.Append("warning:grid.top + grid.bottom > chartHeight\n"); + } + + public override void Update() + { + UpdatePointerEnter(); + UpdateParallelAxisMinMaxValue(); + } + + public override void DrawBase(VertexHelper vh) + { + if (!SeriesHelper.IsAnyClipSerie(chart.series)) + { + DrawCoord(vh); + } + } + public override void DrawTop(VertexHelper vh) + { + if (SeriesHelper.IsAnyClipSerie(chart.series)) + { + DrawCoord(vh); + } + } + + private void DrawCoord(VertexHelper vh) + { + var grid = component; + if (grid.show && !ChartHelper.IsClearColor(grid.backgroundColor)) + { + var p1 = new Vector2(grid.context.x, grid.context.y); + var p2 = new Vector2(grid.context.x, grid.context.y + grid.context.height); + var p3 = new Vector2(grid.context.x + grid.context.width, grid.context.y + grid.context.height); + var p4 = new Vector2(grid.context.x + grid.context.width, grid.context.y); + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, grid.backgroundColor); + } + } + + private void UpdatePointerEnter() + { + if (chart.isPointerInChart) + component.context.runtimeIsPointerEnter = component.Contains(chart.pointerPos); + else + component.context.runtimeIsPointerEnter = false; + } + + private void UpdateParallelAxisMinMaxValue() + { + var list = chart.GetChartComponents<ParallelAxis>(); + if (list.Count != component.context.parallelAxes.Count) + { + component.context.parallelAxes.Clear(); + foreach (var com in chart.GetChartComponents<ParallelAxis>()) + { + var axis = com as ParallelAxis; + if (axis.parallelIndex == component.index) + component.context.parallelAxes.Add(axis); + } + } + m_SerieDimMin.Clear(); + m_SerieDimMax.Clear(); + foreach (var serie in chart.series) + { + if ((serie is Parallel) && serie.parallelIndex == component.index) + { + foreach (var serieData in serie.data) + { + for (int i = 0; i < serieData.data.Count; i++) + { + var value = serieData.data[i]; + if (!m_SerieDimMin.ContainsKey(i)) + m_SerieDimMin[i] = value; + else if (m_SerieDimMin[i] > value) + m_SerieDimMin[i] = value; + + if (!m_SerieDimMax.ContainsKey(i)) + m_SerieDimMax[i] = value; + else if (m_SerieDimMax[i] < value) + m_SerieDimMax[i] = value; + } + } + } + } + for (int i = 0; i < component.context.parallelAxes.Count; i++) + { + var axis = component.context.parallelAxes[i]; + if (axis.IsCategory()) + { + m_SerieDimMax[i] = axis.data.Count > 0 ? axis.data.Count - 1 : 0; + m_SerieDimMin[i] = 0; + } + else if (axis.minMaxType == Axis.AxisMinMaxType.Custom) + { + m_SerieDimMin[i] = axis.min; + m_SerieDimMax[i] = axis.max; + } + else if (m_SerieDimMax.ContainsKey(i)) + { + + var tempMinValue = m_SerieDimMin[i]; + var tempMaxValue = m_SerieDimMax[i]; + AxisHelper.AdjustMinMaxValue(axis, ref tempMinValue, ref tempMaxValue, true); + m_SerieDimMin[i] = tempMinValue; + m_SerieDimMax[i] = tempMaxValue; + } + } + for (int i = 0; i < component.context.parallelAxes.Count; i++) + { + if (m_SerieDimMax.ContainsKey(i)) + { + var axis = component.context.parallelAxes[i]; + var tempMinValue = m_SerieDimMin[i]; + var tempMaxValue = m_SerieDimMax[i]; + + if (tempMinValue != axis.context.minValue || + tempMaxValue != axis.context.maxValue || + m_LastInterval != axis.interval || + m_LastSplitNumber != axis.splitNumber) + { + m_LastSplitNumber = axis.splitNumber; + m_LastInterval = axis.interval; + + axis.UpdateMinMaxValue(tempMinValue, tempMaxValue); + axis.context.offset = 0; + axis.context.lastCheckInverse = axis.inverse; + + AxisHandler<ParallelAxis>.UpdateAxisTickValueList(axis); + (axis.handler as ParallelAxisHander).UpdateAxisLabelText(axis); + chart.RefreshChart(); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordHandler.cs.meta b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordHandler.cs.meta new file mode 100644 index 0000000..e7ee712 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Parallel/ParallelCoordHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb7323519e00e4916a9c42c5faa36a38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Polar.meta b/Assets/XCharts/Runtime/Coord/Polar.meta new file mode 100644 index 0000000..d1b31bf --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43b3734481ac34ff89708f2edfa473ca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarCoord.cs b/Assets/XCharts/Runtime/Coord/Polar/PolarCoord.cs new file mode 100644 index 0000000..b251c93 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarCoord.cs @@ -0,0 +1,71 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Polar coordinate can be used in scatter and line chart. Every polar coordinate has an angleAxis and a radiusAxis. + /// |极坐标系组件。 + /// 极坐标系,可以用于散点图和折线图。每个极坐标系拥有一个角度轴和一个半径轴。 + /// </summary> + [Serializable] + [ComponentHandler(typeof(PolarCoordHandler), true)] + public class PolarCoord : CoordSystem, ISerieContainer + { + [SerializeField] private bool m_Show = true; + [SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.45f }; + [SerializeField] private float m_Radius = 0.35f; + [SerializeField] private Color m_BackgroundColor; + + public PolarCoordContext context = new PolarCoordContext(); + + /// <summary> + /// Whether to show the polor component. + /// |是否显示极坐标。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); } + } + /// <summary> + /// The center of ploar. The center[0] is the x-coordinate, and the center[1] is the y-coordinate. + /// When value between 0 and 1 represents a percentage relative to the chart. + /// |极坐标的中心点。数组的第一项是横坐标,第二项是纵坐标。 + /// 当值为0-1之间时表示百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度。 + /// </summary> + public float[] center + { + get { return m_Center; } + set { if (value != null) { m_Center = value; SetAllDirty(); } } + } + /// <summary> + /// the radius of polar. + /// |极坐标的半径。 + /// </summary> + public float radius + { + get { return m_Radius; } + set { if (PropertyUtil.SetStruct(ref m_Radius, value)) SetAllDirty(); } + } + /// <summary> + /// Background color of polar, which is transparent by default. + /// |极坐标的背景色,默认透明。 + /// </summary> + public Color backgroundColor + { + get { return m_BackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_BackgroundColor, value)) SetVerticesDirty(); } + } + + public bool IsPointerEnter() + { + return context.isPointerEnter; + } + + public bool Contains(Vector3 pos) + { + return Vector3.Distance(pos, context.center) < context.radius; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarCoord.cs.meta b/Assets/XCharts/Runtime/Coord/Polar/PolarCoord.cs.meta new file mode 100644 index 0000000..03d8791 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec567fac460994411a8aadcb5e0f9b68 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarCoordContext.cs b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordContext.cs new file mode 100644 index 0000000..035c2ca --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordContext.cs @@ -0,0 +1,20 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + public class PolarCoordContext : MainComponentContext + { + /// <summary> + /// the center position of polar in container. + /// |极坐标在容器中的具体中心点。 + /// </summary> + public Vector3 center; + /// <summary> + /// the true radius of polar. + /// |极坐标的运行时实际半径。 + /// </summary> + public float radius; + public bool isPointerEnter; + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarCoordContext.cs.meta b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordContext.cs.meta new file mode 100644 index 0000000..e448702 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2eaaaa315fbae4fc3a9976f51a1396b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarCoordHandler.cs b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordHandler.cs new file mode 100644 index 0000000..7c176a8 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordHandler.cs @@ -0,0 +1,35 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class PolarCoordHandler : MainComponentHandler<PolarCoord> + { + public override void Update() + { + PolarHelper.UpdatePolarCenter(component, chart.chartPosition, chart.chartWidth, chart.chartHeight); + + if (chart.isPointerInChart) + component.context.isPointerEnter = component.Contains(chart.pointerPos); + else + component.context.isPointerEnter = false; + } + + public override void DrawBase(VertexHelper vh) + { + DrawPolar(vh, component); + } + + private void DrawPolar(VertexHelper vh, PolarCoord polar) + { + PolarHelper.UpdatePolarCenter(polar, chart.chartPosition, chart.chartWidth, chart.chartHeight); + if (!ChartHelper.IsClearColor(polar.backgroundColor)) + { + UGL.DrawCricle(vh, polar.context.center, polar.context.radius, polar.backgroundColor); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarCoordHandler.cs.meta b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordHandler.cs.meta new file mode 100644 index 0000000..d3e4351 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarCoordHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af4b941946def4928b416260dec7ac9b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarHelper.cs b/Assets/XCharts/Runtime/Coord/Polar/PolarHelper.cs new file mode 100644 index 0000000..fa51a52 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarHelper.cs @@ -0,0 +1,27 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + internal static class PolarHelper + { + public static void UpdatePolarCenter(PolarCoord polar, Vector3 chartPosition, float chartWidth, float chartHeight) + { + if (polar.center.Length < 2) return; + var centerX = polar.center[0] <= 1 ? chartWidth * polar.center[0] : polar.center[0]; + var centerY = polar.center[1] <= 1 ? chartHeight * polar.center[1] : polar.center[1]; + polar.context.center = chartPosition + new Vector3(centerX, centerY); + if (polar.radius <= 0) + { + polar.context.radius = 0; + } + else if (polar.radius <= 1) + { + polar.context.radius = Mathf.Min(chartWidth, chartHeight) * polar.radius; + } + else + { + polar.context.radius = polar.radius; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/Polar/PolarHelper.cs.meta b/Assets/XCharts/Runtime/Coord/Polar/PolarHelper.cs.meta new file mode 100644 index 0000000..8ec1778 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/Polar/PolarHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: feb363cc2ae0846b89612143ce4535ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/SingleAxis.meta b/Assets/XCharts/Runtime/Coord/SingleAxis.meta new file mode 100644 index 0000000..a460d59 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/SingleAxis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 102d61482a6f946cc82f228c88369dfd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Coord/SingleAxis/SingleAxisCoord.cs b/Assets/XCharts/Runtime/Coord/SingleAxis/SingleAxisCoord.cs new file mode 100644 index 0000000..990ebe3 --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/SingleAxis/SingleAxisCoord.cs @@ -0,0 +1,9 @@ +using System; + +namespace XCharts.Runtime +{ + [Serializable] + [ComponentHandler(null)] + public class SingleAxisCoord : CoordSystem + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Coord/SingleAxis/SingleAxisCoord.cs.meta b/Assets/XCharts/Runtime/Coord/SingleAxis/SingleAxisCoord.cs.meta new file mode 100644 index 0000000..84b8cde --- /dev/null +++ b/Assets/XCharts/Runtime/Coord/SingleAxis/SingleAxisCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3e972d6eb5bc45e1ba7b2c5740474fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Helper.meta b/Assets/XCharts/Runtime/Helper.meta new file mode 100644 index 0000000..f8b14dc --- /dev/null +++ b/Assets/XCharts/Runtime/Helper.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58d150a402b5e4bfcbec6a28cba7ed44 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Helper/CheckHelper.cs b/Assets/XCharts/Runtime/Helper/CheckHelper.cs new file mode 100644 index 0000000..8ccd886 --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/CheckHelper.cs @@ -0,0 +1,138 @@ +using System.Text; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class CheckHelper + { + private static bool IsColorAlphaZero(Color color) + { + return !ChartHelper.IsClearColor(color) && color.a == 0; + } + + public static string CheckChart(BaseGraph chart) + { + if (chart is BaseChart) return CheckChart((BaseChart) chart); + else return string.Empty; + } + + public static string CheckChart(BaseChart chart) + { + var sb = ChartHelper.sb; + sb.Length = 0; + CheckName(chart, sb); + CheckSize(chart, sb); + CheckTheme(chart, sb); + CheckTitle(chart, sb); + CheckLegend(chart, sb); + CheckGrid(chart, sb); + CheckSerie(chart, sb); + return sb.ToString(); + } + + private static void CheckName(BaseChart chart, StringBuilder sb) + { + if (string.IsNullOrEmpty(chart.chartName)) return; + var list = XChartsMgr.GetCharts(chart.chartName); + if (list.Count > 1) + { + sb.AppendFormat("warning:chart name is repeated: {0}\n", chart.chartName); + } + } + + private static void CheckSize(BaseChart chart, StringBuilder sb) + { + if (chart.chartWidth == 0 || chart.chartHeight == 0) + { + sb.Append("warning:chart width or height is 0\n"); + } + } + + private static void CheckTheme(BaseChart chart, StringBuilder sb) + { + var theme = chart.theme; + theme.CheckWarning(sb); + } + + private static void CheckTitle(BaseChart chart, StringBuilder sb) + { + // foreach (var title in chart.titles) + // { + // if (!title.show) return; + // if (string.IsNullOrEmpty(title.text)) sb.AppendFormat("warning:title{0}->text is null\n", title.index); + // if (IsColorAlphaZero(title.textStyle.color)) + // sb.AppendFormat("warning:title{0}->textStyle->color alpha is 0\n", title.index); + // if (IsColorAlphaZero(title.subTextStyle.color)) + // sb.AppendFormat("warning:title{0}->subTextStyle->color alpha is 0\n", title.index); + // } + } + + private static void CheckLegend(BaseChart chart, StringBuilder sb) + { } + + private static void CheckGrid(BaseChart chart, StringBuilder sb) + { } + + private static void CheckSerie(BaseChart chart, StringBuilder sb) + { + var allDataIsEmpty = true; + var allDataIsZero = true; + var allSerieIsHide = true; + foreach (var serie in chart.series) + { + if (serie.show) allSerieIsHide = false; + if (serie.dataCount > 0) + { + allDataIsEmpty = false; + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.GetSerieData(i); + for (int j = 1; j < serieData.data.Count; j++) + { + if (serieData.GetData(j) != 0) + { + allDataIsZero = false; + break; + } + } + } + var dataCount = serie.GetSerieData(0).data.Count; + if (serie.showDataDimension > 1 && serie.showDataDimension != dataCount) + { + sb.AppendFormat("warning:serie {0} serieData.data.count[{1}] not match showDataDimension[{2}]\n", serie.index, dataCount, serie.showDataDimension); + } + } + else + { + sb.AppendFormat("warning:serie {0} no data\n", serie.index); + } + if (IsColorAlphaZero(serie.itemStyle.color)) + sb.AppendFormat("warning:serie {0} itemStyle->color alpha is 0\n", serie.index); + if (serie.itemStyle.opacity == 0) + sb.AppendFormat("warning:serie {0} itemStyle->opacity is 0\n", serie.index); + if (serie.itemStyle.borderWidth != 0 && IsColorAlphaZero(serie.itemStyle.borderColor)) + sb.AppendFormat("warning:serie {0} itemStyle->borderColor alpha is 0\n", serie.index); + if (serie is Line) + { + if (serie.lineStyle.opacity == 0) + sb.AppendFormat("warning:serie {0} lineStyle->opacity is 0\n", serie.index); + if (IsColorAlphaZero(serie.lineStyle.color)) + sb.AppendFormat("warning:serie {0} lineStyle->color alpha is 0\n", serie.index); + } + else if (serie is Pie) + { + if (serie.radius.Length >= 2 && serie.radius[1] == 0) + sb.AppendFormat("warning:serie {0} radius[1] is 0\n", serie.index); + } + else if (serie is Scatter || serie is EffectScatter) + { + if (!serie.symbol.show) + sb.AppendFormat("warning:serie {0} symbol type is None\n", serie.index); + } + } + if (allDataIsEmpty) sb.Append("warning:all serie data is empty\n"); + if (!allDataIsEmpty && allDataIsZero) sb.Append("warning:all serie data is 0\n"); + if (allSerieIsHide) sb.Append("warning:all serie is hide\n"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Helper/CheckHelper.cs.meta b/Assets/XCharts/Runtime/Helper/CheckHelper.cs.meta new file mode 100644 index 0000000..56e1a2f --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/CheckHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09a50ff0a7fdb4174b4dc2d28fc08b6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Helper/FormatterHelper.cs b/Assets/XCharts/Runtime/Helper/FormatterHelper.cs new file mode 100644 index 0000000..06490eb --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/FormatterHelper.cs @@ -0,0 +1,277 @@ +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class FormatterHelper + { + public const string PH_NN = "\n"; + private static Regex s_Regex = new Regex(@"{([a-g|.]\d*)(:\d+(-\d+)?)?(:[c-g|x|p|r]\d*|:0\.#*)?}", RegexOptions.IgnoreCase); + private static Regex s_RegexSub = new Regex(@"(0\.#*)|(\d+-\d+)|(\w+)|(\.)", RegexOptions.IgnoreCase); + private static Regex s_RegexN = new Regex(@"^\d+", RegexOptions.IgnoreCase); + private static Regex s_RegexN_N = new Regex(@"\d+-\d+", RegexOptions.IgnoreCase); + private static Regex s_RegexFn = new Regex(@"[c-g|x|p|r]\d*|0\.#*", RegexOptions.IgnoreCase); + private static Regex s_RegexNewLine = new Regex(@"[\\|/]+n|</br>|<br>|<br/>", RegexOptions.IgnoreCase); + private static Regex s_RegexForAxisLabel = new Regex(@"{value(:[c-g|x|p|r]\d*)?}", RegexOptions.IgnoreCase); + private static Regex s_RegexSubForAxisLabel = new Regex(@"(value)|([c-g|x|p|r]\d*)", RegexOptions.IgnoreCase); + private static Regex s_RegexForSerieLabel = new Regex(@"{[a-g|\.](:[c-g|x|p|r]\d*)?}", RegexOptions.IgnoreCase); + private static Regex s_RegexSubForSerieLabel = new Regex(@"(\.)|([a-g])|([c-g|x|p|r]\d*)", RegexOptions.IgnoreCase); + + public static bool NeedFormat(string content) + { + return content.IndexOf('{') >= 0; + } + + /// <summary> + /// 替换字符串中的通配符,支持的通配符有{.}、{a}、{b}、{c}、{d}、{e}、{f}、{g}。 + /// </summary> + /// <param name="content">要替换的字符串</param> + /// <param name="dataIndex">选中的数据项serieData索引</param> + /// <param name="numericFormatter">默认的数字格式化</param> + /// <param name="serie">选中的serie</param> + /// <param name="series">所有serie</param> + /// <param name="theme">用来获取指定index的颜色</param> + /// <param name="category">选中的类目,一般用在折线图和柱状图</param> + /// <param name="dataZoom">dataZoom</param> + /// <returns></returns> + public static bool ReplaceContent(ref string content, int dataIndex, string numericFormatter, Serie serie, + BaseChart chart, DataZoom dataZoom = null) + { + var foundDot = false; + var mc = s_Regex.Matches(content); + foreach (var m in mc) + { + var old = m.ToString(); + var args = s_RegexSub.Matches(m.ToString()); + var argsCount = args.Count; + if (argsCount <= 0) continue; + int targetIndex = 0; + char p = GetSerieIndex(args[0].ToString(), ref targetIndex); + if (targetIndex >= 0) + { + serie = chart.GetSerie(targetIndex); + if (serie == null) continue; + } + else if (serie != null) + { + targetIndex = serie.index; + } + else + { + serie = chart.GetSerie(0); + targetIndex = 0; + } + if (serie == null) continue; + if (p == '.') + { + var bIndex = targetIndex; + if (argsCount >= 2) + { + var args1Str = args[1].ToString(); + if (s_RegexN.IsMatch(args1Str)) bIndex = int.Parse(args1Str); + } + content = content.Replace(old, ChartCached.ColorToDotStr(chart.theme.GetColor(bIndex))); + foundDot = true; + } + else if (p == 'a' || p == 'A') + { + if (argsCount == 1) + { + content = content.Replace(old, serie.serieName); + } + } + else if (p == 'b' || p == 'B' || p == 'e' || p == 'E') + { + var bIndex = dataIndex; + if (argsCount >= 2) + { + var args1Str = args[1].ToString(); + if (s_RegexN.IsMatch(args1Str)) bIndex = int.Parse(args1Str); + } + var needCategory = (p != 'e' && p != 'E') && (serie is Line || serie is Bar); + if (needCategory) + { + var category = chart.GetTooltipCategory(dataIndex, serie, dataZoom); + content = content.Replace(old, category); + } + else + { + var serieData = serie.GetSerieData(bIndex, dataZoom); + content = content.Replace(old, serieData.name); + } + } + else if (p == 'g' || p == 'G') + { + content = content.Replace(old, ChartCached.NumberToStr(serie.dataCount, "")); + } + else if (p == 'c' || p == 'C' || p == 'd' || p == 'D' || p == 'f' || p == 'f') + { + var isPercent = p == 'd' || p == 'D'; + var isTotal = p == 'f' || p == 'f'; + var bIndex = dataIndex; + var dimensionIndex = -1; + if (argsCount >= 2) + { + var args1Str = args[1].ToString(); + if (s_RegexFn.IsMatch(args1Str)) + { + numericFormatter = args1Str; + } + else if (s_RegexN_N.IsMatch(args1Str)) + { + var temp = args1Str.Split('-'); + bIndex = int.Parse(temp[0]); + dimensionIndex = int.Parse(temp[1]); + } + else if (s_RegexN.IsMatch(args1Str)) + { + dimensionIndex = int.Parse(args1Str); + } + else + { + Debug.LogError("unmatch:" + args1Str); + continue; + } + } + if (argsCount >= 3) + { + numericFormatter = args[2].ToString(); + } + if (dimensionIndex == -1) dimensionIndex = 1; + if (numericFormatter == string.Empty) + { + numericFormatter = SerieHelper.GetNumericFormatter(serie, serie.GetSerieData(bIndex), ""); + } + var value = serie.GetData(bIndex, dimensionIndex, dataZoom); + if (isPercent) + { + var total = serie.GetDataTotal(dimensionIndex, serie.GetSerieData(bIndex)); + var percent = total == 0 ? 0 : value / serie.yTotal * 100; + content = content.Replace(old, ChartCached.FloatToStr(percent, numericFormatter)); + } + else if (isTotal) + { + var total = serie.GetDataTotal(dimensionIndex, serie.GetSerieData(bIndex)); + content = content.Replace(old, ChartCached.FloatToStr(total, numericFormatter)); + } + else + { + content = content.Replace(old, ChartCached.FloatToStr(value, numericFormatter)); + } + } + } + content = s_RegexNewLine.Replace(content, PH_NN); + return foundDot; + } + + public static void ReplaceSerieLabelContent(ref string content, string numericFormatter, int dataCount, double value, double total, + string serieName, string category, string dataName, Color color) + { + var mc = s_RegexForSerieLabel.Matches(content); + foreach (var m in mc) + { + var old = m.ToString(); + var args = s_RegexSubForSerieLabel.Matches(old); + var argsCount = args.Count; + if (argsCount <= 0) continue; + var p = args[0].ToString().ElementAt(0); + if (argsCount >= 2) + { + numericFormatter = args[1].ToString(); + } + if (p == '.') + { + content = content.Replace(old, ChartCached.ColorToDotStr(color)); + } + else if (p == 'a' || p == 'A') + { + content = content.Replace(old, serieName); + } + else if (p == 'b' || p == 'B') + { + content = content.Replace(old, category); + } + else if (p == 'e' || p == 'E') + { + content = content.Replace(old, dataName); + } + else if (p == 'd' || p == 'D') + { + var rate = total == 0 ? 0 : value / total * 100; + content = content.Replace(old, ChartCached.NumberToStr(rate, numericFormatter)); + } + else if (p == 'c' || p == 'C') + { + content = content.Replace(old, ChartCached.NumberToStr(value, numericFormatter)); + } + else if (p == 'f' || p == 'f') + { + content = content.Replace(old, ChartCached.NumberToStr(total, numericFormatter)); + } + else if (p == 'g' || p == 'G') + { + content = content.Replace(old, ChartCached.NumberToStr(dataCount, numericFormatter)); + } + } + content = TrimAndReplaceLine(content); + } + + private static char GetSerieIndex(string strType, ref int index) + { + index = -1; + if (strType.Length > 1) + { + if (!int.TryParse(strType.Substring(1), out index)) + { + index = -1; + } + } + return strType.ElementAt(0); + } + + public static string TrimAndReplaceLine(StringBuilder sb) + { + return TrimAndReplaceLine(sb.ToString()); + } + + public static string TrimAndReplaceLine(string content) + { + return s_RegexNewLine.Replace(content.Trim(), PH_NN); + } + + public static void ReplaceAxisLabelContent(ref string content, string numericFormatter, double value) + { + var mc = s_RegexForAxisLabel.Matches(content); + foreach (var m in mc) + { + var old = m.ToString(); + var args = s_RegexSubForAxisLabel.Matches(m.ToString()); + var argsCount = args.Count; + if (argsCount <= 0) continue; + if (argsCount >= 2) + { + numericFormatter = args[1].ToString(); + } + content = content.Replace(old, ChartCached.FloatToStr(value, numericFormatter)); + } + content = TrimAndReplaceLine(content); + } + + public static void ReplaceAxisLabelContent(ref string content, string value) + { + var mc = s_RegexForAxisLabel.Matches(content); + foreach (var m in mc) + { + var old = m.ToString(); + var args = s_RegexSubForAxisLabel.Matches(m.ToString()); + var argsCount = args.Count; + if (argsCount <= 0) continue; + content = content.Replace(old, value); + } + content = TrimAndReplaceLine(content); + } + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Helper/FormatterHelper.cs.meta b/Assets/XCharts/Runtime/Helper/FormatterHelper.cs.meta new file mode 100644 index 0000000..6c2e5d3 --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/FormatterHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0fddcb81df44148ed86496564b120261 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Helper/SerieHelper.cs b/Assets/XCharts/Runtime/Helper/SerieHelper.cs new file mode 100644 index 0000000..2000726 --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/SerieHelper.cs @@ -0,0 +1,783 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static partial class SerieHelper + { + public static double GetMinData(Serie serie, int dimension = 1, DataZoom dataZoom = null) + { + double min = double.MaxValue; + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show && serieData.data.Count > dimension) + { + var value = serieData.data[dimension]; + if (value < min && !serie.IsIgnoreValue(value)) min = value; + } + } + return min == double.MaxValue ? 0 : min; + } + public static SerieData GetMinSerieData(Serie serie, int dimension = 1, DataZoom dataZoom = null) + { + double min = double.MaxValue; + SerieData minData = null; + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show && serieData.data.Count > dimension) + { + var value = serieData.data[dimension]; + if (value < min && !serie.IsIgnoreValue(value)) + { + min = value; + minData = serieData; + } + } + } + return minData; + } + public static double GetMaxData(Serie serie, int dimension = 1, DataZoom dataZoom = null) + { + double max = double.MinValue; + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show && serieData.data.Count > dimension) + { + var value = serieData.data[dimension]; + if (value > max && !serie.IsIgnoreValue(value)) max = value; + } + } + return max == double.MinValue ? 0 : max; + } + public static SerieData GetMaxSerieData(Serie serie, int dimension = 1, DataZoom dataZoom = null) + { + double max = double.MinValue; + SerieData maxData = null; + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show && serieData.data.Count > dimension) + { + var value = serieData.data[dimension]; + if (value > max && !serie.IsIgnoreValue(value)) + { + max = value; + maxData = serieData; + } + } + } + return maxData; + } + + public static double GetAverageData(Serie serie, int dimension = 1, DataZoom dataZoom = null) + { + double total = 0; + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show && serieData.data.Count > dimension) + { + var value = serieData.data[dimension]; + if (!serie.IsIgnoreValue(value)) + total += value; + } + } + return total != 0 ? total / dataList.Count : 0; + } + + private static List<double> s_TempList = new List<double>(); + public static double GetMedianData(Serie serie, int dimension = 1, DataZoom dataZoom = null) + { + s_TempList.Clear(); + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show && serieData.data.Count > dimension) + { + var value = serieData.data[dimension]; + if (!serie.IsIgnoreValue(value)) + s_TempList.Add(value); + } + } + s_TempList.Sort(); + var n = s_TempList.Count; + if (n % 2 == 0) return (s_TempList[n / 2] + s_TempList[n / 2 - 1]) / 2; + else return s_TempList[n / 2]; + } + + /// <summary> + /// Gets the maximum and minimum values of the specified dimension of a serie. + /// |获得系列指定维数的最大最小值。 + /// </summary> + /// <param name="serie">指定系列</param> + /// <param name="dimension">指定维数</param> + /// <param name="min">最小值</param> + /// <param name="max">最大值</param> + /// <param name="dataZoom">缩放组件,默认null</param> + public static void GetMinMaxData(Serie serie, int dimension, out double min, out double max, + DataZoom dataZoom = null) + { + max = double.MinValue; + min = double.MaxValue; + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show && serieData.data.Count > dimension) + { + var value = serieData.data[dimension]; + if (!serie.IsIgnoreValue(value)) + { + if (value > max) max = value; + if (value < min) min = value; + } + } + } + } + + /// <summary> + /// Gets the maximum and minimum values of all data in the serie. + /// |获得系列所有数据的最大最小值。 + /// </summary> + /// <param name="serie"></param> + /// <param name="min"></param> + /// <param name="max"></param> + /// <param name="dataZoom"></param> + public static void GetMinMaxData(Serie serie, out double min, out double max, DataZoom dataZoom = null, int dimension = 0) + { + max = double.MinValue; + min = double.MaxValue; + var dataList = serie.GetDataList(dataZoom); + for (int i = 0; i < dataList.Count; i++) + { + var serieData = dataList[i]; + if (serieData.show) + { + var count = 0; + if (dimension > 0) count = dimension; + else count = serie.showDataDimension > serieData.data.Count ? + serieData.data.Count : + serie.showDataDimension; + for (int j = 0; j < count; j++) + { + var value = serieData.data[j]; + if (!serie.IsIgnoreValue(value)) + { + if (value > max) max = value; + if (value < min) min = value; + } + } + } + } + } + + /// <summary> + /// Whether the data for the specified dimension of serie are all 0. + /// |系列指定维数的数据是否全部为0。 + /// </summary> + /// <param name="serie">系列</param> + /// <param name="dimension">指定维数</param> + /// <returns></returns> + public static bool IsAllZeroValue(Serie serie, int dimension = 1) + { + foreach (var serieData in serie.data) + { + if (serieData.GetData(dimension) != 0) return false; + } + return true; + } + + /// <summary> + /// 更新运行时中心点和半径 + /// </summary> + /// <param name="chartWidth"></param> + /// <param name="chartHeight"></param> + public static void UpdateCenter(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight) + { + if (serie.center.Length < 2) return; + var centerX = serie.center[0] <= 1 ? chartWidth * serie.center[0] : serie.center[0]; + var centerY = serie.center[1] <= 1 ? chartHeight * serie.center[1] : serie.center[1]; + serie.context.center = chartPosition + new Vector3(centerX, centerY); + var minWidth = Mathf.Min(chartWidth, chartHeight); + serie.context.insideRadius = serie.radius[0] <= 1 ? minWidth * serie.radius[0] : serie.radius[0]; + serie.context.outsideRadius = serie.radius[1] <= 1 ? minWidth * serie.radius[1] : serie.radius[1]; + } + + public static void UpdateRect(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight) + { + if (serie.left != 0 || serie.right != 0 || serie.top != 0 || serie.bottom != 0) + { + var runtimeLeft = serie.left <= 1 ? serie.left * chartWidth : serie.left; + var runtimeBottom = serie.bottom <= 1 ? serie.bottom * chartHeight : serie.bottom; + var runtimeTop = serie.top <= 1 ? serie.top * chartHeight : serie.top; + var runtimeRight = serie.right <= 1 ? serie.right * chartWidth : serie.right; + + serie.context.x = chartPosition.x + runtimeLeft; + serie.context.y = chartPosition.y + runtimeBottom; + serie.context.width = chartWidth - runtimeLeft - runtimeRight; + serie.context.height = chartHeight - runtimeTop - runtimeBottom; + serie.context.center = new Vector3(serie.context.x + serie.context.width / 2, + serie.context.y + serie.context.height / 2); + serie.context.rect = new Rect(serie.context.x, serie.context.y, serie.context.width, serie.context.height); + } + else + { + serie.context.x = chartPosition.x; + serie.context.y = chartPosition.y; + serie.context.width = chartWidth; + serie.context.height = chartHeight; + serie.context.center = chartPosition + new Vector3(chartWidth / 2, chartHeight / 2); + serie.context.rect = new Rect(serie.context.x, serie.context.y, serie.context.width, serie.context.height); + } + } + + public static Color32 GetItemBackgroundColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, + bool highlight, bool useDefault = true) + { + var color = ChartConst.clearColor32; + if (highlight) + { + var itemStyleEmphasis = GetItemStyleEmphasis(serie, serieData); + if (itemStyleEmphasis != null && !ChartHelper.IsClearColor(itemStyleEmphasis.backgroundColor)) + { + color = itemStyleEmphasis.backgroundColor; + ChartHelper.SetColorOpacity(ref color, itemStyleEmphasis.opacity); + return color; + } + } + var itemStyle = GetItemStyle(serie, serieData); + if (!ChartHelper.IsClearColor(itemStyle.backgroundColor)) + { + color = itemStyle.backgroundColor; + if (highlight) color = ChartHelper.GetHighlightColor(color); + ChartHelper.SetColorOpacity(ref color, itemStyle.opacity); + return color; + } + else if (useDefault) + { + color = theme.GetColor(index); + if (highlight) color = ChartHelper.GetHighlightColor(color); + color.a = 50; + return color; + } + return color; + } + + public static Color32 GetItemColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight, bool opacity = true) + { + if (serie == null) + return ChartConst.clearColor32; + + ItemStyle itemStyle = null; + if (highlight) + itemStyle = GetItemStyleEmphasis(serie, serieData); + if (itemStyle == null) + itemStyle = GetItemStyle(serie, serieData); + + var color = ChartHelper.IsClearColor(itemStyle.color) ? + theme.GetColor(index) : + itemStyle.color; + + if (highlight) + color = ChartHelper.GetHighlightColor(color); + if (opacity) + ChartHelper.SetColorOpacity(ref color, itemStyle.opacity); + return color; + } + public static Color32 GetItemColor0(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight, Color32 defaultColor) + { + if (serie == null) + return ChartConst.clearColor32; + + ItemStyle itemStyle = null; + if (highlight) + itemStyle = GetItemStyleEmphasis(serie, serieData); + if (itemStyle == null) + itemStyle = GetItemStyle(serie, serieData); + + var color = ChartHelper.IsClearColor(itemStyle.color0) ? + defaultColor : + itemStyle.color0; + + if (highlight) + color = ChartHelper.GetHighlightColor(color); + + ChartHelper.SetColorOpacity(ref color, itemStyle.opacity); + return color; + } + + public static Color32 GetItemToColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight, bool opacity = true) + { + if (serie == null) + return ChartConst.clearColor32; + + ItemStyle itemStyle = null; + if (highlight) + itemStyle = GetItemStyleEmphasis(serie, serieData); + if (itemStyle == null) + itemStyle = GetItemStyle(serie, serieData); + + var color = itemStyle.toColor; + if (ChartHelper.IsClearColor(color)) + { + color = ChartHelper.IsClearColor(itemStyle.color) ? + theme.GetColor(index) : + itemStyle.color; + } + + if (highlight) + color = ChartHelper.GetHighlightColor(color); + + if (opacity) + ChartHelper.SetColorOpacity(ref color, itemStyle.opacity); + return color; + } + + public static bool IsDownPoint(Serie serie, int index) + { + var dataPoints = serie.context.dataPoints; + if (dataPoints.Count < 2) return false; + else if (index > 0 && index < dataPoints.Count - 1) + { + var lp = dataPoints[index - 1]; + var np = dataPoints[index + 1]; + var cp = dataPoints[index]; + var dot = Vector3.Cross(np - lp, cp - np); + return dot.z < 0; + } + else if (index == 0) + { + return dataPoints[0].y < dataPoints[1].y; + } + else if (index == dataPoints.Count - 1) + { + return dataPoints[index].y < dataPoints[index - 1].y; + } + else + { + return false; + } + } + + public static ItemStyle GetItemStyle(Serie serie, SerieData serieData, bool highlight = false) + { + if (highlight) + { + var style = GetItemStyleEmphasis(serie, serieData); + if (style == null) return GetItemStyle(serie, serieData, false); + else return style; + } + else if (serie.IsPerformanceMode()) return serie.itemStyle; + else if (serieData != null && serieData.itemStyle != null) return serieData.itemStyle; + else return serie.itemStyle; + } + + public static ItemStyle GetItemStyleEmphasis(Serie serie, SerieData serieData) + { + if (!serie.IsPerformanceMode() && serieData != null && serieData.emphasisItemStyle != null && serieData.emphasisItemStyle.show) + return serieData.emphasisItemStyle; + else if (serie.emphasisItemStyle != null && serie.emphasisItemStyle.show) return serie.emphasisItemStyle; + else return null; + } + + public static LabelStyle GetSerieLabel(Serie serie, SerieData serieData, bool highlight = false) + { + if (serieData == null) return serie.label; + if (highlight) + { + if (!serie.IsPerformanceMode() && serieData.emphasisLabel != null && serieData.emphasisLabel.show) + return serieData.emphasisLabel; + else if (serie.emphasisLabel != null && serie.emphasisLabel.show) return serie.emphasisLabel; + else return serie.label; + } + else + { + if (!serie.IsPerformanceMode() && serieData.labelStyle != null) return serieData.labelStyle; + else return serie.label; + } + } + + public static LabelStyle GetSerieEmphasisLabel(Serie serie, SerieData serieData) + { + if (!serie.IsPerformanceMode() && serieData.emphasisLabel != null && serieData.emphasisLabel.show) + return serieData.emphasisLabel; + else if (serie.emphasisLabel != null && serie.emphasisLabel.show) return serie.emphasisLabel; + else return null; + } + + public static LabelLine GetSerieLabelLine(Serie serie, SerieData serieData, bool highlight = false) + { + if (highlight) + { + if (!serie.IsPerformanceMode() && serieData.emphasisLabelLine != null && serieData.emphasisLabelLine.show) + return serieData.emphasisLabelLine; + else if (serie.emphasisLabelLine != null && serie.emphasisLabelLine.show) return serie.emphasisLabelLine; + else return serie.labelLine; + } + else + { + if (!serie.IsPerformanceMode() && serieData.labelLine != null) return serieData.labelLine; + else return serie.labelLine; + } + } + + public static SerieSymbol GetSerieSymbol(Serie serie, SerieData serieData) + { + if (!serie.IsPerformanceMode() && serieData.symbol != null) return serieData.symbol; + else return serie.symbol; + } + + public static LineStyle GetLineStyle(Serie serie, SerieData serieData) + { + if (serieData != null && serieData.lineStyle != null) return serieData.lineStyle; + else return serie.lineStyle; + } + + public static AreaStyle GetAreaStyle(Serie serie, SerieData serieData) + { + if (serieData != null && serieData.areaStyle != null) return serieData.areaStyle; + else return serie.areaStyle; + } + + public static TitleStyle GetTitleStyle(Serie serie, SerieData serieData) + { + if (serieData != null && serieData.titleStyle != null) return serieData.titleStyle; + else return serie.titleStyle; + } + + public static Color32 GetAreaColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight) + { + Color32 color = ChartConst.clearColor32; + var areaStyle = GetAreaStyle(serie, serieData); + if (areaStyle == null || !areaStyle.show) + return color; + if (!ChartHelper.IsClearColor(areaStyle.color)) color = areaStyle.color; + else if (!ChartHelper.IsClearColor(serie.itemStyle.color)) color = serie.itemStyle.color; + else color = theme.GetColor(index); + ChartHelper.SetColorOpacity(ref color, areaStyle.opacity); + if (highlight) + { + if (!ChartHelper.IsClearColor(areaStyle.highlightColor)) + color = areaStyle.highlightColor; + else + color = ChartHelper.GetHighlightColor(color); + } + return color; + } + + public static Color32 GetAreaToColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight) + { + Color32 color = ChartConst.clearColor32; + var areaStyle = GetAreaStyle(serie, serieData); + if (areaStyle == null || !areaStyle.show) + return color; + if (!ChartHelper.IsClearColor(areaStyle.toColor)) color = areaStyle.toColor; + else if (!ChartHelper.IsClearColor(serie.itemStyle.toColor)) color = serie.itemStyle.toColor; + else color = theme.GetColor(index); + ChartHelper.SetColorOpacity(ref color, areaStyle.opacity); + if (highlight) + { + if (!ChartHelper.IsClearColor(areaStyle.highlightToColor)) + color = areaStyle.highlightToColor; + else + color = ChartHelper.GetHighlightColor(color); + } + return color; + } + + public static Color32 GetLineColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight) + { + Color32 color = ChartConst.clearColor32; + var lineStyle = GetLineStyle(serie, serieData); + if (highlight) + { + var itemStyleEmphasis = GetItemStyleEmphasis(serie, null); + if (itemStyleEmphasis != null && !ChartHelper.IsClearColor(itemStyleEmphasis.color)) + { + color = itemStyleEmphasis.color; + ChartHelper.SetColorOpacity(ref color, itemStyleEmphasis.opacity); + return color; + } + } + if (!ChartHelper.IsClearColor(lineStyle.color)) color = lineStyle.color; + else if (!ChartHelper.IsClearColor(serie.itemStyle.color)) color = serie.itemStyle.GetColor(); + if (ChartHelper.IsClearColor(color)) color = theme.GetColor(index); + ChartHelper.SetColorOpacity(ref color, lineStyle.opacity); + if (highlight) color = ChartHelper.GetHighlightColor(color); + return color; + } + + public static float GetSymbolBorder(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight) + { + var itemStyle = GetItemStyle(serie, serieData, highlight); + if (itemStyle != null && itemStyle.borderWidth != 0) return itemStyle.borderWidth; + else return serie.lineStyle.GetWidth(theme.serie.lineWidth) * 2; + } + + public static Color32 GetSymbolBorderColor(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight) + { + var itemStyle = GetItemStyle(serie, serieData, highlight); + if (itemStyle != null && !ChartHelper.IsClearColor(itemStyle.borderColor)) return itemStyle.borderColor; + else return serie.itemStyle.borderColor; + } + + public static float GetSymbolBorder(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight, float defaultWidth) + { + var itemStyle = GetItemStyle(serie, serieData, highlight); + if (itemStyle != null && itemStyle.borderWidth != 0) return itemStyle.borderWidth; + else return defaultWidth; + } + + public static float[] GetSymbolCornerRadius(Serie serie, SerieData serieData, bool highlight) + { + var itemStyle = GetItemStyle(serie, serieData, highlight); + if (itemStyle != null) return itemStyle.cornerRadius; + else return null; + } + + public static string GetNumericFormatter(Serie serie, SerieData serieData, string defaultFormatter = null) + { + var itemStyle = SerieHelper.GetItemStyle(serie, serieData); + if (!string.IsNullOrEmpty(itemStyle.numericFormatter)) return itemStyle.numericFormatter; + else return defaultFormatter; + } + + public static string GetItemFormatter(Serie serie, SerieData serieData, string defaultFormatter = null) + { + var itemStyle = SerieHelper.GetItemStyle(serie, serieData); + if (!string.IsNullOrEmpty(itemStyle.itemFormatter)) return itemStyle.itemFormatter; + else return defaultFormatter; + } + + public static string GetItemMarker(Serie serie, SerieData serieData, string defaultMarker = null) + { + var itemStyle = SerieHelper.GetItemStyle(serie, serieData); + if (!string.IsNullOrEmpty(itemStyle.itemMarker)) return itemStyle.itemMarker; + else return defaultMarker; + } + + /// <summary> + /// 获得指定维数的最大最小值 + /// </summary> + /// <param name="dimension"></param> + /// <param name="dataZoom"></param> + /// <returns></returns> + public static void UpdateMinMaxData(Serie serie, int dimension, int ceilRate = 0, DataZoom dataZoom = null) + { + double min = 0, max = 0; + GetMinMaxData(serie, dimension, out min, out max, dataZoom); + if (ceilRate < 0) + { + serie.context.dataMin = min; + serie.context.dataMax = max; + } + else + { + serie.context.dataMin = ChartHelper.GetMinDivisibleValue(min, ceilRate); + serie.context.dataMax = ChartHelper.GetMaxDivisibleValue(max, ceilRate); + } + } + + public static void GetAllMinMaxData(Serie serie, int ceilRate = 0, DataZoom dataZoom = null) + { + double min = 0, max = 0; + GetMinMaxData(serie, out min, out max, dataZoom); + if (ceilRate < 0) + { + serie.context.dataMin = min; + serie.context.dataMax = max; + } + else + { + serie.context.dataMin = ChartHelper.GetMinDivisibleValue(min, ceilRate); + serie.context.dataMax = ChartHelper.GetMaxDivisibleValue(max, ceilRate); + } + } + + private static List<SerieData> emptyFilter = new List<SerieData>(); + /// <summary> + /// 根据dataZoom更新数据列表缓存 + /// </summary> + /// <param name="dataZoom"></param> + public static void UpdateFilterData(Serie serie, DataZoom dataZoom) + { + if (dataZoom == null || !dataZoom.enable) return; + if (dataZoom.IsContainsXAxis(serie.xAxisIndex)) + { + if (dataZoom.IsXAxisIndexValue(serie.xAxisIndex)) + { + double min = 0, max = 0; + dataZoom.GetXAxisIndexValue(serie.xAxisIndex, out min, out max); + UpdateFilterData_XAxisValue(serie, dataZoom, 0, min, max); + } + else + { + UpdateFilterData_Category(serie, dataZoom); + } + } + else if (dataZoom.IsContainsYAxis(serie.yAxisIndex)) + { + if (dataZoom.IsYAxisIndexValue(serie.yAxisIndex)) + { + double min = 0, max = 0; + dataZoom.GetYAxisIndexValue(serie.yAxisIndex, out min, out max); + UpdateFilterData_XAxisValue(serie, dataZoom, 0, min, max); + } + else + { + UpdateFilterData_Category(serie, dataZoom); + } + } + } + + private static void UpdateFilterData_XAxisValue(Serie serie, DataZoom dataZoom, int dimension, double min, double max) + { + var data = serie.data; + var startValue = min + (max - min) * dataZoom.start / 100; + var endValue = min + (max - min) * dataZoom.end / 100; + if (endValue < startValue) endValue = startValue; + + if (startValue != serie.m_FilterStartValue || endValue != serie.m_FilterEndValue || + dataZoom.minShowNum != serie.m_FilterMinShow || serie.m_NeedUpdateFilterData) + { + serie.m_FilterStartValue = startValue; + serie.m_FilterEndValue = endValue; + serie.m_FilterMinShow = dataZoom.minShowNum; + serie.m_NeedUpdateFilterData = false; + + serie.m_FilterData.Clear(); + foreach (var serieData in data) + { + var value = serieData.GetData(dimension); + if (value >= startValue && value <= endValue) + { + serie.m_FilterData.Add(serieData); + } + } + } + else if (endValue == 0) + { + serie.m_FilterData = emptyFilter; + } + } + + private static void UpdateFilterData_Category(Serie serie, DataZoom dataZoom) + { + var data = serie.data; + var range = Mathf.RoundToInt(data.Count * (dataZoom.end - dataZoom.start) / 100); + if (range <= 0) range = 1; + int start = 0, end = 0; + if (dataZoom.context.invert) + { + end = Mathf.CeilToInt(data.Count * dataZoom.end / 100); + start = end - range; + if (start < 0) start = 0; + } + else + { + start = Mathf.FloorToInt(data.Count * dataZoom.start / 100); + end = start + range; + if (end > data.Count) end = data.Count; + } + if (start != serie.m_FilterStart || end != serie.m_FilterEnd || + dataZoom.minShowNum != serie.m_FilterMinShow || serie.m_NeedUpdateFilterData) + { + serie.m_FilterStart = start; + serie.m_FilterEnd = end; + serie.m_FilterMinShow = dataZoom.minShowNum; + serie.m_NeedUpdateFilterData = false; + if (data.Count > 0) + { + if (range < dataZoom.minShowNum) + { + if (dataZoom.minShowNum > data.Count) range = data.Count; + else range = dataZoom.minShowNum; + } + if (range > data.Count - start - 1) + start = data.Count - range - 1; + if (start >= 0) + serie.m_FilterData = data.GetRange(start, range); + else + serie.m_FilterData = data; + } + else + { + serie.m_FilterData = data; + } + } + else if (end == 0) + { + serie.m_FilterData = emptyFilter; + } + } + + public static void UpdateSerieRuntimeFilterData(Serie serie, bool filterInvisible = true) + { + serie.context.sortedData.Clear(); + foreach (var serieData in serie.data) + { + if (!filterInvisible || (filterInvisible && serieData.show)) + serie.context.sortedData.Add(serieData); + } + switch (serie.dataSortType) + { + case SerieDataSortType.Ascending: + serie.context.sortedData.Sort(delegate(SerieData data1, SerieData data2) + { + var value1 = data1.GetData(1); + var value2 = data2.GetData(1); + if (value1 == value2) return 0; + else if (value1 > value2) return 1; + else return -1; + }); + break; + case SerieDataSortType.Descending: + serie.context.sortedData.Sort(delegate(SerieData data1, SerieData data2) + { + var value1 = data1.GetData(1); + var value2 = data2.GetData(1); + if (value1 == value2) return 0; + else if (value1 > value2) return -1; + else return 1; + }); + break; + case SerieDataSortType.None: + break; + } + } + + public static T CloneSerie<T>(Serie serie) where T : Serie + { + var newSerie = Activator.CreateInstance<T>(); + SerieHelper.CopySerie(serie, newSerie); + return newSerie; + } + + public static void CopySerie(Serie oldSerie, Serie newSerie) + { + var fields = typeof(Serie).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + foreach (var field in fields) + { + if (field.IsDefined(typeof(SerializeField), false)) + { + var filedValue = field.GetValue(oldSerie); + if (filedValue == null) continue; + var filedType = filedValue.GetType(); + if (filedType.IsClass) + field.SetValue(newSerie, ReflectionUtil.DeepCloneSerializeField(filedValue)); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Helper/SerieHelper.cs.meta b/Assets/XCharts/Runtime/Helper/SerieHelper.cs.meta new file mode 100644 index 0000000..a2ba9d1 --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/SerieHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c031417514104eebb5bbd60dd1f90fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs new file mode 100644 index 0000000..fc189a1 --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs @@ -0,0 +1,216 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class SerieLabelHelper + { + + public static Color GetLabelColor(Serie serie, ThemeStyle theme, int index) + { + if (serie.label != null && !ChartHelper.IsClearColor(serie.label.textStyle.color)) + { + return serie.label.textStyle.color; + } + else + { + return theme.GetColor(index); + } + } + + public static void ResetLabel(ChartText labelObject, LabelStyle label, ThemeStyle theme, + Color textColor, float rotate) + { + if (labelObject == null) return; + labelObject.SetColor(textColor); + labelObject.SetLocalEulerAngles(new Vector3(0, 0, rotate)); + labelObject.SetFontSize(label.textStyle.GetFontSize(theme.common)); + labelObject.SetFontStyle(label.textStyle.fontStyle); + } + + public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion) + { + return serie.show && serieData.context.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion); + } + + public static string GetFormatterContent(Serie serie, SerieData serieData, + double dataValue, double dataTotal, LabelStyle serieLabel, Color color) + { + if (serieLabel == null) + { + serieLabel = SerieHelper.GetSerieLabel(serie, serieData); + } + var numericFormatter = serieLabel == null ? "" : serieLabel.numericFormatter; + var serieName = serie.serieName; + var dataName = serieData != null ? serieData.name : null; + if (serieLabel.formatterFunction != null) + { + return serieLabel.formatterFunction(serieData.index, dataValue, null); + } + if (string.IsNullOrEmpty(serieLabel.formatter)) + return ChartCached.NumberToStr(dataValue, numericFormatter); + else + { + var content = serieLabel.formatter; + FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, dataValue, + dataTotal, serieName, dataName, dataName, color); + return content; + } + } + + public static void SetGaugeLabelText(Serie serie) + { + var serieData = serie.GetSerieData(0); + if (serieData == null) return; + if (serieData.labelObject == null) return; + var label = SerieHelper.GetSerieLabel(serie, serieData); + if (label == null) return; + var value = serieData.GetData(1); + var total = serie.max; + var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, null, Color.clear); + serieData.labelObject.SetText(content); + serieData.labelObject.SetPosition(serie.context.center + label.offset); + if (!ChartHelper.IsClearColor(label.textStyle.color)) + { + serieData.labelObject.text.SetColor(label.textStyle.color); + } + } + + public static void UpdatePieLabelPosition(Serie serie, SerieData serieData) + { + if (serieData.labelObject == null) return; + var startAngle = serie.context.startAngle; + var currAngle = serieData.context.halfAngle; + var currRad = currAngle * Mathf.Deg2Rad; + var offsetRadius = serieData.context.offsetRadius; + var insideRadius = serieData.context.insideRadius; + var outsideRadius = serieData.context.outsideRadius; + var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); + var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData); + switch (serieLabel.position) + { + case LabelStyle.Position.Center: + serieData.context.labelPosition = serie.context.center; + break; + case LabelStyle.Position.Inside: + var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2 + serieLabel.distance; + var labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad), + serie.context.center.y + labelRadius * Mathf.Cos(currRad)); + serieData.context.labelPosition = labelCenter; + break; + default: + //LabelStyle.Position.Outside + if (labelLine != null && labelLine.lineType == LabelLine.LineType.HorizontalLine) + { + var radius1 = serie.context.outsideRadius; + var radius3 = insideRadius + (outsideRadius - insideRadius) / 2; + var currSin = Mathf.Sin(currRad); + var currCos = Mathf.Cos(currRad); + var pos0 = new Vector3(serie.context.center.x + radius3 * currSin, serie.context.center.y + radius3 * currCos); + if ((currAngle - startAngle) % 360 > 180) + { + currSin = Mathf.Sin((360 - currAngle) * Mathf.Deg2Rad); + currCos = Mathf.Cos((360 - currAngle) * Mathf.Deg2Rad); + } + var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos * radius3, 2)) - currSin * radius3; + r4 += labelLine.lineLength1 + labelLine.lineWidth * 4; + r4 += serieData.labelObject.text.GetPreferredWidth() / 2; + serieData.context.labelPosition = pos0 + ((currAngle - startAngle) % 360 > 180 ? Vector3.left : Vector3.right) * r4; + } + else + { + labelRadius = serie.context.outsideRadius + (labelLine == null ? 0 : labelLine.lineLength1); + labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad), + serie.context.center.y + labelRadius * Mathf.Cos(currRad)); + serieData.context.labelPosition = labelCenter; + } + break; + } + } + + public static void AvoidLabelOverlap(Serie serie, ComponentTheme theme) + { + if (!serie.avoidLabelOverlap) return; + var lastCheckPos = Vector3.zero; + var data = serie.data; + var splitCount = 0; + for (int n = 0; n < data.Count; n++) + { + var serieData = data[n]; + if (serieData.context.labelPosition.x != 0 && serieData.context.labelPosition.x < serie.context.center.x) + { + splitCount = n; + break; + } + } + for (int n = 0; n < splitCount; n++) + { + CheckSerieDataLabel(serie, data[n], false, theme, ref lastCheckPos); + } + lastCheckPos = Vector3.zero; + for (int n = data.Count - 1; n >= splitCount; n--) + { + CheckSerieDataLabel(serie, data[n], true, theme, ref lastCheckPos); + } + } + + private static void CheckSerieDataLabel(Serie serie, SerieData serieData, bool isLeft, ComponentTheme theme, + ref Vector3 lastCheckPos) + { + if (!serieData.context.canShowLabel) + { + serieData.SetLabelActive(false); + return; + } + if (!serieData.show) return; + var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); + var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData); + var fontSize = serieLabel.textStyle.GetFontSize(theme); + var isOutside = serieLabel.position == LabelStyle.Position.Outside || + serieLabel.position == LabelStyle.Position.Default; + if (!serieLabel.show) return; + if (!isOutside) return; + if (lastCheckPos == Vector3.zero) + { + lastCheckPos = serieData.context.labelPosition; + } + else if (serieData.context.labelPosition.x != 0) + { + if (lastCheckPos.y - serieData.context.labelPosition.y < fontSize) + { + var labelRadius = serie.context.outsideRadius + labelLine.lineLength1; + var y1 = lastCheckPos.y - fontSize; + var cy = serie.context.center.y; + var diff = Mathf.Abs(y1 - cy); + var diffX = labelRadius * labelRadius - diff * diff; + diffX = diffX <= 0 ? 0 : diffX; + var x1 = serie.context.center.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1); + serieData.context.labelPosition = new Vector3(x1, y1); + } + lastCheckPos = serieData.context.labelPosition; + serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serie, serieData, serieLabel, labelLine)); + } + } + + public static Vector3 GetRealLabelPosition(Serie serie, SerieData serieData, LabelStyle label, LabelLine labelLine) + { + if (label == null || labelLine == null) + return serieData.context.labelPosition; + var isOutside = label.position == LabelStyle.Position.Outside || + label.position == LabelStyle.Position.Default; + if (isOutside && labelLine.lineType != LabelLine.LineType.HorizontalLine) + { + var currAngle = serieData.context.halfAngle; + var offset = labelLine.lineLength2 + serieData.labelObject.GetTextWidth() / 2; + if ((currAngle - serie.context.startAngle) % 360 > 180) + return serieData.context.labelPosition + new Vector3(-offset, 0, 0); + else + return serieData.context.labelPosition + new Vector3(offset, 0, 0); + } + else + { + return serieData.context.labelPosition; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs.meta b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs.meta new file mode 100644 index 0000000..5b4a31f --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b81cddd3452545748563f9c6ea9be69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Helper/SeriesHelper.cs b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs new file mode 100644 index 0000000..09be09c --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs @@ -0,0 +1,452 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class SeriesHelper + { + + public static bool IsLegalLegendName(string name) + { + int numName = -1; + if (int.TryParse(name, out numName)) + { + if (numName >= 0 && numName < 100) return false; + } + return true; + } + + public static List<string> GetLegalSerieNameList(List<Serie> series) + { + var list = new List<string>(); + for (int n = 0; n < series.Count; n++) + { + var serie = series[n]; + if (serie.placeHolder) continue; + if (serie.useDataNameForColor) + { + for (int i = 0; i < serie.data.Count; i++) + { + var dataName = serie.data[i].name; + if (!string.IsNullOrEmpty(dataName) && IsLegalLegendName(dataName) && !list.Contains(dataName)) + list.Add(dataName); + } + } + else + { + if (!string.IsNullOrEmpty(serie.serieName) && !list.Contains(serie.serieName) && IsLegalLegendName(serie.serieName)) + list.Add(serie.serieName); + } + } + return list; + } + + /// <summary> + /// 获得所有系列名,不包含空名字。 + /// </summary> + /// <returns></returns> + public static void UpdateSerieNameList(BaseChart chart, ref List<string> serieNameList) + { + serieNameList.Clear(); + for (int n = 0; n < chart.series.Count; n++) + { + var serie = chart.series[n]; + if (serie.placeHolder) continue; + if (serie.useDataNameForColor) + { + for (int i = 0; i < serie.data.Count; i++) + { + var serieData = serie.data[i]; + if (serie is Pie && serie.IsIgnoreValue(serieData)) continue; + if (string.IsNullOrEmpty(serieData.name)) + serieNameList.Add(ChartCached.IntToStr(i)); + else if (!serieNameList.Contains(serieData.name)) + serieNameList.Add(serieData.name); + } + } + else + { + if (string.IsNullOrEmpty(serie.serieName)) + serieNameList.Add(ChartCached.IntToStr(n)); + else if (!serieNameList.Contains(serie.serieName)) + serieNameList.Add(serie.serieName); + } + } + } + + public static Color GetNameColor(BaseChart chart, int index, string name) + { + Serie destSerie = null; + SerieData destSerieData = null; + var series = chart.series; + for (int n = 0; n < series.Count; n++) + { + var serie = series[n]; + if (serie.placeHolder) continue; + if (serie.useDataNameForColor) + { + bool found = false; + for (int i = 0; i < serie.data.Count; i++) + { + if (name.Equals(serie.data[i].name)) + { + destSerie = serie; + destSerieData = serie.data[i]; + found = true; + break; + } + } + if (found) break; + } + if (name.Equals(serie.serieName)) + { + destSerie = serie; + destSerieData = null; + break; + } + } + return SerieHelper.GetItemColor(destSerie, destSerieData, chart.theme, index, false); + } + + /// <summary> + /// 是否有需裁剪的serie。 + /// </summary> + /// <returns></returns> + public static bool IsAnyClipSerie(List<Serie> series) + { + foreach (var serie in series) + { + if (serie.clip) return true; + } + return false; + } + + /// <summary> + /// 获得上一个同堆叠且显示的serie。 + /// </summary> + /// <param name="serie"></param> + /// <returns></returns> + public static Serie GetLastStackSerie(List<Serie> series, Serie serie) + { + if (serie == null || string.IsNullOrEmpty(serie.stack)) return null; + for (int i = serie.index - 1; i >= 0; i--) + { + var temp = series[i]; + if (temp.show && serie.stack.Equals(temp.stack)) return temp; + } + return null; + } + + public static Serie GetSerieByVesselIndex(List<Serie> series, int vesselIndex) + { + foreach (var serie in series) + { + if (serie.vesselIndex == vesselIndex) return serie; + } + return null; + } + + private static HashSet<string> _setForStack = new HashSet<string>(); + /// <summary> + /// 是否由数据堆叠 + /// </summary> + /// <returns></returns> + public static bool IsStack(List<Serie> series) + { + _setForStack.Clear(); + foreach (var serie in series) + { + if (string.IsNullOrEmpty(serie.stack)) continue; + if (_setForStack.Contains(serie.stack)) return true; + _setForStack.Add(serie.stack); + } + return false; + } + + /// <summary> + /// 是否堆叠 + /// </summary> + /// <param name="stackName"></param> + /// <param name="type"></param> + /// <returns></returns> + public static bool IsStack<T>(List<Serie> series, string stackName) where T : Serie + { + if (string.IsNullOrEmpty(stackName)) return false; + int count = 0; + foreach (var serie in series) + { + if (serie.show && serie is T) + { + if (stackName.Equals(serie.stack)) count++; + if (count >= 2) return true; + } + } + return false; + } + + /// <summary> + /// 是否时百分比堆叠 + /// </summary> + /// <param name="type"></param> + /// <returns></returns> + public static bool IsPercentStack<T>(List<Serie> series) where T : Serie + { + int count = 0; + bool isPercentStack = false; + foreach (var serie in series) + { + if (serie.show && serie is T) + { + if (!string.IsNullOrEmpty(serie.stack)) + { + count++; + if (serie.barPercentStack) isPercentStack = true; + } + if (count >= 2 && isPercentStack) return true; + } + } + return false; + } + + /// <summary> + /// 是否时百分比堆叠 + /// </summary> + /// <param name="stackName"></param> + /// <param name="type"></param> + /// <returns></returns> + public static bool IsPercentStack<T>(List<Serie> series, string stackName) where T : Serie + { + if (string.IsNullOrEmpty(stackName)) return false; + int count = 0; + bool isPercentStack = false; + foreach (var serie in series) + { + if (serie.show && serie is T) + { + if (stackName.Equals(serie.stack)) + { + count++; + if (serie.barPercentStack) isPercentStack = true; + } + if (count >= 2 && isPercentStack) return true; + } + } + return false; + } + + private static Dictionary<string, int> sets = new Dictionary<string, int>(); + /// <summary> + /// 获得堆叠系列列表 + /// </summary> + /// <param name="Dictionary<int"></param> + /// <param name="stackSeries"></param> + public static void GetStackSeries(List<Serie> series, ref Dictionary<int, List<Serie>> stackSeries) + { + int count = 0; + var serieCount = series.Count; + sets.Clear(); + if (stackSeries == null) + { + stackSeries = new Dictionary<int, List<Serie>>(serieCount); + } + else + { + foreach (var kv in stackSeries) + { + kv.Value.Clear(); + } + } + for (int i = 0; i < serieCount; i++) + { + var serie = series[i]; + serie.index = i; + if (string.IsNullOrEmpty(serie.stack)) + { + if (!stackSeries.ContainsKey(count)) + stackSeries[count] = new List<Serie>(serieCount); + stackSeries[count].Add(serie); + count++; + } + else + { + if (!sets.ContainsKey(serie.stack)) + { + sets.Add(serie.stack, count); + if (!stackSeries.ContainsKey(count)) + stackSeries[count] = new List<Serie>(serieCount); + stackSeries[count].Add(serie); + count++; + } + else + { + int stackIndex = sets[serie.stack]; + stackSeries[stackIndex].Add(serie); + } + } + } + } + + public static void UpdateStackDataList(List<Serie> series, Serie currSerie, DataZoom dataZoom, List<List<SerieData>> dataList) + { + dataList.Clear(); + for (int i = 0; i <= currSerie.index; i++) + { + var serie = series[i]; + if (serie.GetType() == currSerie.GetType() && ChartHelper.IsValueEqualsString(serie.stack, currSerie.stack)) + { + dataList.Add(serie.GetDataList(dataZoom)); + } + } + } + + /// <summary> + /// 获得维度X的最大最小值 + /// </summary> + /// <param name="dataZoom"></param> + /// <param name="axisIndex"></param> + /// <param name="minVaule"></param> + /// <param name="maxValue"></param> + public static void GetXMinMaxValue(List<Serie> series, DataZoom dataZoom, int axisIndex, bool isValueAxis, + bool inverse, out double minVaule, out double maxValue, bool isPolar = false) + { + GetMinMaxValue(series, dataZoom, axisIndex, isValueAxis, inverse, false, out minVaule, out maxValue, isPolar); + } + + /// <summary> + /// 获得维度Y的最大最小值 + /// </summary> + /// <param name="dataZoom"></param> + /// <param name="axisIndex"></param> + /// <param name="minVaule"></param> + /// <param name="maxValue"></param> + public static void GetYMinMaxValue(List<Serie> series, DataZoom dataZoom, int axisIndex, bool isValueAxis, + bool inverse, out double minVaule, out double maxValue, bool isPolar = false) + { + GetMinMaxValue(series, dataZoom, axisIndex, isValueAxis, inverse, true, out minVaule, out maxValue, isPolar); + } + + private static Dictionary<int, List<Serie>> _stackSeriesForMinMax = new Dictionary<int, List<Serie>>(); + private static Dictionary<int, double> _serieTotalValueForMinMax = new Dictionary<int, double>(); + public static void GetMinMaxValue(List<Serie> series, DataZoom dataZoom, int axisIndex, bool isValueAxis, + bool inverse, bool yValue, out double minVaule, out double maxValue, bool isPolar = false) + { + double min = double.MaxValue; + double max = double.MinValue; + var isPercentStack = SeriesHelper.IsPercentStack<Bar>(series); + if (!SeriesHelper.IsStack(series) || (isValueAxis && !yValue)) + { + for (int i = 0; i < series.Count; i++) + { + var serie = series[i]; + if ((isPolar && serie.polarIndex != axisIndex) || + (!isPolar && serie.yAxisIndex != axisIndex) || + !serie.show) continue; + var updateDuration = serie.animation.enable?serie.animation.dataChangeDuration : 0; + if (isPercentStack && SeriesHelper.IsPercentStack<Bar>(series, serie.serieName)) + { + if (100 > max) max = 100; + if (0 < min) min = 0; + } + else + { + var showData = serie.GetDataList(dataZoom); + foreach (var data in showData) + { + + if (serie is Candlestick) + { + var dataMin = data.GetMinData(inverse); + var dataMax = data.GetMaxData(inverse); + if (dataMax > max) max = dataMax; + if (dataMin < min) min = dataMin; + } + else + { + //var currData = data.GetData(yValue ? 1 : 0, inverse); + var currData = data.GetCurrData(yValue ? 1 : 0, updateDuration, inverse); + if (!serie.IsIgnoreValue(currData)) + { + if (currData > max) max = currData; + if (currData < min) min = currData; + } + } + } + } + } + } + else + { + SeriesHelper.GetStackSeries(series, ref _stackSeriesForMinMax); + foreach (var ss in _stackSeriesForMinMax) + { + _serieTotalValueForMinMax.Clear(); + for (int i = 0; i < ss.Value.Count; i++) + { + var serie = ss.Value[i]; + if ((isPolar && serie.polarIndex != axisIndex) || + (!isPolar && serie.yAxisIndex != axisIndex) || + !serie.show) continue; + var showData = serie.GetDataList(dataZoom); + if (SeriesHelper.IsPercentStack<Bar>(series, serie.stack)) + { + for (int j = 0; j < showData.Count; j++) + { + _serieTotalValueForMinMax[j] = 100; + } + } + else + { + for (int j = 0; j < showData.Count; j++) + { + if (!_serieTotalValueForMinMax.ContainsKey(j)) + _serieTotalValueForMinMax[j] = 0; + double currData = 0; + if (serie is Candlestick) + { + currData = showData[j].GetMaxData(false); + } + else + { + currData = yValue ? showData[j].GetData(1) : showData[j].GetData(0); + } + if (inverse) currData = -currData; + if (!serie.IsIgnoreValue(currData)) + _serieTotalValueForMinMax[j] = _serieTotalValueForMinMax[j] + currData; + } + } + } + double tmax = double.MinValue; + double tmin = double.MaxValue; + foreach (var tt in _serieTotalValueForMinMax) + { + if (tt.Value > tmax) tmax = tt.Value; + if (tt.Value < tmin) tmin = tt.Value; + } + if (tmax > max) max = tmax; + if (tmin < min) min = tmin; + } + } + if (max == double.MinValue && min == double.MaxValue) + { + minVaule = 0; + maxValue = 0; + } + else + { + minVaule = min > 1 ? Math.Floor(min) : min; + maxValue = max > 1 ? Math.Ceiling(max) : max; + } + } + + public static int GetMaxSerieDataCount(List<Serie> series) + { + int max = 0; + foreach (var serie in series) + { + if (serie.dataCount > max) max = serie.dataCount; + } + return max; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Helper/SeriesHelper.cs.meta b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs.meta new file mode 100644 index 0000000..bda31ea --- /dev/null +++ b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96a06a5949772464da15c44ae2ad400d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/I18n.meta b/Assets/XCharts/Runtime/I18n.meta new file mode 100644 index 0000000..3486925 --- /dev/null +++ b/Assets/XCharts/Runtime/I18n.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3091670d5958a4fbaa9024b5cda31f1d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/I18n/Lang.cs b/Assets/XCharts/Runtime/I18n/Lang.cs new file mode 100644 index 0000000..eb62484 --- /dev/null +++ b/Assets/XCharts/Runtime/I18n/Lang.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Language. + /// |国际化语言表。 + /// </summary> + [Serializable] + [CreateAssetMenu(menuName = "XCharts/Export Lang")] + public class Lang : ScriptableObject + { + public string langName = "EN"; + public LangTime time = new LangTime(); + public LangCandlestick candlestick = new LangCandlestick(); + + public string GetMonthAbbr(int month) + { + if (month < 1 && month > 12) return month.ToString(); + else return time.monthAbbr[month - 1]; + } + + public string GetDay(int day) + { + day = day - 1; + if (day >= 0 && day < time.dayOfMonth.Count - 1) + return time.dayOfMonth[day]; + else + return day.ToString(); + } + + public string GetCandlestickDimensionName(int i) + { + if (i >= 0 && i < candlestick.dimensionNames.Count) + return candlestick.dimensionNames[i]; + else + return string.Empty; + } + } + + [Serializable] + public class LangTime + { + public List<string> months = new List<string>() + { + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + }; + public List<string> monthAbbr = new List<string>() + { + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + }; + public List<string> dayOfMonth = new List<string>() + { + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31" + }; + public List<string> dayOfWeek = new List<string>() + { + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + }; + public List<string> dayOfWeekAbbr = new List<string>() + { + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + }; + } + + [Serializable] + public class LangCandlestick + { + public List<string> dimensionNames = new List<string>() { "open", "close", "lowest", "highest" }; + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/I18n/Lang.cs.meta b/Assets/XCharts/Runtime/I18n/Lang.cs.meta new file mode 100644 index 0000000..1f35cfa --- /dev/null +++ b/Assets/XCharts/Runtime/I18n/Lang.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b65fc8b25febc4b9e8acb500d16770b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal.meta b/Assets/XCharts/Runtime/Internal.meta new file mode 100644 index 0000000..791d17b --- /dev/null +++ b/Assets/XCharts/Runtime/Internal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 750348e0c6842d74e872391f6ea942da +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes.meta b/Assets/XCharts/Runtime/Internal/Attributes.meta new file mode 100644 index 0000000..d27d0ee --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa2d903c5b18c41f78b61bd01f1512f3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ComponentHandlerAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/ComponentHandlerAttribute.cs new file mode 100644 index 0000000..5827d57 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ComponentHandlerAttribute.cs @@ -0,0 +1,23 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class ComponentHandlerAttribute : Attribute + { + public readonly Type handler; + public readonly bool allowMultiple = true; + + public ComponentHandlerAttribute(Type handler) + { + this.handler = handler; + this.allowMultiple = true; + } + + public ComponentHandlerAttribute(Type handler, bool allowMultiple) + { + this.handler = handler; + this.allowMultiple = allowMultiple; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ComponentHandlerAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/ComponentHandlerAttribute.cs.meta new file mode 100644 index 0000000..0cabefc --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ComponentHandlerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 396f8e713effb49fa8757d45944e7d30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/CoordOptionsAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/CoordOptionsAttribute.cs new file mode 100644 index 0000000..b1040ca --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/CoordOptionsAttribute.cs @@ -0,0 +1,42 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class CoordOptionsAttribute : Attribute + { + public readonly Type type0; + public readonly Type type1; + public readonly Type type2; + public readonly Type type3; + + public CoordOptionsAttribute(Type coord) + { + type0 = coord; + } + public CoordOptionsAttribute(Type coord, Type coord2) + { + type0 = coord; + type1 = coord2; + } + public CoordOptionsAttribute(Type coord, Type coord2, Type coord3) + { + type0 = coord; + type1 = coord2; + type2 = coord3; + } + public CoordOptionsAttribute(Type coord, Type coord2, Type coord3, Type coord4) + { + type0 = coord; + type1 = coord2; + type2 = coord3; + type3 = coord4; + } + + public bool Contains<T>() where T : CoordSystem + { + var type = typeof(T); + return (type == type0 || type == type1 || type == type2 || type == type3); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/CoordOptionsAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/CoordOptionsAttribute.cs.meta new file mode 100644 index 0000000..faba950 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/CoordOptionsAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c03247521a944507bcdb1bcfbbc6006 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/DefaultAnimationAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/DefaultAnimationAttribute.cs new file mode 100644 index 0000000..d680761 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/DefaultAnimationAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class DefaultAnimationAttribute : Attribute + { + public readonly AnimationType type; + + public DefaultAnimationAttribute(AnimationType handler) + { + this.type = handler; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/DefaultAnimationAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/DefaultAnimationAttribute.cs.meta new file mode 100644 index 0000000..8b15da5 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/DefaultAnimationAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b25b7b1d8388945d4bf78e54f094470f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/IgnoreDocAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/IgnoreDocAttribute.cs new file mode 100644 index 0000000..dbbc307 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/IgnoreDocAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] + public class IgnoreDoc : Attribute + { + public IgnoreDoc() + { + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/IgnoreDocAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/IgnoreDocAttribute.cs.meta new file mode 100644 index 0000000..aab5242 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/IgnoreDocAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd89bf9e568d34de089f71258f2bd211 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ListForAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/ListForAttribute.cs new file mode 100644 index 0000000..0a96ce6 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ListForAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] + public class ListFor : Attribute + { + public readonly Type type; + + public ListFor(Type type) + { + this.type = type; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ListForAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/ListForAttribute.cs.meta new file mode 100644 index 0000000..d4d2d6e --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ListForAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 34edd91ec3857490fa2f04c620e44299 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ListForComponentAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/ListForComponentAttribute.cs new file mode 100644 index 0000000..52a9881 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ListForComponentAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] + public sealed class ListForComponent : ListFor + { + public ListForComponent(Type type) : base(type) + { } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ListForComponentAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/ListForComponentAttribute.cs.meta new file mode 100644 index 0000000..dca1752 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ListForComponentAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 529bcbd6bb69b4aac905c44451077ca5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ListForSerieAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/ListForSerieAttribute.cs new file mode 100644 index 0000000..07bcf23 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ListForSerieAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] + public sealed class ListForSerie : ListFor + { + public ListForSerie(Type type) : base(type) + { } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/ListForSerieAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/ListForSerieAttribute.cs.meta new file mode 100644 index 0000000..f5a2afd --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/ListForSerieAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2723e22555ab04116892a8c7d5c75fbd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/RequireChartComponentAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/RequireChartComponentAttribute.cs new file mode 100644 index 0000000..551bb9a --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/RequireChartComponentAttribute.cs @@ -0,0 +1,28 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class RequireChartComponentAttribute : Attribute + { + public readonly Type type0; + public readonly Type type1; + public readonly Type type2; + + public RequireChartComponentAttribute(Type requiredComponent) + { + type0 = requiredComponent; + } + public RequireChartComponentAttribute(Type requiredComponent, Type requiredComponent2) + { + type0 = requiredComponent; + type1 = requiredComponent2; + } + public RequireChartComponentAttribute(Type requiredComponent, Type requiredComponent2, Type requiredComponent3) + { + type0 = requiredComponent; + type1 = requiredComponent2; + type2 = requiredComponent3; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/RequireChartComponentAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/RequireChartComponentAttribute.cs.meta new file mode 100644 index 0000000..3ad3719 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/RequireChartComponentAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f27bf434cb8045a6b5d02930f8df479 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieConvertAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/SerieConvertAttribute.cs new file mode 100644 index 0000000..1586119 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieConvertAttribute.cs @@ -0,0 +1,49 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + /// <summary> + /// What serie can convert to me + /// </summary> + public sealed class SerieConvertAttribute : Attribute + { + public readonly Type type0; + public readonly Type type1; + public readonly Type type2; + public readonly Type type3; + + public SerieConvertAttribute(Type serie) + { + type0 = serie; + } + public SerieConvertAttribute(Type serie, Type serie2) + { + type0 = serie; + type1 = serie2; + } + public SerieConvertAttribute(Type serie, Type serie2, Type serie3) + { + type0 = serie; + type1 = serie2; + type2 = serie3; + } + public SerieConvertAttribute(Type serie, Type serie2, Type serie3, Type serie4) + { + type0 = serie; + type1 = serie2; + type2 = serie3; + type3 = serie4; + } + + public bool Contains<T>() where T : Serie + { + return Contains(typeof(T)); + } + + public bool Contains(Type type) + { + return (type == type0 || type == type1 || type == type2 || type == type3); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieConvertAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/SerieConvertAttribute.cs.meta new file mode 100644 index 0000000..b4de61a --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieConvertAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74af4595d38cb43ca8f11348cc979137 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraComponentAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraComponentAttribute.cs new file mode 100644 index 0000000..cd16379 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraComponentAttribute.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class SerieDataExtraComponentAttribute : Attribute + { + public readonly List<Type> types = new List<Type>(); + + public SerieDataExtraComponentAttribute() + { } + public SerieDataExtraComponentAttribute(Type type1) + { + AddType(type1); + } + public SerieDataExtraComponentAttribute(Type type1, Type type2) + { + AddType(type1); + AddType(type2); + } + public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3) + { + AddType(type1); + AddType(type2); + AddType(type3); + } + public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + } + public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + AddType(type5); + } + public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + AddType(type5); + AddType(type6); + } + public SerieDataExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + AddType(type5); + AddType(type6); + AddType(type7); + } + + private void AddType(Type type) + { + if (!SerieData.extraComponentMap.ContainsKey(type)) + throw new ArgumentException("SerieData not support extra component:" + type); + types.Add(type); + } + + public bool Contains<T>() where T : ISerieExtraComponent + { + return Contains(typeof(T)); + } + + public bool Contains(Type type) + { + return types.Contains(type); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraComponentAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraComponentAttribute.cs.meta new file mode 100644 index 0000000..43120ee --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraComponentAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a77e2e342c09c4c6b95a0094ad0fcffc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraFieldAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraFieldAttribute.cs new file mode 100644 index 0000000..12e2c3f --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraFieldAttribute.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class SerieDataExtraFieldAttribute : Attribute + { + public readonly List<string> fields = new List<string>(); + + public SerieDataExtraFieldAttribute() + { } + public SerieDataExtraFieldAttribute(string field1) + { + AddFiled(field1); + } + public SerieDataExtraFieldAttribute(string field1, string field2) + { + AddFiled(field1); + AddFiled(field2); + } + public SerieDataExtraFieldAttribute(string field1, string field2, string field3) + { + AddFiled(field1); + AddFiled(field2); + AddFiled(field3); + } + public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4) + { + AddFiled(field1); + AddFiled(field2); + AddFiled(field3); + AddFiled(field4); + } + public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5) + { + AddFiled(field1); + AddFiled(field2); + AddFiled(field3); + AddFiled(field4); + AddFiled(field5); + } + public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6) + { + AddFiled(field1); + AddFiled(field2); + AddFiled(field3); + AddFiled(field4); + AddFiled(field5); + AddFiled(field6); + } + public SerieDataExtraFieldAttribute(string field1, string field2, string field3, string field4, string field5, string field6, string field7) + { + AddFiled(field1); + AddFiled(field2); + AddFiled(field3); + AddFiled(field4); + AddFiled(field5); + AddFiled(field6); + AddFiled(field7); + } + + private void AddFiled(string field) + { + if (!SerieData.extraFieldList.Contains(field)) + throw new ArgumentException("SerieData not support field:" + field); + fields.Add(field); + } + + public bool Contains(string field) + { + return fields.Contains(field); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraFieldAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraFieldAttribute.cs.meta new file mode 100644 index 0000000..216bf90 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieDataExtraFieldAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8b0cc5a1c11e497abb7e32c7d14b25f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieExtraComponentAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/SerieExtraComponentAttribute.cs new file mode 100644 index 0000000..f4cb9ce --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieExtraComponentAttribute.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class SerieExtraComponentAttribute : Attribute + { + public readonly List<Type> types = new List<Type>(); + + public SerieExtraComponentAttribute() + { } + public SerieExtraComponentAttribute(Type type1) + { + AddType(type1); + } + public SerieExtraComponentAttribute(Type type1, Type type2) + { + AddType(type1); + AddType(type2); + } + public SerieExtraComponentAttribute(Type type1, Type type2, Type type3) + { + AddType(type1); + AddType(type2); + AddType(type3); + } + public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + } + public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + AddType(type5); + } + public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + AddType(type5); + AddType(type6); + } + public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7) + { + AddType(type1); + AddType(type2); + AddType(type3); + AddType(type4); + AddType(type5); + AddType(type6); + AddType(type7); + } + + private void AddType(Type type) + { + if (!Serie.extraComponentMap.ContainsKey(type)) + throw new ArgumentException("Serie not support extra component:" + type); + types.Add(type); + } + + public bool Contains<T>() where T : ISerieExtraComponent + { + return Contains(typeof(T)); + } + + public bool Contains(Type type) + { + return types.Contains(type); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieExtraComponentAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/SerieExtraComponentAttribute.cs.meta new file mode 100644 index 0000000..99dd27c --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieExtraComponentAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d61861a0f45f43af8915ae23cc326e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieHandlerAttribute.cs b/Assets/XCharts/Runtime/Internal/Attributes/SerieHandlerAttribute.cs new file mode 100644 index 0000000..1bd21e7 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieHandlerAttribute.cs @@ -0,0 +1,22 @@ +using System; + +namespace XCharts.Runtime +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + public sealed class SerieHandlerAttribute : Attribute + { + public readonly Type handler; + public readonly bool allowMultiple = true; + + public SerieHandlerAttribute(Type handler) + { + this.handler = handler; + this.allowMultiple = true; + } + public SerieHandlerAttribute(Type handler, bool allowMultiple) + { + this.handler = handler; + this.allowMultiple = allowMultiple; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Attributes/SerieHandlerAttribute.cs.meta b/Assets/XCharts/Runtime/Internal/Attributes/SerieHandlerAttribute.cs.meta new file mode 100644 index 0000000..2dfda00 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Attributes/SerieHandlerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 810e22da460074d639f56dd860d9f5d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.API.cs b/Assets/XCharts/Runtime/Internal/BaseChart.API.cs new file mode 100644 index 0000000..230af44 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.API.cs @@ -0,0 +1,542 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// The base class of all charts. + /// |所有Chart的基类。 + /// </summary> + public partial class BaseChart + { + /// <summary> + /// The name of chart. + /// |</summary> + public string chartName + { + get { return m_ChartName; } + set + { + if (!string.IsNullOrEmpty(value) && XChartsMgr.ContainsChart(value)) + { + Debug.LogError("chartName repeated:" + value); + } + else + { + m_ChartName = value; + } + } + } + /// <summary> + /// The theme. + /// |</summary> + public ThemeStyle theme { get { return m_Theme; } set { m_Theme = value; } } + /// <summary> + /// Global parameter setting component. + /// |全局设置组件。 + /// </summary> + public Settings settings { get { return m_Settings; } } + /// <summary> + /// The x of chart. + /// |图表的X + /// </summary> + public float chartX { get { return m_ChartX; } } + /// <summary> + /// The y of chart. + /// |图表的Y + /// </summary> + public float chartY { get { return m_ChartY; } } + /// <summary> + /// The width of chart. + /// |图表的宽 + /// </summary> + public float chartWidth { get { return m_ChartWidth; } } + /// <summary> + /// The height of chart. + /// |图表的高 + /// </summary> + public float chartHeight { get { return m_ChartHeight; } } + public Vector2 chartMinAnchor { get { return m_ChartMinAnchor; } } + public Vector2 chartMaxAnchor { get { return m_ChartMaxAnchor; } } + public Vector2 chartPivot { get { return m_ChartPivot; } } + public Vector2 chartSizeDelta { get { return m_ChartSizeDelta; } } + /// <summary> + /// The position of chart. + /// |图表的左下角起始坐标。 + /// </summary> + public Vector3 chartPosition { get { return m_ChartPosition; } } + public Rect chartRect { get { return m_ChartRect; } } + public Action onInit { set { m_OnInit = value; } } + public Action onUpdate { set { m_OnUpdate = value; } } + /// <summary> + /// 自定义绘制回调。在绘制Serie前调用。 + /// </summary> + public Action<VertexHelper> onDraw { set { m_OnDrawBase = value; } } + /// <summary> + /// 自定义Serie绘制回调。在每个Serie绘制完前调用。 + /// </summary> + public Action<VertexHelper, Serie> onDrawBeforeSerie { set { m_OnDrawSerieBefore = value; } } + /// <summary> + /// 自定义Serie绘制回调。在每个Serie绘制完后调用。 + /// </summary> + public Action<VertexHelper, Serie> onDrawAfterSerie { set { m_OnDrawSerieAfter = value; } } + /// <summary> + /// 自定义Top绘制回调。在绘制Tooltip前调用。 + /// </summary> + public Action<VertexHelper> onDrawTop { set { m_OnDrawTop = value; } } + /// <summary> + /// 自定义仪表盘指针绘制委托。 + /// </summary> + public CustomDrawGaugePointerFunction customDrawGaugePointerFunction { set { m_CustomDrawGaugePointerFunction = value; } get { return m_CustomDrawGaugePointerFunction; } } + /// <summary> + /// the callback function of click pie area. + /// |点击饼图区域回调。参数:PointerEventData,SerieIndex,SerieDataIndex + /// </summary> + public Action<PointerEventData, int, int> onPointerClickPie { set { m_OnPointerClickPie = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerClickPie; } } + /// <summary> + /// the callback function of click bar. + /// |点击柱形图柱条回调。参数:eventData, dataIndex + /// </summary> + public Action<PointerEventData, int> onPointerClickBar { set { m_OnPointerClickBar = value; m_ForceOpenRaycastTarget = true; } get { return m_OnPointerClickBar; } } + /// <summary> + /// 坐标轴变更数据索引时回调。参数:axis, dataIndex/dataValue + /// </summary> + public Action<Axis, double> onAxisPointerValueChanged { set { m_OnAxisPointerValueChanged = value; } get { return m_OnAxisPointerValueChanged; } } + /// <summary> + /// the callback function of click legend. + /// |点击图例按钮回调。参数:legendIndex, legendName, show + /// </summary> + public Action<Legend, int, string, bool> onLegendClick { set { m_OnLegendClick = value; } internal get { return m_OnLegendClick; } } + /// <summary> + /// the callback function of enter legend. + /// |鼠标进入图例回调。参数:legendIndex, legendName + /// </summary> + public Action<Legend, int, string> onLegendEnter { set { m_OnLegendEnter = value; } internal get { return m_OnLegendEnter; } } + /// <summary> + /// the callback function of exit legend. + /// |鼠标退出图例回调。参数:legendIndex, legendName + /// </summary> + public Action<Legend, int, string> onLegendExit { set { m_OnLegendExit = value; } internal get { return m_OnLegendExit; } } + public void Init(bool defaultChart = true) + { + if (defaultChart) + { + OnInit(); + DefaultChart(); + } + else + { + OnBeforeSerialize(); + } + } + /// <summary> + /// Redraw chart in next frame. + /// |在下一帧刷新整个图表。 + /// </summary> + public void RefreshChart() + { + foreach (var serie in m_Series) + serie.ResetInteract(); + m_RefreshChart = true; + if (m_Painter) m_Painter.Refresh(); + foreach (var painter in m_PainterList) painter.Refresh(); + if (m_PainterTop) m_PainterTop.Refresh(); + } + + /// <summary> + /// Redraw chart serie in next frame. + /// |在下一帧刷新图表的指定serie。 + /// </summary> + public void RefreshChart(int serieIndex) + { + RefreshPainter(GetSerie(serieIndex)); + } + + /// <summary> + /// Redraw chart serie in next frame. + /// |在下一帧刷新图表的指定serie。 + /// </summary> + public void RefreshChart(Serie serie) + { + if (serie == null) return; + serie.ResetInteract(); + RefreshPainter(serie); + } + + /// <summary> + /// Remove all series and legend data. + /// |It just emptying all of serie's data without emptying the list of series. + /// |清除所有数据,系列中只是移除数据,列表会保留。 + /// </summary> + public virtual void ClearData() + { + foreach (var serie in m_Series) + serie.ClearData(); + foreach (var component in m_Components) + component.ClearData(); + m_CheckAnimation = false; + RefreshChart(); + } + + /// <summary> + /// Remove all data from series and legend. + /// |The series list is also cleared. + /// |清除所有系列和图例数据,系列的列表也会被清除。 + /// </summary> + public virtual void RemoveData() + { + foreach (var component in m_Components) + component.ClearData(); + m_Series.Clear(); + m_SerieHandlers.Clear(); + m_CheckAnimation = false; + RefreshChart(); + } + + /// <summary> + /// Remove legend and serie by name. + /// |清除指定系列名称的数据。 + /// </summary> + /// <param name="serieName">the name of serie</param> + public virtual void RemoveData(string serieName) + { + RemoveSerie(serieName); + foreach (var component in m_Components) + { + if (component is Legend) + { + var legend = component as Legend; + legend.RemoveData(serieName); + } + } + RefreshChart(); + } + + public virtual void UpdateLegendColor(string legendName, bool active) + { + var legendIndex = m_LegendRealShowName.IndexOf(legendName); + if (legendIndex >= 0) + { + foreach (var component in m_Components) + { + if (component is Legend) + { + var legend = component as Legend; + var iconColor = LegendHelper.GetIconColor(this, legend, legendIndex, legendName, active); + var contentColor = LegendHelper.GetContentColor(this, legendIndex, legendName, legend, m_Theme, active); + legend.UpdateButtonColor(legendName, iconColor); + legend.UpdateContentColor(legendName, contentColor); + } + } + } + } + + /// <summary> + /// Whether serie is activated. + /// |获得指定图例名字的系列是否显示。 + /// </summary> + /// <param name="legendName"></param> + /// <returns></returns> + public virtual bool IsActiveByLegend(string legendName) + { + foreach (var serie in m_Series) + { + if (serie.show && legendName.Equals(serie.serieName)) + { + return true; + } + else + { + foreach (var serieData in serie.data) + { + if (serieData.show && legendName.Equals(serieData.name)) + { + return true; + } + } + } + + } + return false; + } + + /// <summary> + /// Update chart theme. + /// |切换内置主题。 + /// </summary> + /// <param name="theme">theme</param> + public bool UpdateTheme(ThemeType theme) + { + if (theme == ThemeType.Custom) + { + Debug.LogError("UpdateTheme: not support switch to Custom theme."); + return false; + } + if (m_Theme.sharedTheme == null) + m_Theme.sharedTheme = XCThemeMgr.GetTheme(ThemeType.Default); + m_Theme.sharedTheme.CopyTheme(theme); + return true; + } + + /// <summary> + /// Update chart theme info. + /// |切换图表主题。 + /// </summary> + /// <param name="theme">theme</param> + public void UpdateTheme(Theme theme) + { + m_Theme.sharedTheme = theme; + SetAllComponentDirty(); +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(this); +#endif + } + + /// <summary> + /// Whether series animation enabel. + /// |启用或关闭起始动画。 + /// </summary> + /// <param name="flag"></param> + public void AnimationEnable(bool flag) + { + foreach (var serie in m_Series) serie.AnimationEnable(flag); + } + + /// <summary> + /// fadeIn animation. + /// |开始渐入动画。 + /// </summary> + public void AnimationFadeIn() + { + foreach (var serie in m_Series) serie.AnimationFadeIn(); + } + + /// <summary> + /// fadeIn animation. + /// |开始渐出动画。 + /// </summary> + public void AnimationFadeOut() + { + foreach (var serie in m_Series) serie.AnimationFadeOut(); + } + + /// <summary> + /// Pause animation. + /// |暂停动画。 + /// </summary> + public void AnimationPause() + { + foreach (var serie in m_Series) serie.AnimationPause(); + } + + /// <summary> + /// Stop play animation. + /// |继续动画。 + /// </summary> + public void AnimationResume() + { + foreach (var serie in m_Series) serie.AnimationResume(); + } + + /// <summary> + /// Reset animation. + /// |重置动画。 + /// </summary> + public void AnimationReset() + { + foreach (var serie in m_Series) serie.AnimationReset(); + } + + /// <summary> + /// 点击图例按钮 + /// </summary> + /// <param name="legendIndex">图例按钮索引</param> + /// <param name="legendName">图例按钮名称</param> + /// <param name="show">显示还是隐藏</param> + public void ClickLegendButton(int legendIndex, string legendName, bool show) + { + OnLegendButtonClick(legendIndex, legendName, show); + RefreshChart(); + } + + /// <summary> + /// 坐标是否在图表范围内 + /// </summary> + /// <param name="local"></param> + /// <returns></returns> + public bool IsInChart(Vector2 local) + { + return IsInChart(local.x, local.y); + } + + public bool IsInChart(float x, float y) + { + if (x < m_ChartX || x > m_ChartX + m_ChartWidth || + y < m_ChartY || y > m_ChartY + m_ChartHeight) + { + return false; + } + return true; + } + + public void ClampInChart(ref Vector3 pos) + { + if (!IsInChart(pos.x, pos.y)) + { + if (pos.x < m_ChartX) pos.x = m_ChartX; + if (pos.x > m_ChartX + m_ChartWidth) pos.x = m_ChartX + m_ChartWidth; + if (pos.y < m_ChartY) pos.y = m_ChartY; + if (pos.y > m_ChartY + m_ChartHeight) pos.y = m_ChartY + m_ChartHeight; + } + } + + public Vector3 ClampInGrid(GridCoord grid, Vector3 pos) + { + if (grid.Contains(pos)) return pos; + else + { + // var pos = new Vector3(pos.x, pos.y); + if (pos.x < grid.context.x) pos.x = grid.context.x; + if (pos.x > grid.context.x + grid.context.width) pos.x = grid.context.x + grid.context.width; + if (pos.y < grid.context.y) pos.y = grid.context.y; + if (pos.y > grid.context.y + grid.context.height) pos.y = grid.context.y + grid.context.height; + return pos; + } + } + + /// <summary> + /// 转换X轴和Y轴的配置 + /// </summary> + /// <param name="index">坐标轴索引,0或1</param> + public void CovertXYAxis(int index) + { + List<MainComponent> m_XAxes; + List<MainComponent> m_YAxes; + m_ComponentMaps.TryGetValue(typeof(XAxis), out m_XAxes); + m_ComponentMaps.TryGetValue(typeof(YAxis), out m_YAxes); + if (index >= 0 && index <= 1) + { + var xAxis = m_XAxes[index] as XAxis; + var yAxis = m_YAxes[index] as YAxis; + var tempX = xAxis.Clone(); + xAxis.Copy(yAxis); + yAxis.Copy(tempX); + xAxis.context.offset = 0; + yAxis.context.offset = 0; + xAxis.context.minValue = 0; + xAxis.context.maxValue = 0; + yAxis.context.minValue = 0; + yAxis.context.maxValue = 0; + RefreshChart(); + } + } + + /// <summary> + /// 在下一帧刷新DataZoom + /// </summary> + public void RefreshDataZoom() + { + foreach (var handler in m_ComponentHandlers) + { + if (handler is DataZoomHandler) + { + (handler as DataZoomHandler).RefreshDataZoomLabel(); + } + } + } + + /// <summary> + /// 设置可缓存的最大数据量。当数据量超过该值时,会自动删除第一个值再加入最新值。 + /// </summary> + public void SetMaxCache(int maxCache) + { + foreach (var serie in m_Series) + serie.maxCache = maxCache; + foreach (var component in m_Components) + { + if (component is Axis) + { + (component as Axis).maxCache = maxCache; + } + } + } + + public Vector3 GetTitlePosition(Title title) + { + return chartPosition + title.location.GetPosition(chartWidth, chartHeight); + } + + public int GetLegendRealShowNameIndex(string name) + { + return m_LegendRealShowName.IndexOf(name); + } + + public Color32 GetLegendRealShowNameColor(string name) + { + var index = GetLegendRealShowNameIndex(name); + return theme.GetColor(index); + } + + /// <summary> + /// 设置Base Painter的材质球 + /// </summary> + /// <param name="material"></param> + public void SetBasePainterMaterial(Material material) + { + settings.basePainterMaterial = material; + if (m_Painter != null) + { + m_Painter.material = material; + } + } + + /// <summary> + /// 设置Serie Painter的材质球 + /// </summary> + /// <param name="material"></param> + public void SetSeriePainterMaterial(Material material) + { + settings.basePainterMaterial = material; + if (m_PainterList != null) + { + foreach (var painter in m_PainterList) + painter.material = material; + } + } + + /// <summary> + /// 设置Top Painter的材质球 + /// </summary> + /// <param name="material"></param> + public void SetTopPainterMaterial(Material material) + { + settings.topPainterMaterial = material; + if (m_PainterTop != null) + { + m_PainterTop.material = material; + } + } + + public Color32 GetChartBackgroundColor() + { + var background = GetChartComponent<Background>(); + return theme.GetBackgroundColor(background); + } + + public Color32 GetItemColor(Serie serie, SerieData serieData, bool highlight = false) + { + var colorIndex = serieData == null || !serie.useDataNameForColor ? + GetLegendRealShowNameIndex(serie.legendName) : + GetLegendRealShowNameIndex(serieData.legendName); + return SerieHelper.GetItemColor(serie, serieData, m_Theme, colorIndex, highlight); + } + + public Color32 GetItemColor(Serie serie, bool highlight = false) + { + return SerieHelper.GetItemColor(serie, null, m_Theme, serie.context.colorIndex, highlight); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.API.cs.meta b/Assets/XCharts/Runtime/Internal/BaseChart.API.cs.meta new file mode 100644 index 0000000..fcc2101 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.API.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62d2f81e569a4477aab2091dc0b8dba7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Component.cs b/Assets/XCharts/Runtime/Internal/BaseChart.Component.cs new file mode 100644 index 0000000..e7ef7b3 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Component.cs @@ -0,0 +1,427 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public partial class BaseChart + { + public bool TryAddChartComponent<T>() where T : MainComponent + { + return TryAddChartComponent(typeof(T)); + } + + public bool TryAddChartComponent(Type type) + { + if (CanAddChartComponent(type)) + { + AddChartComponent(type); + return true; + } + else + { + return false; + } + } + + public bool TryAddChartComponent<T>(out T component) where T : MainComponent + { + var type = typeof(T); + if (CanAddChartComponent(type)) + { + component = AddChartComponent(type) as T; + return true; + } + else + { + component = null; + return false; + } + } + + public T AddChartComponent<T>() where T : MainComponent + { + return (T) AddChartComponent(typeof(T)); + } + + public T AddChartComponentWhenNoExist<T>() where T : MainComponent + { + if (HasChartComponent<T>()) return null; + return AddChartComponent<T>(); + } + + public MainComponent AddChartComponent(Type type) + { + if (!CanAddChartComponent(type)) + { + Debug.LogError("XCharts ERROR: CanAddChartComponent:" + type.Name); + return null; + } + CheckAddRequireChartComponent(type); + var component = Activator.CreateInstance(type) as MainComponent; + if (component == null) + { + Debug.LogError("XCharts ERROR: CanAddChartComponent:" + type.Name); + return null; + } + component.SetDefaultValue(); + if (component is IUpdateRuntimeData) + (component as IUpdateRuntimeData).UpdateRuntimeData(chartX, chartY, chartWidth, chartHeight); + AddComponent(component); + m_Components.Sort(); + CreateComponentHandler(component); +#if UNITY_EDITOR && UNITY_2019_1_OR_NEWER + UnityEditor.EditorUtility.SetDirty(this); +#endif + return component; + } + + private void AddComponent(MainComponent component) + { + var type = component.GetType(); + m_Components.Add(component); + List<MainComponent> list; + if (!m_ComponentMaps.TryGetValue(type, out list)) + { + list = new List<MainComponent>(); + m_ComponentMaps[type] = list; + } + component.index = list.Count; + list.Add(component); + } + + private void CheckAddRequireChartComponent(Type type) + { + if (Attribute.IsDefined(type, typeof(RequireChartComponentAttribute))) + { + foreach (var obj in type.GetCustomAttributes(typeof(RequireChartComponentAttribute), false)) + { + var attribute = obj as RequireChartComponentAttribute; + if (attribute.type0 != null && !HasChartComponent(attribute.type0)) + AddChartComponent(attribute.type0); + if (attribute.type1 != null && !HasChartComponent(attribute.type1)) + AddChartComponent(attribute.type1); + if (attribute.type2 != null && !HasChartComponent(attribute.type2)) + AddChartComponent(attribute.type2); + } + } + } + + private void CreateComponentHandler(MainComponent component) + { + if (!component.GetType().IsDefined(typeof(ComponentHandlerAttribute), false)) + { + Debug.LogError("MainComponent no Handler:" + component.GetType()); + return; + } + var attrubte = component.GetType().GetAttribute<ComponentHandlerAttribute>(); + if (attrubte.handler == null) + return; + + var handler = (MainComponentHandler) Activator.CreateInstance(attrubte.handler); + handler.attribute = attrubte; + handler.chart = this; + handler.SetComponent(component); + component.handler = handler; + m_ComponentHandlers.Add(handler); + } + + public bool RemoveChartComponent<T>(int index = 0) + where T : MainComponent + { + return RemoveChartComponent(typeof(T), index); + } + + public int RemoveChartComponents<T>() + where T : MainComponent + { + return RemoveChartComponents(typeof(T)); + } + + public void RemoveAllChartComponent() + { + m_Components.Clear(); + InitComponentHandlers(); + } + + public bool RemoveChartComponent(Type type, int index = 0) + { + MainComponent toRemove = null; + for (int i = 0; i < m_Components.Count; i++) + { + if (m_Components[i].GetType() == type && m_Components[i].index == index) + { + toRemove = m_Components[i]; + break; + } + } + return RemoveChartComponent(toRemove); + } + + public int RemoveChartComponents(Type type) + { + int count = 0; + for (int i = m_Components.Count - 1; i > 0; i--) + { + if (m_Components[i].GetType() == type) + { + RemoveChartComponent(m_Components[i]); + count++; + } + } + return count; + } + + public bool RemoveChartComponent(MainComponent component) + { + if (component == null) return false; + if (m_Components.Remove(component)) + { + if (component.gameObject != null) + ChartHelper.SetActive(component.gameObject, false); + InitComponentHandlers(); + RefreshChart(); + return true; + } + return false; + } + + public bool CanAddChartComponent(Type type) + { + if (!type.IsSubclassOf(typeof(MainComponent))) return false; + if (!m_TypeListForComponent.ContainsKey(type)) return false; + if (CanMultipleComponent(type)) return !HasChartComponent(type); + else return true; + } + + public bool HasChartComponent<T>() + where T : MainComponent + { + return HasChartComponent(typeof(T)); + } + + public bool HasChartComponent(Type type) + { + foreach (var component in m_Components) + { + if (component == null) continue; + if (component.GetType() == type) + return true; + } + return false; + } + + public bool CanMultipleComponent(Type type) + { + return Attribute.IsDefined(type, typeof(DisallowMultipleComponent)); + } + + public int GetChartComponentNum<T>() where T : MainComponent + { + return GetChartComponentNum(typeof(T)); + } + + public int GetChartComponentNum(Type type) + { + List<MainComponent> list; + if (m_ComponentMaps.TryGetValue(type, out list)) + return list.Count; + else + return 0; + } + + public T GetChartComponent<T>(int index = 0) where T : MainComponent + { + foreach (var component in m_Components) + { + if (component is T && component.index == index) + return component as T; + } + return null; + } + + public List<MainComponent> GetChartComponents<T>() where T : MainComponent + { + return m_ComponentMaps[typeof(T)]; + } + + public T GetOrAddChartComponent<T>() where T : MainComponent + { + var component = GetChartComponent<T>(); + if (component == null) + return AddChartComponent<T>(); + else + return component; + } + + public bool TryGetChartComponent<T>(out T component, int index = 0) + where T : MainComponent + { + component = null; + foreach (var com in m_Components) + { + if (com is T && com.index == index) + { + component = (T) com; + return true; + } + } + return false; + } + public GridCoord GetGrid(Vector2 local) + { + List<MainComponent> list; + if (m_ComponentMaps.TryGetValue(typeof(GridCoord), out list)) + { + foreach (var component in list) + { + var grid = component as GridCoord; + if (grid.Contains(local)) return grid; + } + } + return null; + } + + public GridCoord GetGridOfDataZoom(DataZoom dataZoom) + { + GridCoord grid = null; + if (dataZoom.xAxisIndexs != null && dataZoom.xAxisIndexs.Count > 0) + { + var xAxis = GetChartComponent<XAxis>(dataZoom.xAxisIndexs[0]); + grid = GetChartComponent<GridCoord>(xAxis.gridIndex); + } + else if (dataZoom.yAxisIndexs != null && dataZoom.yAxisIndexs.Count > 0) + { + var yAxis = GetChartComponent<YAxis>(dataZoom.yAxisIndexs[0]); + grid = GetChartComponent<GridCoord>(yAxis.gridIndex); + } + if (grid == null) return GetChartComponent<GridCoord>(); + else return grid; + } + + public DataZoom GetDataZoomOfAxis(Axis axis) + { + foreach (var component in m_Components) + { + if (component is DataZoom) + { + var dataZoom = component as DataZoom; + if (!dataZoom.enable) continue; + if (dataZoom.IsContainsAxis(axis)) return dataZoom; + } + } + return null; + } + + public VisualMap GetVisualMapOfSerie(Serie serie) + { + foreach (var component in m_Components) + { + if (component is VisualMap) + { + var visualMap = component as VisualMap; + if (visualMap.serieIndex == serie.index) return visualMap; + } + } + return null; + } + + public void GetDataZoomOfSerie(Serie serie, out DataZoom xDataZoom, out DataZoom yDataZoom) + { + xDataZoom = null; + yDataZoom = null; + if (serie == null) return; + foreach (var component in m_Components) + { + if (component is DataZoom) + { + var dataZoom = component as DataZoom; + if (!dataZoom.enable) continue; + if (dataZoom.IsContainsXAxis(serie.xAxisIndex)) + { + xDataZoom = dataZoom; + } + if (dataZoom.IsContainsYAxis(serie.yAxisIndex)) + { + yDataZoom = dataZoom; + } + } + } + } + + /// <summary> + /// reutrn true when all the show axis is `Value` type. + /// |纯数值坐标轴(数值轴或对数轴)。 + /// </summary> + public bool IsAllAxisValue() + { + foreach (var component in m_Components) + { + if (component is Axis) + { + var axis = component as Axis; + if (axis.show && !axis.IsValue() && !axis.IsLog() && !axis.IsTime()) return false; + } + } + return true; + } + + /// <summary> + /// 纯类目轴。 + /// </summary> + public bool IsAllAxisCategory() + { + foreach (var component in m_Components) + { + if (component is Axis) + { + var axis = component as Axis; + if (axis.show && !axis.IsCategory()) return false; + } + } + return true; + } + + public bool IsInAnyGrid(Vector2 local) + { + List<MainComponent> list; + if (m_ComponentMaps.TryGetValue(typeof(GridCoord), out list)) + { + foreach (var grid in list) + { + if ((grid as GridCoord).Contains(local)) return true; + } + } + return false; + } + + internal string GetTooltipCategory(int dataIndex, DataZoom dataZoom = null) + { + var xAxis = GetChartComponent<XAxis>(); + var yAxis = GetChartComponent<YAxis>(); + if (yAxis.IsCategory()) + { + return yAxis.GetData((int) yAxis.context.pointerValue, dataZoom); + } + else if (xAxis.IsCategory()) + { + return xAxis.GetData((int) xAxis.context.pointerValue, dataZoom); + } + return null; + } + internal string GetTooltipCategory(int dataIndex, Serie serie, DataZoom dataZoom = null) + { + var xAxis = GetChartComponent<XAxis>(serie.xAxisIndex); + var yAxis = GetChartComponent<YAxis>(serie.yAxisIndex); + if (yAxis.IsCategory()) + { + return yAxis.GetData((int) yAxis.context.pointerValue, dataZoom); + } + else if (xAxis.IsCategory()) + { + return xAxis.GetData((int) xAxis.context.pointerValue, dataZoom); + } + return null; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Component.cs.meta b/Assets/XCharts/Runtime/Internal/BaseChart.Component.cs.meta new file mode 100644 index 0000000..430d2a9 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Component.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abbf9c9160e2c45c4a873a7da09672be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Custom.cs b/Assets/XCharts/Runtime/Internal/BaseChart.Custom.cs new file mode 100644 index 0000000..cbd04da --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Custom.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public partial class BaseChart + { + public virtual void InitAxisRuntimeData(Axis axis) + { } + + public virtual void GetSeriesMinMaxValue(Axis axis, int axisIndex, out double tempMinValue, out double tempMaxValue) + { + if (IsAllAxisValue()) + { + if (axis is XAxis) + { + SeriesHelper.GetXMinMaxValue(m_Series, null, axisIndex, true, axis.inverse, out tempMinValue, out tempMaxValue); + } + else + { + SeriesHelper.GetYMinMaxValue(m_Series, null, axisIndex, true, axis.inverse, out tempMinValue, out tempMaxValue); + } + } + else + { + SeriesHelper.GetYMinMaxValue(m_Series, null, axisIndex, false, axis.inverse, out tempMinValue, out tempMaxValue); + } + AxisHelper.AdjustMinMaxValue(axis, ref tempMinValue, ref tempMaxValue, true); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Custom.cs.meta b/Assets/XCharts/Runtime/Internal/BaseChart.Custom.cs.meta new file mode 100644 index 0000000..4d9b1cc --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Custom.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ae62083fadc854bcc8c8312f84c6d166 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Draw.cs b/Assets/XCharts/Runtime/Internal/BaseChart.Draw.cs new file mode 100644 index 0000000..f23303b --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Draw.cs @@ -0,0 +1,134 @@ +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + public partial class BaseChart + { + public void DrawClipPolygon(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, + Color32 color, bool clip, GridCoord grid) + { + DrawClipPolygon(vh, p1, p2, p3, p4, color, color, clip, grid); + } + + public void DrawClipPolygon(VertexHelper vh, Vector3 p, float radius, Color32 color, + bool clip, bool vertical, GridCoord grid) + { + if (!IsInChart(p)) return; + if (!clip || (clip && (grid.Contains(p)))) + UGL.DrawSquare(vh, p, radius, color); + } + + public void DrawClipPolygon(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, + Color32 startColor, Color32 toColor, bool clip, GridCoord grid) + { + ClampInChart(ref p1); + ClampInChart(ref p2); + ClampInChart(ref p3); + ClampInChart(ref p4); + if (clip) + { + p1 = ClampInGrid(grid, p1); + p2 = ClampInGrid(grid, p2); + p3 = ClampInGrid(grid, p3); + p4 = ClampInGrid(grid, p4); + } + if (!clip || (clip && (grid.Contains(p1) && grid.Contains(p2) && grid.Contains(p3) && + grid.Contains(p4)))) + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, startColor, toColor); + } + + public void DrawClipPolygon(VertexHelper vh, ref Vector3 p1, ref Vector3 p2, ref Vector3 p3, ref Vector3 p4, + Color32 startColor, Color32 toColor, bool clip, GridCoord grid) + { + ClampInChart(ref p1); + ClampInChart(ref p2); + ClampInChart(ref p3); + ClampInChart(ref p4); + if (clip) + { + p1 = ClampInGrid(grid, p1); + p2 = ClampInGrid(grid, p2); + p3 = ClampInGrid(grid, p3); + p4 = ClampInGrid(grid, p4); + } + if (!clip || + (clip && (grid.Contains(p1) && grid.Contains(p2) && grid.Contains(p3) && + grid.Contains(p4)))) + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, startColor, toColor); + } + + public void DrawClipTriangle(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Color32 color, + bool clip, GridCoord grid) + { + DrawClipTriangle(vh, p1, p2, p3, color, color, color, clip, grid); + } + + public void DrawClipTriangle(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Color32 color, + Color32 color2, Color32 color3, bool clip, GridCoord grid) + { + if (!IsInChart(p1) || !IsInChart(p2) || !IsInChart(p3)) return; + if (!clip || (clip && (grid.Contains(p1) || grid.Contains(p2) || grid.Contains(p3)))) + UGL.DrawTriangle(vh, p1, p2, p3, color, color2, color3); + } + + public void DrawClipLine(VertexHelper vh, Vector3 p1, Vector3 p2, float size, Color32 color, + bool clip, GridCoord grid) + { + if (!IsInChart(p1) || !IsInChart(p2)) return; + if (!clip || (clip && (grid.Contains(p1) || grid.Contains(p2)))) + UGL.DrawLine(vh, p1, p2, size, color); + } + + public void DrawClipSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness, + Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor, float gap, + bool clip, float[] cornerRadius, GridCoord grid, Vector3 startPos) + { + if (!IsInChart(pos)) return; + if (!clip || (clip && (grid.Contains(pos)))) + DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor, + gap, cornerRadius, startPos); + } + + public void DrawClipZebraLine(VertexHelper vh, Vector3 p1, Vector3 p2, float size, float zebraWidth, + float zebraGap, Color32 color, Color32 toColor, bool clip, GridCoord grid, float maxDistance) + { + ClampInChart(ref p1); + ClampInChart(ref p2); + UGL.DrawZebraLine(vh, p1, p2, size, zebraWidth, zebraGap, color, toColor, maxDistance); + } + + public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness, + Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor, + float gap, float[] cornerRadius) + { + DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor, + gap, cornerRadius, Vector3.zero); + } + + public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness, + Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor, + float gap, float[] cornerRadius, Vector3 startPos) + { + var backgroundColor = GetChartBackgroundColor(); + if (ChartHelper.IsClearColor(emptyColor)) + emptyColor = backgroundColor; + var smoothness = settings.cicleSmoothness; + ChartDrawer.DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, gap, + cornerRadius, emptyColor, backgroundColor, borderColor, smoothness, startPos); + } + + public Color32 GetXLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid) + { + if (ChartHelper.IsValueEqualsColor(areaColor, areaToColor)) return areaColor; + return Color32.Lerp(areaToColor, areaColor, (pos.y - grid.context.y) / grid.context.height); + } + + public Color32 GetYLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid) + { + if (ChartHelper.IsValueEqualsColor(areaColor, areaToColor)) return areaColor; + return Color32.Lerp(areaToColor, areaColor, (pos.x - grid.context.x) / grid.context.width); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Draw.cs.meta b/Assets/XCharts/Runtime/Internal/BaseChart.Draw.cs.meta new file mode 100644 index 0000000..26dffb0 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Draw.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 781bfba23eace44fcbbf9ee6924da32b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Serie.cs b/Assets/XCharts/Runtime/Internal/BaseChart.Serie.cs new file mode 100644 index 0000000..d5c28b8 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Serie.cs @@ -0,0 +1,985 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace XCharts.Runtime +{ + public partial class BaseChart + { + public T AddSerie<T>(string serieName = null, bool show = true, bool addToHead = false) where T : Serie + { + if (!CanAddSerie<T>()) return null; + var index = -1; + var serie = InsertSerie(index, typeof(T), serieName, show, addToHead) as T; + CreateSerieHandler(serie); + return serie; + } + + public T InsertSerie<T>(int index, string serieName = null, bool show = true) where T : Serie + { + if (!CanAddSerie<T>()) return null; + return InsertSerie(index, typeof(T), serieName, show) as T; + } + + public void InsertSerie(Serie serie, int index = -1, bool addToHead = false) + { + serie.AnimationRestart(); + AnimationStyleHelper.UpdateSerieAnimation(serie); + if (addToHead) m_Series.Insert(0, serie); + else if (index >= 0) m_Series.Insert(index, serie); + else m_Series.Add(serie); + ResetSeriesIndex(); + SeriesHelper.UpdateSerieNameList(this, ref m_LegendRealShowName); + } + + public bool MoveUpSerie(int serieIndex) + { + if (serieIndex < 0 || serieIndex > m_Series.Count - 1) return false; + if (serieIndex == 0) return false; + var up = GetSerie(serieIndex - 1); + var temp = GetSerie(serieIndex); + m_Series[serieIndex - 1] = temp; + m_Series[serieIndex] = up; + ResetSeriesIndex(); + InitSerieHandlers(); + RefreshChart(); + return true; + } + + public bool MoveDownSerie(int serieIndex) + { + if (serieIndex < 0 || serieIndex > m_Series.Count - 1) return false; + if (serieIndex == m_Series.Count - 1) return false; + var down = GetSerie(serieIndex + 1); + var temp = GetSerie(serieIndex); + m_Series[serieIndex + 1] = temp; + m_Series[serieIndex] = down; + ResetSeriesIndex(); + InitSerieHandlers(); + RefreshChart(); + return true; + } + + public bool CanAddSerie<T>() where T : Serie + { + return CanAddSerie(typeof(T)); + } + + public bool CanAddSerie(Type type) + { + return m_TypeListForSerie.ContainsKey(type); + } + + public bool HasSerie<T>() where T : Serie + { + return HasSerie(typeof(T)); + } + + public bool HasSerie(Type type) + { + if (!type.IsSubclassOf(typeof(Serie))) return false; + foreach (var serie in m_Series) + { + if (serie.GetType() == type) + return true; + } + return false; + } + + public T GetSerie<T>() where T : Serie + { + foreach (var serie in m_Series) + { + if (serie is T) return serie as T; + } + return null; + } + + public Serie GetSerie(string serieName) + { + foreach (var serie in m_Series) + { + if (serie.serieName.Equals(serieName)) return serie; + } + return null; + } + + public Serie GetSerie(int serieIndex) + { + if (serieIndex < 0 || serieIndex > m_Series.Count - 1) return null; + return m_Series[serieIndex]; + } + + public T GetSerie<T>(int serieIndex) where T : Serie + { + if (serieIndex < 0 || serieIndex > m_Series.Count - 1) return null; + return m_Series[serieIndex] as T; + } + + public void RemoveSerie(string serieName) + { + for (int i = m_Series.Count - 1; i >= 0; i--) + { + var serie = m_Series[i]; + if (string.IsNullOrEmpty(serie.serieName) && serie.serieName.Equals(serieName)) + RemoveSerie(serie); + } + } + + public void RemoveSerie(int serieIndex) + { + if (serieIndex < 0 || serieIndex > m_Series.Count - 1) return; + RemoveSerie(m_Series[serieIndex]); + } + + public void RemoveSerie<T>() where T : Serie + { + for (int i = m_Series.Count - 1; i >= 0; i--) + { + var serie = m_Series[i]; + if (serie is T) + RemoveSerie(serie); + } + } + + public void RemoveSerie(Serie serie) + { + serie.OnRemove(); + m_SerieHandlers.Remove(serie.handler); + m_Series.Remove(serie); + RefreshChart(); + } + + public bool CovertSerie<T>(Serie serie) where T : Serie + { + return CovertSerie(serie, typeof(T)); + } + + public bool CovertSerie(Serie serie, Type type) + { + try + { + var newSerie = type.InvokeMember("CovertSerie", + BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, + new object[] { serie }) as Serie; + return ReplaceSerie(serie, newSerie); + } + catch + { + Debug.LogError(string.Format("CovertSerie Failed: can't found {0}.CovertSerie(Serie serie)", type.Name)); + return false; + } + } + + public bool ReplaceSerie(Serie oldSerie, Serie newSerie) + { + if (oldSerie == null || newSerie == null) + return false; + + var index = m_Series.IndexOf(oldSerie); + if (index < 0) + return false; + AnimationStyleHelper.UpdateSerieAnimation(newSerie); + oldSerie.OnRemove(); + m_Series.RemoveAt(index); + m_Series.Insert(index, newSerie); + ResetSeriesIndex(); + InitSerieHandlers(); + RefreshAllComponent(); + RefreshChart(); + return true; + } + + /// <summary> + /// Add a data to serie. + /// |If serieName doesn't exist in legend,will be add to legend. + /// |添加一个数据到指定的系列中。 + /// </summary> + /// <param name="serieName">the name of serie</param> + /// <param name="data">the data to add</param> + /// <param name="dataName">the name of data</param> + /// <param name="dataId">the unique id of data</param> + /// <returns>Returns True on success</returns> + public SerieData AddData(string serieName, double data, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieName); + if (serie != null) + { + var serieData = serie.AddYData(data, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + + /// <summary> + /// Add a data to serie. + /// |添加一个数据到指定的系列中。 + /// </summary> + /// <param name="serieIndex">the index of serie</param> + /// <param name="data">the data to add</param> + /// <param name="dataName">the name of data</param> + /// <param name="dataId">the unique id of data</param> + /// <returns>Returns True on success</returns> + public SerieData AddData(int serieIndex, double data, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + var serieData = serie.AddYData(data, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + + /// <summary> + /// Add an arbitray dimension data to serie,such as (x,y,z,...). + /// |添加多维数据(x,y,z...)到指定的系列中。 + /// </summary> + /// <param name="serieName">the name of serie</param> + /// <param name="multidimensionalData">the (x,y,z,...) data</param> + /// <param name="dataName">the name of data</param> + /// <param name="dataId">the unique id of data</param> + /// <returns>Returns True on success</returns> + public SerieData AddData(string serieName, List<double> multidimensionalData, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieName); + if (serie != null) + { + var serieData = serie.AddData(multidimensionalData, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + + /// <summary> + /// Add an arbitray dimension data to serie,such as (x,y,z,...). + /// |添加多维数据(x,y,z...)到指定的系列中。 + /// </summary> + /// <param name="serieIndex">the index of serie,index starts at 0</param> + /// <param name="multidimensionalData">the (x,y,z,...) data</param> + /// <param name="dataName">the name of data</param> + /// <param name="dataId">the unique id of data</param> + /// <returns>Returns True on success</returns> + public SerieData AddData(int serieIndex, List<double> multidimensionalData, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + var serieData = serie.AddData(multidimensionalData, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + + /// <summary> + /// Add a (x,y) data to serie. + /// |添加(x,y)数据到指定系列中。 + /// </summary> + /// <param name="serieName">the name of serie</param> + /// <param name="xValue">x data</param> + /// <param name="yValue">y data</param> + /// <param name="dataName">the name of data</param> + /// <param name="dataId">the unique id of data</param> + /// <returns>Returns True on success</returns> + public SerieData AddData(string serieName, double xValue, double yValue, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieName); + if (serie != null) + { + var serieData = serie.AddXYData(xValue, yValue, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + + /// <summary> + /// Add a (x,y) data to serie. + /// |添加(x,y)数据到指定系列中。 + /// </summary> + /// <param name="serieIndex">the index of serie</param> + /// <param name="xValue">x data</param> + /// <param name="yValue">y data</param> + /// <param name="dataName">the name of data</param> + /// <param name="dataId">the unique id of data</param> + /// <returns>Returns True on success</returns> + public SerieData AddData(int serieIndex, double xValue, double yValue, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + var serieData = serie.AddXYData(xValue, yValue, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + /// <summary> + /// Add a (time,y) data to serie. + /// |添加(time,y)数据到指定的系列中。 + /// </summary> + /// <param name="serieName"></param> + /// <param name="time"></param> + /// <param name="yValue"></param> + /// <param name="dataName"></param> + /// <param name="dataId"></param> + /// <returns></returns> + public SerieData AddData(string serieName, DateTime time, double yValue, string dataName = null, string dataId = null) + { + var xValue = DateTimeUtil.GetTimestamp(time); + return AddData(serieName, xValue, yValue, dataName, dataId); + } + + /// <summary> + /// Add a (time,y) data to serie. + /// |添加(time,y)数据到指定的系列中。 + /// </summary> + /// <param name="serieIndex"></param> + /// <param name="time"></param> + /// <param name="yValue"></param> + /// <param name="dataName"></param> + /// <param name="dataId"></param> + /// <returns></returns> + public SerieData AddData(int serieIndex, DateTime time, double yValue, string dataName = null, string dataId = null) + { + var xValue = DateTimeUtil.GetTimestamp(time); + return AddData(serieIndex, xValue, yValue, dataName, dataId); + } + + public SerieData AddData(int serieIndex, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + var serieData = serie.AddData(open, close, lowest, heighest, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + public SerieData AddData(string serieName, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) + { + var serie = GetSerie(serieName); + if (serie != null) + { + var serieData = serie.AddData(open, close, lowest, heighest, dataName, dataId); + RefreshPainter(serie.painter); + return serieData; + } + return null; + } + + /// <summary> + /// Update serie data by serie name. + /// |更新指定系列中的指定索引数据。 + /// </summary> + /// <param name="serieName">the name of serie</param> + /// <param name="dataIndex">the index of data</param> + /// <param name="value">the data will be update</param> + public bool UpdateData(string serieName, int dataIndex, double value) + { + var serie = GetSerie(serieName); + if (serie != null) + { + serie.UpdateYData(dataIndex, value); + RefreshPainter(serie); + return true; + } + return false; + } + + /// <summary> + /// Update serie data by serie index. + /// |更新指定系列中的指定索引数据。 + /// </summary> + /// <param name="serieIndex">the index of serie</param> + /// <param name="dataIndex">the index of data</param> + /// <param name="value">the data will be update</param> + public bool UpdateData(int serieIndex, int dataIndex, double value) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + serie.UpdateYData(dataIndex, value); + RefreshPainter(serie); + return true; + } + return false; + } + + /// <summary> + /// 更新指定系列指定索引的数据项的多维数据。 + /// </summary> + /// <param name="serieName"></param> + /// <param name="dataIndex"></param> + /// <param name="multidimensionalData">一个数据项的多维数据列表,而不是多个数据项的数据</param> + public bool UpdateData(string serieName, int dataIndex, List<double> multidimensionalData) + { + var serie = GetSerie(serieName); + if (serie != null) + { + serie.UpdateData(dataIndex, multidimensionalData); + RefreshPainter(serie); + return true; + } + return false; + } + + /// <summary> + /// 更新指定系列指定索引的数据项的多维数据。 + /// </summary> + /// <param name="serieIndex"></param> + /// <param name="dataIndex"></param> + /// <param name="multidimensionalData">一个数据项的多维数据列表,而不是多个数据项的数据</param> + public bool UpdateData(int serieIndex, int dataIndex, List<double> multidimensionalData) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + serie.UpdateData(dataIndex, multidimensionalData); + RefreshPainter(serie); + return true; + } + return false; + } + + /// <summary> + /// 更新指定系列指定索引指定维数的数据。维数从0开始。 + /// </summary> + /// <param name="serieName"></param> + /// <param name="dataIndex"></param> + /// <param name="dimension">指定维数,从0开始</param> + /// <param name="value"></param> + public bool UpdateData(string serieName, int dataIndex, int dimension, double value) + { + var serie = GetSerie(serieName); + if (serie != null) + { + serie.UpdateData(dataIndex, dimension, value); + RefreshPainter(serie); + return true; + } + return false; + } + + /// <summary> + /// 更新指定系列指定索引指定维数的数据。维数从0开始。 + /// </summary> + /// <param name="serieIndex"></param> + /// <param name="dataIndex"></param> + /// <param name="dimension">指定维数,从0开始</param> + /// <param name="value"></param> + public bool UpdateData(int serieIndex, int dataIndex, int dimension, double value) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + serie.UpdateData(dataIndex, dimension, value); + RefreshPainter(serie); + return true; + } + return false; + } + + /// <summary> + /// Update serie data name. + /// |更新指定系列中的指定索引数据名称。 + /// </summary> + /// <param name="serieName"></param> + /// <param name="dataIndex"></param> + /// <param name="dataName"></param> + public bool UpdateDataName(string serieName, int dataIndex, string dataName) + { + var serie = GetSerie(serieName); + if (serie != null) + { + serie.UpdateDataName(dataIndex, dataName); + return true; + } + return false; + } + + /// <summary> + /// Update serie data name. + /// |更新指定系列中的指定索引数据名称。 + /// </summary> + /// <param name="serieIndex"></param> + /// <param name="dataName"></param> + /// <param name="dataIndex"></param> + public bool UpdateDataName(int serieIndex, int dataIndex, string dataName) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + serie.UpdateDataName(dataIndex, dataName); + return true; + } + return false; + } + + public double GetData(string serieName, int dataIndex, int dimension = 1) + { + var serie = GetSerie(serieName); + if (serie != null) + { + return serie.GetData(dataIndex, dimension); + } + return 0; + } + + public double GetData(int serieIndex, int dataIndex, int dimension = 1) + { + var serie = GetSerie(serieIndex); + if (serie != null) + { + return serie.GetData(dataIndex, dimension); + } + return 0; + } + + public int GetAllSerieDataCount() + { + var total = 0; + foreach (var serie in m_Series) + total += serie.dataCount; + return total; + } + + /// <summary> + /// Whether to show serie. + /// |设置指定系列是否显示。 + /// </summary> + /// <param name="serieName">the name of serie</param> + /// <param name="active">Active or not</param> + public void SetSerieActive(string serieName, bool active) + { + var serie = GetSerie(serieName); + if (serie != null) + SetSerieActive(serie, active); + } + + /// <summary> + /// Whether to show serie. + /// |设置指定系列是否显示。 + /// </summary> + /// <param name="serieIndex">the index of serie</param> + /// <param name="active">Active or not</param> + public void SetSerieActive(int serieIndex, bool active) + { + var serie = GetSerie(serieIndex); + if (serie != null) + SetSerieActive(serie, active); + } + + public void SetSerieActive(Serie serie, bool active) + { + serie.show = active; + serie.AnimationReset(); + if (active) serie.AnimationFadeIn(); + UpdateLegendColor(serie.serieName, active); + } + + /// <summary> + /// Add a category data to xAxis. + /// |添加一个类目数据到指定的x轴。 + /// </summary> + /// <param name="category">the category data</param> + /// <param name="xAxisIndex">which xAxis should category add to</param> + public void AddXAxisData(string category, int xAxisIndex = 0) + { + var xAxis = GetChartComponent<XAxis>(xAxisIndex); + if (xAxis != null) + { + xAxis.AddData(category); + } + } + + /// <summary> + /// Update category data. + /// |更新X轴类目数据。 + /// </summary> + /// <param name="index">the index of category data</param> + /// <param name="category"></param> + /// <param name="xAxisIndex">which xAxis index to update to</param> + public void UpdateXAxisData(int index, string category, int xAxisIndex = 0) + { + var xAxis = GetChartComponent<XAxis>(xAxisIndex); + if (xAxis != null) + { + xAxis.UpdateData(index, category); + } + } + + /// <summary> + /// Add an icon to xAxis. + /// |添加一个图标到指定的x轴。 + /// </summary> + /// <param name="icon"></param> + /// <param name="xAxisIndex"></param> + public void AddXAxisIcon(Sprite icon, int xAxisIndex = 0) + { + var xAxis = GetChartComponent<XAxis>(xAxisIndex); + if (xAxis != null) + { + xAxis.AddIcon(icon); + } + } + + /// <summary> + /// Update xAxis icon. + /// |更新X轴图标。 + /// </summary> + /// <param name="index"></param> + /// <param name="icon"></param> + /// <param name="xAxisIndex"></param> + public void UdpateXAxisIcon(int index, Sprite icon, int xAxisIndex = 0) + { + var xAxis = GetChartComponent<XAxis>(xAxisIndex); + if (xAxis != null) + { + xAxis.UpdateIcon(index, icon); + } + } + + /// <summary> + /// Add a category data to yAxis. + /// |添加一个类目数据到指定的y轴。 + /// </summary> + /// <param name="category">the category data</param> + /// <param name="yAxisIndex">which yAxis should category add to</param> + public void AddYAxisData(string category, int yAxisIndex = 0) + { + var yAxis = GetChartComponent<YAxis>(yAxisIndex); + if (yAxis != null) + { + yAxis.AddData(category); + } + } + + /// <summary> + /// Update category data. + /// |更新Y轴类目数据。 + /// </summary> + /// <param name="index">the index of category data</param> + /// <param name="category"></param> + /// <param name="yAxisIndex">which yAxis index to update to</param> + public void UpdateYAxisData(int index, string category, int yAxisIndex = 0) + { + var yAxis = GetChartComponent<YAxis>(yAxisIndex); + if (yAxis != null) + { + yAxis.UpdateData(index, category); + } + } + + /// <summary> + /// Add an icon to yAxis. + /// |添加一个图标到指定的y轴。 + /// </summary> + /// <param name="icon"></param> + /// <param name="yAxisIndex"></param> + public void AddYAxisIcon(Sprite icon, int yAxisIndex = 0) + { + var yAxis = GetChartComponent<YAxis>(yAxisIndex); + if (yAxis != null) + { + yAxis.AddIcon(icon); + } + } + + /// <summary> + /// 更新Y轴图标。 + /// </summary> + /// <param name="index"></param> + /// <param name="icon"></param> + /// <param name="yAxisIndex"></param> + public void UpdateYAxisIcon(int index, Sprite icon, int yAxisIndex = 0) + { + var yAxis = GetChartComponent<YAxis>(yAxisIndex); + if (yAxis != null) + { + yAxis.UpdateIcon(index, icon); + } + } + + public float GetSerieBarGap<T>() where T : Serie + { + float gap = 0f; + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + if (serie is T) + { + if (serie.barGap != 0) + { + gap = serie.barGap; + } + } + } + return gap; + } + + public double GetSerieSameStackTotalValue<T>(string stack, int dataIndex) where T : Serie + { + if (string.IsNullOrEmpty(stack)) return 0; + double total = 0; + foreach (var serie in m_Series) + { + if (serie is T) + { + if (stack.Equals(serie.stack)) + { + total += serie.data[dataIndex].data[1]; + } + } + } + return total; + } + + public int GetSerieBarRealCount<T>() where T : Serie + { + var count = 0; + barStackSet.Clear(); + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + if (!serie.show) continue; + if (serie is T) + { + if (!string.IsNullOrEmpty(serie.stack)) + { + if (barStackSet.Contains(serie.stack)) continue; + barStackSet.Add(serie.stack); + } + count++; + + } + } + return count; + } + + private HashSet<string> barStackSet = new HashSet<string>(); + public float GetSerieTotalWidth<T>(float categoryWidth, float gap, int realBarCount) where T : Serie + { + float total = 0; + float lastGap = 0; + barStackSet.Clear(); + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + if (!serie.show) continue; + if (serie is T) + { + if (!string.IsNullOrEmpty(serie.stack)) + { + if (barStackSet.Contains(serie.stack)) continue; + barStackSet.Add(serie.stack); + } + var width = GetStackBarWidth<T>(categoryWidth, serie, realBarCount); + if (gap == -1) + { + if (width > total) total = width; + } + else + { + lastGap = ChartHelper.GetActualValue(gap, width); + total += width; + total += lastGap; + } + } + } + if (total > 0 && gap != -1) total -= lastGap; + return total; + } + + public float GetSerieTotalGap<T>(float categoryWidth, float gap, int index) where T : Serie + { + if (index <= 0) return 0; + var total = 0f; + var count = 0; + var totalRealBarCount = GetSerieBarRealCount<T>(); + barStackSet.Clear(); + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + if (!serie.show) continue; + if (serie is T) + { + if (!string.IsNullOrEmpty(serie.stack)) + { + if (barStackSet.Contains(serie.stack)) continue; + barStackSet.Add(serie.stack); + } + var width = GetStackBarWidth<T>(categoryWidth, serie, totalRealBarCount); + if (gap == -1) + { + if (width > total) total = width; + } + else + { + total += width + ChartHelper.GetActualValue(gap, width); + } + if (count + 1 >= index) + break; + else + count++; + } + } + return total; + } + + private float GetStackBarWidth<T>(float categoryWidth, Serie now, int realBarCount) where T : Serie + { + if (string.IsNullOrEmpty(now.stack)) return now.GetBarWidth(categoryWidth, realBarCount); + float barWidth = 0; + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + if ((serie is T) && + serie.show && now.stack.Equals(serie.stack)) + { + if (serie.barWidth > barWidth) barWidth = serie.barWidth; + } + } + if (barWidth == 0) + { + var width = ChartHelper.GetActualValue(0.6f, categoryWidth); + if (realBarCount == 0) + return width < 1 ? categoryWidth : width; + else + return width / realBarCount; + } + else + return ChartHelper.GetActualValue(barWidth, categoryWidth); + } + + private List<string> tempList = new List<string>(); + public int GetSerieIndexIfStack<T>(Serie currSerie) where T : Serie + { + tempList.Clear(); + int index = 0; + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + if (!(serie is T)) continue; + if (string.IsNullOrEmpty(serie.stack)) + { + if (serie.index == currSerie.index) return index; + tempList.Add(string.Empty); + index++; + } + else + { + if (!tempList.Contains(serie.stack)) + { + if (serie.index == currSerie.index) return index; + tempList.Add(serie.stack); + index++; + } + else + { + if (serie.index == currSerie.index) return tempList.IndexOf(serie.stack); + } + } + } + return 0; + } + + internal void InitSerieHandlers() + { + m_SerieHandlers.Clear(); + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + serie.index = i; + CreateSerieHandler(serie); + } + } + + private void CreateSerieHandler(Serie serie) + { + if (serie == null) + throw new ArgumentNullException("serie is null"); + + if (!serie.GetType().IsDefined(typeof(SerieHandlerAttribute), false)) + { + Debug.LogError("Serie no Handler:" + serie.GetType()); + return; + } + var attribute = serie.GetType().GetAttribute<SerieHandlerAttribute>(); + var handler = (SerieHandler) Activator.CreateInstance(attribute.handler); + handler.attribute = attribute; + handler.chart = this; + handler.defaultDimension = 1; + handler.SetSerie(serie); + serie.handler = handler; + m_SerieHandlers.Add(handler); + } + + private Serie InsertSerie(int index, Type type, string serieName, bool show = true, bool addToHead = false) + { + CheckAddRequireChartComponent(type); + var serie = Activator.CreateInstance(type) as Serie; + serie.show = show; + serie.serieName = serieName; + serie.serieType = type.Name; + serie.index = m_Series.Count; + + if (type == typeof(Scatter)) + { + serie.symbol.show = true; + serie.symbol.type = SymbolType.Circle; + } + else if (type == typeof(Line)) + { + serie.symbol.show = true; + serie.symbol.type = SymbolType.EmptyCircle; + } + else + { + serie.symbol.show = false; + } + InsertSerie(serie, index, addToHead); + return serie; + } + + private void ResetSeriesIndex() + { +#if UNITY_EDITOR && UNITY_2019_1_OR_NEWER + UnityEditor.EditorUtility.SetDirty(this); +#endif + for (int i = 0; i < m_Series.Count; i++) + { + m_Series[i].index = i; + } + } + + private void AddSerieAfterDeserialize(Serie serie) + { + serie.OnAfterDeserialize(); + m_Series.Add(serie); + } + + public string GenerateDefaultSerieName() + { + return "serie" + m_Series.Count; + } + + public bool IsSerieName(string name) + { + if (string.IsNullOrEmpty(name)) + return false; + foreach (var serie in m_Series) + { + if (name.Equals(serie.serieName)) + return true; + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.Serie.cs.meta b/Assets/XCharts/Runtime/Internal/BaseChart.Serie.cs.meta new file mode 100644 index 0000000..841dd30 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.Serie.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70fab7deef662441eaaee4d6ddd43295 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.cs b/Assets/XCharts/Runtime/Internal/BaseChart.cs new file mode 100644 index 0000000..50b44db --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.cs @@ -0,0 +1,698 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [AddComponentMenu("XCharts/EmptyChart", 10)] + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public partial class BaseChart : BaseGraph, ISerializationCallbackReceiver + { + [SerializeField] protected string m_ChartName; + [SerializeField] protected ThemeStyle m_Theme = new ThemeStyle(); + [SerializeField] protected Settings m_Settings; + +#pragma warning disable 0414 + [SerializeField][ListForComponent(typeof(AngleAxis))] private List<AngleAxis> m_AngleAxes = new List<AngleAxis>(); + [SerializeField][ListForComponent(typeof(Background))] private List<Background> m_Backgrounds = new List<Background>(); + [SerializeField][ListForComponent(typeof(DataZoom))] private List<DataZoom> m_DataZooms = new List<DataZoom>(); + [SerializeField][ListForComponent(typeof(GridCoord))] private List<GridCoord> m_Grids = new List<GridCoord>(); + [SerializeField][ListForComponent(typeof(Legend))] private List<Legend> m_Legends = new List<Legend>(); + [SerializeField][ListForComponent(typeof(MarkLine))] private List<MarkLine> m_MarkLines = new List<MarkLine>(); + [SerializeField][ListForComponent(typeof(MarkArea))] private List<MarkArea> m_MarkAreas = new List<MarkArea>(); + [SerializeField][ListForComponent(typeof(PolarCoord))] private List<PolarCoord> m_Polars = new List<PolarCoord>(); + [SerializeField][ListForComponent(typeof(RadarCoord))] private List<RadarCoord> m_Radars = new List<RadarCoord>(); + [SerializeField][ListForComponent(typeof(RadiusAxis))] private List<RadiusAxis> m_RadiusAxes = new List<RadiusAxis>(); + [SerializeField][ListForComponent(typeof(Title))] private List<Title> m_Titles = new List<Title>(); + [SerializeField][ListForComponent(typeof(Tooltip))] private List<Tooltip> m_Tooltips = new List<Tooltip>(); + [SerializeField][ListForComponent(typeof(VisualMap))] private List<VisualMap> m_VisualMaps = new List<VisualMap>(); + [SerializeField][ListForComponent(typeof(XAxis))] private List<XAxis> m_XAxes = new List<XAxis>(); + [SerializeField][ListForComponent(typeof(YAxis))] private List<YAxis> m_YAxes = new List<YAxis>(); + [SerializeField][ListForComponent(typeof(SingleAxis))] private List<SingleAxis> m_SingleAxes = new List<SingleAxis>(); + [SerializeField][ListForComponent(typeof(ParallelCoord))] private List<ParallelCoord> m_Parallels = new List<ParallelCoord>(); + [SerializeField][ListForComponent(typeof(ParallelAxis))] private List<ParallelAxis> m_ParallelAxes = new List<ParallelAxis>(); + [SerializeField][ListForComponent(typeof(Comment))] private List<Comment> m_Comments = new List<Comment>(); + + [SerializeField][ListForSerie(typeof(Bar))] private List<Bar> m_SerieBars = new List<Bar>(); + [SerializeField][ListForSerie(typeof(Candlestick))] private List<Candlestick> m_SerieCandlesticks = new List<Candlestick>(); + [SerializeField][ListForSerie(typeof(EffectScatter))] private List<EffectScatter> m_SerieEffectScatters = new List<EffectScatter>(); + [SerializeField][ListForSerie(typeof(Heatmap))] private List<Heatmap> m_SerieHeatmaps = new List<Heatmap>(); + [SerializeField][ListForSerie(typeof(Line))] private List<Line> m_SerieLines = new List<Line>(); + [SerializeField][ListForSerie(typeof(Pie))] private List<Pie> m_SeriePies = new List<Pie>(); + [SerializeField][ListForSerie(typeof(Radar))] private List<Radar> m_SerieRadars = new List<Radar>(); + [SerializeField][ListForSerie(typeof(Ring))] private List<Ring> m_SerieRings = new List<Ring>(); + [SerializeField][ListForSerie(typeof(Scatter))] private List<Scatter> m_SerieScatters = new List<Scatter>(); + [SerializeField][ListForSerie(typeof(Parallel))] private List<Parallel> m_SerieParallels = new List<Parallel>(); + [SerializeField][ListForSerie(typeof(SimplifiedLine))] private List<SimplifiedLine> m_SerieSimplifiedLines = new List<SimplifiedLine>(); + [SerializeField][ListForSerie(typeof(SimplifiedBar))] private List<SimplifiedBar> m_SerieSimplifiedBars = new List<SimplifiedBar>(); + [SerializeField][ListForSerie(typeof(SimplifiedCandlestick))] private List<SimplifiedCandlestick> m_SerieSimplifiedCandlesticks = new List<SimplifiedCandlestick>(); +#pragma warning restore 0414 + protected List<Serie> m_Series = new List<Serie>(); + protected List<MainComponent> m_Components = new List<MainComponent>(); + + protected Dictionary<Type, FieldInfo> m_TypeListForComponent = new Dictionary<Type, FieldInfo>(); + protected Dictionary<Type, FieldInfo> m_TypeListForSerie = new Dictionary<Type, FieldInfo>(); + + protected Dictionary<Type, List<MainComponent>> m_ComponentMaps = new Dictionary<Type, List<MainComponent>>(); + + public Dictionary<Type, FieldInfo> typeListForComponent { get { return m_TypeListForComponent; } } + public Dictionary<Type, FieldInfo> typeListForSerie { get { return m_TypeListForSerie; } } + public List<MainComponent> components { get { return m_Components; } } + + public List<Serie> series { get { return m_Series; } } + + protected float m_ChartWidth; + protected float m_ChartHeight; + protected float m_ChartX; + protected float m_ChartY; + protected Vector3 m_ChartPosition = Vector3.zero; + protected Vector2 m_ChartMinAnchor; + protected Vector2 m_ChartMaxAnchor; + protected Vector2 m_ChartPivot; + protected Vector2 m_ChartSizeDelta; + + protected Rect m_ChartRect = new Rect(0, 0, 0, 0); + protected Action m_OnInit; + protected Action m_OnUpdate; + protected Action<VertexHelper> m_OnDrawBase; + protected Action<VertexHelper> m_OnDrawTop; + protected Action<VertexHelper, Serie> m_OnDrawSerieBefore; + protected Action<VertexHelper, Serie> m_OnDrawSerieAfter; + protected Action<PointerEventData, int, int> m_OnPointerClickPie; + protected Action<PointerEventData, int> m_OnPointerClickBar; + protected Action<Axis, double> m_OnAxisPointerValueChanged; + protected Action<Legend, int, string, bool> m_OnLegendClick; + protected Action<Legend, int, string> m_OnLegendEnter; + protected Action<Legend, int, string> m_OnLegendExit; + + protected CustomDrawGaugePointerFunction m_CustomDrawGaugePointerFunction; + + internal bool m_CheckAnimation = false; + internal protected List<string> m_LegendRealShowName = new List<string>(); + protected List<Painter> m_PainterList = new List<Painter>(); + internal Painter m_PainterTop; + internal int m_BasePainterVertCount; + internal int m_TopPainterVertCount; + + private ThemeType m_CheckTheme = 0; + protected List<MainComponentHandler> m_ComponentHandlers = new List<MainComponentHandler>(); + protected List<SerieHandler> m_SerieHandlers = new List<SerieHandler>(); + + protected virtual void DefaultChart() { } + + protected override void InitComponent() + { + base.InitComponent(); + SeriesHelper.UpdateSerieNameList(this, ref m_LegendRealShowName); + foreach (var handler in m_ComponentHandlers) + handler.InitComponent(); + foreach (var handler in m_SerieHandlers) + handler.InitComponent(); + m_DebugInfo.Init(this); + } + + protected override void Awake() + { + if (m_Settings == null) + m_Settings = Settings.DefaultSettings; + CheckTheme(); + base.Awake(); + InitComponentHandlers(); + InitSerieHandlers(); + AnimationReset(); + AnimationFadeIn(); + XChartsMgr.AddChart(this); + } + + protected void OnInit() + { + RemoveAllChartComponent(); + OnBeforeSerialize(); + AddChartComponentWhenNoExist<Title>(); + AddChartComponentWhenNoExist<Tooltip>(); + + GetChartComponent<Title>().text = GetType().Name; + + if (m_Theme.sharedTheme != null) + m_Theme.sharedTheme.CopyTheme(ThemeType.Default); + else + m_Theme.sharedTheme = XCThemeMgr.GetTheme(ThemeType.Default); + + var sizeDelta = rectTransform.sizeDelta; + if (sizeDelta.x < 580 && sizeDelta.y < 300) + { + rectTransform.sizeDelta = new Vector2(580, 300); + } + ChartHelper.HideAllObject(transform); + if (m_OnInit != null) + m_OnInit(); + } + +#if UNITY_EDITOR + protected override void Reset() + { + base.Reset(); + OnInit(); + DefaultChart(); + Awake(); + } +#endif + + protected override void Start() + { + RefreshChart(); + } + + protected override void Update() + { + CheckTheme(); + base.Update(); + CheckPainter(); + CheckRefreshChart(); + Internal_CheckAnimation(); + foreach (var handler in m_SerieHandlers) handler.Update(); + foreach (var handler in m_ComponentHandlers) handler.Update(); + m_DebugInfo.Update(); + if (m_OnUpdate != null) + m_OnUpdate(); + } + + public Painter GetPainter(int index) + { + if (index >= 0 && index < m_PainterList.Count) + { + return m_PainterList[index]; + } + return null; + } + + public void RefreshBasePainter() + { + m_Painter.Refresh(); + } + public void RefreshTopPainter() + { + m_PainterTop.Refresh(); + } + + public void RefreshPainter(int index) + { + var painter = GetPainter(index); + RefreshPainter(painter); + } + + public void RefreshPainter(Serie serie) + { + if (serie == null) return; + RefreshPainter(GetPainterIndexBySerie(serie)); + } + + internal override void RefreshPainter(Painter painter) + { + base.RefreshPainter(painter); + if (painter != null && painter.type == Painter.Type.Serie) + { + m_PainterTop.Refresh(); + } + } + + public void SetPainterActive(int index, bool flag) + { + var painter = GetPainter(index); + if (painter == null) return; + painter.SetActive(flag, m_DebugInfo.showAllChartObject); + } + + protected virtual void CheckTheme() + { + if (m_Theme.sharedTheme == null) + { + m_Theme.sharedTheme = XCThemeMgr.GetTheme(ThemeType.Default); + } + if (m_Theme.sharedTheme != null && m_CheckTheme != m_Theme.themeType) + { + m_CheckTheme = m_Theme.themeType; + m_Theme.sharedTheme.CopyTheme(m_CheckTheme); +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(this); +#endif + SetAllComponentDirty(); + OnThemeChanged(); + } + } + protected override void CheckComponent() + { + base.CheckComponent(); + if (m_Theme.anyDirty) + { + if (m_Theme.componentDirty) + { + SetAllComponentDirty(); + } + if (m_Theme.vertsDirty) RefreshChart(); + m_Theme.ClearDirty(); + } + foreach (var com in m_Components) + CheckComponentDirty(com); + } + + protected void CheckComponentDirty(MainComponent component) + { + if (component == null) return; + if (component.anyDirty) + { + if (component.componentDirty && component.refreshComponent != null) + { + component.refreshComponent.Invoke(); + } + if (component.vertsDirty) + { + if (component.painter != null) + { + RefreshPainter(component.painter); + } + } + component.ClearDirty(); + } + } + + protected override void SetAllComponentDirty() + { + base.SetAllComponentDirty(); + m_Theme.SetAllDirty(); + foreach (var com in m_Components) com.SetAllDirty(); + m_RefreshChart = true; + } + + protected override void OnDestroy() + { + for (int i = transform.childCount - 1; i >= 0; i--) + { + DestroyImmediate(transform.GetChild(i).gameObject); + } + } + + protected virtual void CheckPainter() + { + for (int i = 0; i < m_Series.Count; i++) + { + var serie = m_Series[i]; + serie.index = i; + SetPainterActive(i, true); + } + } + + protected override void InitPainter() + { + base.InitPainter(); + if (settings == null) return; + m_Painter.material = settings.basePainterMaterial; + m_PainterList.Clear(); + var sizeDelta = new Vector2(m_GraphWidth, m_GraphHeight); + for (int i = 0; i < settings.maxPainter; i++) + { + var index = settings.reversePainter ? settings.maxPainter - 1 - i : i; + var painter = ChartHelper.AddPainterObject("painter_" + index, transform, m_GraphMinAnchor, + m_GraphMaxAnchor, m_GraphPivot, sizeDelta, chartHideFlags, 2 + index); + painter.index = m_PainterList.Count; + painter.type = Painter.Type.Serie; + painter.onPopulateMesh = OnDrawPainterSerie; + painter.SetActive(false, m_DebugInfo.showAllChartObject); + painter.material = settings.seriePainterMaterial; + painter.transform.SetSiblingIndex(index + 1); + m_PainterList.Add(painter); + } + m_PainterTop = ChartHelper.AddPainterObject("painter_t", transform, m_GraphMinAnchor, + m_GraphMaxAnchor, m_GraphPivot, sizeDelta, chartHideFlags, 2 + settings.maxPainter); + m_PainterTop.type = Painter.Type.Top; + m_PainterTop.onPopulateMesh = OnDrawPainterTop; + m_PainterTop.SetActive(true, m_DebugInfo.showAllChartObject); + m_PainterTop.material = settings.topPainterMaterial; + m_PainterTop.transform.SetSiblingIndex(settings.maxPainter + 1); + } + + internal void InitComponentHandlers() + { + m_ComponentHandlers.Clear(); + m_Components.Sort(); + m_ComponentMaps.Clear(); + foreach (var component in m_Components) + { + var type = component.GetType(); + List<MainComponent> list; + if (!m_ComponentMaps.TryGetValue(type, out list)) + { + list = new List<MainComponent>(); + m_ComponentMaps[type] = list; + } + component.index = list.Count; + list.Add(component); + CreateComponentHandler(component); + } + } + + protected override void CheckRefreshChart() + { + if (m_Painter == null) return; + if (m_RefreshChart) + { + CheckRefreshPainter(); + m_RefreshChart = false; + } + } + + protected override void CheckRefreshPainter() + { + if (m_Painter == null) return; + m_Painter.CheckRefresh(); + foreach (var painter in m_PainterList) painter.CheckRefresh(); + if (m_PainterTop != null) m_PainterTop.CheckRefresh(); + } + + public void Internal_CheckAnimation() + { + if (!m_CheckAnimation) + { + m_CheckAnimation = true; + AnimationFadeIn(); + } + } + + protected override void OnSizeChanged() + { + base.OnSizeChanged(); + m_ChartWidth = m_GraphWidth; + m_ChartHeight = m_GraphHeight; + m_ChartX = m_GraphX; + m_ChartY = m_GraphY; + m_ChartPosition = m_GraphPosition; + m_ChartMinAnchor = m_GraphMinAnchor; + m_ChartMaxAnchor = m_GraphMaxAnchor; + m_ChartPivot = m_GraphPivot; + m_ChartSizeDelta = m_GraphSizeDelta; + m_ChartRect = m_GraphRect; + SetAllComponentDirty(); + OnCoordinateChanged(); + RefreshChart(); + } + + internal virtual void OnSerieDataUpdate(int serieIndex) + { + foreach (var handler in m_ComponentHandlers) handler.OnSerieDataUpdate(serieIndex); + } + + internal virtual void OnCoordinateChanged() + { + foreach (var component in m_Components) + { + if (component is Axis) + component.SetAllDirty(); + if (component is IUpdateRuntimeData) + (component as IUpdateRuntimeData).UpdateRuntimeData(m_ChartX, m_ChartY, m_ChartWidth, m_ChartHeight); + } + } + + protected override void OnLocalPositionChanged() + { + Background background; + if (TryGetChartComponent<Background>(out background)) + background.SetAllDirty(); + } + + protected virtual void OnThemeChanged() { } + + public virtual void OnDataZoomRangeChanged(DataZoom dataZoom) + { + foreach (var index in dataZoom.xAxisIndexs) + { + var axis = GetChartComponent<XAxis>(index); + if (axis != null && axis.show) axis.SetAllDirty(); + } + foreach (var index in dataZoom.yAxisIndexs) + { + var axis = GetChartComponent<YAxis>(index); + if (axis != null && axis.show) axis.SetAllDirty(); + } + } + + public override void OnPointerClick(PointerEventData eventData) + { + m_DebugInfo.clickChartCount++; + base.OnPointerClick(eventData); + foreach (var handler in m_SerieHandlers) handler.OnPointerClick(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnPointerClick(eventData); + } + + public override void OnPointerDown(PointerEventData eventData) + { + base.OnPointerDown(eventData); + foreach (var handler in m_SerieHandlers) handler.OnPointerDown(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnPointerDown(eventData); + } + + public override void OnPointerUp(PointerEventData eventData) + { + base.OnPointerUp(eventData); + foreach (var handler in m_SerieHandlers) handler.OnPointerUp(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnPointerUp(eventData); + } + + public override void OnPointerEnter(PointerEventData eventData) + { + base.OnPointerEnter(eventData); + foreach (var handler in m_SerieHandlers) handler.OnPointerEnter(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnPointerEnter(eventData); + } + + public override void OnPointerExit(PointerEventData eventData) + { + base.OnPointerExit(eventData); + foreach (var handler in m_SerieHandlers) handler.OnPointerExit(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnPointerExit(eventData); + } + + public override void OnBeginDrag(PointerEventData eventData) + { + base.OnBeginDrag(eventData); + foreach (var handler in m_SerieHandlers) handler.OnBeginDrag(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnBeginDrag(eventData); + } + + public override void OnDrag(PointerEventData eventData) + { + base.OnDrag(eventData); + foreach (var handler in m_SerieHandlers) handler.OnDrag(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnDrag(eventData); + } + + public override void OnEndDrag(PointerEventData eventData) + { + base.OnEndDrag(eventData); + foreach (var handler in m_SerieHandlers) handler.OnEndDrag(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnEndDrag(eventData); + } + + public override void OnScroll(PointerEventData eventData) + { + base.OnScroll(eventData); + foreach (var handler in m_SerieHandlers) handler.OnScroll(eventData); + foreach (var handler in m_ComponentHandlers) handler.OnScroll(eventData); + } + + public virtual void OnLegendButtonClick(int index, string legendName, bool show) + { + foreach (var handler in m_SerieHandlers) + handler.OnLegendButtonClick(index, legendName, show); + } + + public virtual void OnLegendButtonEnter(int index, string legendName) + { + foreach (var handler in m_SerieHandlers) + handler.OnLegendButtonEnter(index, legendName); + } + + public virtual void OnLegendButtonExit(int index, string legendName) + { + foreach (var handler in m_SerieHandlers) + handler.OnLegendButtonExit(index, legendName); + } + + protected override void OnDrawPainterBase(VertexHelper vh, Painter painter) + { + vh.Clear(); + DrawBackground(vh); + DrawPainterBase(vh); + foreach (var handler in m_ComponentHandlers) handler.DrawBase(vh); + foreach (var handler in m_SerieHandlers) handler.DrawBase(vh); + if (m_OnDrawBase != null) + { + m_OnDrawBase(vh); + } + m_BasePainterVertCount = vh.currentVertCount; + } + + protected virtual void OnDrawPainterSerie(VertexHelper vh, Painter painter) + { + vh.Clear(); + var maxPainter = settings.maxPainter; + var maxSeries = m_Series.Count; + var rate = Mathf.CeilToInt(maxSeries * 1.0f / maxPainter); + m_PainterTop.Refresh(); + m_DebugInfo.refreshCount++; + for (int i = painter.index * rate; i < (painter.index + 1) * rate && i < maxSeries; i++) + { + var serie = m_Series[i]; + serie.context.colorIndex = GetLegendRealShowNameIndex(serie.legendName); + serie.context.dataPoints.Clear(); + serie.context.dataIgnores.Clear(); + serie.animation.context.isAllItemAnimationEnd = true; + if (!serie.context.pointerEnter) + serie.ResetInteract(); + + if (m_OnDrawSerieBefore != null) + { + m_OnDrawSerieBefore.Invoke(vh, serie); + } + DrawPainterSerie(vh, serie); + if (i >= 0 && i < m_SerieHandlers.Count) + { + var handler = m_SerieHandlers[i]; + handler.DrawSerie(vh); + handler.RefreshLabelNextFrame(); + } + if (m_OnDrawSerieAfter != null) + { + m_OnDrawSerieAfter(vh, serie); + } + serie.context.vertCount = vh.currentVertCount; + } + } + + protected virtual void OnDrawPainterTop(VertexHelper vh, Painter painter) + { + vh.Clear(); + DrawPainterTop(vh); + foreach (var draw in m_ComponentHandlers) draw.DrawTop(vh); + if (m_OnDrawTop != null) + { + m_OnDrawTop(vh); + } + m_TopPainterVertCount = vh.currentVertCount; + } + + protected virtual void DrawPainterSerie(VertexHelper vh, Serie serie) { } + + protected virtual void DrawPainterTop(VertexHelper vh) + { + foreach (var handler in m_SerieHandlers) + handler.DrawTop(vh); + } + + protected virtual void DrawBackground(VertexHelper vh) + { + var background = GetChartComponent<Background>(); + if (background != null && background.show) + return; + Vector3 p1 = new Vector3(chartX, chartY + chartHeight); + Vector3 p2 = new Vector3(chartX + chartWidth, chartY + chartHeight); + Vector3 p3 = new Vector3(chartX + chartWidth, chartY); + Vector3 p4 = new Vector3(chartX, chartY); + UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, theme.backgroundColor); + } + + protected int GetPainterIndexBySerie(Serie serie) + { + var maxPainter = settings.maxPainter; + var maxSeries = m_Series.Count; + if (maxPainter >= maxSeries) return serie.index; + else + { + var rate = Mathf.CeilToInt(maxSeries * 1.0f / maxPainter); + return serie.index / rate; + } + } + + private void InitListForFieldInfos() + { + if (m_TypeListForSerie.Count != 0) return; + m_TypeListForComponent.Clear(); + m_TypeListForSerie.Clear(); + var fileds1 = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance); + var fileds2 = GetType().BaseType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance); + var list = ListPool<FieldInfo>.Get(); + list.AddRange(fileds1); + list.AddRange(fileds2); + foreach (var field in list) + { + var attribute1 = field.GetAttribute<ListForSerie>(false); + if (attribute1 != null) + m_TypeListForSerie.Add(attribute1.type, field); + + var attribute2 = field.GetAttribute<ListForComponent>(false); + if (attribute2 != null) + m_TypeListForComponent.Add(attribute2.type, field); + } + ListPool<FieldInfo>.Release(list); + } + + public void OnBeforeSerialize() + { +#if UNITY_EDITOR && UNITY_2019_1_OR_NEWER + if (!UnityEditor.EditorUtility.IsDirty(this)) + return; + UnityEditor.EditorUtility.ClearDirty(this); +#endif + InitListForFieldInfos(); + foreach (var kv in m_TypeListForSerie) + { + ReflectionUtil.InvokeListClear(this, kv.Value); + } + foreach (var kv in m_TypeListForComponent) + { + ReflectionUtil.InvokeListClear(this, kv.Value); + } + foreach (var component in m_Components) + { + FieldInfo field; + if (m_TypeListForComponent.TryGetValue(component.GetType(), out field)) + ReflectionUtil.InvokeListAdd(this, field, component); + else + Debug.LogError("No ListForComponent:" + component.GetType()); + } + foreach (var serie in m_Series) + { + FieldInfo field; + serie.OnBeforeSerialize(); + if (m_TypeListForSerie.TryGetValue(serie.GetType(), out field)) + ReflectionUtil.InvokeListAdd(this, field, serie); + else + Debug.LogError("No ListForSerie:" + serie.GetType()); + } + } + + public void OnAfterDeserialize() + { + InitListForFieldInfos(); + m_Components.Clear(); + m_Series.Clear(); + foreach (var kv in m_TypeListForComponent) + { + ReflectionUtil.InvokeListAddTo<MainComponent>(this, kv.Value, AddComponent); + } + foreach (var kv in m_TypeListForSerie) + { + ReflectionUtil.InvokeListAddTo<Serie>(this, kv.Value, AddSerieAfterDeserialize); + } + m_Series.Sort(); + m_Components.Sort(); + InitComponentHandlers(); + InitSerieHandlers(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.cs.meta b/Assets/XCharts/Runtime/Internal/BaseChart.cs.meta new file mode 100644 index 0000000..25be7da --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseChart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5053a63a1ebdfe4f8972f194156c3d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseGraph.API.cs b/Assets/XCharts/Runtime/Internal/BaseGraph.API.cs new file mode 100644 index 0000000..a929022 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseGraph.API.cs @@ -0,0 +1,169 @@ +using System; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace XCharts.Runtime +{ + /// <summary> + /// The base class of all graphs or components. + /// |所有图形的基类。 + /// </summary> + public partial class BaseGraph + { + /// <summary> + /// The x of graph. + /// |图形的X + /// </summary> + public float graphX { get { return m_GraphX; } } + /// <summary> + /// The y of graph. + /// |图形的Y + /// </summary> + public float graphY { get { return m_GraphY; } } + /// <summary> + /// The width of graph. + /// |图形的宽 + /// </summary> + public float graphWidth { get { return m_GraphWidth; } } + /// <summary> + /// The height of graph. + /// |图形的高 + /// </summary> + public float graphHeight { get { return m_GraphHeight; } } + /// <summary> + /// The position of graph. + /// |图形的左下角起始坐标。 + /// </summary> + public Vector3 graphPosition { get { return m_GraphPosition; } } + public Rect graphRect { get { return m_GraphRect; } } + /// <summary> + /// The postion of pointer. + /// |鼠标位置。 + /// </summary> + public Vector2 pointerPos { get; protected set; } + /// <summary> + /// Whether the mouse pointer is in the chart. + /// |鼠标是否在图表内。 + /// </summary> + public bool isPointerInChart { get; protected set; } + /// <summary> + /// 警告信息。 + /// </summary> + public string warningInfo { get; protected set; } + /// <summary> + /// 强制开启鼠标事件检测。 + /// </summary> + public bool forceOpenRaycastTarget { get { return m_ForceOpenRaycastTarget; } set { m_ForceOpenRaycastTarget = value; } } + /// <summary> + /// 鼠标点击回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onPointerClick { set { m_OnPointerClick = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标按下回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onPointerDown { set { m_OnPointerDown = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标弹起回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onPointerUp { set { m_OnPointerUp = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标进入回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onPointerEnter { set { m_OnPointerEnter = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标退出回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onPointerExit { set { m_OnPointerExit = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标开始拖拽回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onBeginDrag { set { m_OnBeginDrag = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标拖拽回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onDrag { set { m_OnDrag = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标结束拖拽回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onEndDrag { set { m_OnEndDrag = value; m_ForceOpenRaycastTarget = true; } } + /// <summary> + /// 鼠标滚动回调。 + /// </summary> + public Action<PointerEventData, BaseGraph> onScroll { set { m_OnScroll = value; m_ForceOpenRaycastTarget = true; } } + + /// <summary> + /// 设置图形的宽高(在非stretch pivot下才有效,其他情况需要自己调整RectTransform) + /// </summary> + /// <param name="width"></param> + /// <param name="height"></param> + public virtual void SetSize(float width, float height) + { + if (LayerHelper.IsFixedWidthHeight(rectTransform)) + { + rectTransform.sizeDelta = new Vector2(width, height); + } + else + { + Debug.LogError("Can't set size on stretch pivot,you need to modify rectTransform by yourself."); + } + } + + /// <summary> + /// 重新初始化Painter + /// </summary> + public void SetPainterDirty() + { + m_PainerDirty = true; + } + + /// <summary> + /// Redraw graph in next frame. + /// |在下一帧刷新图形。 + /// </summary> + public void RefreshGraph() + { + m_RefreshChart = true; + } + + public void RefreshAllComponent() + { + SetAllComponentDirty(); + RefreshGraph(); + } + + /// <summary> + /// 检测警告信息。 + /// </summary> + /// <returns></returns> + public string CheckWarning() + { + warningInfo = CheckHelper.CheckChart(this); + return warningInfo; + } + + /// <summary> + /// 移除并重新创建所有图表的Object。 + /// </summary> + public void RebuildChartObject() + { + ChartHelper.DestroyAllChildren(transform); + SetAllComponentDirty(); + } + + public bool ScreenPointToChartPoint(Vector2 screenPoint, out Vector2 chartPoint) + { +#if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX + var relative = Display.RelativeMouseAt(screenPoint); + if (relative != Vector3.zero) + screenPoint = relative; +#endif + var cam = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : canvas.worldCamera; + if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, + screenPoint, cam, out chartPoint)) + { + return false; + } + return true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseGraph.API.cs.meta b/Assets/XCharts/Runtime/Internal/BaseGraph.API.cs.meta new file mode 100644 index 0000000..26a83ab --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseGraph.API.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46b27d174989044f3b63eaf0c3b21fcd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/BaseGraph.cs b/Assets/XCharts/Runtime/Internal/BaseGraph.cs new file mode 100644 index 0000000..28b212d --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseGraph.cs @@ -0,0 +1,318 @@ +using System; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [RequireComponent(typeof(CanvasRenderer))] + public partial class BaseGraph : MaskableGraphic, IPointerDownHandler, IPointerUpHandler, + IPointerEnterHandler, IPointerExitHandler, IBeginDragHandler, IPointerClickHandler, + IDragHandler, IEndDragHandler, IScrollHandler + { + + [SerializeField] protected bool m_EnableTextMeshPro = false; + [SerializeField] protected DebugInfo m_DebugInfo = new DebugInfo(); + + protected Painter m_Painter; + protected int m_SiblingIndex; + + protected float m_GraphWidth; + protected float m_GraphHeight; + protected float m_GraphX; + protected float m_GraphY; + protected Vector3 m_GraphPosition = Vector3.zero; + protected Vector2 m_GraphMinAnchor; + protected Vector2 m_GraphMaxAnchor; + protected Vector2 m_GraphPivot; + protected Vector2 m_GraphSizeDelta; + protected Vector2 m_GraphAnchoredPosition; + protected Rect m_GraphRect = new Rect(0, 0, 0, 0); + protected bool m_RefreshChart = false; + protected bool m_ForceOpenRaycastTarget; + protected bool m_IsControlledByLayout = false; + protected bool m_PainerDirty = false; + protected bool m_IsOnValidate = false; + protected Vector3 m_LastLocalPosition; + + protected Action<PointerEventData, BaseGraph> m_OnPointerClick; + protected Action<PointerEventData, BaseGraph> m_OnPointerDown; + protected Action<PointerEventData, BaseGraph> m_OnPointerUp; + protected Action<PointerEventData, BaseGraph> m_OnPointerEnter; + protected Action<PointerEventData, BaseGraph> m_OnPointerExit; + protected Action<PointerEventData, BaseGraph> m_OnBeginDrag; + protected Action<PointerEventData, BaseGraph> m_OnDrag; + protected Action<PointerEventData, BaseGraph> m_OnEndDrag; + protected Action<PointerEventData, BaseGraph> m_OnScroll; + + protected Vector2 graphAnchorMax { get { return m_GraphMinAnchor; } } + protected Vector2 graphAnchorMin { get { return m_GraphMaxAnchor; } } + protected Vector2 graphPivot { get { return m_GraphPivot; } } + public HideFlags chartHideFlags { get { return m_DebugInfo.showAllChartObject ? HideFlags.None : HideFlags.HideInHierarchy; } } + public DebugInfo debug { get { return m_DebugInfo; } } + private ScrollRect m_ScrollRect; + + public Painter painter { get { return m_Painter; } } + + protected virtual void InitComponent() + { + InitPainter(); + } + + protected override void Awake() + { + CheckTextMeshPro(); + m_SiblingIndex = 0; + m_LastLocalPosition = transform.localPosition; + UpdateSize(); + InitComponent(); + CheckIsInScrollRect(); + } + + protected override void Start() + { + m_RefreshChart = true; + } + + protected virtual void Update() + { + CheckSize(); + if (m_IsOnValidate) + { + m_IsOnValidate = false; + m_RefreshChart = true; + CheckTextMeshPro(); + InitComponent(); + } + else + { + CheckComponent(); + } + CheckPointerPos(); + CheckRefreshChart(); + CheckRefreshPainter(); + } + + protected virtual void SetAllComponentDirty() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + { + m_IsOnValidate = true; + } +#endif + m_PainerDirty = true; + } + + protected virtual void CheckComponent() + { + if (m_PainerDirty) + { + InitPainter(); + m_PainerDirty = false; + } + } + + private void CheckTextMeshPro() + { +#if dUI_TextMeshPro + var enableTextMeshPro = true; +#else + var enableTextMeshPro = false; +#endif + if (m_EnableTextMeshPro != enableTextMeshPro) + { + m_EnableTextMeshPro = enableTextMeshPro; + RebuildChartObject(); + } + } + +#if UNITY_EDITOR + protected override void Reset() + { } + + protected override void OnValidate() + { + m_IsOnValidate = true; + } +#endif + + protected override void OnDestroy() + { + for (int i = transform.childCount - 1; i >= 0; i--) + { + DestroyImmediate(transform.GetChild(i).gameObject); + } + } + + protected override void OnPopulateMesh(VertexHelper vh) + { + vh.Clear(); + } + + protected virtual void InitPainter() + { + m_Painter = ChartHelper.AddPainterObject("painter_b", transform, m_GraphMinAnchor, + m_GraphMaxAnchor, m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight), chartHideFlags, 1); + m_Painter.type = Painter.Type.Base; + m_Painter.onPopulateMesh = OnDrawPainterBase; + m_Painter.transform.SetSiblingIndex(0); + } + + private void CheckSize() + { + var currWidth = rectTransform.rect.width; + var currHeight = rectTransform.rect.height; + + if (m_GraphWidth == 0 && m_GraphHeight == 0 && (currWidth != 0 || currHeight != 0)) + { + Awake(); + } + + if (m_GraphWidth != currWidth || + m_GraphHeight != currHeight || + m_GraphMinAnchor != rectTransform.anchorMin || + m_GraphMaxAnchor != rectTransform.anchorMax || + m_GraphAnchoredPosition != rectTransform.anchoredPosition) + { + UpdateSize(); + } + if (!ChartHelper.IsValueEqualsVector3(m_LastLocalPosition, transform.localPosition)) + { + m_LastLocalPosition = transform.localPosition; + OnLocalPositionChanged(); + } + } + + protected void UpdateSize() + { + m_GraphWidth = rectTransform.rect.width; + m_GraphHeight = rectTransform.rect.height; + + m_GraphMaxAnchor = rectTransform.anchorMax; + m_GraphMinAnchor = rectTransform.anchorMin; + m_GraphSizeDelta = rectTransform.sizeDelta; + m_GraphAnchoredPosition = rectTransform.anchoredPosition; + + rectTransform.pivot = LayerHelper.ResetChartPositionAndPivot(m_GraphMinAnchor, m_GraphMaxAnchor, + m_GraphWidth, m_GraphHeight, ref m_GraphX, ref m_GraphY); + m_GraphPivot = rectTransform.pivot; + + m_GraphRect.x = m_GraphX; + m_GraphRect.y = m_GraphY; + m_GraphRect.width = m_GraphWidth; + m_GraphRect.height = m_GraphHeight; + m_GraphPosition.x = m_GraphX; + m_GraphPosition.y = m_GraphY; + + OnSizeChanged(); + } + + private void CheckPointerPos() + { + if (!isPointerInChart) return; + if (canvas == null) return; + Vector2 local; + if (!ScreenPointToChartPoint(Input.mousePosition, out local)) + { + pointerPos = Vector2.zero; + } + else + { + pointerPos = local; + } + } + + protected virtual void CheckIsInScrollRect() + { + m_ScrollRect = GetComponentInParent<ScrollRect>(); + } + + protected virtual void CheckRefreshChart() + { + if (m_RefreshChart) + { + m_Painter.Refresh(); + m_RefreshChart = false; + } + } + + protected virtual void CheckRefreshPainter() + { + m_Painter.CheckRefresh(); + } + + internal virtual void RefreshPainter(Painter painter) + { + if (painter == null) return; + painter.Refresh(); + } + + protected virtual void OnSizeChanged() + { + m_RefreshChart = true; + } + + protected virtual void OnLocalPositionChanged() + { } + + protected virtual void OnDrawPainterBase(VertexHelper vh, Painter painter) + { + DrawPainterBase(vh); + } + + protected virtual void DrawPainterBase(VertexHelper vh) + { } + + public virtual void OnPointerClick(PointerEventData eventData) + { + if (m_OnPointerClick != null) m_OnPointerClick(eventData, this); + } + + public virtual void OnPointerDown(PointerEventData eventData) + { + if (m_OnPointerDown != null) m_OnPointerDown(eventData, this); + } + + public virtual void OnPointerUp(PointerEventData eventData) + { + if (m_OnPointerUp != null) m_OnPointerUp(eventData, this); + } + + public virtual void OnPointerEnter(PointerEventData eventData) + { + isPointerInChart = true; + if (m_OnPointerEnter != null) m_OnPointerEnter(eventData, this); + } + + public virtual void OnPointerExit(PointerEventData eventData) + { + isPointerInChart = false; + if (m_OnPointerExit != null) m_OnPointerExit(eventData, this); + } + + public virtual void OnBeginDrag(PointerEventData eventData) + { + if (m_ScrollRect != null) m_ScrollRect.OnBeginDrag(eventData); + if (m_OnBeginDrag != null) m_OnBeginDrag(eventData, this); + } + + public virtual void OnEndDrag(PointerEventData eventData) + { + if (m_ScrollRect != null) m_ScrollRect.OnEndDrag(eventData); + if (m_OnEndDrag != null) m_OnEndDrag(eventData, this); + } + + public virtual void OnDrag(PointerEventData eventData) + { + if (m_ScrollRect != null) m_ScrollRect.OnDrag(eventData); + if (m_OnDrag != null) m_OnDrag(eventData, this); + } + + public virtual void OnScroll(PointerEventData eventData) + { + if (m_ScrollRect != null) m_ScrollRect.OnScroll(eventData); + if (m_OnScroll != null) m_OnScroll(eventData, this); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/BaseGraph.cs.meta b/Assets/XCharts/Runtime/Internal/BaseGraph.cs.meta new file mode 100644 index 0000000..fb3c60e --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/BaseGraph.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f059825ead3b4a7da7f1fbcebbf545e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Basic.meta b/Assets/XCharts/Runtime/Internal/Basic.meta new file mode 100644 index 0000000..e554ca9 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31e8b0503e55d41f0bf3baab818d0dfa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Basic/BaseSerie.cs b/Assets/XCharts/Runtime/Internal/Basic/BaseSerie.cs new file mode 100644 index 0000000..57c992a --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/BaseSerie.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + public abstract class BaseSerie + { + public virtual bool vertsDirty { get { return m_VertsDirty; } } + public virtual bool componentDirty { get { return m_ComponentDirty; } } + public virtual bool useDataNameForColor { get { return false; } } + public virtual bool titleJustForSerie { get { return false; } } + public virtual bool useSortData { get { return false; } } + public virtual bool multiDimensionLabel { get { return false; } } + public bool anyDirty { get { return vertsDirty || componentDirty; } } + public Painter painter { get { return m_Painter; } set { m_Painter = value; } } + public Action refreshComponent { get; set; } + public GameObject gameObject { get; set; } + + [NonSerialized] protected bool m_VertsDirty; + [NonSerialized] protected bool m_ComponentDirty; + [NonSerialized] protected Painter m_Painter; + [NonSerialized] public SerieContext context = new SerieContext(); + [NonSerialized] public InteractData interact = new InteractData(); + + public SerieHandler handler { get; set; } + + public virtual void SetVerticesDirty() + { + m_VertsDirty = true; + } + + public virtual void ClearVerticesDirty() + { + m_VertsDirty = false; + } + + public virtual void SetComponentDirty() + { + m_ComponentDirty = true; + } + + public virtual void ClearComponentDirty() + { + m_ComponentDirty = false; + } + + public virtual void ClearData() + { } + + public virtual void ClearDirty() + { + ClearVerticesDirty(); + ClearComponentDirty(); + } + + public virtual void SetAllDirty() + { + SetVerticesDirty(); + SetComponentDirty(); + } + + public virtual void OnRemove() + { + if (handler != null) + handler.RemoveComponent(); + } + + public virtual void OnDataUpdate() + { } + + public virtual void OnBeforeSerialize() + { } + + public virtual void OnAfterDeserialize() + { + OnDataUpdate(); + } + + public void RefreshLabel() + { + if (handler != null) + handler.RefreshLabelNextFrame(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Basic/BaseSerie.cs.meta b/Assets/XCharts/Runtime/Internal/Basic/BaseSerie.cs.meta new file mode 100644 index 0000000..7280559 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/BaseSerie.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28d00b46c33234f0ab88a5756f63679b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Basic/ChildComponent.cs b/Assets/XCharts/Runtime/Internal/Basic/ChildComponent.cs new file mode 100644 index 0000000..90bca35 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/ChildComponent.cs @@ -0,0 +1,63 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class ChildComponent + { + public virtual int index { get; set; } + + [NonSerialized] protected bool m_VertsDirty; + [NonSerialized] protected bool m_ComponentDirty; + [NonSerialized] protected Painter m_Painter; + + /// <summary> + /// 图表重绘标记。 + /// </summary> + public virtual bool vertsDirty { get { return m_VertsDirty; } } + /// <summary> + /// 组件重新初始化标记。 + /// </summary> + public virtual bool componentDirty { get { return m_ComponentDirty; } } + /// <summary> + /// 需要重绘图表或重新初始化组件。 + /// </summary> + public bool anyDirty { get { return vertsDirty || componentDirty; } } + public Painter painter { get { return m_Painter; } set { m_Painter = value; } } + public Action refreshComponent { get; set; } + public GameObject gameObject { get; set; } + + public virtual void SetVerticesDirty() + { + m_VertsDirty = true; + } + + public virtual void ClearVerticesDirty() + { + m_VertsDirty = false; + } + + public virtual void SetComponentDirty() + { + m_ComponentDirty = true; + } + + public virtual void ClearComponentDirty() + { + m_ComponentDirty = false; + } + + public virtual void ClearDirty() + { + ClearVerticesDirty(); + ClearComponentDirty(); + } + + public virtual void SetAllDirty() + { + SetVerticesDirty(); + SetComponentDirty(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Basic/ChildComponent.cs.meta b/Assets/XCharts/Runtime/Internal/Basic/ChildComponent.cs.meta new file mode 100644 index 0000000..8ffda00 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/ChildComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 358324a6b44cb4b35b4393ecf2458993 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Basic/CoordSystem.cs b/Assets/XCharts/Runtime/Internal/Basic/CoordSystem.cs new file mode 100644 index 0000000..6b66f70 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/CoordSystem.cs @@ -0,0 +1,13 @@ +using System; + +namespace XCharts.Runtime +{ + /// <summary> + /// Coordinate system component. + /// | + /// 坐标系系统。 + /// </summary> + [Serializable] + public abstract class CoordSystem : MainComponent + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Basic/CoordSystem.cs.meta b/Assets/XCharts/Runtime/Internal/Basic/CoordSystem.cs.meta new file mode 100644 index 0000000..c74fa3d --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/CoordSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60a0ecce780d64885aa5875dae39aa03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Basic/MainComponent.cs b/Assets/XCharts/Runtime/Internal/Basic/MainComponent.cs new file mode 100644 index 0000000..a0834de --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/MainComponent.cs @@ -0,0 +1,123 @@ +using System; +using System.Text; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class MainComponent : IComparable + { + public int instanceId { get; internal set; } + public int index { get; internal set; } + protected bool m_VertsDirty; + protected bool m_ComponentDirty; + protected Painter m_Painter; + + /// <summary> + /// 图表重绘标记。 + /// </summary> + public virtual bool vertsDirty { get { return m_VertsDirty; } } + /// <summary> + /// 组件重新初始化标记。 + /// </summary> + public virtual bool componentDirty { get { return m_ComponentDirty; } } + /// <summary> + /// 需要重绘图表或重新初始化组件。 + /// </summary> + public bool anyDirty { get { return vertsDirty || componentDirty; } } + public Painter painter { get { return m_Painter; } set { m_Painter = value; } } + public Action refreshComponent { get; set; } + public GameObject gameObject { get; set; } + internal MainComponentHandler handler { get; set; } + + public virtual void SetVerticesDirty() + { + m_VertsDirty = true; + } + + public virtual void ClearVerticesDirty() + { + m_VertsDirty = false; + } + + public virtual void SetComponentDirty() + { + m_ComponentDirty = true; + } + + public virtual void ClearComponentDirty() + { + m_ComponentDirty = false; + } + + public virtual void Reset() { } + + public virtual void ClearData() { } + + public virtual void ClearDirty() + { + ClearVerticesDirty(); + ClearComponentDirty(); + } + + public virtual void SetAllDirty() + { + SetVerticesDirty(); + SetComponentDirty(); + } + + public virtual void SetDefaultValue() { } + + public virtual void OnRemove() + { + if (handler != null) + handler.RemoveComponent(); + } + + public int CompareTo(object obj) + { + var flag = GetType().Name.CompareTo(obj.GetType().Name); + if (flag == 0) + return index.CompareTo((obj as MainComponent).index); + else + return flag; + } + } + + public abstract class MainComponentHandler + { + public BaseChart chart { get; internal set; } + public ComponentHandlerAttribute attribute { get; internal set; } + + public virtual void InitComponent() { } + public virtual void RemoveComponent() { } + public virtual void CheckComponent(StringBuilder sb) { } + public virtual void Update() { } + public virtual void DrawBase(VertexHelper vh) { } + public virtual void DrawTop(VertexHelper vh) { } + public virtual void OnSerieDataUpdate(int serieIndex) { } + public virtual void OnPointerClick(PointerEventData eventData) { } + public virtual void OnPointerDown(PointerEventData eventData) { } + public virtual void OnPointerUp(PointerEventData eventData) { } + public virtual void OnPointerEnter(PointerEventData eventData) { } + public virtual void OnPointerExit(PointerEventData eventData) { } + public virtual void OnDrag(PointerEventData eventData) { } + public virtual void OnBeginDrag(PointerEventData eventData) { } + public virtual void OnEndDrag(PointerEventData eventData) { } + public virtual void OnScroll(PointerEventData eventData) { } + internal abstract void SetComponent(MainComponent component); + } + + public abstract class MainComponentHandler<T> : MainComponentHandler + where T : MainComponent + { + public T component { get; internal set; } + + internal override void SetComponent(MainComponent component) + { + this.component = (T) component; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Basic/MainComponent.cs.meta b/Assets/XCharts/Runtime/Internal/Basic/MainComponent.cs.meta new file mode 100644 index 0000000..7bd0ad6 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/MainComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45df06cc65b1844bab6fe52ef5d782e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Basic/MainComponentContext.cs b/Assets/XCharts/Runtime/Internal/Basic/MainComponentContext.cs new file mode 100644 index 0000000..02e10f7 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/MainComponentContext.cs @@ -0,0 +1,7 @@ +namespace XCharts.Runtime +{ + public class MainComponentContext + { + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Basic/MainComponentContext.cs.meta b/Assets/XCharts/Runtime/Internal/Basic/MainComponentContext.cs.meta new file mode 100644 index 0000000..d4f9308 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Basic/MainComponentContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f85d9a16a84b474993b84d0e705bbcf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc.meta b/Assets/XCharts/Runtime/Internal/Misc.meta new file mode 100644 index 0000000..89f5d7b --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c3110bdc66d84fd6b59aa8c6843f5e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/DelegateFunction.cs b/Assets/XCharts/Runtime/Internal/Misc/DelegateFunction.cs new file mode 100644 index 0000000..3843ca2 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/DelegateFunction.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// The delegate function for LabelStyle‘s formatter. + /// |SerieLabel的formatter自定义委托。 + /// </summary> + /// <param name="dataIndex">数据索引</param> + /// <param name="value">数值</param> + /// <returns>最终显示的文本内容</returns> + public delegate string LabelFormatterFunction(int dataIndex, double value, string category); + public delegate float AnimationDelayFunction(int dataIndex); + public delegate float AnimationDurationFunction(int dataIndex); + /// <summary> + /// 获取标记大小的回调。 + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + public delegate float SymbolSizeFunction(List<double> data); + public delegate void CustomDrawGaugePointerFunction(VertexHelper vh, int serieIndex, int dataIndex, float currentAngle); +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/DelegateFunction.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/DelegateFunction.cs.meta new file mode 100644 index 0000000..27b82fb --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/DelegateFunction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d9ec774e2e5b4d9ba407a27f60b6d71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/Enums.cs b/Assets/XCharts/Runtime/Internal/Misc/Enums.cs new file mode 100644 index 0000000..f19d2d6 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/Enums.cs @@ -0,0 +1,18 @@ +namespace XCharts.Runtime +{ + /// <summary> + /// the layout is horizontal or vertical. + /// |垂直还是水平布局方式。 + /// </summary> + public enum Orient + { + /// <summary> + /// 水平 + /// </summary> + Horizonal, + /// <summary> + /// 垂直 + /// </summary> + Vertical + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/Enums.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/Enums.cs.meta new file mode 100644 index 0000000..e27ae4c --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/Enums.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 124ff8824480945229e367921154d13a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/INeedSerieContainer.cs b/Assets/XCharts/Runtime/Internal/Misc/INeedSerieContainer.cs new file mode 100644 index 0000000..c979d5d --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/INeedSerieContainer.cs @@ -0,0 +1,13 @@ +using System.Text; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public interface INeedSerieContainer + { + int containerIndex { get; } + int containterInstanceId { get; } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/INeedSerieContainer.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/INeedSerieContainer.cs.meta new file mode 100644 index 0000000..f2dd8fc --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/INeedSerieContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69c33f4520abf483585632a17268a9a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/IPropertyChanged.cs b/Assets/XCharts/Runtime/Internal/Misc/IPropertyChanged.cs new file mode 100644 index 0000000..34f2e35 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/IPropertyChanged.cs @@ -0,0 +1,10 @@ +namespace XCharts.Runtime +{ + /// <summary> + /// 属性变更接口 + /// </summary> + public interface IPropertyChanged + { + void OnChanged(); + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/IPropertyChanged.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/IPropertyChanged.cs.meta new file mode 100644 index 0000000..6521200 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/IPropertyChanged.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24f32e2d632f08245ae885545f14a2a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISerieContainer.cs b/Assets/XCharts/Runtime/Internal/Misc/ISerieContainer.cs new file mode 100644 index 0000000..5e09dc4 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISerieContainer.cs @@ -0,0 +1,9 @@ +namespace XCharts.Runtime +{ + public interface ISerieContainer + { + //bool runtimeIsPointerEnter { get; } + int index { get; } + bool IsPointerEnter(); + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISerieContainer.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/ISerieContainer.cs.meta new file mode 100644 index 0000000..2a7b0d5 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISerieContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d02195c119c14384903aa94daf21a1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISerieDataComponent.cs b/Assets/XCharts/Runtime/Internal/Misc/ISerieDataComponent.cs new file mode 100644 index 0000000..0187300 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISerieDataComponent.cs @@ -0,0 +1,9 @@ +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public interface ISerieDataComponent + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISerieDataComponent.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/ISerieDataComponent.cs.meta new file mode 100644 index 0000000..6e31f40 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISerieDataComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 34105fa92849e42abab6320ce3ea540f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISerieExtraComponent.cs b/Assets/XCharts/Runtime/Internal/Misc/ISerieExtraComponent.cs new file mode 100644 index 0000000..dda88d4 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISerieExtraComponent.cs @@ -0,0 +1,11 @@ +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public interface ISerieExtraComponent + { + bool show { get; set; } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISerieExtraComponent.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/ISerieExtraComponent.cs.meta new file mode 100644 index 0000000..d9d9a3c --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISerieExtraComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20d76dbb8ca234b439951f6e72826c43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISimplifiedSerie.cs b/Assets/XCharts/Runtime/Internal/Misc/ISimplifiedSerie.cs new file mode 100644 index 0000000..20afab9 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISimplifiedSerie.cs @@ -0,0 +1,9 @@ +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public interface ISimplifiedSerie + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/ISimplifiedSerie.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/ISimplifiedSerie.cs.meta new file mode 100644 index 0000000..81f5854 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ISimplifiedSerie.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd917380f26ed4fb393092a4017f9907 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/ITooltipView.cs b/Assets/XCharts/Runtime/Internal/Misc/ITooltipView.cs new file mode 100644 index 0000000..e69de29 diff --git a/Assets/XCharts/Runtime/Internal/Misc/ITooltipView.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/ITooltipView.cs.meta new file mode 100644 index 0000000..fecfc56 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/ITooltipView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5ec8a82e2f9043c5b2e0b880fb024b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Misc/IUpdateRuntimeData.cs b/Assets/XCharts/Runtime/Internal/Misc/IUpdateRuntimeData.cs new file mode 100644 index 0000000..c1d7f0f --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/IUpdateRuntimeData.cs @@ -0,0 +1,11 @@ +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public interface IUpdateRuntimeData + { + void UpdateRuntimeData(float chartX, float chartY, float chartWidth, float chartHeight); + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Misc/IUpdateRuntimeData.cs.meta b/Assets/XCharts/Runtime/Internal/Misc/IUpdateRuntimeData.cs.meta new file mode 100644 index 0000000..15b89d6 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Misc/IUpdateRuntimeData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07abc4a18196a426a96d1ed14cbc7bf0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Object.meta b/Assets/XCharts/Runtime/Internal/Object.meta new file mode 100644 index 0000000..011588c --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d225ec4fe992405d91714722649cc93 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Object/ChartLabel.cs b/Assets/XCharts/Runtime/Internal/Object/ChartLabel.cs new file mode 100644 index 0000000..746e17f --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/ChartLabel.cs @@ -0,0 +1,340 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public class ChartLabel : Image + { + [SerializeField] private ChartText m_LabelText; + + private bool m_HideIconIfTextEmpty = false; + private bool m_AutoSize = true; + private float m_PaddingLeft = 0; + private float m_PaddingRight = 0; + private float m_PaddingTop = 0; + private float m_PaddingBottom = 0; + private float m_Width = 0; + private float m_Height = 0; + private RectTransform m_TextRect; + private RectTransform m_IconRect; + private RectTransform m_ObjectRect; + private Vector3 m_IconOffest; + private Align m_Align = Align.Left; + private Image m_IconImage; + + public Image icon + { + get { return m_IconImage; } + set { SetIcon(value); } + } + public ChartText text + { + get { return m_LabelText; } + set + { + m_LabelText = value; + if (value != null) m_TextRect = m_LabelText.gameObject.GetComponent<RectTransform>(); + } + } + + public bool hideIconIfTextEmpty { set { m_HideIconIfTextEmpty = value; } } + public bool isIconActive { get; private set; } + public bool isAnimationEnd { get; internal set; } + + internal RectTransform objectRect + { + get + { + if (m_ObjectRect == null) + m_ObjectRect = gameObject.GetComponent<RectTransform>(); + return m_ObjectRect; + } + } + + protected override void Awake() + { + raycastTarget = false; + } + + public void SetTextPadding(TextPadding padding) + { + m_PaddingLeft = padding.left; + m_PaddingRight = padding.right; + m_PaddingTop = padding.top; + m_PaddingBottom = padding.bottom; + UpdatePadding(); + } + public void SetPadding(float[] padding) + { + if (padding.Length >= 4) + { + m_PaddingLeft = padding[3]; + m_PaddingRight = padding[1]; + m_PaddingTop = padding[0]; + m_PaddingBottom = padding[2]; + } + else if (padding.Length >= 2) + { + m_PaddingLeft = padding[1]; + m_PaddingRight = padding[1]; + m_PaddingTop = padding[0]; + m_PaddingBottom = padding[0]; + } + else if (padding.Length == 1) + { + m_PaddingLeft = padding[0]; + m_PaddingRight = padding[0]; + m_PaddingTop = padding[0]; + m_PaddingBottom = padding[0]; + } + UpdatePadding(); + } + + public void SetIcon(Image image) + { + m_IconImage = image; + if (image != null) + { + m_IconRect = m_IconImage.GetComponent<RectTransform>(); + } + } + + public float GetWidth() + { + return m_Width; + } + + public float GetHeight() + { + return m_Height; + } + + public void SetSize(float width, float height) + { + this.m_Width = width; + this.m_Height = height; + m_AutoSize = width == 0 && height == 0; + objectRect.sizeDelta = new Vector2(width, height); + } + + public void SetIconSprite(Sprite sprite) + { + if (m_IconImage != null) m_IconImage.sprite = sprite; + } + + public void SetIconSize(float width, float height) + { + if (m_IconRect != null) m_IconRect.sizeDelta = new Vector3(width, height); + } + + public void UpdateIcon(IconStyle iconStyle, Sprite sprite = null) + { + if (m_IconImage == null || iconStyle == null) + return; + + SetIconActive(iconStyle.show); + if (iconStyle.show) + { + m_IconImage.sprite = sprite == null ? iconStyle.sprite : sprite; + m_IconImage.color = iconStyle.color; + m_IconImage.type = iconStyle.type; + m_IconRect.sizeDelta = new Vector2(iconStyle.width, iconStyle.height); + m_IconOffest = iconStyle.offset; + m_Align = iconStyle.align; + m_HideIconIfTextEmpty = iconStyle.autoHideWhenLabelEmpty; + AdjustIconPos(); + if (iconStyle.layer == IconStyle.Layer.UnderText) + m_IconRect.SetSiblingIndex(0); + else + m_IconRect.SetSiblingIndex(transform.childCount - 1); + } + } + + public float GetTextWidth() + { + if (m_TextRect) return m_TextRect.sizeDelta.x; + else return 0; + } + + public float GetTextHeight() + { + if (m_TextRect) return m_TextRect.sizeDelta.y; + return 0; + } + + public void SetTextColor(Color color) + { + if (m_LabelText != null) m_LabelText.SetColor(color); + } + + public void SetTextRotate(float rotate) + { + if (m_LabelText != null) m_LabelText.SetLocalEulerAngles(new Vector3(0, 0, rotate)); + } + + public void SetPosition(Vector3 position) + { + transform.localPosition = position; + } + + public void SetRectPosition(Vector3 position) + { + objectRect.anchoredPosition3D = position; + } + + public Vector3 GetPosition() + { + return transform.localPosition; + } + + public void SetActive(bool flag) + { + ChartHelper.SetActive(gameObject, flag); + } + public void SetTextActive(bool flag) + { + if (m_LabelText != null) m_LabelText.SetActive(flag); + } + public void SetIconActive(bool flag) + { + isIconActive = flag; + if (m_IconImage) ChartHelper.SetActive(m_IconImage, flag); + } + + public bool SetText(string text) + { + if (m_TextRect == null || m_LabelText == null) + return false; + + if (text == null) + text = ""; + if (!m_LabelText.GetText().Equals(text)) + { + m_LabelText.SetText(text); + if (m_AutoSize) + { + var newSize = string.IsNullOrEmpty(text) ? Vector2.zero : + new Vector2(m_LabelText.GetPreferredWidth(), + m_LabelText.GetPreferredHeight()); + var sizeChange = newSize.x != m_TextRect.sizeDelta.x || newSize.y != m_TextRect.sizeDelta.y; + this.m_Width = newSize.x; + this.m_Height = newSize.y; + if (sizeChange) + { + m_TextRect.sizeDelta = newSize; + UpdateSize(); + UpdatePadding(); + AdjustIconPos(); + } + return sizeChange; + } + AdjustIconPos(); + if (m_HideIconIfTextEmpty && isIconActive) + { + ChartHelper.SetActive(m_IconImage.gameObject, !string.IsNullOrEmpty(text)); + } + } + return false; + } + + private void UpdateSize() + { + if (m_AutoSize) + { + var sizeDelta = m_TextRect.sizeDelta; + m_Width = sizeDelta.x + m_PaddingLeft + m_PaddingRight; + m_Height = sizeDelta.y + m_PaddingTop + m_PaddingBottom; + objectRect.sizeDelta = new Vector2(m_Width, m_Height); + } + } + + private void UpdatePadding() + { + if (m_TextRect == null) return; + switch (text.alignment) + { + case TextAnchor.LowerLeft: + m_TextRect.anchoredPosition = new Vector2(m_PaddingLeft, m_PaddingBottom); + break; + case TextAnchor.UpperLeft: + m_TextRect.anchoredPosition = new Vector2(m_PaddingLeft, -m_PaddingTop); + break; + case TextAnchor.MiddleLeft: + m_TextRect.anchoredPosition = new Vector2(m_PaddingLeft, m_Height / 2 - m_PaddingTop - m_TextRect.sizeDelta.y / 2); + break; + case TextAnchor.LowerRight: + m_TextRect.anchoredPosition = new Vector2(-m_PaddingRight, m_PaddingBottom); + break; + case TextAnchor.UpperRight: + m_TextRect.anchoredPosition = new Vector2(-m_PaddingRight, -m_PaddingTop); + break; + case TextAnchor.MiddleRight: + m_TextRect.anchoredPosition = new Vector2(-m_PaddingRight, m_Height / 2 - m_PaddingTop - m_TextRect.sizeDelta.y / 2); + break; + case TextAnchor.LowerCenter: + m_TextRect.anchoredPosition = new Vector2(-(m_Width / 2 - m_PaddingLeft - m_TextRect.sizeDelta.x / 2), m_PaddingBottom); + break; + case TextAnchor.UpperCenter: + m_TextRect.anchoredPosition = new Vector2(-(m_Width / 2 - m_PaddingLeft - m_TextRect.sizeDelta.x / 2), -m_PaddingTop); + break; + case TextAnchor.MiddleCenter: + m_TextRect.anchoredPosition = new Vector2(-(m_Width / 2 - m_PaddingLeft - m_TextRect.sizeDelta.x / 2), m_Height / 2 - m_PaddingTop - m_TextRect.sizeDelta.y / 2); + break; + default: + break; + } + } + + private void AdjustIconPos() + { + if (m_IconImage && m_IconRect && m_LabelText != null && m_TextRect != null) + { + var iconX = 0f; + switch (m_Align) + { + case Align.Left: + switch (m_LabelText.alignment) + { + case TextAnchor.LowerLeft: + case TextAnchor.UpperLeft: + case TextAnchor.MiddleLeft: + iconX = -m_TextRect.sizeDelta.x / 2 - m_IconRect.sizeDelta.x / 2; + break; + case TextAnchor.LowerRight: + case TextAnchor.UpperRight: + case TextAnchor.MiddleRight: + iconX = m_TextRect.sizeDelta.x / 2 - m_LabelText.GetPreferredWidth() - m_IconRect.sizeDelta.x / 2; + break; + case TextAnchor.LowerCenter: + case TextAnchor.UpperCenter: + case TextAnchor.MiddleCenter: + iconX = -m_LabelText.GetPreferredWidth() / 2 - m_IconRect.sizeDelta.x / 2; + break; + } + break; + case Align.Right: + switch (m_LabelText.alignment) + { + case TextAnchor.LowerLeft: + case TextAnchor.UpperLeft: + case TextAnchor.MiddleLeft: + iconX = m_TextRect.sizeDelta.x / 2 + m_IconRect.sizeDelta.x / 2; + break; + case TextAnchor.LowerRight: + case TextAnchor.UpperRight: + case TextAnchor.MiddleRight: + iconX = m_IconRect.sizeDelta.x / 2; + break; + case TextAnchor.LowerCenter: + case TextAnchor.UpperCenter: + case TextAnchor.MiddleCenter: + iconX = m_LabelText.GetPreferredWidth() / 2 + m_IconRect.sizeDelta.x / 2; + break; + } + break; + } + m_IconRect.anchoredPosition = m_IconOffest + new Vector3(iconX, 0); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Object/ChartLabel.cs.meta b/Assets/XCharts/Runtime/Internal/Object/ChartLabel.cs.meta new file mode 100644 index 0000000..d673cbb --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/ChartLabel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61287841bdc4142caba8e77985cd8715 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Object/ChartObject.cs b/Assets/XCharts/Runtime/Internal/Object/ChartObject.cs new file mode 100644 index 0000000..143e120 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/ChartObject.cs @@ -0,0 +1,14 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + public class ChartObject + { + protected GameObject m_GameObject; + + public virtual void Destroy() + { + GameObject.Destroy(m_GameObject); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Object/ChartObject.cs.meta b/Assets/XCharts/Runtime/Internal/Object/ChartObject.cs.meta new file mode 100644 index 0000000..183b9e7 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/ChartObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0fe3102b0eea042938d30af910ca86d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Object/ChartText.cs b/Assets/XCharts/Runtime/Internal/Object/ChartText.cs new file mode 100644 index 0000000..c01b68a --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/ChartText.cs @@ -0,0 +1,319 @@ +using UnityEngine; +using UnityEngine.UI; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + [System.Serializable] + public class ChartText + { + private Text m_Text; + private TextAnchor m_TextAlignment; + public Text text + { + get { return m_Text; } + set { m_Text = value; } + } +#if dUI_TextMeshPro + private TextMeshProUGUI m_TMPText; + public TextMeshProUGUI tmpText { get { return m_TMPText; } set { m_TMPText = value; } } +#endif + public GameObject gameObject + { + get + { +#if dUI_TextMeshPro + if (m_TMPText != null) return m_TMPText.gameObject; +#else + if (m_Text != null) return m_Text.gameObject; +#endif + return null; + } + } + + public TextAnchor alignment + { + get + { + return m_TextAlignment; + } + set + { + SetAlignment(alignment); + } + } + + public ChartText() + { } + + public ChartText(GameObject textParent) + { +#if dUI_TextMeshPro + m_TMPText = textParent.GetComponentInChildren<TextMeshProUGUI>(); + if (m_TMPText == null) + { + Debug.LogError("can't find TextMeshProUGUI component:" + textParent); + } +#else + m_Text = textParent.GetComponentInChildren<Text>(); + if (m_Text == null) + { + Debug.LogError("can't find Text component:" + textParent); + } +#endif + } + + public void SetFontSize(float fontSize) + { +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.fontSize = fontSize; +#else + if (m_Text != null) m_Text.fontSize = (int) fontSize; +#endif + } + + public void SetText(string text) + { + if (text == null) text = string.Empty; + else text = text.Replace("\\n", "\n"); +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.text = text; +#else + if (m_Text != null) m_Text.text = text; +#endif + } + + public string GetText() + { +#if dUI_TextMeshPro + if (m_TMPText != null) return m_TMPText.text; +#else + if (m_Text != null) return m_Text.text; +#endif + return string.Empty; + } + + public void SetColor(Color color) + { +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.color = color; +#else + if (m_Text != null) m_Text.color = color; +#endif + } + + public void SetLineSpacing(float lineSpacing) + { +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.lineSpacing = lineSpacing; +#else + if (m_Text != null) m_Text.lineSpacing = lineSpacing; +#endif + } + + public void SetActive(bool flag) + { +#if dUI_TextMeshPro + //m_TMPText.gameObject.SetActive(flag); + if (m_TMPText != null) ChartHelper.SetActive(m_TMPText.gameObject, flag); +#else + //m_Text.gameObject.SetActive(flag); + if (m_Text != null) ChartHelper.SetActive(m_Text.gameObject, flag); +#endif + } + + public void SetLocalPosition(Vector3 position) + { +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.transform.localPosition = position; +#else + if (m_Text != null) m_Text.transform.localPosition = position; +#endif + } + + public void SetRectPosition(Vector3 position) + { +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.GetComponent<RectTransform>().anchoredPosition3D = position; +#else + if (m_Text != null) m_Text.GetComponent<RectTransform>().anchoredPosition3D = position; +#endif + } + + public void SetSizeDelta(Vector2 sizeDelta) + { +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.GetComponent<RectTransform>().sizeDelta = sizeDelta; +#else + if (m_Text != null) m_Text.GetComponent<RectTransform>().sizeDelta = sizeDelta; +#endif + } + + public void SetLocalEulerAngles(Vector3 position) + { +#if dUI_TextMeshPro + if (m_TMPText != null) m_TMPText.transform.localEulerAngles = position; +#else + if (m_Text != null) m_Text.transform.localEulerAngles = position; +#endif + } + + public void SetAlignment(TextAnchor alignment) + { + m_TextAlignment = alignment; +#if dUI_TextMeshPro + if (m_TMPText == null) return; + switch (alignment) + { + case TextAnchor.LowerCenter: + m_TMPText.alignment = TextAlignmentOptions.Bottom; + break; + case TextAnchor.LowerLeft: + m_TMPText.alignment = TextAlignmentOptions.BottomLeft; + break; + case TextAnchor.LowerRight: + m_TMPText.alignment = TextAlignmentOptions.BottomRight; + break; + case TextAnchor.MiddleCenter: + m_TMPText.alignment = TextAlignmentOptions.Center; + break; + case TextAnchor.MiddleLeft: + m_TMPText.alignment = TextAlignmentOptions.Left; + break; + case TextAnchor.MiddleRight: + m_TMPText.alignment = TextAlignmentOptions.Right; + break; + case TextAnchor.UpperCenter: + m_TMPText.alignment = TextAlignmentOptions.Top; + break; + case TextAnchor.UpperLeft: + m_TMPText.alignment = TextAlignmentOptions.TopLeft; + break; + case TextAnchor.UpperRight: + m_TMPText.alignment = TextAlignmentOptions.TopRight; + break; + default: + m_TMPText.alignment = TextAlignmentOptions.Center; + m_TextAlignment = TextAnchor.MiddleCenter; + break; + } +#else + if (m_Text != null) m_Text.alignment = alignment; +#endif + } + + public void SetFont(Font font) + { + if (m_Text) m_Text.font = font; + } + + public void SetFontStyle(FontStyle fontStyle) + { +#if dUI_TextMeshPro + if (m_TMPText == null) return; + switch (fontStyle) + { + case FontStyle.Normal: + m_TMPText.fontStyle = FontStyles.Normal; + break; + case FontStyle.Bold: + m_TMPText.fontStyle = FontStyles.Bold; + break; + case FontStyle.BoldAndItalic: + m_TMPText.fontStyle = FontStyles.Bold | FontStyles.Italic; + break; + case FontStyle.Italic: + m_TMPText.fontStyle = FontStyles.Italic; + break; + } +#else + if (m_Text != null) m_Text.fontStyle = fontStyle; +#endif + } + + public void SetFontAndSizeAndStyle(TextStyle textStyle, ComponentTheme theme) + { +#if dUI_TextMeshPro + if (m_TMPText == null) return; + m_TMPText.font = textStyle.tmpFont == null ? theme.tmpFont : textStyle.tmpFont; + m_TMPText.fontSize = textStyle.fontSize == 0 ? theme.fontSize : textStyle.fontSize; + m_TMPText.fontStyle = textStyle.tmpFontStyle; +#else + if (m_Text != null) + { + m_Text.font = textStyle.font == null ? theme.font : textStyle.font; + m_Text.fontSize = textStyle.fontSize == 0 ? theme.fontSize : textStyle.fontSize; + m_Text.fontStyle = textStyle.fontStyle; + } +#endif + } + + public float GetPreferredWidth(string content) + { +#if dUI_TextMeshPro + if (m_TMPText != null) return 0; // TODO: +#else + if (m_Text != null) + { + var tg = m_Text.cachedTextGeneratorForLayout; + var setting = m_Text.GetGenerationSettings(Vector2.zero); + return tg.GetPreferredWidth(content, setting) / m_Text.pixelsPerUnit; + } +#endif + return 0; + } + + public float GetPreferredWidth() + { +#if dUI_TextMeshPro + if (m_TMPText != null) return m_TMPText.preferredWidth; +#else + if (m_Text != null) return m_Text.preferredWidth; +#endif + return 0; + } + public float GetPreferredHeight() + { +#if dUI_TextMeshPro + if (m_TMPText != null) return m_TMPText.preferredHeight; +#else + if (m_Text != null) return m_Text.preferredHeight; +#endif + return 0; + } + + public string GetPreferredText(string content, string suffix, float maxWidth) + { +#if dUI_TextMeshPro + if (m_TMPText != null) return content; // TODO: +#else + if (m_Text != null) + { + var sourWid = GetPreferredWidth(content); + if (sourWid < maxWidth) return content; + var suffixWid = GetPreferredWidth(suffix); + var textWid = maxWidth - 1.3f * suffixWid; + for (int i = content.Length; i > 0; i--) + { + var temp = content.Substring(0, i); + if (GetPreferredWidth(temp) < textWid) + { + return temp + suffix; + } + } + } +#endif + return string.Empty; + } + +#if dUI_TextMeshPro + + public void SetFont(TMP_FontAsset font) + { + if (m_TMPText != null) m_TMPText.font = font; + } +#endif + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Object/ChartText.cs.meta b/Assets/XCharts/Runtime/Internal/Object/ChartText.cs.meta new file mode 100644 index 0000000..6b1b33d --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/ChartText.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e2466c1fe5874bea8373b071405a930 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Object/LegendItem.cs b/Assets/XCharts/Runtime/Internal/Object/LegendItem.cs new file mode 100644 index 0000000..9a6f754 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/LegendItem.cs @@ -0,0 +1,213 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public class LegendItem + { + private int m_Index; + private string m_Name; + private string m_LegendName; + private GameObject m_GameObject; + private Button m_Button; + private Image m_Icon; + private ChartText m_Text; + private Image m_TextBackground; + private RectTransform m_Rect; + private RectTransform m_IconRect; + private RectTransform m_TextRect; + private RectTransform m_TextBackgroundRect; + private float m_Gap = 0f; + private float m_LabelPaddingLeftRight = 0f; + private float m_LabelPaddingTopBottom = 0f; + private bool m_LabelAutoSize = true; + + public int index { get { return m_Index; } set { m_Index = value; } } + public string name { get { return m_Name; } set { m_Name = value; } } + public string legendName { get { return m_LegendName; } set { m_LegendName = value; } } + public GameObject gameObject { get { return m_GameObject; } } + public Button button { get { return m_Button; } } + public float width + { + get + { + if (m_IconRect && m_TextBackgroundRect) + { + return m_IconRect.sizeDelta.x + m_Gap + m_TextBackgroundRect.sizeDelta.x; + } + else + { + return 0; + } + } + } + + public float height + { + get + { + if (m_IconRect && m_TextBackgroundRect) + { + return Mathf.Max(m_IconRect.sizeDelta.y, m_TextBackgroundRect.sizeDelta.y); + } + else + { + return 0; + } + } + } + + public void SetObject(GameObject obj) + { + m_GameObject = obj; + m_Button = obj.GetComponent<Button>(); + m_Rect = obj.GetComponent<RectTransform>(); + m_Icon = obj.transform.Find("icon").gameObject.GetComponent<Image>(); + m_TextBackground = obj.transform.Find("content").gameObject.GetComponent<Image>(); + m_Text = new ChartText(obj); + m_IconRect = m_Icon.gameObject.GetComponent<RectTransform>(); + m_TextRect = m_Text.gameObject.GetComponent<RectTransform>(); + m_TextBackgroundRect = m_TextBackground.gameObject.GetComponent<RectTransform>(); + } + + public void SetButton(Button button) + { + m_Button = button; + } + + public void SetIcon(Image icon) + { + m_Icon = icon; + } + + public void SetText(ChartText text) + { + m_Text = text; + } + + public void SetTextBackground(Image image) + { + m_TextBackground = image; + } + + public void SetIconSize(float width, float height) + { + if (m_IconRect) + { + m_IconRect.sizeDelta = new Vector2(width, height); + } + } + + public Rect GetIconRect() + { + if (m_GameObject && m_IconRect) + { + var pos = m_GameObject.transform.localPosition; + var sizeDelta = m_IconRect.sizeDelta; + var y = pos.y - (m_Rect.sizeDelta.y - sizeDelta.y) / 2 - sizeDelta.y; + return new Rect(pos.x, y, m_IconRect.sizeDelta.x, m_IconRect.sizeDelta.y); + } + else + { + return Rect.zero; + } + } + + public Color GetIconColor() + { + if (m_Icon) return m_Icon.color; + else return Color.clear; + } + + public void SetIconColor(Color color) + { + if (m_Icon) + { + m_Icon.color = color; + } + } + + public void SetIconImage(Sprite image) + { + if (m_Icon) + { + m_Icon.sprite = image; + } + } + + public void SetIconActive(bool active) + { + if (m_Icon) + { + m_Icon.gameObject.SetActive(active); + } + } + + public void SetContentColor(Color color) + { + if (m_Text != null) + { + m_Text.SetColor(color); + } + } + + public void SetContentBackgroundColor(Color color) + { + if (m_TextBackground) + { + m_TextBackground.color = color; + } + } + + public void SetContentPosition(Vector3 offset) + { + m_Gap = offset.x; + if (m_TextBackgroundRect) + { + var posX = m_IconRect.sizeDelta.x + offset.x; + m_TextBackgroundRect.anchoredPosition3D = new Vector3(posX, offset.y, 0); + } + } + + public bool SetContent(string content) + { + if (m_Text != null && !m_Text.GetText().Equals(content)) + { + m_Text.SetText(content); + if (m_LabelAutoSize) + { + var newSize = string.IsNullOrEmpty(content) ? Vector2.zero : + new Vector2(m_Text.GetPreferredWidth(), m_Text.GetPreferredHeight()); + var sizeChange = newSize.x != m_TextRect.sizeDelta.x || newSize.y != m_TextRect.sizeDelta.y; + if (sizeChange) + { + m_TextRect.sizeDelta = newSize; + m_TextRect.anchoredPosition3D = new Vector3(m_LabelPaddingLeftRight, 0); + m_TextBackgroundRect.sizeDelta = new Vector2(m_Text.GetPreferredWidth() + m_LabelPaddingLeftRight * 2, + m_Text.GetPreferredHeight() + m_LabelPaddingTopBottom * 2 - 4); + m_Rect.sizeDelta = new Vector3(width, height); + } + return sizeChange; + } + } + return false; + } + + public void SetPosition(Vector3 position) + { + if (m_GameObject) + { + m_GameObject.transform.localPosition = position; + } + } + + public void SetActive(bool active) + { + if (m_GameObject) + { + m_GameObject.SetActive(active); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Object/LegendItem.cs.meta b/Assets/XCharts/Runtime/Internal/Object/LegendItem.cs.meta new file mode 100644 index 0000000..e7a5204 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Object/LegendItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e5abcb8f339f41f5b3680ecdab67509 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Painter.cs b/Assets/XCharts/Runtime/Internal/Painter.cs new file mode 100644 index 0000000..c60041a --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Painter.cs @@ -0,0 +1,72 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [RequireComponent(typeof(CanvasRenderer))] + public class Painter : MaskableGraphic + { + public enum Type + { + Base, + Serie, + Top + } + protected int m_Index = -1; + protected Type m_Type = Type.Base; + protected bool m_Refresh; + protected Action<VertexHelper, Painter> m_OnPopulateMesh; + + public Action<VertexHelper, Painter> onPopulateMesh { set { m_OnPopulateMesh = value; } } + public int index { get { return m_Index; } set { m_Index = value; } } + public Type type { get { return m_Type; } set { m_Type = value; } } + public void Refresh() + { + if (gameObject == null) return; + if (!gameObject.activeSelf) return; + m_Refresh = true; + } + + public void Init() + { + raycastTarget = false; + } + + public void SetActive(bool flag, bool isDebugMode = false) + { + if (gameObject.activeInHierarchy != flag) + { + gameObject.SetActive(flag); + } + var hideFlags = flag && isDebugMode ? HideFlags.None : HideFlags.HideInHierarchy; + if (gameObject.hideFlags != hideFlags) + { + gameObject.hideFlags = hideFlags; + } + } + + protected override void Awake() + { + Init(); + } + + internal void CheckRefresh() + { + if (m_Refresh && gameObject.activeSelf) + { + m_Refresh = false; + SetVerticesDirty(); + } + } + + protected override void OnPopulateMesh(VertexHelper vh) + { + vh.Clear(); + if (m_OnPopulateMesh != null) + { + m_OnPopulateMesh(vh, this); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Painter.cs.meta b/Assets/XCharts/Runtime/Internal/Painter.cs.meta new file mode 100644 index 0000000..60597fa --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Painter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01c85cd323a9f4dfb803470695bd0944 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Pools.meta b/Assets/XCharts/Runtime/Internal/Pools.meta new file mode 100644 index 0000000..49e7df6 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 576ce681815d348d0a2abbbadf3dd9f7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Pools/ListPool.cs b/Assets/XCharts/Runtime/Internal/Pools/ListPool.cs new file mode 100644 index 0000000..8210fde --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/ListPool.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + internal static class ListPool<T> + { + private static readonly ObjectPool<List<T>> s_ListPool = new ObjectPool<List<T>>(OnGet, OnClear); + static void OnGet(List<T> l) + { + if (l.Capacity < 50) + { + l.Capacity = 50; + } + } + static void OnClear(List<T> l) + { + l.Clear(); + } + + public static List<T> Get() + { + return s_ListPool.Get(); + } + + public static void Release(List<T> toRelease) + { + s_ListPool.Release(toRelease); + } + + public static void ClearAll() + { + s_ListPool.ClearAll(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Pools/ListPool.cs.meta b/Assets/XCharts/Runtime/Internal/Pools/ListPool.cs.meta new file mode 100644 index 0000000..7807cc9 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/ListPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 02c30457469c746dc96f00f24cb6e1c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Pools/ObjectPool.cs b/Assets/XCharts/Runtime/Internal/Pools/ObjectPool.cs new file mode 100644 index 0000000..9dfb045 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/ObjectPool.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; + +namespace XCharts.Runtime +{ + public class ObjectPool<T> where T : new() + { + private readonly bool m_NewIfEmpty = true; + private readonly Stack<T> m_Stack = new Stack<T>(); + private readonly UnityAction<T> m_ActionOnGet; + private readonly UnityAction<T> m_ActionOnRelease; + + public int countAll { get; private set; } + public int countActive { get { return countAll - countInactive; } } + public int countInactive { get { return m_Stack.Count; } } + + public ObjectPool(UnityAction<T> actionOnGet, UnityAction<T> actionOnRelease, bool newIfEmpty = true) + { + m_NewIfEmpty = newIfEmpty; + m_ActionOnGet = actionOnGet; + m_ActionOnRelease = actionOnRelease; + } + + public T Get() + { + T element; + if (m_Stack.Count == 0) + { + if (!m_NewIfEmpty) return default(T); + element = new T(); + countAll++; + } + else + { + element = m_Stack.Pop(); + } + if (m_ActionOnGet != null) + m_ActionOnGet(element); + return element; + } + + public void Release(T element) + { + if (m_Stack.Count > 0 && ReferenceEquals(m_Stack.Peek(), element)) + Debug.LogError("Internal error. Trying to destroy object that is already released to pool."); + if (m_ActionOnRelease != null) + m_ActionOnRelease(element); + m_Stack.Push(element); + } + + public void ClearAll() + { + m_Stack.Clear(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Pools/ObjectPool.cs.meta b/Assets/XCharts/Runtime/Internal/Pools/ObjectPool.cs.meta new file mode 100644 index 0000000..58927ca --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/ObjectPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09e67988253cb4f568b82d52b4113797 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Pools/SerieDataPool.cs b/Assets/XCharts/Runtime/Internal/Pools/SerieDataPool.cs new file mode 100644 index 0000000..9380580 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/SerieDataPool.cs @@ -0,0 +1,26 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + internal static class SerieDataPool + { + private static readonly ObjectPool<SerieData> s_ListPool = new ObjectPool<SerieData>(null, OnClear); + + static void OnGet(SerieData serieData) { } + + static void OnClear(SerieData serieData) + { + serieData.Reset(); + } + + public static SerieData Get() + { + return s_ListPool.Get(); + } + + public static void Release(SerieData toRelease) + { + s_ListPool.Release(toRelease); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Pools/SerieDataPool.cs.meta b/Assets/XCharts/Runtime/Internal/Pools/SerieDataPool.cs.meta new file mode 100644 index 0000000..5bd4740 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/SerieDataPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: faf4da15b01d74648bd13f73125e27bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Pools/SerieLabelPool.cs b/Assets/XCharts/Runtime/Internal/Pools/SerieLabelPool.cs new file mode 100644 index 0000000..321d894 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/SerieLabelPool.cs @@ -0,0 +1,74 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class SerieLabelPool + { + private static readonly Stack<GameObject> m_Stack = new Stack<GameObject>(200); + private static Dictionary<int, bool> m_ReleaseDic = new Dictionary<int, bool>(1000); + + public static GameObject Get(string name, Transform parent, LabelStyle label, Color color, + float iconWidth, float iconHeight, ThemeStyle theme) + { + GameObject element; + if (m_Stack.Count == 0 || !Application.isPlaying) + { + element = CreateSerieLabel(name, parent, label, color, iconWidth, iconHeight, theme); + } + else + { + element = m_Stack.Pop(); + if (element == null) + { + element = CreateSerieLabel(name, parent, label, color, iconWidth, iconHeight, theme); + } + m_ReleaseDic.Remove(element.GetInstanceID()); + element.name = name; + element.transform.SetParent(parent); + var text = new ChartText(element); + text.SetColor(color); + text.SetFontAndSizeAndStyle(label.textStyle, theme.common); + ChartHelper.SetActive(element, true); + } + element.transform.localEulerAngles = new Vector3(0, 0, label.rotate); + return element; + } + + public static void Release(GameObject element) + { + if (element == null) return; + ChartHelper.SetActive(element, false); + if (!Application.isPlaying) return; + if (!m_ReleaseDic.ContainsKey(element.GetInstanceID())) + { + m_Stack.Push(element); + m_ReleaseDic.Add(element.GetInstanceID(), true); + } + } + + public static void ReleaseAll(Transform parent) + { + int count = parent.childCount; + for (int i = 0; i < count; i++) + { + Release(parent.GetChild(i).gameObject); + } + } + + public static void ClearAll() + { + m_Stack.Clear(); + m_ReleaseDic.Clear(); + } + + private static GameObject CreateSerieLabel(string name, Transform parent, LabelStyle labelStyle, Color color, + float iconWidth, float iconHeight, ThemeStyle theme) + { + var label = ChartHelper.AddChartLabel(name, parent, labelStyle, theme.common, + "", color, TextAnchor.MiddleCenter); + label.SetActive(labelStyle.show); + return label.gameObject; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Pools/SerieLabelPool.cs.meta b/Assets/XCharts/Runtime/Internal/Pools/SerieLabelPool.cs.meta new file mode 100644 index 0000000..8d5c752 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Pools/SerieLabelPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e960aeb14c09844e3bdcdc4138af0761 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities.meta b/Assets/XCharts/Runtime/Internal/Utilities.meta new file mode 100644 index 0000000..6ceb052 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd10f45b4e7714b7687abf5f2f016993 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartCached.cs b/Assets/XCharts/Runtime/Internal/Utilities/ChartCached.cs new file mode 100644 index 0000000..59a505b --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartCached.cs @@ -0,0 +1,174 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class ChartCached + { + private const string NUMERIC_FORMATTER_D = "D"; + private const string NUMERIC_FORMATTER_d = "d"; + private const string NUMERIC_FORMATTER_X = "X"; + private const string NUMERIC_FORMATTER_x = "x"; + private static readonly string s_DefaultAxis = "axis_"; + private static CultureInfo ci = new CultureInfo("en-us"); // "en-us", "zh-cn", "ar-iq", "de-de" + private static Dictionary<Color, string> s_ColorToStr = new Dictionary<Color, string>(100); + private static Dictionary<int, string> s_SerieLabelName = new Dictionary<int, string>(1000); + private static Dictionary<Color, string> s_ColorDotStr = new Dictionary<Color, string>(100); + private static Dictionary<Type, Dictionary<int, string>> s_ComponentObjectName = new Dictionary<Type, Dictionary<int, string>>(); + private static Dictionary<int, string> s_AxisLabelName = new Dictionary<int, string>(); + private static Dictionary<Type, string> s_TypeName = new Dictionary<Type, string>(); + + private static Dictionary<double, Dictionary<string, string>> s_NumberToStr = new Dictionary<double, Dictionary<string, string>>(); + private static Dictionary<int, Dictionary<string, string>> s_PrecisionToStr = new Dictionary<int, Dictionary<string, string>>(); + + public static string FloatToStr(double value, string numericFormatter = "F", int precision = 0) + { + if (precision > 0 && numericFormatter.Length == 1) + { + if (!s_PrecisionToStr.ContainsKey(precision)) + { + s_PrecisionToStr[precision] = new Dictionary<string, string>(); + } + if (!s_PrecisionToStr[precision].ContainsKey(numericFormatter)) + { + s_PrecisionToStr[precision][numericFormatter] = numericFormatter + precision; + } + return NumberToStr(value, s_PrecisionToStr[precision][numericFormatter]); + } + else + { + return NumberToStr(value, numericFormatter); + } + } + + public static string NumberToStr(double value, string formatter) + { + if (!s_NumberToStr.ContainsKey(value)) + { + s_NumberToStr[value] = new Dictionary<string, string>(); + } + if (!s_NumberToStr[value].ContainsKey(formatter)) + { + if (string.IsNullOrEmpty(formatter)) + { + if (value - (int) value == 0) + s_NumberToStr[value][formatter] = ((int) value).ToString(); + else + s_NumberToStr[value][formatter] = value.ToString(); + } + else if (formatter.StartsWith(NUMERIC_FORMATTER_D) || + formatter.StartsWith(NUMERIC_FORMATTER_d) || + formatter.StartsWith(NUMERIC_FORMATTER_X) || + formatter.StartsWith(NUMERIC_FORMATTER_x) + ) + { + s_NumberToStr[value][formatter] = ((int) value).ToString(formatter, ci); + } + else + { + s_NumberToStr[value][formatter] = value.ToString(formatter, ci); + } + } + return s_NumberToStr[value][formatter]; + } + + public static string IntToStr(int value, string numericFormatter = "") + { + return NumberToStr(value, numericFormatter); + } + + public static string ColorToStr(Color color) + { + if (s_ColorToStr.ContainsKey(color)) + { + return s_ColorToStr[color]; + } + else + { + s_ColorToStr[color] = ColorUtility.ToHtmlStringRGBA(color); + return s_ColorToStr[color]; + } + } + + public static string ColorToDotStr(Color color) + { + if (!s_ColorDotStr.ContainsKey(color)) + { + s_ColorDotStr[color] = "<color=#" + ColorToStr(color) + ">● </color>"; + } + return s_ColorDotStr[color]; + } + + public static string GetSerieLabelName(string prefix, int i, int j) + { + int key = i * 10000000 + j; + if (s_SerieLabelName.ContainsKey(key)) + { + return s_SerieLabelName[key]; + } + else + { + string name = prefix + "_" + i + "_" + j; + s_SerieLabelName[key] = name; + return name; + } + } + + internal static string GetComponentObjectName(MainComponent component) + { + Dictionary<int, string> dict; + var type = component.GetType(); + if (s_ComponentObjectName.TryGetValue(type, out dict)) + { + string name; + if (!dict.TryGetValue(component.index, out name)) + { + name = GetTypeName(type) + component.index; + dict[component.index] = name; + } + return name; + } + else + { + var name = GetTypeName(type) + component.index; + dict = new Dictionary<int, string>(); + dict.Add(component.index, name); + s_ComponentObjectName[type] = dict; + return name; + } + } + + internal static string GetAxisLabelName(int index) + { + string name; + if (!s_AxisLabelName.TryGetValue(index, out name)) + { + name = s_DefaultAxis + index; + s_AxisLabelName[index] = name; + return name; + } + else + { + return name; + } + } + + internal static string GetTypeName<T>() + { + return GetTypeName(typeof(T)); + } + + internal static string GetTypeName(Type type) + { + if (s_TypeName.ContainsKey(type)) return s_TypeName[type]; + else + { + var name = type.Name; + s_TypeName[type] = name; + return name; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartCached.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/ChartCached.cs.meta new file mode 100644 index 0000000..7d4496e --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartCached.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 403191b8caeb44430b89d9f3260c4a76 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartConst.cs b/Assets/XCharts/Runtime/Internal/Utilities/ChartConst.cs new file mode 100644 index 0000000..2b0eeb6 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartConst.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class ChartConst + { + public static readonly Color32 clearColor32 = new Color32(0, 0, 0, 0); + public static readonly Color32 greyColor32 = new Color32(128, 128, 128, 255); + public static readonly Color clearColor = Color.clear; + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartConst.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/ChartConst.cs.meta new file mode 100644 index 0000000..f932d45 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e19d8fc0680be46b5ac9babf7dd9fe27 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartDrawer.cs b/Assets/XCharts/Runtime/Internal/Utilities/ChartDrawer.cs new file mode 100644 index 0000000..69b7e2c --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartDrawer.cs @@ -0,0 +1,151 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + public static class ChartDrawer + { + public static void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness, + Vector3 pos, Color32 color, Color32 toColor, float gap, float[] cornerRadius, + Color32 emptyColor, Color32 backgroundColor, Color32 borderColor, float smoothness, Vector3 startPos) + { + switch (type) + { + case SymbolType.None: + break; + case SymbolType.Circle: + if (gap > 0) + { + UGL.DrawDoughnut(vh, pos, symbolSize, symbolSize + gap, backgroundColor, backgroundColor, color, smoothness); + } + else + { + if (tickness > 0) + UGL.DrawDoughnut(vh, pos, symbolSize, symbolSize + tickness, borderColor, borderColor, color, smoothness); + else + UGL.DrawCricle(vh, pos, symbolSize, color, toColor, smoothness); + } + break; + case SymbolType.EmptyCircle: + if (gap > 0) + { + UGL.DrawCricle(vh, pos, symbolSize + gap, backgroundColor, smoothness); + UGL.DrawEmptyCricle(vh, pos, symbolSize, tickness, color, color, emptyColor, smoothness); + } + else + { + UGL.DrawEmptyCricle(vh, pos, symbolSize, tickness, color, color, emptyColor, smoothness); + } + break; + case SymbolType.Rect: + if (gap > 0) + { + UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor); + UGL.DrawSquare(vh, pos, symbolSize, color, toColor); + } + else + { + if (tickness > 0) + { + UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true); + UGL.DrawBorder(vh, pos, symbolSize, symbolSize, tickness, borderColor, 0, cornerRadius); + } + else + UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true); + } + break; + case SymbolType.EmptyRect: + if (gap > 0) + { + UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor); + UGL.DrawBorder(vh, pos, symbolSize / 2, symbolSize / 2, tickness, color); + } + else + { + UGL.DrawBorder(vh, pos, symbolSize / 2, symbolSize / 2, tickness, color); + } + break; + case SymbolType.Triangle: + if (gap > 0) + { + UGL.DrawTriangle(vh, pos, symbolSize + gap, backgroundColor); + UGL.DrawTriangle(vh, pos, symbolSize, color, toColor); + } + else + { + UGL.DrawTriangle(vh, pos, symbolSize, color, toColor); + } + break; + case SymbolType.Diamond: + if (gap > 0) + { + UGL.DrawDiamond(vh, pos, symbolSize + gap, backgroundColor); + UGL.DrawDiamond(vh, pos, symbolSize, color, toColor); + } + else + { + UGL.DrawDiamond(vh, pos, symbolSize, color, toColor); + } + break; + case SymbolType.Arrow: + var arrowWidth = symbolSize * 2; + var arrowHeight = arrowWidth * 1.5f; + var arrowOffset = 0; + var arrowDent = arrowWidth / 3.3f; + UGL.DrawArrow(vh, startPos, pos, arrowWidth, arrowHeight, + arrowOffset, arrowDent, color); + break; + } + } + + public static void DrawLineStyle(VertexHelper vh, LineStyle lineStyle, Vector3 startPos, Vector3 endPos, + Color32 defaultColor, float themeWidth, LineStyle.Type themeType) + { + var type = lineStyle.GetType(themeType); + var width = lineStyle.GetWidth(themeWidth); + var color = lineStyle.GetColor(defaultColor); + DrawLineStyle(vh, type, width, startPos, endPos, color, color); + } + + public static void DrawLineStyle(VertexHelper vh, LineStyle lineStyle, Vector3 startPos, Vector3 endPos, + float themeWidth, LineStyle.Type themeType, Color32 defaultColor, Color32 defaultToColor) + { + var type = lineStyle.GetType(themeType); + var width = lineStyle.GetWidth(themeWidth); + var color = lineStyle.GetColor(defaultColor); + var toColor = ChartHelper.IsClearColor(defaultToColor) ? color : defaultToColor; + DrawLineStyle(vh, type, width, startPos, endPos, color, toColor); + } + + public static void DrawLineStyle(VertexHelper vh, LineStyle.Type lineType, float lineWidth, + Vector3 startPos, Vector3 endPos, Color32 color) + { + DrawLineStyle(vh, lineType, lineWidth, startPos, endPos, color, color); + } + + public static void DrawLineStyle(VertexHelper vh, LineStyle.Type lineType, float lineWidth, + Vector3 startPos, Vector3 endPos, Color32 color, Color32 toColor) + { + switch (lineType) + { + case LineStyle.Type.Dashed: + UGL.DrawDashLine(vh, startPos, endPos, lineWidth, color, toColor); + break; + case LineStyle.Type.Dotted: + UGL.DrawDotLine(vh, startPos, endPos, lineWidth, color, toColor); + break; + case LineStyle.Type.Solid: + UGL.DrawLine(vh, startPos, endPos, lineWidth, color, toColor); + break; + case LineStyle.Type.DashDot: + UGL.DrawDashDotLine(vh, startPos, endPos, lineWidth, color); + break; + case LineStyle.Type.DashDotDot: + UGL.DrawDashDotDotLine(vh, startPos, endPos, lineWidth, color); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartDrawer.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/ChartDrawer.cs.meta new file mode 100644 index 0000000..64d094a --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 712f08d71f1bf4ab6a1785526bcd5c30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartHelper.cs b/Assets/XCharts/Runtime/Internal/Utilities/ChartHelper.cs new file mode 100644 index 0000000..c254007 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartHelper.cs @@ -0,0 +1,883 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +#if dUI_TextMeshPro +using TMPro; +#endif +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace XCharts.Runtime +{ + public static class ChartHelper + { + private static StringBuilder s_Builder = new StringBuilder(); + private static Vector3 s_DefaultIngoreDataVector3 = Vector3.zero; + + public static StringBuilder sb { get { return s_Builder; } } + public static Vector3 ignoreVector3 { get { return s_DefaultIngoreDataVector3; } } + + public static bool IsIngore(Vector3 pos) + { + return pos == s_DefaultIngoreDataVector3; + } + public static string Cancat(string str1, string str2) + { + s_Builder.Length = 0; + s_Builder.Append(str1).Append(str2); + return s_Builder.ToString(); + } + + public static string Cancat(string str1, int i) + { + s_Builder.Length = 0; + s_Builder.Append(str1).Append(ChartCached.IntToStr(i)); + return s_Builder.ToString(); + } + + public static void SetActive(GameObject gameObject, bool active) + { + if (gameObject == null) return; + SetActive(gameObject.transform, active); + } + + public static void SetActive(Image image, bool active) + { + if (image == null) return; + SetActive(image.gameObject, active); + } + + public static void SetActive(Text text, bool active) + { + if (text == null) return; + SetActive(text.gameObject, active); + } + + /// <summary> + /// 通过设置scale实现是否显示,优化性能,减少GC + /// </summary> + /// <param name="transform"></param> + /// <param name="active"></param> + public static void SetActive(Transform transform, bool active) + { + if (transform == null) return; + if (active) transform.localScale = Vector3.one; + else transform.localScale = Vector3.zero; + } + public static void HideAllObject(GameObject obj, string match = null) + { + if (obj == null) return; + HideAllObject(obj.transform, match); + } + + public static void HideAllObject(Transform parent, string match = null) + { + if (parent == null) return; + ActiveAllObject(parent, false, match); + } + + public static void ActiveAllObject(Transform parent, bool active, string match = null) + { + if (parent == null) return; + for (int i = 0; i < parent.childCount; i++) + { + if (match == null) + SetActive(parent.GetChild(i), active); + else + { + var go = parent.GetChild(i); + if (go.name.StartsWith(match)) + { + SetActive(go, active); + } + } + } + } + + public static void DestroyAllChildren(Transform parent) + { + if (parent == null) return; + var childCount = parent.childCount; + for (int i = childCount - 1; i >= 0; i--) + { + var go = parent.GetChild(i); + if (go != null) + { + GameObject.DestroyImmediate(go.gameObject, true); + } + } + } + + public static void DestoryGameObject(Transform parent, string childName) + { + if (parent == null) return; + var go = parent.Find(childName); + if (go != null) + { + GameObject.DestroyImmediate(go.gameObject, true); + } + } + public static void DestoryGameObjectByMatch(Transform parent, string match) + { + if (parent == null) return; + var childCount = parent.childCount; + for (int i = childCount - 1; i >= 0; i--) + { + var go = parent.GetChild(i); + if (go != null && go.name.StartsWith(match)) + { + GameObject.DestroyImmediate(go.gameObject, true); + } + } + } + + public static void DestoryGameObject(GameObject go) + { + if (go != null) GameObject.DestroyImmediate(go, true); + } + + public static string GetFullName(Transform transform) + { + string name = transform.name; + Transform obj = transform; + while (obj.transform.parent) + { + name = obj.transform.parent.name + "/" + name; + obj = obj.transform.parent; + } + return name; + } + + public static void RemoveComponent<T>(GameObject gameObject) + { + var component = gameObject.GetComponent<T>(); + if (component != null) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + GameObject.DestroyImmediate(component as GameObject, true); + else + GameObject.Destroy(component as GameObject); +#else + GameObject.Destroy(component as GameObject); +#endif + } + } + public static T GetOrAddComponent<T>(Transform transform) where T : Component + { + return GetOrAddComponent<T>(transform.gameObject); + } + + public static T GetOrAddComponent<T>(GameObject gameObject) where T : Component + { + if (gameObject.GetComponent<T>() == null) + { + return gameObject.AddComponent<T>(); + } + else + { + return gameObject.GetComponent<T>(); + } + } + + public static GameObject AddObject(string name, Transform parent, Vector2 anchorMin, + Vector2 anchorMax, Vector2 pivot, Vector2 sizeDelta, int replaceIndex = -1) + { + GameObject obj; + if (parent.Find(name)) + { + obj = parent.Find(name).gameObject; + SetActive(obj, true); + obj.transform.localPosition = Vector3.zero; + obj.transform.localScale = Vector3.one; + } + else if (replaceIndex >= 0 && replaceIndex < parent.childCount) + { + obj = parent.GetChild(replaceIndex).gameObject; + if (!obj.name.Equals(name)) obj.name = name; + SetActive(obj, true); + } + else + { + obj = new GameObject(); + obj.name = name; + obj.transform.SetParent(parent); + obj.transform.localScale = Vector3.one; + obj.transform.localPosition = Vector3.zero; + } + RectTransform rect = GetOrAddComponent<RectTransform>(obj); + rect.localPosition = Vector3.zero; + rect.sizeDelta = sizeDelta; + rect.anchorMin = anchorMin; + rect.anchorMax = anchorMax; + rect.pivot = pivot; + rect.anchoredPosition3D = Vector3.zero; + return obj; + } + + public static void UpdateRectTransform(GameObject obj, Vector2 anchorMin, + Vector2 anchorMax, Vector2 pivot, Vector2 sizeDelta) + { + if (obj == null) return; + RectTransform rect = GetOrAddComponent<RectTransform>(obj); + rect.sizeDelta = sizeDelta; + rect.anchorMin = anchorMin; + rect.anchorMax = anchorMax; + rect.pivot = pivot; + } + + public static ChartText AddTextObject(string objectName, Transform parent, Vector2 anchorMin, Vector2 anchorMax, + Vector2 pivot, Vector2 sizeDelta, TextStyle textStyle, ComponentTheme theme, Color autoColor, + TextAnchor autoAlignment, ChartText chartText = null) + { + GameObject txtObj = AddObject(objectName, parent, anchorMin, anchorMax, pivot, sizeDelta); + txtObj.transform.localEulerAngles = new Vector3(0, 0, textStyle.rotate); + if (chartText == null) + chartText = new ChartText(); +#if dUI_TextMeshPro + RemoveComponent<Text>(txtObj); + chartText.tmpText = GetOrAddComponent<TextMeshProUGUI>(txtObj); + chartText.tmpText.font = textStyle.tmpFont == null ? theme.tmpFont : textStyle.tmpFont; + chartText.tmpText.fontStyle = textStyle.tmpFontStyle; + chartText.tmpText.richText = true; + chartText.tmpText.raycastTarget = false; + chartText.tmpText.enableWordWrapping = textStyle.autoWrap; +#else + chartText.text = GetOrAddComponent<Text>(txtObj); + chartText.text.font = textStyle.font == null ? theme.font : textStyle.font; + chartText.text.fontStyle = textStyle.fontStyle; + chartText.text.horizontalOverflow = textStyle.autoWrap ? HorizontalWrapMode.Wrap : HorizontalWrapMode.Overflow; + chartText.text.verticalOverflow = VerticalWrapMode.Overflow; + chartText.text.supportRichText = true; + chartText.text.raycastTarget = false; +#endif + if (textStyle.autoColor && autoColor != Color.clear) + chartText.SetColor(autoColor); + else + chartText.SetColor(textStyle.GetColor(theme.textColor)); + + chartText.SetAlignment(textStyle.autoAlign ? autoAlignment : textStyle.alignment); + chartText.SetFontSize(textStyle.GetFontSize(theme)); + chartText.SetText("Text"); + chartText.SetLineSpacing(textStyle.lineSpacing); + chartText.SetActive(textStyle.show); + + RectTransform rect = GetOrAddComponent<RectTransform>(txtObj); + rect.localPosition = Vector3.zero; + rect.sizeDelta = sizeDelta; + rect.anchorMin = anchorMin; + rect.anchorMax = anchorMax; + rect.pivot = pivot; + return chartText; + } + + internal static Painter AddPainterObject(string name, Transform parent, Vector2 anchorMin, Vector2 anchorMax, + Vector2 pivot, Vector2 sizeDelta, HideFlags hideFlags, int siblingIndex) + { + var painterObj = ChartHelper.AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta); + painterObj.hideFlags = hideFlags; + painterObj.transform.SetSiblingIndex(siblingIndex); + return ChartHelper.GetOrAddComponent<Painter>(painterObj); + } + + public static Image AddIcon(string name, Transform parent, IconStyle iconStyle) + { + return AddIcon(name, parent, iconStyle.width, iconStyle.height, iconStyle.sprite, iconStyle.type); + } + + public static Image AddIcon(string name, Transform parent, float width, float height, Sprite sprite = null, + Image.Type type = Image.Type.Simple) + { + var anchorMax = new Vector2(0.5f, 0.5f); + var anchorMin = new Vector2(0.5f, 0.5f); + var pivot = new Vector2(0.5f, 0.5f); + var sizeDelta = new Vector2(width, height); + GameObject iconObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta); + var img = GetOrAddComponent<Image>(iconObj); + if (img.raycastTarget != false) + img.raycastTarget = false; + if (img.type != type) + img.type = type; + if (sprite != null && img.sprite != sprite) + { + img.sprite = sprite; + if (width == 0 || height == 0) + { + img.SetNativeSize(); + } + } + return img; + } + + public static ChartLabel AddAxisLabelObject(int total, int index, string name, Transform parent, + Vector2 sizeDelta, Axis axis, ComponentTheme theme, + string content, Color autoColor, TextAnchor autoAlignment = TextAnchor.MiddleCenter) + { + var textStyle = axis.axisLabel.textStyle; + var label = AddChartLabel(name, parent, axis.axisLabel, theme, content, autoColor, autoAlignment); + var labelShow = axis.axisLabel.show && (axis.axisLabel.interval == 0 || index % (axis.axisLabel.interval + 1) == 0); + if (labelShow) + { + if (!axis.axisLabel.showStartLabel && index == 0) labelShow = false; + else if (!axis.axisLabel.showEndLabel && index == total - 1) labelShow = false; + } + label.UpdateIcon(axis.axisLabel.icon, axis.GetIcon(index)); + label.text.SetActive(labelShow); + return label; + } + + public static ChartLabel AddChartLabel(string name, Transform parent, LabelStyle labelStyle, + ComponentTheme theme, string content, Color autoColor, TextAnchor autoAlignment = TextAnchor.MiddleCenter) + { + Vector2 anchorMin, anchorMax, pivot; + var sizeDelta = new Vector2(labelStyle.width, labelStyle.height); + var textStyle = labelStyle.textStyle; + var alignment = textStyle.GetAlignment(autoAlignment); + UpdateAnchorAndPivotByTextAlignment(alignment, out anchorMin, out anchorMax, out pivot); + var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta); + // TODO: 为了兼容旧版本,这里后面版本可以去掉 + #region temp code + var oldText = labelObj.GetComponent<Text>(); + if (oldText != null) + { + GameObject.DestroyImmediate(oldText); + } + var oldImage = labelObj.GetComponent<Image>(); + if (oldImage != null) + { + GameObject.DestroyImmediate(oldImage); + } + #endregion + + var label = GetOrAddComponent<ChartLabel>(labelObj); + label.text = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, + sizeDelta, textStyle, theme, autoColor, autoAlignment, label.text); + label.icon = ChartHelper.AddIcon("Icon", label.gameObject.transform, labelStyle.icon); + label.SetSize(labelStyle.width, labelStyle.height); + label.SetTextPadding(labelStyle.textPadding); + label.SetText(content); + label.UpdateIcon(labelStyle.icon); + if (labelStyle.background.show) + { + label.color = (!labelStyle.background.autoColor || autoColor == Color.clear) ? + labelStyle.background.color : autoColor; + label.sprite = labelStyle.background.sprite; + label.type = labelStyle.background.type; + } + else + { + label.color = Color.clear; + label.sprite = null; + } + label.transform.localEulerAngles = new Vector3(0, 0, labelStyle.rotate); + label.transform.localPosition = labelStyle.offset; + return label; + } + + private static void UpdateAnchorAndPivotByTextAlignment(TextAnchor alignment, out Vector2 anchorMin, out Vector2 anchorMax, + out Vector2 pivot) + { + switch (alignment) + { + case TextAnchor.LowerLeft: + anchorMin = new Vector2(0f, 0f); + anchorMax = new Vector2(0f, 0f); + pivot = new Vector2(0f, 0f); + break; + case TextAnchor.UpperLeft: + anchorMin = new Vector2(0f, 1f); + anchorMax = new Vector2(0f, 1f); + pivot = new Vector2(0f, 1f); + break; + case TextAnchor.MiddleLeft: + anchorMin = new Vector2(0f, 0.5f); + anchorMax = new Vector2(0f, 0.5f); + pivot = new Vector2(0f, 0.5f); + break; + case TextAnchor.LowerRight: + anchorMin = new Vector2(1f, 0f); + anchorMax = new Vector2(1f, 0f); + pivot = new Vector2(1f, 0f); + break; + case TextAnchor.UpperRight: + anchorMin = new Vector2(1f, 1f); + anchorMax = new Vector2(1f, 1f); + pivot = new Vector2(1f, 1f); + break; + case TextAnchor.MiddleRight: + anchorMin = new Vector2(1, 0.5f); + anchorMax = new Vector2(1, 0.5f); + pivot = new Vector2(1, 0.5f); + break; + case TextAnchor.LowerCenter: + anchorMin = new Vector2(0.5f, 0f); + anchorMax = new Vector2(0.5f, 0f); + pivot = new Vector2(0.5f, 0f); + break; + case TextAnchor.UpperCenter: + anchorMin = new Vector2(0.5f, 1f); + anchorMax = new Vector2(0.5f, 1f); + pivot = new Vector2(0.5f, 1f); + break; + case TextAnchor.MiddleCenter: + anchorMin = new Vector2(0.5f, 0.5f); + anchorMax = new Vector2(0.5f, 0.5f); + pivot = new Vector2(0.5f, 0.5f); + break; + default: + anchorMin = new Vector2(0.5f, 0.5f); + anchorMax = new Vector2(0.5f, 0.5f); + pivot = new Vector2(0.5f, 0.5f); + break; + } + } + + internal static ChartLabel AddTooltipIndicatorLabel(Tooltip tooltip, string name, Transform parent, + ThemeStyle theme, TextAnchor alignment) + { + var label = ChartHelper.AddChartLabel(name, parent, tooltip.indicatorLabelStyle, theme.tooltip, + "", Color.clear, alignment); + label.SetActive(tooltip.show && tooltip.indicatorLabelStyle.show); + return label; + } + + public static void GetPointList(ref List<Vector3> posList, Vector3 sp, Vector3 ep, float k = 30f) + { + Vector3 dir = (ep - sp).normalized; + float dist = Vector3.Distance(sp, ep); + int segment = (int) (dist / k); + posList.Clear(); + posList.Add(sp); + for (int i = 1; i < segment; i++) + { + posList.Add(sp + dir * dist * i / segment); + } + posList.Add(ep); + } + + public static bool IsValueEqualsColor(Color32 color1, Color32 color2) + { + return color1.a == color2.a && + color1.b == color2.b && + color1.g == color2.g && + color1.r == color2.r; + } + + public static bool IsValueEqualsColor(Color color1, Color color2) + { + return color1.a == color2.a && + color1.b == color2.b && + color1.g == color2.g && + color1.r == color2.r; + } + + public static bool IsValueEqualsString(string str1, string str2) + { + if (str1 == null && str2 == null) return true; + else if (str1 != null && str2 != null) return str1.Equals(str2); + else return false; + } + + public static bool IsValueEqualsVector2(Vector2 v1, Vector2 v2) + { + return v1.x == v2.x && v1.y == v2.y; + } + + public static bool IsValueEqualsVector3(Vector3 v1, Vector3 v2) + { + return v1.x == v2.x && v1.y == v2.y && v1.z == v2.z; + } + + public static bool IsValueEqualsList<T>(List<T> list1, List<T> list2) + { + if (list1 == null || list2 == null) return false; + if (list1.Count != list2.Count) return false; + for (int i = 0; i < list1.Count; i++) + { + if (list1[i] == null && list2[i] == null) { } + else + { + if (list1[i] != null) + { + if (!list1[i].Equals(list2[i])) return false; + } + else + { + if (!list2[i].Equals(list1[i])) return false; + } + } + } + return true; + } + + public static bool IsEquals(double d1, double d2) + { + return Math.Abs(d1 - d2) < 0.000001d; + } + + public static bool IsEquals(float d1, float d2) + { + return Math.Abs(d1 - d2) < 0.000001f; + } + + public static bool IsClearColor(Color32 color) + { + return color.a == 0 && color.b == 0 && color.g == 0 && color.r == 0; + } + + public static bool IsClearColor(Color color) + { + return color.a == 0 && color.b == 0 && color.g == 0 && color.r == 0; + } + + public static bool IsZeroVector(Vector3 pos) + { + return pos.x == 0 && pos.y == 0 && pos.z == 0; + } + + public static bool CopyList<T>(List<T> toList, List<T> fromList) + { + if (toList == null || fromList == null) return false; + toList.Clear(); + foreach (var item in fromList) toList.Add(item); + return true; + } + public static bool CopyArray<T>(T[] toList, T[] fromList) + { + if (toList == null || fromList == null) return false; + if (toList.Length != fromList.Length) + { + toList = new T[fromList.Length]; + } + for (int i = 0; i < fromList.Length; i++) toList[i] = fromList[i]; + return true; + } + + public static List<float> ParseFloatFromString(string jsonData) + { + List<float> list = new List<float>(); + if (string.IsNullOrEmpty(jsonData)) return list; + int startIndex = jsonData.IndexOf("["); + int endIndex = jsonData.IndexOf("]"); + string temp = jsonData.Substring(startIndex + 1, endIndex - startIndex - 1); + if (temp.IndexOf("],") > -1 || temp.IndexOf("] ,") > -1) + { + string[] datas = temp.Split(new string[] { "],", "] ," }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < datas.Length; i++) + { + temp = datas[i]; + } + return list; + } + else + { + string[] datas = temp.Split(','); + for (int i = 0; i < datas.Length; i++) + { + list.Add(float.Parse(datas[i].Trim())); + } + return list; + } + } + + public static List<string> ParseStringFromString(string jsonData) + { + List<string> list = new List<string>(); + if (string.IsNullOrEmpty(jsonData)) return list; + string pattern = "[\"'](.*?)[\"']"; + if (Regex.IsMatch(jsonData, pattern)) + { + MatchCollection m = Regex.Matches(jsonData, pattern); + foreach (Match match in m) + { + list.Add(match.Groups[1].Value); + } + } + return list; + } + + public static Color32 GetColor(string hexColorStr) + { + Color color; + ColorUtility.TryParseHtmlString(hexColorStr, out color); + return (Color32) color; + } + + public static double GetMaxDivisibleValue(double max, int ceilRate) + { + if (max == 0) return 0; + if (max > -1 && max < 1) + { + int count = 1; + int intvalue = (int) (max * Mathf.Pow(10, count)); + while (intvalue == 0 && count < 12) + { + count++; + intvalue = (int) (max * Mathf.Pow(10, count)); + } + var pow = Mathf.Pow(10, count); + if (max > 0) return (int) ((max * pow + 1)) / pow; + else return (int) ((max * pow - 1)) / pow; + } + if (ceilRate == 0) + { + var bigger = Math.Ceiling(Math.Abs(max)); + int n = 1; + while (bigger / (Mathf.Pow(10, n)) > 10) + { + n++; + } + double mm = bigger; + if (mm > 10 && n < 38) + { + mm = bigger - bigger % (Mathf.Pow(10, n)); + mm += max > 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n); + } + var mmm = mm - Mathf.Pow(10, n) / 2; + if (max < 0) return -Math.Ceiling(mmm > -max ? mmm : mm); + else return Math.Ceiling(mmm > max ? mmm : mm); + } + else + { + var mod = max % ceilRate; + int rate = (int) (max / ceilRate); + return mod == 0 ? max : (max < 0 ? rate : rate + 1) * ceilRate; + } + } + + public static double GetMinDivisibleValue(double min, int ceilRate) + { + if (min == 0) return 0; + if (min > -1 && min < 1) + { + int count = 1; + int intvalue = (int) (min * Mathf.Pow(10, count)); + while (intvalue == 0 && count < 12) + { + count++; + intvalue = (int) (min * Mathf.Pow(10, count)); + } + var pow = Mathf.Pow(10, count); + if (min > 0) return (int) ((min * pow + 1)) / pow; + else return (int) ((min * pow - 1)) / pow; + } + if (ceilRate == 0) + { + var bigger = Math.Floor(Math.Abs(min)); + int n = 1; + while (bigger / (Mathf.Pow(10, n)) > 10) + { + n++; + } + double mm = bigger; + if (mm > 10 && n < 38) + { + mm = bigger - bigger % (Mathf.Pow(10, n)); + mm += min < 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n); + } + if (min < 0) return -Math.Floor(mm); + else return Math.Floor(mm); + } + else + { + var mod = min % ceilRate; + int rate = (int) (min / ceilRate); + return mod == 0 ? min : (min < 0 ? rate - 1 : rate) * ceilRate; + } + } + + public static double GetMaxLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber) + { + splitNumber = 0; + if (value <= 0) return 0; + double max = 0; + while (max < value) + { + if (isLogBaseE) + { + max = Math.Exp(splitNumber); + } + else + { + max = Math.Pow(logBase, splitNumber); + } + splitNumber++; + } + return max; + } + + public static double GetMinLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber) + { + splitNumber = 0; + if (value > 1) return 1; + double min = 1; + while (min > value) + { + if (isLogBaseE) + { + min = Math.Exp(-splitNumber); + } + else + { + min = Math.Pow(logBase, -splitNumber); + } + splitNumber++; + } + return min; + } + + public static int GetFloatAccuracy(double value) + { + if (value > 1 || value < -1) return 0; + int count = 1; + int intvalue = (int) (value * Mathf.Pow(10, count)); + while (intvalue == 0 && count < 38) + { + count++; + intvalue = (int) (value * Mathf.Pow(10, count)); + } + if (count == 38 && (value == 0 || value == 1)) return 1; + else return count; + } + + public static void AddEventListener(GameObject obj, EventTriggerType type, + UnityEngine.Events.UnityAction<BaseEventData> call) + { + EventTrigger trigger = GetOrAddComponent<EventTrigger>(obj.gameObject); + EventTrigger.Entry entry = new EventTrigger.Entry(); + entry.eventID = type; + entry.callback = new EventTrigger.TriggerEvent(); + entry.callback.AddListener(call); + trigger.triggers.Add(entry); + } + + public static void ClearEventListener(GameObject obj) + { + EventTrigger trigger = obj.GetComponent<EventTrigger>(); + if (trigger != null) + { + trigger.triggers.Clear(); + } + } + + public static Vector3 RotateRound(Vector3 position, Vector3 center, Vector3 axis, float angle) + { + Vector3 point = Quaternion.AngleAxis(angle, axis) * (position - center); + Vector3 resultVec3 = center + point; + return resultVec3; + } + + public static Vector3 GetPosition(Vector3 center, float angle, float radius) + { + var rad = angle * Mathf.Deg2Rad; + var px = Mathf.Sin(rad) * radius; + var py = Mathf.Cos(rad) * radius; + return center + new Vector3(px, py); + } + + /// <summary> + /// 获得0-360的角度(12点钟方向为0度) + /// </summary> + /// <param name="from"></param> + /// <param name="to"></param> + /// <returns></returns> + public static float GetAngle360(Vector2 from, Vector2 to) + { + float angle; + + Vector3 cross = Vector3.Cross(from, to); + angle = Vector2.Angle(from, to); + angle = cross.z > 0 ? -angle : angle; + angle = (angle + 360) % 360; + return angle; + } + + public static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false) + { + angle = isDegree ? angle * Mathf.Deg2Rad : angle; + return new Vector3(center.x + radius * Mathf.Sin(angle), center.y + radius * Mathf.Cos(angle)); + } + + public static Vector3 GetDire(float angle, bool isDegree = false) + { + angle = isDegree ? angle * Mathf.Deg2Rad : angle; + return new Vector3(Mathf.Sin(angle), Mathf.Cos(angle)); + } + + public static Vector3 GetVertialDire(Vector3 dire) + { + if (dire.x == 0) + { + return new Vector3(-1, 0, 0); + } + if (dire.y == 0) + { + return new Vector3(0, -1, 0); + } + else + { + return new Vector3(-dire.y / dire.x, 1, 0).normalized; + } + } + + public static Vector3 GetLastValue(List<Vector3> list) + { + if (list.Count <= 0) return Vector3.zero; + else return list[list.Count - 1]; + } + + public static void SetColorOpacity(ref Color32 color, float opacity) + { + if (color.a != 0 && opacity != 1) + { + color.a = (byte) (color.a * opacity); + } + } + + public static Color32 GetHighlightColor(Color32 color, float rate = 0.8f) + { + var newColor = color; + newColor.r = (byte) (color.r * rate); + newColor.g = (byte) (color.g * rate); + newColor.b = (byte) (color.b * rate); + return newColor; + } + + public static bool IsPointInQuadrilateral(Vector3 P, Vector3 A, Vector3 B, Vector3 C, Vector3 D) + { + Vector3 v0 = Vector3.Cross(A - D, P - D); + Vector3 v1 = Vector3.Cross(B - A, P - A); + Vector3 v2 = Vector3.Cross(C - B, P - B); + Vector3 v3 = Vector3.Cross(D - C, P - C); + if (Vector3.Dot(v0, v1) < 0 || Vector3.Dot(v0, v2) < 0 || Vector3.Dot(v0, v3) < 0) + { + return false; + } + else + { + return true; + } + } + + public static bool IsInRect(Vector3 pos, float xMin, float xMax, float yMin, float yMax) + { + return pos.x >= xMin && pos.x <= xMax && pos.y <= yMax && pos.y >= yMin; + } + + public static bool IsColorAlphaZero(Color color) + { + return !ChartHelper.IsClearColor(color) && color.a == 0; + } + + public static float GetActualValue(float valueOrRate, float total, float maxRate = 1.5f) + { + if (valueOrRate >= -maxRate && valueOrRate <= maxRate) return valueOrRate * total; + else return valueOrRate; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ChartHelper.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/ChartHelper.cs.meta new file mode 100644 index 0000000..2e6abc8 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ChartHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47cfa7bd879be4069bd187e46346d73d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ComponentHelper.cs b/Assets/XCharts/Runtime/Internal/Utilities/ComponentHelper.cs new file mode 100644 index 0000000..f59a703 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ComponentHelper.cs @@ -0,0 +1,75 @@ +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + public static class ComponentHelper + { + public static AngleAxis GetAngleAxis(List<MainComponent> components, int polarIndex) + { + foreach (var component in components) + { + if (component is AngleAxis) + { + var axis = component as AngleAxis; + if (axis.polarIndex == polarIndex) return axis; + } + } + return null; + } + + public static RadiusAxis GetRadiusAxis(List<MainComponent> components, int polarIndex) + { + foreach (var component in components) + { + if (component is RadiusAxis) + { + var axis = component as RadiusAxis; + if (axis.polarIndex == polarIndex) return axis; + } + } + return null; + } + + public static float GetXAxisOnZeroOffset(List<MainComponent> components, XAxis axis) + { + if (!axis.axisLine.onZero) return 0; + foreach (var component in components) + { + if (component is YAxis) + { + var yAxis = component as YAxis; + if (yAxis.IsValue() && yAxis.gridIndex == axis.gridIndex) return yAxis.context.offset; + } + } + return 0; + } + + public static float GetYAxisOnZeroOffset(List<MainComponent> components, YAxis axis) + { + if (!axis.axisLine.onZero) return 0; + foreach (var component in components) + { + if (component is XAxis) + { + var xAxis = component as XAxis; + if (xAxis.IsValue() && xAxis.gridIndex == axis.gridIndex) return xAxis.context.offset; + } + } + return 0; + } + + public static bool IsAnyCategoryOfYAxis(List<MainComponent> components) + { + foreach (var component in components) + { + if (component is YAxis) + { + var yAxis = component as YAxis; + if (yAxis.type == Axis.AxisType.Category) + return true; + } + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/ComponentHelper.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/ComponentHelper.cs.meta new file mode 100644 index 0000000..df48974 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/ComponentHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b7af706293fe4e63b4d079dbe5c0ea2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/DataHelper.cs b/Assets/XCharts/Runtime/Internal/Utilities/DataHelper.cs new file mode 100644 index 0000000..ee555ad --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/DataHelper.cs @@ -0,0 +1,110 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + internal static class DataHelper + { + public static double DataAverage(ref List<SerieData> showData, SampleType sampleType, + int minCount, int maxCount, int rate) + { + double totalAverage = 0; + if (rate > 1 && sampleType == SampleType.Peak) + { + double total = 0; + for (int i = minCount; i < maxCount; i++) + { + total += showData[i].data[1]; + } + totalAverage = total / (maxCount - minCount); + } + return totalAverage; + } + + public static double SampleValue(ref List<SerieData> showData, SampleType sampleType, int rate, + int minCount, int maxCount, double totalAverage, int index, float dataChangeDuration, + ref bool dataChanging, Axis axis) + { + var inverse = axis.inverse; + var minValue = axis.context.minValue; + var maxValue = axis.context.maxValue; + if (rate <= 1 || index == minCount) + { + if (showData[index].IsDataChanged()) + dataChanging = true; + + return showData[index].GetCurrData(1, dataChangeDuration, inverse, minValue, maxValue); + } + switch (sampleType) + { + case SampleType.Sum: + case SampleType.Average: + double total = 0; + var count = 0; + for (int i = index; i > index - rate; i--) + { + count++; + total += showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, maxValue); + if (showData[i].IsDataChanged()) + dataChanging = true; + } + if (sampleType == SampleType.Average) + return total / rate; + else + return total; + + case SampleType.Max: + double max = double.MinValue; + for (int i = index; i > index - rate; i--) + { + var value = showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, maxValue); + if (value > max) + max = value; + + if (showData[i].IsDataChanged()) + dataChanging = true; + } + return max; + + case SampleType.Min: + double min = double.MaxValue; + for (int i = index; i > index - rate; i--) + { + var value = showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, maxValue); + if (value < min) + min = value; + + if (showData[i].IsDataChanged()) + dataChanging = true; + } + return min; + + case SampleType.Peak: + max = double.MinValue; + min = double.MaxValue; + total = 0; + for (int i = index; i > index - rate; i--) + { + var value = showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, maxValue); + total += value; + if (value < min) + min = value; + if (value > max) + max = value; + + if (showData[i].IsDataChanged()) + dataChanging = true; + } + var average = total / rate; + if (average >= totalAverage) + return max; + else + return min; + } + if (showData[index].IsDataChanged()) + dataChanging = true; + + return showData[index].GetCurrData(1, dataChangeDuration, inverse, minValue, maxValue); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/DataHelper.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/DataHelper.cs.meta new file mode 100644 index 0000000..da77e53 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/DataHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c982f1be15b204c9190197803101f2db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/LayoutHelper.cs b/Assets/XCharts/Runtime/Internal/Utilities/LayoutHelper.cs new file mode 100644 index 0000000..6b128f8 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/LayoutHelper.cs @@ -0,0 +1,226 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class LayerHelper + { + private static Vector2 s_Vector0And0 = new Vector2(0, 0); + private static Vector2 s_Vector0And0Dot5 = new Vector2(0, 0.5f); + private static Vector2 s_Vector0And1 = new Vector2(0, 1f); + private static Vector2 s_Vector0Dot5And1 = new Vector2(0.5f, 1f); + private static Vector2 s_Vector0Dot5And0Dot5 = new Vector2(0.5f, 0.5f); + private static Vector2 s_Vector0Dot5And0 = new Vector2(0.5f, 0f); + private static Vector2 s_Vector1And1 = new Vector2(1f, 1f); + private static Vector2 s_Vector1And0Dot5 = new Vector2(1f, 0.5f); + private static Vector2 s_Vector1And0 = new Vector2(1f, 0); + + internal static Vector2 ResetChartPositionAndPivot(Vector2 minAnchor, Vector2 maxAnchor, float width, + float height, ref float chartX, ref float chartY) + { + if (IsLeftTop(minAnchor, maxAnchor)) + { + chartX = 0; + chartY = -height; + return s_Vector0And1; + } + else if (IsLeftCenter(minAnchor, maxAnchor)) + { + chartX = 0; + chartY = -height / 2; + return s_Vector0And0Dot5; + } + else if (IsLeftBottom(minAnchor, maxAnchor)) + { + chartX = 0; + chartY = 0; + return s_Vector0And0; + } + else if (IsCenterTop(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = -height; + return s_Vector0Dot5And1; + } + else if (IsCenterCenter(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = -height / 2; + return s_Vector0Dot5And0Dot5; + } + else if (IsCenterBottom(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = 0; + return s_Vector0Dot5And0; + } + else if (IsRightTop(minAnchor, maxAnchor)) + { + chartX = -width; + chartY = -height; + return s_Vector1And1; + } + else if (IsRightCenter(minAnchor, maxAnchor)) + { + chartX = -width; + chartY = -height / 2; + return s_Vector1And0Dot5; + } + else if (IsRightBottom(minAnchor, maxAnchor)) + { + chartX = -width; + chartY = 0; + return s_Vector1And0; + } + else if (IsStretchTop(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = -height; + return s_Vector0Dot5And1; + } + else if (IsStretchMiddle(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = -height / 2; + return s_Vector0Dot5And0Dot5; + } + else if (IsStretchBottom(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = 0; + return s_Vector0Dot5And0; + } + else if (IsStretchLeft(minAnchor, maxAnchor)) + { + chartX = 0; + chartY = -height / 2; + return s_Vector0And0Dot5; + } + else if (IsStretchCenter(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = -height / 2; + return s_Vector0Dot5And0Dot5; + } + else if (IsStretchRight(minAnchor, maxAnchor)) + { + chartX = -width; + chartY = -height / 2; + return s_Vector1And0Dot5; + } + else if (IsStretchStrech(minAnchor, maxAnchor)) + { + chartX = -width / 2; + chartY = -height / 2; + return s_Vector0Dot5And0Dot5; + } + chartX = 0; + chartY = 0; + return Vector2.zero; + } + + private static bool IsLeftTop(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0And1 && maxAnchor == s_Vector0And1; + } + + private static bool IsLeftCenter(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0And0Dot5 && maxAnchor == s_Vector0And0Dot5; + } + + private static bool IsLeftBottom(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == Vector2.zero && maxAnchor == Vector2.zero; + } + + private static bool IsCenterTop(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0Dot5And1 && maxAnchor == s_Vector0Dot5And1; + } + + private static bool IsCenterCenter(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0Dot5And0Dot5 && maxAnchor == s_Vector0Dot5And0Dot5; + } + + private static bool IsCenterBottom(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0Dot5And0 && maxAnchor == s_Vector0Dot5And0; + } + + private static bool IsRightTop(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector1And1 && maxAnchor == s_Vector1And1; + } + + private static bool IsRightCenter(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector1And0Dot5 && maxAnchor == s_Vector1And0Dot5; + } + + private static bool IsRightBottom(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector1And0 && maxAnchor == s_Vector1And0; + } + + private static bool IsStretchTop(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0And1 && maxAnchor == s_Vector1And1; + } + + private static bool IsStretchMiddle(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0And0Dot5 && maxAnchor == s_Vector1And0Dot5; + } + + private static bool IsStretchBottom(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0And0 && maxAnchor == s_Vector1And0; + } + + private static bool IsStretchLeft(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0And0 && maxAnchor == s_Vector0And1; + } + + private static bool IsStretchCenter(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0Dot5And0 && maxAnchor == s_Vector0Dot5And1; + } + + private static bool IsStretchRight(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector1And0 && maxAnchor == s_Vector1And1; + } + + private static bool IsStretchStrech(Vector2 minAnchor, Vector2 maxAnchor) + { + return minAnchor == s_Vector0And0 && maxAnchor == s_Vector1And1; + } + + public static bool IsStretchPivot(RectTransform rt) + { + return IsStretchTop(rt.anchorMin, rt.anchorMax) || + IsStretchMiddle(rt.anchorMin, rt.anchorMax) || + IsStretchBottom(rt.anchorMin, rt.anchorMax) || + IsStretchLeft(rt.anchorMin, rt.anchorMax) || + IsStretchCenter(rt.anchorMin, rt.anchorMax) || + IsStretchRight(rt.anchorMin, rt.anchorMax) || + IsStretchStrech(rt.anchorMin, rt.anchorMax); + } + + public static bool IsFixedWidthHeight(RectTransform rt) + { + return IsLeftTop(rt.anchorMin, rt.anchorMax) || + IsLeftCenter(rt.anchorMin, rt.anchorMax) || + IsLeftBottom(rt.anchorMin, rt.anchorMax) || + IsCenterTop(rt.anchorMin, rt.anchorMax) || + IsCenterCenter(rt.anchorMin, rt.anchorMax) || + IsCenterBottom(rt.anchorMin, rt.anchorMax) || + IsRightTop(rt.anchorMin, rt.anchorMax) || + IsRightCenter(rt.anchorMin, rt.anchorMax) || + IsRightBottom(rt.anchorMin, rt.anchorMax); + } + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/LayoutHelper.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/LayoutHelper.cs.meta new file mode 100644 index 0000000..f9d31b8 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/LayoutHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d6eeea6fc2824cc891fec0674bf2d71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/Utilities/MathUtil.cs b/Assets/XCharts/Runtime/Internal/Utilities/MathUtil.cs new file mode 100644 index 0000000..2103a5f --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/MathUtil.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public static class MathUtil + { + public static double Abs(double d) + { + return d > 0 ? d : -d; + } + + public static double Clamp(double d, double min, double max) + { + if (d >= min && d <= max) return d; + else if (d < min) return min; + else return max; + } + + public static bool Approximately(double a, double b) + { + return Math.Abs(b - a) < Math.Max(0.000001f * Math.Max(Math.Abs(a), Math.Abs(b)), Mathf.Epsilon * 8); + } + + public static double Clamp01(double value) + { + if (value < 0F) + return 0F; + else if (value > 1F) + return 1F; + else + return value; + } + + public static double Lerp(double a, double b, double t) + { + return a + (b - a) * Clamp01(t); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/Utilities/MathUtil.cs.meta b/Assets/XCharts/Runtime/Internal/Utilities/MathUtil.cs.meta new file mode 100644 index 0000000..0c3d017 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/Utilities/MathUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 094dc7b90e3a049b48f15f990c050db1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/XCResourcesImporter.cs b/Assets/XCharts/Runtime/Internal/XCResourcesImporter.cs new file mode 100644 index 0000000..f8f252d --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XCResourcesImporter.cs @@ -0,0 +1,168 @@ +#if UNITY_EDITOR + +using System; +using System.IO; +using UnityEditor; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + public class XCResourcesImporter + { + bool m_EssentialResourcesImported; + + public XCResourcesImporter() { } + + public void OnDestroy() { } + + public void OnGUI() + { + m_EssentialResourcesImported = Resources.Load<XCSettings>("XCSettings") != null; + + GUILayout.BeginVertical(); + { + GUILayout.BeginVertical(EditorStyles.helpBox); + { + GUILayout.Label("XCharts Essentials", EditorStyles.boldLabel); + GUILayout.Label("This appears to be the first time you access XCharts, as such we need to add resources to your project that are essential for using XCharts. These new resources will be placed at the root of your project in the \"XCharts\" folder.", new GUIStyle(EditorStyles.label) { wordWrap = true }); + GUILayout.Space(5f); + + GUI.enabled = !m_EssentialResourcesImported; + GUI.enabled = true; + if (GUILayout.Button("Import XCharts Essentials")) + { + string packageFullPath = XChartsMgr.GetPackageFullPath(); + if (packageFullPath != null) + { + var sourPath = Path.Combine(packageFullPath, "Resources"); + var destPath = Path.Combine(Application.dataPath, "XCharts/Resources"); + if (CopyFolder(sourPath, destPath)) + { + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + } + } + GUILayout.Space(5f); + GUI.enabled = true; + } + GUILayout.EndVertical(); + } + GUILayout.EndVertical(); + GUILayout.Space(5f); + } + + private static bool CopyFolder(string sourPath, string destPath) + { + try + { + if (!Directory.Exists(destPath)) + { + Directory.CreateDirectory(destPath); + } + var files = Directory.GetFiles(sourPath); + foreach (var file in files) + { + var name = Path.GetFileName(file); + var path = Path.Combine(destPath, name); + File.Copy(file, path); + } + var folders = Directory.GetDirectories(sourPath); + foreach (var folder in folders) + { + var name = Path.GetFileName(folder); + var path = Path.Combine(destPath, name); + CopyFolder(folder, path); + } + return true; + } + catch (Exception e) + { + Debug.LogError("CopyFolder:" + e.Message); + return false; + } + } + + internal void RegisterResourceImportCallback() + { + AssetDatabase.importPackageCompleted += ImportCallback; + } + + /// <summary> + /// + /// </summary> + /// <param name="packageName"></param> + void ImportCallback(string packageName) + { + if (packageName == "XCharts Essential Resources") + { + m_EssentialResourcesImported = true; +#if UNITY_2018_3_OR_NEWER + SettingsService.NotifySettingsProviderChanged(); +#endif + } + Debug.Log("[" + packageName + "] have been imported."); + + AssetDatabase.importPackageCompleted -= ImportCallback; + } + } + + public class XCResourceImporterWindow : UnityEditor.EditorWindow + { + [SerializeField] XCResourcesImporter m_ResourceImporter; + + static XCResourceImporterWindow m_ImporterWindow; + + public static void ShowPackageImporterWindow() + { + var packagePath = XChartsMgr.GetPackageFullPath(); + if (packagePath != null) + { + if (m_ImporterWindow == null) + { + m_ImporterWindow = GetWindow<XCResourceImporterWindow>(); + m_ImporterWindow.titleContent = new GUIContent("XCharts Importer"); + } + m_ImporterWindow.Focus(); + } + } + + void OnEnable() + { + SetEditorWindowSize(); + + if (m_ResourceImporter == null) + m_ResourceImporter = new XCResourcesImporter(); + } + + void OnDestroy() + { + m_ResourceImporter.OnDestroy(); + } + + void OnGUI() + { + m_ResourceImporter.OnGUI(); + } + + void OnInspectorUpdate() + { + Repaint(); + } + + /// <summary> + /// Limits the minimum size of the editor window. + /// |</summary> + void SetEditorWindowSize() + { + EditorWindow editorWindow = this; + + Vector2 windowSize = new Vector2(640, 210); + editorWindow.minSize = windowSize; + editorWindow.maxSize = windowSize; + } + } +} + +#endif \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/XCResourcesImporter.cs.meta b/Assets/XCharts/Runtime/Internal/XCResourcesImporter.cs.meta new file mode 100644 index 0000000..2fd06d7 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XCResourcesImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fee2f9747b8914ddba13895caa2aa236 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/XCSettings.cs b/Assets/XCharts/Runtime/Internal/XCSettings.cs new file mode 100644 index 0000000..d1617bc --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XCSettings.cs @@ -0,0 +1,207 @@ +using System; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace XCharts.Runtime +{ + [Serializable] +#if UNITY_2018_3 + + [ExcludeFromPresetAttribute] +#endif + public class XCSettings : ScriptableObject + { + public readonly static string THEME_ASSET_NAME_PREFIX = "XCTheme-"; + public readonly static string THEME_ASSET_FOLDER = "Assets/XCharts/Resources"; + + [SerializeField] private Lang m_Lang = null; + [SerializeField] private Font m_Font = null; +#if dUI_TextMeshPro + [SerializeField] private TMP_FontAsset m_TMPFont = null; +#endif + [SerializeField][Range(1, 200)] private int m_FontSizeLv1 = 28; + [SerializeField][Range(1, 200)] private int m_FontSizeLv2 = 24; + [SerializeField][Range(1, 200)] private int m_FontSizeLv3 = 20; + [SerializeField][Range(1, 200)] private int m_FontSizeLv4 = 18; + [SerializeField] private LineStyle.Type m_AxisLineType = LineStyle.Type.Solid; + [SerializeField][Range(0, 20)] private float m_AxisLineWidth = 0.8f; + [SerializeField] private LineStyle.Type m_AxisSplitLineType = LineStyle.Type.Solid; + [SerializeField][Range(0, 20)] private float m_AxisSplitLineWidth = 0.8f; + [SerializeField][Range(0, 20)] private float m_AxisTickWidth = 0.8f; + [SerializeField][Range(0, 20)] private float m_AxisTickLength = 5f; + [SerializeField][Range(0, 200)] private float m_GaugeAxisLineWidth = 15f; + [SerializeField][Range(0, 20)] private float m_GaugeAxisSplitLineWidth = 0.8f; + [SerializeField][Range(0, 20)] private float m_GaugeAxisSplitLineLength = 15f; + [SerializeField][Range(0, 20)] private float m_GaugeAxisTickWidth = 0.8f; + [SerializeField][Range(0, 20)] private float m_GaugeAxisTickLength = 5f; + [SerializeField][Range(0, 20)] private float m_TootipLineWidth = 0.8f; + [SerializeField][Range(0, 20)] private float m_DataZoomBorderWidth = 0.5f; + [SerializeField][Range(0, 20)] private float m_DataZoomDataLineWidth = 0.5f; + [SerializeField][Range(0, 20)] private float m_VisualMapBorderWidth = 0f; + + [SerializeField][Range(0, 20)] private float m_SerieLineWidth = 1.8f; + [SerializeField][Range(0, 200)] private float m_SerieLineSymbolSize = 5f; + [SerializeField][Range(0, 200)] private float m_SerieScatterSymbolSize = 20f; + [SerializeField][Range(0, 200)] private float m_SerieSelectedRate = 1.3f; + [SerializeField][Range(0, 10)] private float m_SerieCandlestickBorderWidth = 1f; + + [SerializeField] private bool m_EditorShowAllListData = false; + + [SerializeField][Range(1, 20)] protected int m_MaxPainter = 10; + [SerializeField][Range(1, 10)] protected float m_LineSmoothStyle = 3f; + [SerializeField][Range(1f, 20)] protected float m_LineSmoothness = 2f; + [SerializeField][Range(1f, 20)] protected float m_LineSegmentDistance = 3f; + [SerializeField][Range(1, 10)] protected float m_CicleSmoothness = 2f; + [SerializeField][Range(10, 50)] protected float m_VisualMapTriangeLen = 20f; + [SerializeField][Range(1, 20)] protected float m_PieTooltipExtraRadius = 8f; + [SerializeField][Range(1, 20)] protected float m_PieSelectedOffset = 8f; + [SerializeField] protected List<Theme> m_CustomThemes = new List<Theme>(); + + public static Lang lang { get { return Instance.m_Lang; } } + public static Font font { get { return Instance.m_Font; } } +#if dUI_TextMeshPro + public static TMP_FontAsset tmpFont { get { return Instance.m_TMPFont; } } +#endif + /// <summary> + /// 一级字体大小。 + /// </summary> + public static int fontSizeLv1 { get { return Instance.m_FontSizeLv1; } } + public static int fontSizeLv2 { get { return Instance.m_FontSizeLv2; } } + public static int fontSizeLv3 { get { return Instance.m_FontSizeLv3; } } + public static int fontSizeLv4 { get { return Instance.m_FontSizeLv4; } } + public static LineStyle.Type axisLineType { get { return Instance.m_AxisLineType; } } + public static float axisLineWidth { get { return Instance.m_AxisLineWidth; } } + public static LineStyle.Type axisSplitLineType { get { return Instance.m_AxisSplitLineType; } } + public static float axisSplitLineWidth { get { return Instance.m_AxisSplitLineWidth; } } + public static float axisTickWidth { get { return Instance.m_AxisTickWidth; } } + public static float axisTickLength { get { return Instance.m_AxisTickLength; } } + public static float gaugeAxisLineWidth { get { return Instance.m_GaugeAxisLineWidth; } } + public static float gaugeAxisSplitLineWidth { get { return Instance.m_GaugeAxisSplitLineWidth; } } + public static float gaugeAxisSplitLineLength { get { return Instance.m_GaugeAxisSplitLineLength; } } + public static float gaugeAxisTickWidth { get { return Instance.m_GaugeAxisTickWidth; } } + public static float gaugeAxisTickLength { get { return Instance.m_GaugeAxisTickLength; } } + + public static float tootipLineWidth { get { return Instance.m_TootipLineWidth; } } + public static float dataZoomBorderWidth { get { return Instance.m_DataZoomBorderWidth; } } + public static float dataZoomDataLineWidth { get { return Instance.m_DataZoomDataLineWidth; } } + public static float visualMapBorderWidth { get { return Instance.m_VisualMapBorderWidth; } } + + #region serie + public static float serieLineWidth { get { return Instance.m_SerieLineWidth; } } + public static float serieLineSymbolSize { get { return Instance.m_SerieLineSymbolSize; } } + public static float serieScatterSymbolSize { get { return Instance.m_SerieScatterSymbolSize; } } + public static float serieSelectedRate { get { return Instance.m_SerieSelectedRate; } } + public static float serieCandlestickBorderWidth { get { return Instance.m_SerieCandlestickBorderWidth; } } + #endregion + + #region editor + public static bool editorShowAllListData { get { return Instance.m_EditorShowAllListData; } } + #endregion + + #region graphic + public static int maxPainter { get { return Instance.m_MaxPainter; } } + public static float lineSmoothStyle { get { return Instance.m_LineSmoothStyle; } } + public static float lineSmoothness { get { return Instance.m_LineSmoothness; } } + public static float lineSegmentDistance { get { return Instance.m_LineSegmentDistance; } } + public static float cicleSmoothness { get { return Instance.m_CicleSmoothness; } } + public static float visualMapTriangeLen { get { return Instance.m_VisualMapTriangeLen; } } + public static float pieTooltipExtraRadius { get { return Instance.m_PieTooltipExtraRadius; } } + public static float pieSelectedOffset { get { return Instance.m_PieSelectedOffset; } } + #endregion + + public static List<Theme> customThemes { get { return Instance.m_CustomThemes; } } + + private static XCSettings s_Instance; + public static XCSettings Instance + { + get + { + if (s_Instance == null) + { + s_Instance = Resources.Load<XCSettings>("XCSettings"); +#if UNITY_EDITOR + if (s_Instance == null) + { + var assetPath = GetSettingAssetPath(); + if (string.IsNullOrEmpty(assetPath)) + XCResourceImporterWindow.ShowPackageImporterWindow(); + else + s_Instance = AssetDatabase.LoadAssetAtPath<XCSettings>(assetPath); + } + else + { + if (s_Instance.m_Lang == null) + s_Instance.m_Lang = Resources.Load<Lang>("XCLang-EN"); + if (s_Instance.m_Lang == null) + s_Instance.m_Lang = ScriptableObject.CreateInstance<Lang>(); + if (s_Instance.m_Font == null) + s_Instance.m_Font = Resources.GetBuiltinResource<Font>("Arial.ttf"); +#if dUI_TextMeshPro + if (s_Instance.m_TMPFont == null) + s_Instance.m_TMPFont = Resources.Load<TMP_FontAsset>("LiberationSans SDF"); +#endif + } +#endif + } + return s_Instance; + } + } + +#if UNITY_EDITOR + public static bool ExistAssetFile() + { + return System.IO.File.Exists("Assets/XCharts/Resources/XCSettings.asset"); + } + + public static string GetSettingAssetPath() + { + var path = "Assets/XCharts/Resources/XCSettings.asset"; + if (File.Exists(path)) return path; + var dir = Application.dataPath; + string[] matchingPaths = Directory.GetDirectories(dir); + foreach (var match in matchingPaths) + { + if (match.Contains("XCharts")) + { + var jsonPath = string.Format("{0}/package.json", match); + if (File.Exists(jsonPath)) + { + var jsonText = File.ReadAllText(jsonPath); + if (jsonText.Contains("\"displayName\": \"XCharts\"")) + { + path = string.Format("{0}/Resources/XCSettings.asset", match.Replace('\\', '/')); + if (File.Exists(path)) + return path.Substring(path.IndexOf("/Assets/") + 1); + } + } + } + } + return null; + } +#endif + + public static bool AddCustomTheme(Theme theme) + { + if (theme == null) return false; + if (Instance == null || Instance.m_CustomThemes == null) return false; + if (!Instance.m_CustomThemes.Contains(theme)) + { + Instance.m_CustomThemes.Add(theme); +#if UNITY_EDITOR + EditorUtility.SetDirty(Instance); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); +#endif + return true; + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/XCSettings.cs.meta b/Assets/XCharts/Runtime/Internal/XCSettings.cs.meta new file mode 100644 index 0000000..4fc72f2 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XCSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3694d869548264b718bdfc6c8009dcf1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/XCThemeMgr.cs b/Assets/XCharts/Runtime/Internal/XCThemeMgr.cs new file mode 100644 index 0000000..86c239c --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XCThemeMgr.cs @@ -0,0 +1,153 @@ +using System.Collections.Generic; +using System.IO; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + public static class XCThemeMgr + { + /// <summary> + /// 重新加载主题列表 + /// </summary> + public static void ReloadThemeList() + { + XChartsMgr.themes.Clear(); + XChartsMgr.themeNames.Clear(); + AddTheme(LoadTheme(ThemeType.Default)); + AddTheme(LoadTheme(ThemeType.Dark)); + if (XCSettings.Instance != null) + { + foreach (var theme in XCSettings.customThemes) + { + AddTheme(theme); + } + } + } + + public static void CheckReloadTheme() + { + if (XChartsMgr.themeNames.Count < 0) + ReloadThemeList(); + } + + public static void AddTheme(Theme theme) + { + if (theme == null) return; + if (!XChartsMgr.themes.ContainsKey(theme.themeName)) + { + XChartsMgr.themes.Add(theme.themeName, theme); + XChartsMgr.themeNames.Add(theme.themeName); + XChartsMgr.themeNames.Sort(); + } + } + + public static Theme GetTheme(ThemeType type) + { + return GetTheme(type.ToString()); + } + + public static Theme GetTheme(string themeName) + { + if (!XChartsMgr.themes.ContainsKey(themeName)) + { + return null; + } + return XChartsMgr.themes[themeName]; + } + + public static Theme LoadTheme(ThemeType type) + { + return LoadTheme(type.ToString()); + } + + public static Theme LoadTheme(string themeName) + { + var theme = Resources.Load<Theme>(XCSettings.THEME_ASSET_NAME_PREFIX + themeName); + if (theme == null) + theme = Resources.Load<Theme>(themeName); + return theme; + } + + public static List<string> GetAllThemeNames() + { + return XChartsMgr.themeNames; + } + + public static List<Theme> GetThemeList() + { + var list = new List<Theme>(); + foreach (var theme in XChartsMgr.themes.Values) + { + list.Add(theme); + } + return list; + } + + public static bool ContainsTheme(string themeName) + { + return XChartsMgr.themeNames.Contains(themeName); + } + + public static void SwitchTheme(BaseChart chart, string themeName) + { +#if UNITY_EDITOR + if (XChartsMgr.themes.Count == 0) + { + ReloadThemeList(); + } +#endif + if (!XChartsMgr.themes.ContainsKey(themeName)) + { + Debug.LogError("SwitchTheme ERROR: not exist theme:" + themeName); + return; + } + var target = XChartsMgr.themes[themeName]; + chart.UpdateTheme(target); + } + + public static bool ExportTheme(Theme theme, string themeNewName) + { +#if UNITY_EDITOR + var newtheme = Theme.EmptyTheme; + newtheme.CopyTheme(theme); + newtheme.themeType = ThemeType.Custom; + newtheme.themeName = themeNewName; + ExportTheme(newtheme); + return true; +#else + return false; +#endif + } + + public static bool ExportTheme(Theme theme) + { +#if UNITY_EDITOR + var themeAssetName = XCSettings.THEME_ASSET_NAME_PREFIX + theme.themeName; + var themeAssetPath = Application.dataPath + "/../" + XCSettings.THEME_ASSET_FOLDER; + if (!Directory.Exists(themeAssetPath)) + { + Directory.CreateDirectory(themeAssetPath); + } + var themeAssetFilePath = string.Format("{0}/{1}.asset", XCSettings.THEME_ASSET_FOLDER, themeAssetName); + AssetDatabase.CreateAsset(theme, themeAssetFilePath); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + return true; +#else + return false; +#endif + } + + public static string GetThemeAssetPath(string themeName) + { + return string.Format("{0}/{1}{2}.asset", XCSettings.THEME_ASSET_FOLDER, + XCSettings.THEME_ASSET_NAME_PREFIX, themeName); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/XCThemeMgr.cs.meta b/Assets/XCharts/Runtime/Internal/XCThemeMgr.cs.meta new file mode 100644 index 0000000..7ac9815 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XCThemeMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: faf4bcb5b4fa24f0782ab4737a448696 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Internal/XChartsMgr.cs b/Assets/XCharts/Runtime/Internal/XChartsMgr.cs new file mode 100644 index 0000000..69b9c21 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XChartsMgr.cs @@ -0,0 +1,317 @@ +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEngine.SceneManagement; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace XCharts.Runtime +{ + class XChartsVersion + { + public string version = ""; + public int date = 0; + public int checkdate = 0; + public string desc = ""; + public string homepage = ""; + } + + [ExecuteInEditMode] + public static class XChartsMgr + { + public static readonly string version = "3.0.1"; + public static readonly int versionDate = 20220616; + public static string fullVersion { get { return version + "-" + versionDate; } } + + internal static List<BaseChart> chartList = new List<BaseChart>(); + internal static Dictionary<string, Theme> themes = new Dictionary<string, Theme>(); + internal static List<string> themeNames = new List<string>(); + + static XChartsMgr() + { + SerieLabelPool.ClearAll(); + chartList.Clear(); + if (Resources.Load<XCSettings>("XCSettings")) + XCThemeMgr.ReloadThemeList(); + SceneManager.sceneUnloaded += OnSceneLoaded; + } + + static void OnSceneLoaded(Scene scene) + { + SerieLabelPool.ClearAll(); + } + + public static void AddChart(BaseChart chart) + { + var sameNameChart = GetChart(chart.chartName); + if (sameNameChart != null) + { + var path = ChartHelper.GetFullName(sameNameChart.transform); + Debug.LogError("A chart named `" + chart.chartName + "` already exists:" + path); + RemoveChart(chart.chartName); + } + if (!ContainsChart(chart)) + { + chartList.Add(chart); + } + } + + public static BaseChart GetChart(string chartName) + { + if (string.IsNullOrEmpty(chartName)) return null; + return chartList.Find(chart => chartName.Equals(chart.chartName)); + } + + public static List<BaseChart> GetCharts(string chartName) + { + if (string.IsNullOrEmpty(chartName)) return null; + return chartList.FindAll(chart => chartName.Equals(chart.chartName)); + } + + public static void RemoveChart(string chartName) + { + if (string.IsNullOrEmpty(chartName)) return; + chartList.RemoveAll(chart => chartName.Equals(chart.chartName)); + } + + public static bool ContainsChart(string chartName) + { + if (string.IsNullOrEmpty(chartName)) return false; + return GetCharts(chartName) != null; + } + + public static bool ContainsChart(BaseChart chart) + { + return chartList.Contains(chart); + } + + public static bool IsRepeatChartName(BaseChart chart, string chartName = null) + { + if (chartName == null) + chartName = chart.chartName; + if (string.IsNullOrEmpty(chartName)) + return false; + foreach (var temp in chartList) + { + if (temp != chart && chartName.Equals(temp.chartName)) + return true; + } + return false; + } + + public static string GetRepeatChartNameInfo(BaseChart chart, string chartName) + { + if (string.IsNullOrEmpty(chartName)) + return string.Empty; + string result = ""; + foreach (var temp in chartList) + { + if (temp != chart && chartName.Equals(temp.chartName)) + result += ChartHelper.GetFullName(temp.transform) + "\n"; + } + return result; + } + + public static void RemoveAllChartObject() + { + if (chartList.Count == 0) + { + return; + } + foreach (var chart in chartList) + { + if (chart != null) + chart.RebuildChartObject(); + } + } + +#if UNITY_EDITOR + public static string GetPackageFullPath() + { + string packagePath = Path.GetFullPath("Packages/com.monitor1394.xcharts"); + if (Directory.Exists(packagePath)) + { + return packagePath; + } + packagePath = Path.GetFullPath("Assets/.."); + if (Directory.Exists(packagePath)) + { + if (File.Exists(packagePath + "/Assets/Packages/XCharts/package.json")) + { + return packagePath + "/Assets/Packages/XCharts"; + } + + if (File.Exists(packagePath + "/Assets/XCharts/package.json")) + { + return packagePath + "/Assets/XCharts"; + } + + string[] matchingPaths = Directory.GetDirectories(packagePath, "XCharts", SearchOption.AllDirectories); + string path = ValidateLocation(matchingPaths, packagePath); + if (path != null) return Path.Combine(packagePath, path); + } + return null; + } + + private static string ValidateLocation(string[] paths, string projectPath) + { + for (int i = 0; i < paths.Length; i++) + { + if (File.Exists(paths[i] + "/package.json")) + { + string folderPath = paths[i].Replace(projectPath, ""); + folderPath = folderPath.TrimStart('\\', '/'); + return folderPath; + } + } + return null; + } + + [UnityEditor.Callbacks.DidReloadScripts] + static void OnEditorReload() + { + for (int i = chartList.Count - 1; i >= 0; i--) + { + var chart = chartList[i]; + if (chart == null) + { + chartList.RemoveAt(i); + } + else + { + chart.InitComponentHandlers(); + chart.InitSerieHandlers(); + } + } + } + + public static void EnableTextMeshPro() + { + DefineSymbolsUtil.AddGlobalDefine("dUI_TextMeshPro"); + RemoveAllChartObject(); + } + + public static void DisableTextMeshPro() + { + DefineSymbolsUtil.RemoveGlobalDefine("dUI_TextMeshPro"); + RemoveAllChartObject(); + } + + public static bool IsExistTMPAssembly() + { + +#if UNITY_2018_1_OR_NEWER + foreach (var assembly in UnityEditor.Compilation.CompilationPipeline.GetAssemblies(UnityEditor.Compilation.AssembliesType.Player)) + { + if (assembly.name.Equals("Unity.TextMeshPro")) return true; + } +#elif UNITY_2017_3_OR_NEWER + foreach (var assembly in UnityEditor.Compilation.CompilationPipeline.GetAssemblies()) + { + if (assembly.name.Equals("Unity.TextMeshPro")) return true; + } +#endif + return false; + } + + public static bool ModifyTMPRefence(bool removeTMP = false) + { + var packagePath = GetPackageFullPath(); + if (!ModifyTMPRefence(packagePath + "/Runtime/XCharts.Runtime.asmdef", removeTMP)) return false; + if (!ModifyTMPRefence(packagePath + "/Editor/XCharts.Editor.asmdef", removeTMP)) return false; + return true; + } + + private static bool ModifyTMPRefence(string asmdefPath, bool removeTMP = false) + { + if (!File.Exists(asmdefPath)) + { + Debug.LogError("AddTMPRefence ERROR: can't find: " + asmdefPath); + return false; + } + try + { + var dest = new List<string>(); + var refs = new List<string>(); + var lines = File.ReadAllLines(asmdefPath); + var referencesStart = false; + var addedTMP = false; + var removedTMP = false; + var tmpName = "\"Unity.TextMeshPro\""; + var refCount = 0; + foreach (var line in lines) + { + if (string.IsNullOrEmpty(line)) continue; + if (line.Contains("\"references\": [")) + { + dest.Add(line); + referencesStart = true; + } + else if (referencesStart) + { + if (line.Contains("],")) + { + referencesStart = false; + if (refCount > 0) + { + var old = dest[dest.Count - 1]; + if (old.EndsWith(",")) + dest[dest.Count - 1] = old.Substring(0, old.Length - 1); + } + if (!removeTMP && !refs.Contains(tmpName)) + { + if (refs.Count > 0) + dest[dest.Count - 1] = dest[dest.Count - 1] + ","; + dest.Add(" " + tmpName); + dest.Add(line); + addedTMP = true; + } + else + { + dest.Add(line); + } + } + else + { + if (removeTMP) + { + if (!line.Contains(tmpName)) + { + dest.Add(line); + refCount++; + } + else + { + removedTMP = true; + } + } + else + { + dest.Add(line); + refs.Add(line.Trim()); + } + } + } + else + { + dest.Add(line); + } + } + if (addedTMP || removedTMP) + { + File.WriteAllText(asmdefPath, string.Join("\n", dest.ToArray())); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + return true; + } + catch (System.Exception e) + { + Debug.LogError("AddTMPRefence ERROR:" + e.Message); + return false; + } + } +#endif + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Internal/XChartsMgr.cs.meta b/Assets/XCharts/Runtime/Internal/XChartsMgr.cs.meta new file mode 100644 index 0000000..f86bdc6 --- /dev/null +++ b/Assets/XCharts/Runtime/Internal/XChartsMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 953f0e846565c4086a4bcdc6bc14cf85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie.meta b/Assets/XCharts/Runtime/Serie.meta new file mode 100644 index 0000000..01ece4f --- /dev/null +++ b/Assets/XCharts/Runtime/Serie.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6db844a618e3c4634ac6c8afa60d4835 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Bar.meta b/Assets/XCharts/Runtime/Serie/Bar.meta new file mode 100644 index 0000000..924588f --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db4db63725f6848e785146f5cf4bb657 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Bar/Bar.cs b/Assets/XCharts/Runtime/Serie/Bar/Bar.cs new file mode 100644 index 0000000..89ed702 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/Bar.cs @@ -0,0 +1,32 @@ +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(BarHandler), true)] + [SerieConvert(typeof(Line), typeof(Pie))] + [RequireChartComponent(typeof(GridCoord))] + [DefaultAnimation(AnimationType.BottomToTop)] + [SerieExtraComponent(typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraField("m_Ignore")] + public class Bar : Serie, INeedSerieContainer + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Bar>(serieName); + for (int i = 0; i < 5; i++) + { + chart.AddData(serie.index, UnityEngine.Random.Range(10, 90)); + } + return serie; + } + + public static Bar CovertSerie(Serie serie) + { + var newSerie = SerieHelper.CloneSerie<Bar>(serie); + return newSerie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Bar/Bar.cs.meta b/Assets/XCharts/Runtime/Serie/Bar/Bar.cs.meta new file mode 100644 index 0000000..b13d9c4 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/Bar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cfb8051cfc49e4afabd94a11c5912c3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs b/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs new file mode 100644 index 0000000..d581809 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs @@ -0,0 +1,436 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class BarHandler : SerieHandler<Bar> + { + List<List<SerieData>> m_StackSerieData = new List<List<SerieData>>(); + private GridCoord m_SerieGrid; + private float[] m_CapusleDefaultCornerRadius = new float[] { 1, 1, 1, 1 }; + + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + UpdateCoordSerieParams(ref paramList, ref title, dataIndex, showCategory, category, + marker, itemFormatter, numericFormatter); + } + + public override void DrawSerie(VertexHelper vh) + { + DrawBarSerie(vh, serie, serie.context.colorIndex); + } + + public override Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label) + { + switch (label.position) + { + case LabelStyle.Position.Bottom: + var center = serieData.context.rect.center; + return new Vector3(center.x, center.y - serieData.context.rect.height / 2); + case LabelStyle.Position.Center: + case LabelStyle.Position.Inside: + return serieData.context.rect.center; + default: + return serieData.context.position; + } + } + + public override void OnPointerDown(PointerEventData eventData) + { + if (!serie.context.pointerEnter) return; + if (serie.context.pointerItemDataIndex < 0) return; + if (chart.onPointerClickBar != null) + { + chart.onPointerClickBar(eventData, serie.context.pointerItemDataIndex); + } + } + + private void UpdateSerieContext() + { + if (m_SerieGrid == null) + return; + + var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; + var needInteract = false; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + serieData.context.highlight = false; + serieData.interact.Reset(); + } + chart.RefreshPainter(serie); + } + return; + } + m_LastCheckContextFlag = needCheck; + if (m_LegendEnter) + { + serie.context.pointerEnter = true; + foreach (var serieData in serie.data) + { + var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + serieData.interact.SetColor(ref needInteract, barColor, barToColor); + } + } + else + { + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + if (serie.context.pointerAxisDataIndexs.Contains(serieData.index) || + serieData.context.rect.Contains(chart.pointerPos)) + { + serie.context.pointerItemDataIndex = serieData.index; + serie.context.pointerEnter = true; + serieData.context.highlight = true; + + var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + serieData.interact.SetColor(ref needInteract, barColor, barToColor); + } + else + { + serieData.context.highlight = false; + var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + serieData.interact.SetColor(ref needInteract, barColor, barToColor); + } + } + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + + private void DrawBarSerie(VertexHelper vh, Bar serie, int colorIndex) + { + if (!serie.show || serie.animation.HasFadeOut()) + return; + + var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); + + Axis axis; + Axis relativedAxis; + + if (isY) + { + axis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + relativedAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + } + else + { + axis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + relativedAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + } + m_SerieGrid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + + if (axis == null) + return; + if (relativedAxis == null) + return; + if (m_SerieGrid == null) + return; + var dataZoom = chart.GetDataZoomOfAxis(axis); + var showData = serie.GetDataList(dataZoom); + + if (showData.Count <= 0) + return; + + var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width; + var relativedAxisLength = isY ? m_SerieGrid.context.width : m_SerieGrid.context.height; + var axisXY = isY ? m_SerieGrid.context.y : m_SerieGrid.context.x; + + var isStack = SeriesHelper.IsStack<Bar>(chart.series, serie.stack); + if (isStack) + SeriesHelper.UpdateStackDataList(chart.series, serie, dataZoom, m_StackSerieData); + + var barCount = chart.GetSerieBarRealCount<Bar>(); + float categoryWidth = AxisHelper.GetDataWidth(axis, axisLength, showData.Count, dataZoom); + float barGap = chart.GetSerieBarGap<Bar>(); + float totalBarWidth = chart.GetSerieTotalWidth<Bar>(categoryWidth, barGap, barCount); + float barWidth = serie.GetBarWidth(categoryWidth, barCount); + float offset = (categoryWidth - totalBarWidth) * 0.5f; + var serieReadIndex = chart.GetSerieIndexIfStack<Bar>(serie); + float gap = serie.barGap == -1 ? offset : offset + chart.GetSerieTotalGap<Bar>(categoryWidth, barGap, serieReadIndex); + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > showData.Count ? showData.Count : serie.maxShow) : + showData.Count; + var isPercentStack = SeriesHelper.IsPercentStack<Bar>(chart.series, serie.stack); + bool dataChanging = false; + float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + double yMinValue = relativedAxis.context.minValue; + double yMaxValue = relativedAxis.context.maxValue; + + var areaColor = ColorUtil.clearColor32; + var areaToColor = ColorUtil.clearColor32; + var interacting = false; + + serie.containerIndex = m_SerieGrid.index; + serie.containterInstanceId = m_SerieGrid.instanceId; + serie.animation.InitProgress(axisXY, axisXY + axisLength); + for (int i = serie.minShow; i < maxCount; i++) + { + var serieData = showData[i]; + serieData.index = i; + if (!serieData.show || serie.IsIgnoreValue(serieData)) + { + serie.context.dataPoints.Add(Vector3.zero); + continue; + } + + if (serieData.IsDataChanged()) + dataChanging = true; + + var highlight = serieData.context.highlight || serie.highlight; + var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight); + var value = axis.IsCategory() ? i : serieData.GetData(0, axis.inverse); + var relativedValue = serieData.GetCurrData(1, dataChangeDuration, relativedAxis.inverse, yMinValue, yMaxValue); + var borderWidth = relativedValue == 0 ? 0 : itemStyle.runtimeBorderWidth; + var borderGap = relativedValue == 0 ? 0 : itemStyle.borderGap; + var borderGapAndWidth = borderWidth + borderGap; + + if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting)) + { + areaColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, highlight); + areaToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, highlight); + serieData.interact.SetColor(ref interacting, areaColor, areaToColor); + } + + var pX = 0f; + var pY = 0f; + UpdateXYPosition(m_SerieGrid, isY, axis, relativedAxis, i, categoryWidth, barWidth, isStack, value, ref pX, ref pY); + var barHig = 0f; + if (isPercentStack) + { + var valueTotal = chart.GetSerieSameStackTotalValue<Bar>(serie.stack, i); + barHig = valueTotal != 0 ? (float) (relativedValue / valueTotal * relativedAxisLength) : 0; + } + else + { + barHig = AxisHelper.GetAxisValueLength(m_SerieGrid, relativedAxis, categoryWidth, relativedValue); + } + + float currHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, barHig); + Vector3 plb, plt, prt, prb, top; + UpdateRectPosition(m_SerieGrid, isY, relativedValue, pX, pY, gap, borderWidth, barWidth, currHig, + out plb, out plt, out prt, out prb, out top); + serieData.context.stackHeight = barHig; + serieData.context.position = top; + serieData.context.rect = Rect.MinMaxRect(plb.x + borderGapAndWidth, plb.y + borderGapAndWidth, + prt.x - borderGapAndWidth, prt.y - borderGapAndWidth); + serieData.context.backgroundRect = isY ? + Rect.MinMaxRect(m_SerieGrid.context.x, plb.y, m_SerieGrid.context.x + relativedAxisLength, prt.y) : + Rect.MinMaxRect(plb.x, m_SerieGrid.context.y, prb.x, m_SerieGrid.context.y + relativedAxisLength); + + if (!serie.clip || (serie.clip && m_SerieGrid.Contains(top))) + serie.context.dataPoints.Add(top); + else + continue; + + if (serie.show && currHig != 0 && !serie.placeHolder) + { + switch (serie.barType) + { + case BarType.Normal: + case BarType.Capsule: + DrawNormalBar(vh, serie, serieData, itemStyle, colorIndex, highlight, gap, barWidth, + pX, pY, plb, plt, prt, prb, isY, m_SerieGrid, axis, areaColor, areaToColor, relativedValue); + break; + case BarType.Zebra: + DrawZebraBar(vh, serie, serieData, itemStyle, colorIndex, highlight, gap, barWidth, + pX, pY, plb, plt, prt, prb, isY, m_SerieGrid, axis, areaColor, areaToColor); + break; + } + } + if (serie.animation.CheckDetailBreak(top, isY)) + { + break; + } + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(); + chart.RefreshPainter(serie); + } + if (dataChanging || interacting) + { + chart.RefreshPainter(serie); + } + } + + private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relativedAxis, int i, float categoryWidth, float barWidth, bool isStack, + double value, ref float pX, ref float pY) + { + if (isY) + { + if (axis.IsCategory()) + { + pY = grid.context.y + i * categoryWidth + (axis.boundaryGap ? 0 : -categoryWidth * 0.5f); + } + else + { + if (axis.context.minMaxRange <= 0) pY = grid.context.y; + else + { + var valueLen = (float) ((value - axis.context.minValue) / axis.context.minMaxRange) * grid.context.height; + pY = grid.context.y + valueLen - categoryWidth * 0.5f; + } + } + pX = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0); + if (isStack) + { + for (int n = 0; n < m_StackSerieData.Count - 1; n++) + pX += m_StackSerieData[n][i].context.stackHeight; + } + } + else + { + if (axis.IsCategory()) + { + pX = grid.context.x + i * categoryWidth + (axis.boundaryGap ? 0 : -categoryWidth * 0.5f); + } + else + { + if (axis.context.minMaxRange <= 0) pX = grid.context.x; + else + { + var valueLen = (float) ((value - axis.context.minValue) / axis.context.minMaxRange) * grid.context.width; + pX = grid.context.x + valueLen - categoryWidth * 0.5f; + } + } + pY = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0); + if (isStack) + { + for (int n = 0; n < m_StackSerieData.Count - 1; n++) + pY += m_StackSerieData[n][i].context.stackHeight; + } + } + } + + private void UpdateRectPosition(GridCoord grid, bool isY, double yValue, float pX, float pY, float gap, float borderWidth, + float barWidth, float currHig, + out Vector3 plb, out Vector3 plt, out Vector3 prt, out Vector3 prb, out Vector3 top) + { + if (isY) + { + if (yValue < 0) + { + plt = new Vector3(pX + currHig, pY + gap + barWidth); + prt = new Vector3(pX, pY + gap + barWidth); + prb = new Vector3(pX, pY + gap); + plb = new Vector3(pX + currHig, pY + gap); + } + else + { + plt = new Vector3(pX, pY + gap + barWidth); + prt = new Vector3(pX + currHig, pY + gap + barWidth); + prb = new Vector3(pX + currHig, pY + gap); + plb = new Vector3(pX, pY + gap); + } + top = new Vector3(pX + currHig, pY + gap + barWidth / 2); + } + else + { + if (yValue < 0) + { + plb = new Vector3(pX + gap, pY + currHig); + plt = new Vector3(pX + gap, pY); + prt = new Vector3(pX + gap + barWidth, pY); + prb = new Vector3(pX + gap + barWidth, pY + currHig); + } + else + { + plb = new Vector3(pX + gap, pY); + plt = new Vector3(pX + gap, pY + currHig); + prt = new Vector3(pX + gap + barWidth, pY + currHig); + prb = new Vector3(pX + gap + barWidth, pY); + } + top = new Vector3(pX + gap + barWidth / 2, pY + currHig); + } + if (serie.clip) + { + plb = chart.ClampInGrid(grid, plb); + plt = chart.ClampInGrid(grid, plt); + prt = chart.ClampInGrid(grid, prt); + prb = chart.ClampInGrid(grid, prb); + top = chart.ClampInGrid(grid, top); + } + } + + private void DrawNormalBar(VertexHelper vh, Serie serie, SerieData serieData, ItemStyle itemStyle, int colorIndex, + bool highlight, float gap, float barWidth, float pX, float pY, Vector3 plb, Vector3 plt, Vector3 prt, + Vector3 prb, bool isYAxis, GridCoord grid, Axis axis, Color32 areaColor, Color32 areaToColor, double value) + { + var borderWidth = itemStyle.runtimeBorderWidth; + var backgroundColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, colorIndex, highlight, false); + var cornerRadius = serie.barType == BarType.Capsule && !itemStyle.IsNeedCorner() ? + m_CapusleDefaultCornerRadius : + itemStyle.cornerRadius; + var invert = value < 0; + if (!ChartHelper.IsClearColor(backgroundColor)) + { + UGL.DrawRoundRectangle(vh, serieData.context.backgroundRect, backgroundColor, backgroundColor, 0, + cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert); + } + UGL.DrawRoundRectangle(vh, serieData.context.rect, areaColor, areaToColor, 0, + cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert); + if (serie.barType == BarType.Capsule) + { + UGL.DrawBorder(vh, serieData.context.backgroundRect, borderWidth, itemStyle.borderColor, + 0, cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert, -borderWidth); + } + else + { + UGL.DrawBorder(vh, serieData.context.rect, borderWidth, itemStyle.borderColor, + 0, cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert, itemStyle.borderGap); + } + } + + private void DrawZebraBar(VertexHelper vh, Serie serie, SerieData serieData, ItemStyle itemStyle, int colorIndex, + bool highlight, float gap, float barWidth, float pX, float pY, Vector3 plb, Vector3 plt, Vector3 prt, + Vector3 prb, bool isYAxis, GridCoord grid, Axis axis, Color32 barColor, Color32 barToColor) + { + var backgroundColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, colorIndex, highlight, false); + if (!ChartHelper.IsClearColor(backgroundColor)) + { + UGL.DrawRoundRectangle(vh, serieData.context.backgroundRect, backgroundColor, backgroundColor, 0, + null, isYAxis, chart.settings.cicleSmoothness, false); + } + if (isYAxis) + { + plt = (plb + plt) / 2; + prt = (prt + prb) / 2; + chart.DrawClipZebraLine(vh, plt, prt, barWidth / 2, serie.barZebraWidth, serie.barZebraGap, + barColor, barToColor, serie.clip, grid, grid.context.width); + } + else + { + plb = (prb + plb) / 2; + plt = (plt + prt) / 2; + chart.DrawClipZebraLine(vh, plb, plt, barWidth / 2, serie.barZebraWidth, serie.barZebraGap, + barColor, barToColor, serie.clip, grid, grid.context.height); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs.meta new file mode 100644 index 0000000..68b7310 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/BarHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5bd8425bf4c1b4bf2adf8940be58ddec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBar.cs b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBar.cs new file mode 100644 index 0000000..3eed9ff --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBar.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + [SerieHandler(typeof(SimplifiedBarHandler), true)] + [SerieConvert(typeof(SimplifiedLine), typeof(Bar))] + [CoordOptions(typeof(GridCoord))] + [DefaultAnimation(AnimationType.LeftToRight)] + [SerieExtraComponent()] + [SerieDataExtraComponent()] + [SerieDataExtraField()] + public class SimplifiedBar : Serie, INeedSerieContainer, ISimplifiedSerie + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<SimplifiedBar>(serieName); + serie.symbol.show = false; + var lastValue = 0d; + for (int i = 0; i < 50; i++) + { + if (i < 20) + lastValue += UnityEngine.Random.Range(0, 5); + else + lastValue += UnityEngine.Random.Range(-3, 5); + chart.AddData(serie.index, lastValue); + } + return serie; + } + + public static SimplifiedBar CovertSerie(Serie serie) + { + var newSerie = serie.Clone<SimplifiedBar>(); + return newSerie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBar.cs.meta b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBar.cs.meta new file mode 100644 index 0000000..d6b3a10 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7fc754e0afd4d4f138389c19611aaedb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBarHandler.cs b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBarHandler.cs new file mode 100644 index 0000000..3e4264d --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBarHandler.cs @@ -0,0 +1,368 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class SimplifiedBarHandler : SerieHandler<SimplifiedBar> + { + private GridCoord m_SerieGrid; + + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + UpdateCoordSerieParams(ref paramList, ref title, dataIndex, showCategory, category, + marker, itemFormatter, numericFormatter); + } + + public override void DrawSerie(VertexHelper vh) + { + DrawBarSerie(vh, serie, serie.context.colorIndex); + } + + private void UpdateSerieContext() + { + if (m_SerieGrid == null) + return; + + var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; + var needInteract = false; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + serieData.interact.SetColor(ref needInteract, barColor, barToColor); + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + return; + } + m_LastCheckContextFlag = needCheck; + if (m_LegendEnter) + { + serie.context.pointerEnter = true; + foreach (var serieData in serie.data) + { + var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + serieData.interact.SetColor(ref needInteract, barColor, barToColor); + } + } + else + { + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + if (serieData.context.rect.Contains(chart.pointerPos)) + { + serie.context.pointerItemDataIndex = serieData.index; + serie.context.pointerEnter = true; + serieData.context.highlight = true; + + var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, true); + serieData.interact.SetColor(ref needInteract, barColor, barToColor); + } + else + { + serieData.context.highlight = false; + var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + serieData.interact.SetColor(ref needInteract, barColor, barToColor); + } + } + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + + private void DrawBarSerie(VertexHelper vh, SimplifiedBar serie, int colorIndex) + { + if (!serie.show || serie.animation.HasFadeOut()) + return; + + var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); + + Axis axis; + Axis relativedAxis; + + if (isY) + { + axis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + relativedAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + } + else + { + axis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + relativedAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + } + m_SerieGrid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + + if (axis == null) + return; + if (relativedAxis == null) + return; + if (m_SerieGrid == null) + return; + + var dataZoom = chart.GetDataZoomOfAxis(axis); + var showData = serie.GetDataList(dataZoom); + + if (showData.Count <= 0) + return; + + var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width; + var axisXY = isY ? m_SerieGrid.context.y : m_SerieGrid.context.x; + + var barCount = chart.GetSerieBarRealCount<SimplifiedBar>(); + float categoryWidth = AxisHelper.GetDataWidth(axis, axisLength, showData.Count, dataZoom); + float barGap = chart.GetSerieBarGap<SimplifiedBar>(); + float totalBarWidth = chart.GetSerieTotalWidth<SimplifiedBar>(categoryWidth, barGap, barCount); + float barWidth = serie.GetBarWidth(categoryWidth, barCount); + float offset = (categoryWidth - totalBarWidth) * 0.5f; + float barGapWidth = barWidth + barWidth * barGap; + float gap = serie.barGap == -1 ? offset : offset + serie.index * barGapWidth; + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > showData.Count ? showData.Count : serie.maxShow) : + showData.Count; + + bool dataChanging = false; + float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + double yMinValue = relativedAxis.context.minValue; + double yMaxValue = relativedAxis.context.maxValue; + + var areaColor = ColorUtil.clearColor32; + var areaToColor = ColorUtil.clearColor32; + var interacting = false; + + serie.containerIndex = m_SerieGrid.index; + serie.containterInstanceId = m_SerieGrid.instanceId; + serie.animation.InitProgress(axisXY, axisXY + axisLength); + for (int i = serie.minShow; i < maxCount; i++) + { + var serieData = showData[i]; + if (!serieData.show || serie.IsIgnoreValue(serieData)) + { + serie.context.dataPoints.Add(Vector3.zero); + continue; + } + + if (serieData.IsDataChanged()) + dataChanging = true; + + var highlight = serieData.context.highlight || serie.highlight; + var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight); + var value = axis.IsCategory() ? i : serieData.GetData(0, axis.inverse); + var relativedValue = serieData.GetCurrData(1, dataChangeDuration, relativedAxis.inverse, yMinValue, yMaxValue); + var borderWidth = relativedValue == 0 ? 0 : itemStyle.runtimeBorderWidth; + + if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting)) + { + areaColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, highlight); + areaToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, highlight); + serieData.interact.SetColor(ref interacting, areaColor, areaToColor); + } + + var pX = 0f; + var pY = 0f; + UpdateXYPosition(m_SerieGrid, isY, axis, relativedAxis, i, categoryWidth, barWidth, value, ref pX, ref pY); + + var barHig = AxisHelper.GetAxisValueLength(m_SerieGrid, relativedAxis, categoryWidth, relativedValue); + var currHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, barHig); + + Vector3 plb, plt, prt, prb, top; + UpdateRectPosition(m_SerieGrid, isY, relativedValue, pX, pY, gap, borderWidth, barWidth, currHig, + out plb, out plt, out prt, out prb, out top); + serieData.context.stackHeight = barHig; + serieData.context.position = top; + serieData.context.rect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y); + serie.context.dataPoints.Add(top); + DrawNormalBar(vh, serie, serieData, itemStyle, colorIndex, highlight, gap, barWidth, + pX, pY, plb, plt, prt, prb, false, m_SerieGrid, areaColor, areaToColor); + + if (serie.animation.CheckDetailBreak(top, isY)) + { + break; + } + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(); + chart.RefreshPainter(serie); + } + if (dataChanging || interacting) + { + chart.RefreshPainter(serie); + } + } + + private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relativedAxis, int i, float categoryWidth, float barWidth, + double value, ref float pX, ref float pY) + { + if (isY) + { + if (axis.IsCategory()) + { + pY = grid.context.y + i * categoryWidth + (axis.boundaryGap ? 0 : -categoryWidth * 0.5f); + } + else + { + if (axis.context.minMaxRange <= 0) pY = grid.context.y; + else pY = grid.context.y + (float) ((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.height - barWidth); + } + pX = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0); + } + else + { + if (axis.IsCategory()) + { + pX = grid.context.x + i * categoryWidth + (axis.boundaryGap ? 0 : -categoryWidth * 0.5f); + } + else + { + if (axis.context.minMaxRange <= 0) pX = grid.context.x; + else pX = grid.context.x + (float) ((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.width - barWidth); + } + pY = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0); + } + } + + private void UpdateRectPosition(GridCoord grid, bool isY, double yValue, float pX, float pY, float gap, float borderWidth, + float barWidth, float currHig, + out Vector3 plb, out Vector3 plt, out Vector3 prt, out Vector3 prb, out Vector3 top) + { + if (isY) + { + if (yValue < 0) + { + plt = new Vector3(pX - borderWidth, pY + gap + barWidth - borderWidth); + prt = new Vector3(pX + currHig + borderWidth, pY + gap + barWidth - borderWidth); + prb = new Vector3(pX + currHig + borderWidth, pY + gap + borderWidth); + plb = new Vector3(pX - borderWidth, pY + gap + borderWidth); + } + else + { + plt = new Vector3(pX + borderWidth, pY + gap + barWidth - borderWidth); + prt = new Vector3(pX + currHig - borderWidth, pY + gap + barWidth - borderWidth); + prb = new Vector3(pX + currHig - borderWidth, pY + gap + borderWidth); + plb = new Vector3(pX + borderWidth, pY + gap + borderWidth); + } + top = new Vector3(pX + currHig - borderWidth, pY + gap + barWidth / 2); + } + else + { + if (yValue < 0) + { + plb = new Vector3(pX + gap + borderWidth, pY - borderWidth); + plt = new Vector3(pX + gap + borderWidth, pY + currHig + borderWidth); + prt = new Vector3(pX + gap + barWidth - borderWidth, pY + currHig + borderWidth); + prb = new Vector3(pX + gap + barWidth - borderWidth, pY - borderWidth); + } + else + { + plb = new Vector3(pX + gap + borderWidth, pY + borderWidth); + plt = new Vector3(pX + gap + borderWidth, pY + currHig - borderWidth); + prt = new Vector3(pX + gap + barWidth - borderWidth, pY + currHig - borderWidth); + prb = new Vector3(pX + gap + barWidth - borderWidth, pY + borderWidth); + } + top = new Vector3(pX + gap + barWidth / 2, pY + currHig - borderWidth); + } + if (serie.clip) + { + plb = chart.ClampInGrid(grid, plb); + plt = chart.ClampInGrid(grid, plt); + prt = chart.ClampInGrid(grid, prt); + prb = chart.ClampInGrid(grid, prb); + top = chart.ClampInGrid(grid, top); + } + } + + private void DrawNormalBar(VertexHelper vh, Serie serie, SerieData serieData, ItemStyle itemStyle, int colorIndex, + bool highlight, float gap, float barWidth, float pX, float pY, Vector3 plb, Vector3 plt, Vector3 prt, + Vector3 prb, bool isYAxis, GridCoord grid, Color32 areaColor, Color32 areaToColor) + { + + var borderWidth = itemStyle.runtimeBorderWidth; + if (isYAxis) + { + if (serie.clip) + { + prb = chart.ClampInGrid(grid, prb); + plb = chart.ClampInGrid(grid, plb); + plt = chart.ClampInGrid(grid, plt); + prt = chart.ClampInGrid(grid, prt); + } + var itemWidth = Mathf.Abs(prb.x - plt.x); + var itemHeight = Mathf.Abs(prt.y - plb.y); + var center = new Vector3((plt.x + prb.x) / 2, (prt.y + plb.y) / 2); + if (itemWidth > 0 && itemHeight > 0) + { + var invert = center.x < plb.x; + if (itemStyle.IsNeedCorner()) + { + UGL.DrawRoundRectangle(vh, center, itemWidth, itemHeight, areaColor, areaToColor, 0, + itemStyle.cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert); + } + else + { + chart.DrawClipPolygon(vh, plb, plt, prt, prb, areaColor, areaToColor, serie.clip, grid); + } + UGL.DrawBorder(vh, center, itemWidth, itemHeight, borderWidth, itemStyle.borderColor, + itemStyle.borderToColor, 0, itemStyle.cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert); + } + } + else + { + if (serie.clip) + { + prb = chart.ClampInGrid(grid, prb); + plb = chart.ClampInGrid(grid, plb); + plt = chart.ClampInGrid(grid, plt); + prt = chart.ClampInGrid(grid, prt); + } + var itemWidth = Mathf.Abs(prt.x - plb.x); + var itemHeight = Mathf.Abs(plt.y - prb.y); + var center = new Vector3((plb.x + prt.x) / 2, (plt.y + prb.y) / 2); + if (itemWidth > 0 && itemHeight > 0) + { + var invert = center.y < plb.y; + if (itemStyle.IsNeedCorner()) + { + UGL.DrawRoundRectangle(vh, center, itemWidth, itemHeight, areaColor, areaToColor, 0, + itemStyle.cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert); + } + else + { + chart.DrawClipPolygon(vh, ref prb, ref plb, ref plt, ref prt, areaColor, areaToColor, + serie.clip, grid); + } + UGL.DrawBorder(vh, center, itemWidth, itemHeight, borderWidth, itemStyle.borderColor, + itemStyle.borderToColor, 0, itemStyle.cornerRadius, isYAxis, chart.settings.cicleSmoothness, invert); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBarHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBarHandler.cs.meta new file mode 100644 index 0000000..86f252e --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Bar/SimplifiedBarHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afd7226ecff7f4b9fad297101bc33b8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Candlestick.meta b/Assets/XCharts/Runtime/Serie/Candlestick.meta new file mode 100644 index 0000000..0cc9989 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 641a5dafd45e6455ca9ef9558efe1083 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/Candlestick.cs b/Assets/XCharts/Runtime/Serie/Candlestick/Candlestick.cs new file mode 100644 index 0000000..6ac985e --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/Candlestick.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(CandlestickHandler), true)] + [DefaultAnimation(AnimationType.LeftToRight)] + [SerieExtraComponent()] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(EmphasisItemStyle))] + [SerieDataExtraField()] + public class Candlestick : Serie, INeedSerieContainer + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Candlestick>(serieName); + var defaultDataCount = 5; + for (int i = 0; i < defaultDataCount; i++) + { + var open = Random.Range(20, 60); + var close = Random.Range(40, 90); + var lowest = Random.Range(0, 50); + var heighest = Random.Range(50, 100); + chart.AddData(serie.index, open, close, lowest, heighest); + } + return serie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/Candlestick.cs.meta b/Assets/XCharts/Runtime/Serie/Candlestick/Candlestick.cs.meta new file mode 100644 index 0000000..4c84a79 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/Candlestick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1fbb6247f54f4dd2a1f3e7f6bafb8c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs b/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs new file mode 100644 index 0000000..7955f60 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs @@ -0,0 +1,213 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class CandlestickHandler : SerieHandler<Candlestick> + { + public override void DrawSerie(VertexHelper vh) + { + DrawCandlestickSerie(vh, serie); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + if (dataIndex < 0) + dataIndex = serie.context.pointerItemDataIndex; + + if (dataIndex < 0) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + title = category; + + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + var newMarker = SerieHelper.GetItemMarker(serie, serieData, marker); + var newItemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + var newNumericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); + + var param = serie.context.param; + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.category = category; + param.dimension = 1; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = 0; + param.total = 0; + param.color = color; + param.marker = newMarker; + param.itemFormatter = newItemFormatter; + param.numericFormatter = newNumericFormatter; + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(serie.serieName); + param.columns.Add(string.Empty); + + paramList.Add(param); + for (int i = 0; i < 4; i++) + { + param = new SerieParams(); + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.dimension = i; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = serieData.GetData(i); + param.total = SerieHelper.GetMaxData(serie, i); + param.color = color; + param.marker = newMarker; + param.itemFormatter = newItemFormatter; + param.numericFormatter = newNumericFormatter; + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(XCSettings.lang.GetCandlestickDimensionName(i)); + param.columns.Add(ChartCached.NumberToStr(param.value, param.numericFormatter)); + + paramList.Add(param); + } + } + + private void DrawCandlestickSerie(VertexHelper vh, Candlestick serie) + { + if (!serie.show) return; + if (serie.animation.HasFadeOut()) return; + XAxis xAxis; + YAxis yAxis; + GridCoord grid; + if (!chart.TryGetChartComponent<XAxis>(out xAxis, serie.xAxisIndex)) return; + if (!chart.TryGetChartComponent<YAxis>(out yAxis, serie.yAxisIndex)) return; + if (!chart.TryGetChartComponent<GridCoord>(out grid, xAxis.gridIndex)) return; + var theme = chart.theme; + var dataZoom = chart.GetDataZoomOfAxis(xAxis); + var showData = serie.GetDataList(dataZoom); + float categoryWidth = AxisHelper.GetDataWidth(xAxis, grid.context.width, showData.Count, dataZoom); + float barWidth = serie.GetBarWidth(categoryWidth); + float gap = (categoryWidth - barWidth) / 2; + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > showData.Count ? showData.Count : serie.maxShow) : + showData.Count; + + bool dataChanging = false; + float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + double yMinValue = yAxis.context.minValue; + double yMaxValue = yAxis.context.maxValue; + var isYAxis = false; + serie.containerIndex = grid.index; + serie.containterInstanceId = grid.instanceId; + for (int i = serie.minShow; i < maxCount; i++) + { + var serieData = showData[i]; + if (serie.IsIgnoreValue(serieData)) + { + serie.context.dataPoints.Add(Vector3.zero); + continue; + } + var highlight = serie.data[i].context.highlight || serie.highlight; + var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight); + var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var heighest = serieData.GetCurrData(3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var isRise = yAxis.inverse ? close<open : close> open; + var borderWidth = open == 0 ? 0f : + (itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth : + itemStyle.runtimeBorderWidth); + if (serieData.IsDataChanged()) dataChanging = true; + float pX = grid.context.x + i * categoryWidth; + float zeroY = grid.context.y + yAxis.context.offset; + if (!xAxis.boundaryGap) pX -= categoryWidth / 2; + float pY = zeroY; + var barHig = 0f; + double valueTotal = yMaxValue - yMinValue; + var minCut = (yMinValue > 0 ? yMinValue : 0); + if (valueTotal != 0) + { + barHig = (float) ((close - open) / valueTotal * grid.context.height); + pY += (float) ((open - minCut) / valueTotal * grid.context.height); + } + serieData.context.stackHeight = barHig; + float currHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, barHig); + Vector3 plb, plt, prt, prb, top; + + plb = new Vector3(pX + gap + borderWidth, pY + borderWidth); + plt = new Vector3(pX + gap + borderWidth, pY + currHig - borderWidth); + prt = new Vector3(pX + gap + barWidth - borderWidth, pY + currHig - borderWidth); + prb = new Vector3(pX + gap + barWidth - borderWidth, pY + borderWidth); + top = new Vector3(pX + gap + barWidth / 2, pY + currHig - borderWidth); + if (serie.clip) + { + plb = chart.ClampInGrid(grid, plb); + plt = chart.ClampInGrid(grid, plt); + prt = chart.ClampInGrid(grid, prt); + prb = chart.ClampInGrid(grid, prb); + top = chart.ClampInGrid(grid, top); + } + serie.context.dataPoints.Add(top); + var areaColor = isRise ? + itemStyle.GetColor(theme.serie.candlestickColor) : + itemStyle.GetColor0(theme.serie.candlestickColor0); + var borderColor = isRise ? + itemStyle.GetBorderColor(theme.serie.candlestickBorderColor) : + itemStyle.GetBorderColor0(theme.serie.candlestickBorderColor0); + var itemWidth = Mathf.Abs(prt.x - plb.x); + var itemHeight = Mathf.Abs(plt.y - prb.y); + var center = new Vector3((plb.x + prt.x) / 2, (plt.y + prb.y) / 2); + var lowPos = new Vector3(center.x, zeroY + (float) ((lowest - minCut) / valueTotal * grid.context.height)); + var heighPos = new Vector3(center.x, zeroY + (float) ((heighest - minCut) / valueTotal * grid.context.height)); + var openCenterPos = new Vector3(center.x, prb.y); + var closeCenterPos = new Vector3(center.x, prt.y); + if (barWidth > 2f * borderWidth) + { + if (itemWidth > 0 && itemHeight > 0) + { + if (itemStyle.IsNeedCorner()) + { + UGL.DrawRoundRectangle(vh, center, itemWidth, itemHeight, areaColor, areaColor, 0, + itemStyle.cornerRadius, isYAxis, 0.5f); + } + else + { + chart.DrawClipPolygon(vh, ref prb, ref plb, ref plt, ref prt, areaColor, areaColor, + serie.clip, grid); + } + UGL.DrawBorder(vh, center, itemWidth, itemHeight, 2 * borderWidth, borderColor, 0, + itemStyle.cornerRadius, isYAxis, 0.5f); + } + } + else + { + UGL.DrawLine(vh, openCenterPos, closeCenterPos, Mathf.Max(borderWidth, barWidth / 2), borderColor); + } + if (isRise) + { + UGL.DrawLine(vh, openCenterPos, lowPos, borderWidth, borderColor); + UGL.DrawLine(vh, closeCenterPos, heighPos, borderWidth, borderColor); + } + else + { + UGL.DrawLine(vh, closeCenterPos, lowPos, borderWidth, borderColor); + UGL.DrawLine(vh, openCenterPos, heighPos, borderWidth, borderColor); + } + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(); + } + if (dataChanging) + { + chart.RefreshPainter(serie); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs.meta new file mode 100644 index 0000000..d9bbb9d --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/CandlestickHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d530c536c5784f2593e9a7c5a57df16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs new file mode 100644 index 0000000..820b00a --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs @@ -0,0 +1,39 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(SimplifiedCandlestickHandler), true)] + [DefaultAnimation(AnimationType.LeftToRight)] + [SerieExtraComponent()] + [SerieDataExtraComponent()] + [SerieDataExtraField()] + public class SimplifiedCandlestick : Serie, INeedSerieContainer, ISimplifiedSerie + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<SimplifiedCandlestick>(serieName); + + var lastValue = 50d; + for (int i = 0; i < 50; i++) + { + lastValue += UnityEngine.Random.Range(-10, 20); + var open = lastValue + Random.Range(-10, 5); + var close = lastValue + Random.Range(-5, 10); + var lowest = lastValue + Random.Range(-15, -10); + var heighest = lastValue + Random.Range(10, 20); + chart.AddData(serie.index, open, close, lowest, heighest); + } + return serie; + } + + public static SimplifiedCandlestick CovertSerie(Serie serie) + { + var newSerie = serie.Clone<SimplifiedCandlestick>(); + return newSerie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs.meta b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs.meta new file mode 100644 index 0000000..682a2ba --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1202f0da64c484488bb69b8382af9918 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs new file mode 100644 index 0000000..455f600 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs @@ -0,0 +1,214 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class SimplifiedCandlestickHandler : SerieHandler<SimplifiedCandlestick> + { + public override void DrawSerie(VertexHelper vh) + { + DrawCandlestickSerie(vh, serie); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + if (dataIndex < 0) + dataIndex = serie.context.pointerItemDataIndex; + + if (dataIndex < 0) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + title = category; + + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + var newMarker = SerieHelper.GetItemMarker(serie, serieData, marker); + var newItemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + var newNumericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); + + var param = serie.context.param; + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.category = category; + param.dimension = 1; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = 0; + param.total = 0; + param.color = color; + param.marker = newMarker; + param.itemFormatter = newItemFormatter; + param.numericFormatter = newNumericFormatter; + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(serie.serieName); + param.columns.Add(string.Empty); + + paramList.Add(param); + for (int i = 0; i < 4; i++) + { + param = new SerieParams(); + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.dimension = i; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = serieData.GetData(i); + param.total = SerieHelper.GetMaxData(serie, i); + param.color = color; + param.marker = newMarker; + param.itemFormatter = newItemFormatter; + param.numericFormatter = newNumericFormatter; + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(XCSettings.lang.GetCandlestickDimensionName(i)); + param.columns.Add(ChartCached.NumberToStr(param.value, param.numericFormatter)); + + paramList.Add(param); + } + } + + private void DrawCandlestickSerie(VertexHelper vh, SimplifiedCandlestick serie) + { + if (!serie.show) return; + if (serie.animation.HasFadeOut()) return; + XAxis xAxis; + YAxis yAxis; + GridCoord grid; + if (!chart.TryGetChartComponent<XAxis>(out xAxis, serie.xAxisIndex)) return; + if (!chart.TryGetChartComponent<YAxis>(out yAxis, serie.yAxisIndex)) return; + if (!chart.TryGetChartComponent<GridCoord>(out grid, xAxis.gridIndex)) return; + var theme = chart.theme; + var dataZoom = chart.GetDataZoomOfAxis(xAxis); + var showData = serie.GetDataList(dataZoom); + float categoryWidth = AxisHelper.GetDataWidth(xAxis, grid.context.width, showData.Count, dataZoom); + float barWidth = serie.GetBarWidth(categoryWidth); + float gap = (categoryWidth - barWidth) / 2; + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > showData.Count ? showData.Count : serie.maxShow) : + showData.Count; + + bool dataChanging = false; + float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + double yMinValue = yAxis.context.minValue; + double yMaxValue = yAxis.context.maxValue; + var isYAxis = false; + var itemStyle = serie.itemStyle; + serie.containerIndex = grid.index; + serie.containterInstanceId = grid.instanceId; + + for (int i = serie.minShow; i < maxCount; i++) + { + var serieData = showData[i]; + if (serie.IsIgnoreValue(serieData)) + { + serie.context.dataPoints.Add(Vector3.zero); + continue; + } + var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var heighest = serieData.GetCurrData(3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); + var isRise = yAxis.inverse ? close<open : close> open; + var borderWidth = open == 0 ? 0f : + (itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth : + itemStyle.runtimeBorderWidth); + if (serieData.IsDataChanged()) dataChanging = true; + float pX = grid.context.x + i * categoryWidth; + float zeroY = grid.context.y + yAxis.context.offset; + if (!xAxis.boundaryGap) pX -= categoryWidth / 2; + float pY = zeroY; + var barHig = 0f; + double valueTotal = yMaxValue - yMinValue; + var minCut = (yMinValue > 0 ? yMinValue : 0); + if (valueTotal != 0) + { + barHig = (float) ((close - open) / valueTotal * grid.context.height); + pY += (float) ((open - minCut) / valueTotal * grid.context.height); + } + serieData.context.stackHeight = barHig; + float currHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, barHig); + Vector3 plb, plt, prt, prb, top; + + plb = new Vector3(pX + gap + borderWidth, pY + borderWidth); + plt = new Vector3(pX + gap + borderWidth, pY + currHig - borderWidth); + prt = new Vector3(pX + gap + barWidth - borderWidth, pY + currHig - borderWidth); + prb = new Vector3(pX + gap + barWidth - borderWidth, pY + borderWidth); + top = new Vector3(pX + gap + barWidth / 2, pY + currHig - borderWidth); + // if (serie.clip) + // { + // plb = chart.ClampInGrid(grid, plb); + // plt = chart.ClampInGrid(grid, plt); + // prt = chart.ClampInGrid(grid, prt); + // prb = chart.ClampInGrid(grid, prb); + // top = chart.ClampInGrid(grid, top); + // } + serie.context.dataPoints.Add(top); + var areaColor = isRise ? + itemStyle.GetColor(theme.serie.candlestickColor) : + itemStyle.GetColor0(theme.serie.candlestickColor0); + var borderColor = isRise ? + itemStyle.GetBorderColor(theme.serie.candlestickBorderColor) : + itemStyle.GetBorderColor0(theme.serie.candlestickBorderColor0); + var itemWidth = Mathf.Abs(prt.x - plb.x); + var itemHeight = Mathf.Abs(plt.y - prb.y); + var center = new Vector3((plb.x + prt.x) / 2, (plt.y + prb.y) / 2); + var lowPos = new Vector3(center.x, zeroY + (float) ((lowest - minCut) / valueTotal * grid.context.height)); + var heighPos = new Vector3(center.x, zeroY + (float) ((heighest - minCut) / valueTotal * grid.context.height)); + var openCenterPos = new Vector3(center.x, prb.y); + var closeCenterPos = new Vector3(center.x, prt.y); + if (barWidth > 2f * borderWidth) + { + if (itemWidth > 0 && itemHeight > 0) + { + if (itemStyle.IsNeedCorner()) + { + UGL.DrawRoundRectangle(vh, center, itemWidth, itemHeight, areaColor, areaColor, 0, + itemStyle.cornerRadius, isYAxis, 0.5f); + } + else + { + chart.DrawClipPolygon(vh, ref prb, ref plb, ref plt, ref prt, areaColor, areaColor, + serie.clip, grid); + } + UGL.DrawBorder(vh, center, itemWidth, itemHeight, 2 * borderWidth, borderColor, 0, + itemStyle.cornerRadius, isYAxis, 0.5f); + } + if (isRise) + { + UGL.DrawLine(vh, openCenterPos, lowPos, borderWidth, borderColor); + UGL.DrawLine(vh, closeCenterPos, heighPos, borderWidth, borderColor); + } + else + { + UGL.DrawLine(vh, closeCenterPos, lowPos, borderWidth, borderColor); + UGL.DrawLine(vh, openCenterPos, heighPos, borderWidth, borderColor); + } + } + else + { + UGL.DrawLine(vh, openCenterPos, closeCenterPos, Mathf.Max(borderWidth, barWidth / 2), borderColor); + } + + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(); + } + if (dataChanging) + { + chart.RefreshPainter(serie); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs.meta new file mode 100644 index 0000000..998419c --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42727a035319b4eab92ddf0742630115 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Heatmap.meta b/Assets/XCharts/Runtime/Serie/Heatmap.meta new file mode 100644 index 0000000..ccda235 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Heatmap.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70535a50c140c47cc8cac1820dc03170 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Heatmap/Heatmap.cs b/Assets/XCharts/Runtime/Serie/Heatmap/Heatmap.cs new file mode 100644 index 0000000..9d71356 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Heatmap/Heatmap.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(HeatmapHandler), true)] + [DefaultAnimation(AnimationType.LeftToRight)] + [RequireChartComponent(typeof(VisualMap))] + [SerieExtraComponent(typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraField()] + public class Heatmap : Serie, INeedSerieContainer + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Heatmap>(serieName); + serie.itemStyle.show = true; + serie.itemStyle.borderWidth = 1; + serie.itemStyle.borderColor = Color.clear; + + var emphasis = serie.AddExtraComponent<EmphasisItemStyle>(); + emphasis.show = true; + emphasis.borderWidth = 1; + emphasis.borderColor = Color.black; + return serie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Heatmap/Heatmap.cs.meta b/Assets/XCharts/Runtime/Serie/Heatmap/Heatmap.cs.meta new file mode 100644 index 0000000..1c06a6d --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Heatmap/Heatmap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a9984972d3c74a01945c4064739a826 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs b/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs new file mode 100644 index 0000000..517033f --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs @@ -0,0 +1,236 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class HeatmapHandler : SerieHandler<Heatmap> + { + private GridCoord m_SerieGrid; + + public override int defaultDimension { get { return 2; } } + + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + public override void DrawSerie(VertexHelper vh) + { + DrawHeatmapSerie(vh, serie); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + dataIndex = serie.context.pointerItemDataIndex; + if (dataIndex < 0) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + if (string.IsNullOrEmpty(category)) + { + var xAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + if (xAxis != null) + category = xAxis.GetData((int) serieData.GetData(0)); + } + + title = serie.serieName; + + var param = serie.context.param; + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.dimension = defaultDimension; + param.dataCount = serie.dataCount; + param.serieData = serieData; + param.color = serieData.context.color; + param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); + param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(category); + param.columns.Add(ChartCached.NumberToStr(serieData.GetData(defaultDimension), param.numericFormatter)); + + paramList.Add(param); + } + + private void UpdateSerieContext() + { + if (m_SerieGrid == null) + return; + + var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; + var needInteract = false; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + serieData.context.highlight = false; + } + chart.RefreshPainter(serie); + } + return; + } + m_LastCheckContextFlag = needCheck; + if (m_LegendEnter) + { + serie.context.pointerEnter = true; + foreach (var serieData in serie.data) + { + serieData.context.highlight = true; + } + } + else + { + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + if (!needInteract && serieData.context.rect.Contains(chart.pointerPos)) + { + serie.context.pointerItemDataIndex = serieData.index; + serie.context.pointerEnter = true; + serieData.context.highlight = true; + needInteract = true; + } + else + { + serieData.context.highlight = false; + } + } + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + + private void DrawHeatmapSerie(VertexHelper vh, Heatmap serie) + { + if (serie.animation.HasFadeOut()) return; + XAxis xAxis; + YAxis yAxis; + if (!chart.TryGetChartComponent<XAxis>(out xAxis, serie.xAxisIndex)) return; + if (!chart.TryGetChartComponent<YAxis>(out yAxis, serie.yAxisIndex)) return; + m_SerieGrid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex); + xAxis.boundaryGap = true; + yAxis.boundaryGap = true; + var visualMap = chart.GetVisualMapOfSerie(serie); + var emphasisItemStyle = serie.emphasisItemStyle; + var xCount = xAxis.data.Count; + var yCount = yAxis.data.Count; + var xWidth = m_SerieGrid.context.width / xCount; + var yWidth = m_SerieGrid.context.height / yCount; + + var zeroX = m_SerieGrid.context.x; + var zeroY = m_SerieGrid.context.y; + var rangeMin = visualMap.rangeMin; + var rangeMax = visualMap.rangeMax; + var color = chart.theme.GetColor(serie.index); + var borderWidth = serie.itemStyle.show ? serie.itemStyle.borderWidth : 0; + var rectWid = xWidth - 2 * borderWidth; + var rectHig = yWidth - 2 * borderWidth; + + var borderColor = serie.itemStyle.opacity > 0 ? + serie.itemStyle.borderColor : + ChartConst.clearColor32; + borderColor.a = (byte) (borderColor.a * serie.itemStyle.opacity); + + var borderToColor = serie.itemStyle.opacity > 0 ? + serie.itemStyle.borderToColor : + ChartConst.clearColor32; + borderToColor.a = (byte) (borderToColor.a * serie.itemStyle.opacity); + + serie.context.dataPoints.Clear(); + serie.animation.InitProgress(0, xCount); + var animationIndex = serie.animation.GetCurrIndex(); + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + var dataChanging = false; + serie.containerIndex = m_SerieGrid.index; + serie.containterInstanceId = m_SerieGrid.instanceId; + for (int n = 0; n < serie.dataCount; n++) + { + var serieData = serie.data[n]; + serieData.index = n; + var i = (int) serieData.GetData(0); + var j = (int) serieData.GetData(1); + var dimension = VisualMapHelper.GetDimension(visualMap, serieData.data.Count); + if (serie.IsIgnoreValue(serieData, dimension)) + { + serie.context.dataPoints.Add(Vector3.zero); + continue; + } + var value = serieData.GetCurrData(dimension, dataChangeDuration, yAxis.inverse, + yAxis.context.minValue, yAxis.context.maxValue); + if (serieData.IsDataChanged()) dataChanging = true; + var pos = new Vector3(zeroX + (i + (xAxis.boundaryGap ? 0.5f : 0)) * xWidth, + zeroY + (j + (yAxis.boundaryGap ? 0.5f : 0)) * yWidth); + serie.context.dataPoints.Add(pos); + serieData.context.position = pos; + + serieData.context.canShowLabel = false; + serieData.context.rect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig); + if (value == 0) continue; + if ((value < rangeMin && rangeMin != visualMap.min) || + (value > rangeMax && rangeMax != visualMap.max)) + { + continue; + } + if (!visualMap.IsInSelectedValue(value)) continue; + if (animationIndex >= 0 && i > animationIndex) continue; + color = visualMap.GetColor(value); + if (serieData.context.highlight) + color = ChartHelper.GetHighlightColor(color); + + serieData.context.canShowLabel = true; + serieData.context.color = color; + + var highlight = (serieData.context.highlight) || + visualMap.context.pointerIndex > 0; + + //UGL.DrawRectangle(vh, pos, rectWid / 2, rectHig / 2, color); + UGL.DrawRectangle(vh, serieData.context.rect, color); + + if (borderWidth > 0 && !ChartHelper.IsClearColor(borderColor)) + { + UGL.DrawBorder(vh, pos, rectWid, rectHig, borderWidth, borderColor, borderToColor); + } + if (visualMap.hoverLink && highlight && emphasisItemStyle != null && + emphasisItemStyle.borderWidth > 0) + { + var emphasisBorderWidth = emphasisItemStyle.borderWidth; + var emphasisBorderColor = emphasisItemStyle.opacity > 0 ? + emphasisItemStyle.borderColor : ChartConst.clearColor32; + var emphasisBorderToColor = emphasisItemStyle.opacity > 0 ? + emphasisItemStyle.borderToColor : ChartConst.clearColor32; + UGL.DrawBorder(vh, pos, rectWid, rectHig, emphasisBorderWidth, emphasisBorderColor, + emphasisBorderToColor); + } + + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(xCount); + chart.RefreshPainter(serie); + } + if (dataChanging) + { + chart.RefreshPainter(serie); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs.meta new file mode 100644 index 0000000..2a731f5 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Heatmap/HeatmapHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a5cd70274da44d50b48fc04d8b52e21 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line.meta b/Assets/XCharts/Runtime/Serie/Line.meta new file mode 100644 index 0000000..2f308b9 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61f1a04d9920849e7861bebdfd070384 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line/Line.cs b/Assets/XCharts/Runtime/Serie/Line/Line.cs new file mode 100644 index 0000000..d504f13 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/Line.cs @@ -0,0 +1,45 @@ +using System; + +namespace XCharts.Runtime +{ + [Serializable] + [SerieHandler(typeof(LineHandler), true)] + [SerieConvert(typeof(Bar), typeof(Pie))] + [CoordOptions(typeof(GridCoord), typeof(PolarCoord))] + [DefaultAnimation(AnimationType.LeftToRight)] + [SerieExtraComponent( + typeof(LabelStyle), + typeof(EndLabelStyle), + typeof(LineArrow), + typeof(AreaStyle), + typeof(EmphasisItemStyle), + typeof(EmphasisLabelStyle))] + [SerieDataExtraComponent( + typeof(ItemStyle), + typeof(LabelStyle), + typeof(SerieSymbol), + typeof(EmphasisItemStyle), + typeof(EmphasisLabelStyle))] + [SerieDataExtraField("m_Ignore")] + public class Line : Serie, INeedSerieContainer + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Line>(serieName); + serie.symbol.show = true; + for (int i = 0; i < 5; i++) + { + chart.AddData(serie.index, UnityEngine.Random.Range(10, 90)); + } + return serie; + } + + public static Line CovertSerie(Serie serie) + { + var newSerie = serie.Clone<Line>(); + return newSerie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Line/Line.cs.meta b/Assets/XCharts/Runtime/Serie/Line/Line.cs.meta new file mode 100644 index 0000000..b88d15c --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/Line.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 883eff3dc77e0439a80d257577790cbc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs b/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs new file mode 100644 index 0000000..ff00839 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs @@ -0,0 +1,436 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + /// <summary> + /// For grid coord + /// </summary> + internal sealed partial class LineHandler : SerieHandler<Line> + { + List<List<SerieData>> m_StackSerieData = new List<List<SerieData>>(); + private GridCoord m_SerieGrid; + + public override Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label) + { + var invert = label.autoOffset && + SerieHelper.IsDownPoint(serie, serieData.index) && + (serie.areaStyle == null || !serie.areaStyle.show); + if (invert) + { + var offset = label.GetOffset(serie.context.insideRadius); + return new Vector3(offset.x, -offset.y, offset.z); + } + else + { + return label.GetOffset(serie.context.insideRadius); + } + } + + private void UpdateSerieGridContext() + { + if (m_SerieGrid == null) + return; + var lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); + var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + serie.highlight = false; + serie.ResetInteract(); + foreach (var serieData in serie.data) + serieData.context.highlight = false; + if (SeriesHelper.IsStack(chart.series)) + chart.RefreshTopPainter(); + else + chart.RefreshPainter(serie); + } + return; + } + m_LastCheckContextFlag = needCheck; + var themeSymbolSize = chart.theme.serie.lineSymbolSize; + var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize; + var needInteract = false; + if (m_LegendEnter) + { + serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate); + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + } + else if (serie.context.isTriggerByAxis) + { + serie.context.pointerEnter = true; + serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate); + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + + if (i == serie.context.pointerItemDataIndex) + { + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + else + { + serieData.context.highlight = false; + serieData.interact.SetValue(ref needInteract, symbolSize); + } + } + } + else + { + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + serieData.index = i; + var dist = Vector3.Distance(chart.pointerPos, serieData.context.position); + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + if (dist <= symbolSelectedSize) + { + serie.context.pointerItemDataIndex = serieData.index; + serie.context.pointerEnter = true; + serie.interact.SetValue(ref needInteract, lineWidth, true); + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + else + { + serieData.context.highlight = false; + serieData.interact.SetValue(ref needInteract, symbolSize); + } + } + } + if (needInteract) + { + if (SeriesHelper.IsStack(chart.series)) + chart.RefreshTopPainter(); + else + chart.RefreshPainter(serie); + } + } + + private void DrawLinePoint(VertexHelper vh, Serie serie) + { + if (!serie.show || serie.IsPerformanceMode()) + return; + + if (m_SerieGrid == null) + return; + + var count = serie.context.dataPoints.Count; + var clip = SeriesHelper.IsAnyClipSerie(chart.series); + var theme = chart.theme; + var interacting = false; + var lineArrow = serie.lineArrow; + var visualMap = chart.GetVisualMapOfSerie(serie); + var isVisualMapGradient = VisualMapHelper.IsNeedLineGradient(visualMap); + var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); + + Axis axis; + Axis relativedAxis; + + if (isY) + { + axis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + relativedAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + } + else + { + axis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + relativedAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + } + for (int i = 0; i < count; i++) + { + var serieData = serie.GetSerieData(i); + if (serieData == null) + continue; + if (serieData.context.isClip) + continue; + + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + + if (!symbol.show || !symbol.ShowSymbol(i, count)) + continue; + + var pos = serie.context.dataPoints[i]; + if (lineArrow != null && lineArrow.show) + { + if (lineArrow.position == LineArrow.Position.Start && i == 0) + continue; + if (lineArrow.position == LineArrow.Position.End && i == count - 1) + continue; + } + + if (ChartHelper.IsIngore(pos)) + continue; + + var highlight = serie.data[i].context.highlight || serie.highlight; + var symbolSize = highlight ? + theme.serie.lineSymbolSelectedSize : + theme.serie.lineSymbolSize; + if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting)) + { + symbolSize = highlight ? + symbol.GetSelectedSize(serieData.data, symbolSize) : + symbol.GetSize(serieData.data, symbolSize); + serieData.interact.SetValue(ref interacting, symbolSize); + symbolSize = serie.animation.GetSysmbolSize(symbolSize); + } + var symbolColor = SerieHelper.GetItemColor(serie, serieData, theme, serie.index, highlight); + var symbolToColor = SerieHelper.GetItemToColor(serie, serieData, theme, serie.index, highlight); + var symbolEmptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, serie.index, highlight, false); + + if (isVisualMapGradient) + { + symbolColor = VisualMapHelper.GetLineGradientColor(visualMap, pos, m_SerieGrid, axis, relativedAxis, symbolColor); + symbolToColor = symbolColor; + } + var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, theme, highlight); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, theme, highlight); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight); + chart.DrawClipSymbol(vh, symbol.type, symbolSize, symbolBorder, pos, + symbolColor, symbolToColor, symbolEmptyColor, borderColor, symbol.gap, clip, cornerRadius, m_SerieGrid, + i > 0 ? serie.context.dataPoints[i - 1] : m_SerieGrid.context.position); + } + if (interacting) + { + if (SeriesHelper.IsStack(chart.series)) + chart.RefreshTopPainter(); + else + chart.RefreshPainter(serie); + } + } + + private void DrawLineArrow(VertexHelper vh, Serie serie) + { + if (!serie.show || serie.lineArrow == null || !serie.lineArrow.show) + return; + + if (serie.context.dataPoints.Count < 2) + return; + + var lineColor = SerieHelper.GetLineColor(serie, null, chart.theme, serie.index, false); + var startPos = Vector3.zero; + var arrowPos = Vector3.zero; + var lineArrow = serie.lineArrow.arrow; + var dataPoints = serie.context.drawPoints; + switch (serie.lineArrow.position) + { + case LineArrow.Position.End: + if (dataPoints.Count < 3) + { + startPos = dataPoints[dataPoints.Count - 2].position; + arrowPos = dataPoints[dataPoints.Count - 1].position; + } + else + { + startPos = dataPoints[dataPoints.Count - 3].position; + arrowPos = dataPoints[dataPoints.Count - 2].position; + } + UGL.DrawArrow(vh, startPos, arrowPos, lineArrow.width, lineArrow.height, + lineArrow.offset, lineArrow.dent, lineArrow.GetColor(lineColor)); + + break; + + case LineArrow.Position.Start: + startPos = dataPoints[1].position; + arrowPos = dataPoints[0].position; + UGL.DrawArrow(vh, startPos, arrowPos, lineArrow.width, lineArrow.height, + lineArrow.offset, lineArrow.dent, lineArrow.GetColor(lineColor)); + + break; + } + } + + private void DrawLineSerie(VertexHelper vh, Line serie) + { + if (!serie.show) + return; + if (serie.animation.HasFadeOut()) + return; + + var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); + + Axis axis; + Axis relativedAxis; + + if (isY) + { + axis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + relativedAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + } + else + { + axis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + relativedAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + } + + if (axis == null) + return; + if (relativedAxis == null) + return; + + m_SerieGrid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + if (m_SerieGrid == null) + return; + if (m_EndLabel != null && !m_SerieGrid.context.endLabelList.Contains(m_EndLabel)) + { + m_SerieGrid.context.endLabelList.Add(m_EndLabel); + } + + var visualMap = chart.GetVisualMapOfSerie(serie); + var dataZoom = chart.GetDataZoomOfAxis(axis); + var showData = serie.GetDataList(dataZoom); + + if (showData.Count <= 0) + return; + + var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width; + var scaleWid = AxisHelper.GetDataWidth(axis, axisLength, showData.Count, dataZoom); + + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > showData.Count ? showData.Count : serie.maxShow) : + showData.Count; + int rate = LineHelper.GetDataAverageRate(serie, m_SerieGrid, maxCount, false); + var totalAverage = serie.sampleAverage > 0 ? + serie.sampleAverage : + DataHelper.DataAverage(ref showData, serie.sampleType, serie.minShow, maxCount, rate); + var dataChanging = false; + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + + var interacting = false; + var lineWidth = LineHelper.GetLineWidth(ref interacting, serie, chart.theme.serie.lineWidth); + + axis.context.scaleWidth = scaleWid; + serie.containerIndex = m_SerieGrid.index; + serie.containterInstanceId = m_SerieGrid.instanceId; + + Serie lastSerie = null; + var isStack = SeriesHelper.IsStack<Line>(chart.series, serie.stack); + if (isStack) + { + lastSerie = SeriesHelper.GetLastStackSerie(chart.series, serie); + SeriesHelper.UpdateStackDataList(chart.series, serie, dataZoom, m_StackSerieData); + } + var lp = Vector3.zero; + for (int i = serie.minShow; i < maxCount; i += rate) + { + var serieData = showData[i]; + var isIgnore = serie.IsIgnoreValue(serieData); + if (isIgnore) + { + serieData.context.stackHeight = 0; + serieData.context.position = Vector3.zero; + if (serie.ignoreLineBreak && serie.context.dataIgnores.Count > 0) + { + serie.context.dataIgnores[serie.context.dataIgnores.Count - 1] = true; + } + } + else + { + var np = Vector3.zero; + var xValue = axis.IsCategory() ? i : serieData.GetData(0, axis.inverse); + var relativedValue = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, + maxCount, totalAverage, i, dataChangeDuration, ref dataChanging, relativedAxis); + + serieData.context.stackHeight = GetDataPoint(isY, axis, relativedAxis, m_SerieGrid, xValue, relativedValue, + i, scaleWid, isStack, ref np); + serieData.context.isClip = false; + if (serie.clip && !m_SerieGrid.Contains(np)) + { + if (m_SerieGrid.BoundaryPoint(lp, np, ref np)) + { + serieData.context.isClip = true; + } + } + serie.context.dataIgnores.Add(false); + serieData.context.position = np; + serie.context.dataPoints.Add(np); + lp = np; + } + } + + if (dataChanging || interacting) + chart.RefreshPainter(serie); + + if (serie.context.dataPoints.Count <= 0) + return; + + serie.animation.InitProgress(serie.context.dataPoints, isY); + + VisualMapHelper.AutoSetLineMinMax(visualMap, serie, isY, axis, relativedAxis); + LineHelper.UpdateSerieDrawPoints(serie, chart.settings, chart.theme, visualMap, lineWidth, isY); + LineHelper.DrawSerieLineArea(vh, serie, lastSerie, chart.theme, visualMap, isY, axis, relativedAxis, m_SerieGrid); + LineHelper.DrawSerieLine(vh, chart.theme, serie, visualMap, m_SerieGrid, axis, relativedAxis, lineWidth); + + serie.context.vertCount = vh.currentVertCount; + + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(); + serie.animation.CheckSymbol(serie.symbol.GetSize(null, chart.theme.serie.lineSymbolSize)); + chart.RefreshPainter(serie); + } + } + + private float GetDataPoint(bool isY, Axis axis, Axis relativedAxis, GridCoord grid, double xValue, + double yValue, int i, float scaleWid, bool isStack, ref Vector3 np) + { + float xPos, yPos; + var gridXY = isY ? grid.context.x : grid.context.y; + var valueHig = 0f; + if (isY) + { + valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleWid, yValue); + valueHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, valueHig); + + xPos = gridXY + valueHig; + yPos = AxisHelper.GetAxisValuePosition(grid, axis, scaleWid, xValue); + + if (isStack) + { + for (int n = 0; n < m_StackSerieData.Count - 1; n++) + xPos += m_StackSerieData[n][i].context.stackHeight; + } + } + else + { + + valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleWid, yValue); + valueHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, valueHig); + + yPos = gridXY + valueHig; + xPos = AxisHelper.GetAxisValuePosition(grid, axis, scaleWid, xValue); + + if (isStack) + { + for (int n = 0; n < m_StackSerieData.Count - 1; n++) + yPos += m_StackSerieData[n][i].context.stackHeight; + } + } + np = new Vector3(xPos, yPos); + return valueHig; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs.meta b/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs.meta new file mode 100644 index 0000000..b6f3a32 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.GridCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 34168c2605d4546c291adeb8e857fd62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs b/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs new file mode 100644 index 0000000..ea5b569 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs @@ -0,0 +1,262 @@ +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + /// <summary> + /// For polar coord + /// </summary> + internal sealed partial class LineHandler + { + private PolarCoord m_SeriePolar; + + private void UpdateSeriePolarContext() + { + if (m_SeriePolar == null) + return; + + var needCheck = (chart.isPointerInChart && m_SeriePolar.IsPointerEnter()) || m_LegendEnter; + var lineWidth = 0f; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + var needAnimation1 = false; + lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + serie.interact.SetValue(ref needAnimation1, lineWidth, false); + foreach (var serieData in serie.data) + { + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize); + serieData.context.highlight = false; + serieData.interact.SetValue(ref needAnimation1, symbolSize); + } + if (needAnimation1) + { + if (SeriesHelper.IsStack(chart.series)) + chart.RefreshTopPainter(); + else + chart.RefreshPainter(serie); + } + } + return; + } + m_LastCheckContextFlag = needCheck; + var themeSymbolSize = chart.theme.serie.lineSymbolSize; + var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize; + lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); + + var needInteract = false; + if (m_LegendEnter) + { + serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate); + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + } + else + { + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + var dir = chart.pointerPos - new Vector2(m_SeriePolar.context.center.x, m_SeriePolar.context.center.y); + var pointerAngle = ChartHelper.GetAngle360(Vector2.up, dir); + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + var angle0 = serieData.context.angle; + var angle1 = i >= serie.dataCount - 1 ? angle0 : serie.data[i + 1].context.angle; + + if (pointerAngle >= angle0 && pointerAngle < angle1) + { + serie.context.pointerItemDataIndex = i; + serie.context.pointerEnter = true; + serieData.context.highlight = true; + } + else + { + serieData.context.highlight = false; + } + } + } + if (needInteract) + { + if (SeriesHelper.IsStack(chart.series)) + chart.RefreshTopPainter(); + else + chart.RefreshPainter(serie); + } + } + + private void DrawPolarLine(VertexHelper vh, Serie serie) + { + var datas = serie.data; + if (datas.Count <= 0) + return; + + m_SeriePolar = chart.GetChartComponent<PolarCoord>(serie.polarIndex); + if (m_SeriePolar == null) + return; + + var m_AngleAxis = ComponentHelper.GetAngleAxis(chart.components, m_SeriePolar.index); + var m_RadiusAxis = ComponentHelper.GetRadiusAxis(chart.components, m_SeriePolar.index); + if (m_AngleAxis == null || m_RadiusAxis == null) + return; + + var startAngle = m_AngleAxis.startAngle; + var radius = m_SeriePolar.context.radius; + + var min = m_RadiusAxis.context.minValue; + var max = m_RadiusAxis.context.maxValue; + var firstSerieData = datas[0]; + var lp = GetPolarPos(m_SeriePolar, m_AngleAxis, firstSerieData, min, max, radius); + var cp = Vector3.zero; + var lineColor = SerieHelper.GetLineColor(serie, null, chart.theme, serie.index, serie.highlight); + var lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); + var currDetailProgress = 0f; + var totalDetailProgress = datas.Count; + + serie.animation.InitProgress(currDetailProgress, totalDetailProgress); + + var ltp = Vector3.zero; + var lbp = Vector3.zero; + var ntp = Vector3.zero; + var nbp = Vector3.zero; + var itp = Vector3.zero; + var ibp = Vector3.zero; + var clp = Vector3.zero; + var crp = Vector3.zero; + bool bitp = true, bibp = true; + for (int i = 1; i < datas.Count; i++) + { + if (serie.animation.CheckDetailBreak(i)) + break; + + var serieData = datas[i]; + + cp = GetPolarPos(m_SeriePolar, m_AngleAxis, datas[i], min, max, radius); + var np = i == datas.Count - 1 ? cp : + GetPolarPos(m_SeriePolar, m_AngleAxis, datas[i + 1], min, max, radius); + + UGLHelper.GetLinePoints(lp, cp, np, lineWidth, + ref ltp, ref lbp, + ref ntp, ref nbp, + ref itp, ref ibp, + ref clp, ref crp, + ref bitp, ref bibp, i); + + if (i == 1) + { + UGL.AddVertToVertexHelper(vh, ltp, lbp, lineColor, false); + } + + if (bitp == bibp) + { + if (bitp) + UGL.AddVertToVertexHelper(vh, itp, ibp, lineColor, true); + else + { + UGL.AddVertToVertexHelper(vh, ltp, clp, lineColor, true); + UGL.AddVertToVertexHelper(vh, ltp, crp, lineColor, true); + } + } + else + { + if (bitp) + { + UGL.AddVertToVertexHelper(vh, itp, clp, lineColor, true); + UGL.AddVertToVertexHelper(vh, itp, crp, lineColor, true); + } + else if (bibp) + { + UGL.AddVertToVertexHelper(vh, clp, ibp, lineColor, true); + UGL.AddVertToVertexHelper(vh, crp, ibp, lineColor, true); + } + } + lp = cp; + } + + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(totalDetailProgress); + serie.animation.CheckSymbol(serie.symbol.GetSize(null, chart.theme.serie.lineSymbolSize)); + chart.RefreshChart(); + } + } + + private void DrawPolarLineSymbol(VertexHelper vh) + { + for (int n = 0; n < chart.series.Count; n++) + { + var serie = chart.series[n]; + + if (!serie.show) + continue; + if (!(serie is Line)) + continue; + + var count = serie.dataCount; + for (int i = 0; i < count; i++) + { + var serieData = serie.GetSerieData(i); + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + if (ChartHelper.IsIngore(serieData.context.position)) + continue; + + bool highlight = serieData.context.highlight || serie.highlight; + if ((!symbol.show || !symbol.ShowSymbol(i, count) || serie.IsPerformanceMode()) && + !serieData.context.highlight) + continue; + + var symbolSize = highlight ? + symbol.GetSelectedSize(serieData.data, chart.theme.serie.lineSymbolSize) : + symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize); + + var symbolColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, n, highlight); + var symbolToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, n, highlight); + var symbolEmptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, n, highlight, false); + var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, chart.theme, highlight); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, chart.theme, highlight); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight); + + symbolSize = serie.animation.GetSysmbolSize(symbolSize); + chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.context.position, + symbolColor, symbolToColor, symbolEmptyColor, borderColor, symbol.gap, cornerRadius); + } + } + } + + private Vector3 GetPolarPos(PolarCoord m_Polar, AngleAxis m_AngleAxis, SerieData serieData, double min, + double max, float polarRadius) + { + var angle = 0f; + + if (!m_AngleAxis.clockwise) + { + angle = m_AngleAxis.GetValueAngle((float) serieData.GetData(1)); + } + else + { + angle = m_AngleAxis.GetValueAngle((float) serieData.GetData(1)); + } + + var value = serieData.GetData(0); + var radius = (float) ((value - min) / (max - min) * polarRadius); + + angle = (angle + 360) % 360; + serieData.context.angle = angle; + serieData.context.position = ChartHelper.GetPos(m_Polar.context.center, radius, angle, true); + + return serieData.context.position; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs.meta b/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs.meta new file mode 100644 index 0000000..fd0e63a --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.PolarCoord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8655c97b8c7e44e44852f8b81a7372b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.cs b/Assets/XCharts/Runtime/Serie/Line/LineHandler.cs new file mode 100644 index 0000000..f15ba49 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.cs @@ -0,0 +1,99 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + /// <summary> + /// For grid coord + /// </summary> + [UnityEngine.Scripting.Preserve] + internal sealed partial class LineHandler : SerieHandler<Line> + { + public override void Update() + { + base.Update(); + if (serie.IsUseCoord<GridCoord>()) + UpdateSerieGridContext(); + else if (serie.IsUseCoord<PolarCoord>()) + UpdateSeriePolarContext(); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + UpdateCoordSerieParams(ref paramList, ref title, dataIndex, showCategory, category, + marker, itemFormatter, numericFormatter); + } + + public override void DrawSerie(VertexHelper vh) + { + if (serie.IsUseCoord<PolarCoord>()) + { + DrawPolarLine(vh, serie); + DrawPolarLineSymbol(vh); + } + else if (serie.IsUseCoord<GridCoord>()) + { + DrawLineSerie(vh, serie); + + if (!SeriesHelper.IsStack(chart.series)) + { + DrawLinePoint(vh, serie); + DrawLineArrow(vh, serie); + } + } + } + + public override void DrawTop(VertexHelper vh) + { + if (serie.IsUseCoord<GridCoord>()) + { + if (SeriesHelper.IsStack(chart.series)) + { + DrawLinePoint(vh, serie); + DrawLineArrow(vh, serie); + } + } + } + + public override void RefreshEndLabelInternal() + { + base.RefreshEndLabelInternal(); + if (m_SerieGrid == null) return; + if (!serie.animation.IsFinish()) return; + var endLabelList = m_SerieGrid.context.endLabelList; + if (endLabelList.Count <= 1) return; + + endLabelList.Sort(delegate(ChartLabel a, ChartLabel b) + { + if (a == null || b == null) return 1; + return b.transform.position.y.CompareTo(a.transform.position.y); + }); + var lastY = float.NaN; + for (int i = 0; i < endLabelList.Count; i++) + { + var label = endLabelList[i]; + if (label == null) continue; + if (!label.isAnimationEnd) continue; + var labelPosition = label.transform.localPosition; + if (float.IsNaN(lastY)) + { + lastY = labelPosition.y; + } + else + { + var labelHeight = label.GetTextHeight(); + if (labelPosition.y + labelHeight > lastY) + { + label.SetPosition(new Vector3(labelPosition.x, lastY - labelHeight, labelPosition.z)); + } + lastY = label.transform.localPosition.y; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Line/LineHandler.cs.meta new file mode 100644 index 0000000..51dec59 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e3a076ca3ee241c3b8b1088d4519dfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs b/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs new file mode 100644 index 0000000..27d06ae --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs @@ -0,0 +1,551 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + internal static class LineHelper + { + private static List<Vector3> s_CurvesPosList = new List<Vector3>(); + + public static int GetDataAverageRate(Serie serie, GridCoord grid, int maxCount, bool isYAxis) + { + var sampleDist = serie.sampleDist; + var rate = 0; + var width = isYAxis ? grid.context.height : grid.context.width; + if (sampleDist > 0) + rate = (int) ((maxCount - serie.minShow) / (width / sampleDist)); + if (rate < 1) + rate = 1; + return rate; + } + + public static void DrawSerieLineArea(VertexHelper vh, Serie serie, Serie lastStackSerie, + ThemeStyle theme, VisualMap visualMap, bool isY, Axis axis, Axis relativedAxis, GridCoord grid) + { + if (serie.areaStyle == null || !serie.areaStyle.show) + return; + + var srcAreaColor = SerieHelper.GetAreaColor(serie, null, theme, serie.context.colorIndex, false); + var srcAreaToColor = SerieHelper.GetAreaToColor(serie, null, theme, serie.context.colorIndex, false); + var gridXY = (isY ? grid.context.x : grid.context.y); + if (lastStackSerie == null) + { + DrawSerieLineNormalArea(vh, serie, isY, + gridXY + relativedAxis.context.offset, + gridXY, + gridXY + (isY ? grid.context.width : grid.context.height), + srcAreaColor, + srcAreaToColor, + visualMap, + axis, + relativedAxis, + grid); + } + else + { + DrawSerieLineStackArea(vh, serie, lastStackSerie, isY, + gridXY + relativedAxis.context.offset, + gridXY, + gridXY + (isY ? grid.context.width : grid.context.height), + srcAreaColor, + srcAreaToColor, + visualMap); + } + } + + private static void DrawSerieLineNormalArea(VertexHelper vh, Serie serie, bool isY, + float zero, float min, float max, Color32 areaColor, Color32 areaToColor, + VisualMap visualMap, Axis axis, Axis relativedAxis, GridCoord grid) + { + var points = serie.context.drawPoints; + var count = points.Count; + if (count < 2) + return; + + var isBreak = false; + var lp = Vector3.zero; + var isVisualMapGradient = VisualMapHelper.IsNeedAreaGradient(visualMap); + var areaLerp = !ChartHelper.IsValueEqualsColor(areaColor, areaToColor); + var zsp = isY ? + new Vector3(zero, points[0].position.y) : + new Vector3(points[0].position.x, zero); + var zep = isY ? + new Vector3(zero, points[count - 1].position.y) : + new Vector3(points[count - 1].position.x, zero); + + var lastDataIsIgnore = false; + for (int i = 0; i < points.Count; i++) + { + var tp = points[i].position; + var isIgnore = points[i].isIgnoreBreak; + var color = areaColor; + var toColor = areaToColor; + var lerp = areaLerp; + + if (serie.animation.CheckDetailBreak(tp, isY)) + { + isBreak = true; + + var progress = serie.animation.GetCurrDetail(); + var ip = Vector3.zero; + var axisStartPos = isY ? new Vector3(-10000, progress) : new Vector3(progress, -10000); + var axisEndPos = isY ? new Vector3(10000, progress) : new Vector3(progress, 10000); + + if (UGLHelper.GetIntersection(lp, tp, axisStartPos, axisEndPos, ref ip)) + tp = ip; + } + var zp = isY ? new Vector3(zero, tp.y) : new Vector3(tp.x, zero); + if (isVisualMapGradient) + { + color = VisualMapHelper.GetLineGradientColor(visualMap, zp, grid, axis, relativedAxis, areaColor); + toColor = VisualMapHelper.GetLineGradientColor(visualMap, tp, grid, axis, relativedAxis, areaToColor); + lerp = true; + } + if (i > 0) + { + if ((lp.y - zero > 0 && tp.y - zero < 0) || (lp.y - zero < 0 && tp.y - zero > 0)) + { + var ip = Vector3.zero; + if (UGLHelper.GetIntersection(lp, tp, zsp, zep, ref ip)) + { + if (lerp) + AddVertToVertexHelperWithLerpColor(vh, ip, ip, color, toColor, isY, min, max, i > 0); + else + { + if (lastDataIsIgnore) + UGL.AddVertToVertexHelper(vh, ip, ip, ColorUtil.clearColor32, true); + + UGL.AddVertToVertexHelper(vh, ip, ip, toColor, color, i > 0); + + if (isIgnore) + UGL.AddVertToVertexHelper(vh, ip, ip, ColorUtil.clearColor32, true); + } + } + } + } + + if (lerp) + AddVertToVertexHelperWithLerpColor(vh, tp, zp, color, toColor, isY, min, max, i > 0); + else + { + if (lastDataIsIgnore) + UGL.AddVertToVertexHelper(vh, tp, zp, ColorUtil.clearColor32, true); + + UGL.AddVertToVertexHelper(vh, tp, zp, toColor, color, i > 0); + + if (isIgnore) + UGL.AddVertToVertexHelper(vh, tp, zp, ColorUtil.clearColor32, true); + } + lp = tp; + lastDataIsIgnore = isIgnore; + if (isBreak) + break; + } + } + + private static void DrawSerieLineStackArea(VertexHelper vh, Serie serie, Serie lastStackSerie, bool isY, + float zero, float min, float max, Color32 color, Color32 toColor, VisualMap visualMap) + { + if (lastStackSerie == null) + return; + + var upPoints = serie.context.drawPoints; + var downPoints = lastStackSerie.context.drawPoints; + var upCount = upPoints.Count; + var downCount = downPoints.Count; + + if (upCount <= 0 || downCount <= 0) + return; + + var lerp = !ChartHelper.IsValueEqualsColor(color, toColor); + var ltp = upPoints[0].position; + var lbp = downPoints[0].position; + + if (lerp) + AddVertToVertexHelperWithLerpColor(vh, ltp, lbp, color, toColor, isY, min, max, false); + else + UGL.AddVertToVertexHelper(vh, ltp, lbp, color, false); + + int u = 1, d = 1; + var isBreakTop = false; + var isBreakBottom = false; + + while ((u < upCount || d < downCount)) + { + var tp = u < upCount ? upPoints[u].position : upPoints[upCount - 1].position; + var bp = d < downCount ? downPoints[d].position : downPoints[downCount - 1].position; + + var tnp = (u + 1) < upCount ? upPoints[u + 1].position : upPoints[upCount - 1].position; + var bnp = (d + 1) < downCount ? downPoints[d + 1].position : downPoints[downCount - 1].position; + + if (serie.animation.CheckDetailBreak(tp, isY)) + { + isBreakTop = true; + + var progress = serie.animation.GetCurrDetail(); + var ip = Vector3.zero; + + if (UGLHelper.GetIntersection(ltp, tp, + new Vector3(progress, -10000), + new Vector3(progress, 10000), ref ip)) + tp = ip; + else + tp = new Vector3(progress, tp.y); + } + if (serie.animation.CheckDetailBreak(bp, isY)) + { + isBreakBottom = true; + + var progress = serie.animation.GetCurrDetail(); + var ip = Vector3.zero; + + if (UGLHelper.GetIntersection(lbp, bp, + new Vector3(progress, -10000), + new Vector3(progress, 10000), ref ip)) + bp = ip; + else + bp = new Vector3(progress, bp.y); + } + + if (lerp) + AddVertToVertexHelperWithLerpColor(vh, tp, bp, color, toColor, isY, min, max, true); + else + UGL.AddVertToVertexHelper(vh, tp, bp, color, true); + u++; + d++; + if (bp.x < tp.x && bnp.x < tp.x) + u--; + if (tp.x < bp.x && tnp.x < bp.x) + d--; + + ltp = tp; + lbp = bp; + if (isBreakTop && isBreakBottom) + break; + } + } + + private static void AddVertToVertexHelperWithLerpColor(VertexHelper vh, Vector3 tp, Vector3 bp, + Color32 color, Color32 toColor, bool isY, float min, float max, bool needTriangle) + { + var range = max - min; + var color1 = Color32.Lerp(color, toColor, ((isY ? tp.x : tp.y) - min) / range); + var color2 = Color32.Lerp(color, toColor, ((isY ? bp.x : bp.y) - min) / range); + UGL.AddVertToVertexHelper(vh, tp, bp, color1, color2, needTriangle); + } + + internal static void DrawSerieLine(VertexHelper vh, ThemeStyle theme, Serie serie, VisualMap visualMap, + GridCoord grid, Axis axis, Axis relativedAxis, float lineWidth) + { + if (!serie.lineStyle.show || serie.lineStyle.type == LineStyle.Type.None) + return; + + var datas = serie.context.drawPoints; + + var dataCount = datas.Count; + if (dataCount < 2) + return; + + var ltp = Vector3.zero; + var lbp = Vector3.zero; + var ntp = Vector3.zero; + var nbp = Vector3.zero; + var itp = Vector3.zero; + var ibp = Vector3.zero; + var clp = Vector3.zero; + var crp = Vector3.zero; + + var isBreak = false; + var isY = axis is YAxis; + var isVisualMapGradient = VisualMapHelper.IsNeedLineGradient(visualMap); + var isLineStyleGradient = serie.lineStyle.IsNeedGradient(); + + //var highlight = serie.highlight || serie.context.pointerEnter; + var lineColor = SerieHelper.GetLineColor(serie, null, theme, serie.context.colorIndex, false); + + var lastDataIsIgnore = datas[0].isIgnoreBreak; + var smooth = serie.lineType == LineType.Smooth; + for (int i = 1; i < dataCount; i++) + { + var cdata = datas[i]; + var isIgnore = cdata.isIgnoreBreak; + + var cp = cdata.position; + var lp = datas[i - 1].position; + + var np = i == dataCount - 1 ? cp : datas[i + 1].position; + if (serie.animation.CheckDetailBreak(cp, isY)) + { + isBreak = true; + var ip = Vector3.zero; + var progress = serie.animation.GetCurrDetail(); + if (AnimationStyleHelper.GetAnimationPosition(serie.animation, isY, lp, cp, progress, ref ip)) + cp = np = ip; + } + serie.context.lineEndPostion = cp; + serie.context.lineEndValue = AxisHelper.GetAxisPositionValue(grid, relativedAxis, cp); + lastDataIsIgnore = isIgnore; + var handled = false; + if (!smooth) + { + switch (serie.lineStyle.type) + { + case LineStyle.Type.Dashed: + UGL.DrawDashLine(vh, lp, cp, lineWidth, lineColor, lineColor, 0, 0); + handled = true; + break; + case LineStyle.Type.Dotted: + UGL.DrawDotLine(vh, lp, cp, lineWidth, lineColor, lineColor, 0, 0); + handled = true; + break; + case LineStyle.Type.DashDot: + UGL.DrawDashDotLine(vh, lp, cp, lineWidth, lineColor, 0, 0, 0); + handled = true; + break; + case LineStyle.Type.DashDotDot: + UGL.DrawDashDotDotLine(vh, lp, cp, lineWidth, lineColor, 0, 0, 0); + handled = true; + break; + case LineStyle.Type.None: + handled = true; + break; + } + } + if (handled) + { + if (isBreak) + break; + else + continue; + } + bool bitp = true, bibp = true; + UGLHelper.GetLinePoints(lp, cp, np, lineWidth, + ref ltp, ref lbp, + ref ntp, ref nbp, + ref itp, ref ibp, + ref clp, ref crp, + ref bitp, ref bibp, i); + if (i == 1) + { + AddLineVertToVertexHelper(vh, ltp, lbp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, false, lastDataIsIgnore, isIgnore); + if (dataCount == 2 || isBreak) + { + AddLineVertToVertexHelper(vh, clp, crp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + serie.context.lineEndPostion = cp; + serie.context.lineEndValue = AxisHelper.GetAxisPositionValue(grid, relativedAxis, cp); + break; + } + } + + if (bitp == bibp) + { + if (bitp) + AddLineVertToVertexHelper(vh, itp, ibp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + else + { + AddLineVertToVertexHelper(vh, ltp, clp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + AddLineVertToVertexHelper(vh, ltp, crp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + } + } + else + { + if (bitp) + { + AddLineVertToVertexHelper(vh, itp, clp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + AddLineVertToVertexHelper(vh, itp, crp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + } + else if (bibp) + { + AddLineVertToVertexHelper(vh, clp, ibp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + AddLineVertToVertexHelper(vh, crp, ibp, lineColor, isVisualMapGradient, isLineStyleGradient, + visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); + } + } + + if (isBreak) + break; + } + } + + public static float GetLineWidth(ref bool interacting, Serie serie, float defaultWidth) + { + var lineWidth = 0f; + if (!serie.interact.TryGetValue(ref lineWidth, ref interacting)) + { + lineWidth = serie.lineStyle.GetWidth(defaultWidth); + serie.interact.SetValue(ref interacting, lineWidth); + } + return lineWidth; + } + + private static void AddLineVertToVertexHelper(VertexHelper vh, Vector3 tp, Vector3 bp, + Color32 lineColor, bool visualMapGradient, bool lineStyleGradient, VisualMap visualMap, + LineStyle lineStyle, GridCoord grid, Axis axis, Axis relativedAxis, bool needTriangle, + bool lastIgnore, bool ignore) + { + if (lastIgnore && needTriangle) + UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, true); + + if (visualMapGradient) + { + var color1 = VisualMapHelper.GetLineGradientColor(visualMap, tp, grid, axis, relativedAxis, lineColor); + var color2 = VisualMapHelper.GetLineGradientColor(visualMap, bp, grid, axis, relativedAxis, lineColor); + UGL.AddVertToVertexHelper(vh, tp, bp, color1, color2, needTriangle); + } + else if (lineStyleGradient) + { + var color1 = VisualMapHelper.GetLineStyleGradientColor(lineStyle, tp, grid, axis, lineColor); + var color2 = VisualMapHelper.GetLineStyleGradientColor(lineStyle, bp, grid, axis, lineColor); + UGL.AddVertToVertexHelper(vh, tp, bp, color1, color2, needTriangle); + } + else + { + UGL.AddVertToVertexHelper(vh, tp, bp, lineColor, needTriangle); + } + if (lastIgnore && !needTriangle) + UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, false); + if (ignore && needTriangle) + UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, false); + } + + internal static void UpdateSerieDrawPoints(Serie serie, Settings setting, ThemeStyle theme, VisualMap visualMap, + float lineWidth, bool isY = false) + { + serie.context.drawPoints.Clear(); + var last = Vector3.zero; + switch (serie.lineType) + { + case LineType.Smooth: + UpdateSmoothLineDrawPoints(serie, setting, isY); + break; + case LineType.StepStart: + case LineType.StepMiddle: + case LineType.StepEnd: + UpdateStepLineDrawPoints(serie, setting, theme, isY, lineWidth); + break; + default: + UpdateNormalLineDrawPoints(serie, setting, visualMap); + break; + } + } + + private static void UpdateNormalLineDrawPoints(Serie serie, Settings setting, VisualMap visualMap) + { + var isVisualMapGradient = VisualMapHelper.IsNeedGradient(visualMap); + if (isVisualMapGradient) + { + var dataPoints = serie.context.dataPoints; + if (dataPoints.Count > 1) + { + var sp = dataPoints[0]; + for (int i = 1; i < dataPoints.Count; i++) + { + var ep = dataPoints[i]; + var ignore = serie.context.dataIgnores[i]; + var dir = (ep - sp).normalized; + var dist = Vector3.Distance(sp, ep); + var segment = (int) (dist / setting.lineSegmentDistance); + serie.context.drawPoints.Add(new PointInfo(sp, ignore)); + for (int j = 1; j < segment; j++) + { + var np = sp + dir * dist * j / segment; + serie.context.drawPoints.Add(new PointInfo(np, ignore)); + } + sp = ep; + if (i == dataPoints.Count - 1) + { + serie.context.drawPoints.Add(new PointInfo(ep, ignore)); + } + } + } + else + { + serie.context.drawPoints.Add(new PointInfo(dataPoints[0], serie.context.dataIgnores[0])); + } + } + else + { + for (int i = 0; i < serie.context.dataPoints.Count; i++) + { + serie.context.drawPoints.Add(new PointInfo(serie.context.dataPoints[i], serie.context.dataIgnores[i])); + } + } + } + + private static void UpdateSmoothLineDrawPoints(Serie serie, Settings setting, bool isY) + { + var points = serie.context.dataPoints; + float smoothness = setting.lineSmoothness; + for (int i = 0; i < points.Count - 1; i++) + { + var sp = points[i]; + var ep = points[i + 1]; + var lsp = i > 0 ? points[i - 1] : sp; + var nep = i < points.Count - 2 ? points[i + 2] : ep; + var ignore = serie.context.dataIgnores[i]; + if (isY) + UGLHelper.GetBezierListVertical(ref s_CurvesPosList, sp, ep, smoothness, setting.lineSmoothStyle); + else + UGLHelper.GetBezierList(ref s_CurvesPosList, sp, ep, lsp, nep, smoothness, setting.lineSmoothStyle); + + for (int j = 1; j < s_CurvesPosList.Count; j++) + { + serie.context.drawPoints.Add(new PointInfo(s_CurvesPosList[j], ignore)); + } + } + } + + private static void UpdateStepLineDrawPoints(Serie serie, Settings setting, ThemeStyle theme, bool isY, float lineWidth) + { + var points = serie.context.dataPoints; + var lp = points[0]; + serie.context.drawPoints.Clear(); + serie.context.drawPoints.Add(new PointInfo(lp, serie.context.dataIgnores[0])); + for (int i = 1; i < points.Count; i++) + { + var cp = points[i]; + var ignore = serie.context.dataIgnores[i]; + if ((isY && Mathf.Abs(lp.x - cp.x) <= lineWidth) || + (!isY && Mathf.Abs(lp.y - cp.y) <= lineWidth)) + { + serie.context.drawPoints.Add(new PointInfo(cp, ignore)); + lp = cp; + continue; + } + switch (serie.lineType) + { + case LineType.StepStart: + serie.context.drawPoints.Add(new PointInfo(isY ? + new Vector3(cp.x, lp.y) : + new Vector3(lp.x, cp.y), ignore)); + break; + case LineType.StepMiddle: + serie.context.drawPoints.Add(new PointInfo(isY ? + new Vector3(lp.x, (lp.y + cp.y) / 2) : + new Vector3((lp.x + cp.x) / 2, lp.y), ignore)); + serie.context.drawPoints.Add(new PointInfo(isY ? + new Vector3(cp.x, (lp.y + cp.y) / 2) : + new Vector3((lp.x + cp.x) / 2, cp.y), ignore)); + break; + case LineType.StepEnd: + serie.context.drawPoints.Add(new PointInfo(isY ? + new Vector3(lp.x, cp.y) : + new Vector3(cp.x, lp.y), ignore)); + break; + } + serie.context.drawPoints.Add(new PointInfo(cp, ignore)); + lp = cp; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs.meta b/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs.meta new file mode 100644 index 0000000..ae015c8 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/LineHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7292748fb01ef44709a94d08f4907dd5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line/SimplifiedLine.cs b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLine.cs new file mode 100644 index 0000000..94470d9 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLine.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + [SerieHandler(typeof(SimplifiedLineHandler), true)] + [SerieConvert(typeof(SimplifiedBar), typeof(Line))] + [CoordOptions(typeof(GridCoord))] + [DefaultAnimation(AnimationType.LeftToRight)] + [SerieExtraComponent(typeof(AreaStyle))] + [SerieDataExtraComponent()] + [SerieDataExtraField()] + public class SimplifiedLine : Serie, INeedSerieContainer, ISimplifiedSerie + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<SimplifiedLine>(serieName); + serie.symbol.show = false; + var lastValue = 0d; + for (int i = 0; i < 50; i++) + { + if (i < 20) + lastValue += UnityEngine.Random.Range(0, 5); + else + lastValue += UnityEngine.Random.Range(-3, 5); + chart.AddData(serie.index, lastValue); + } + return serie; + } + + public static SimplifiedLine CovertSerie(Serie serie) + { + var newSerie = serie.Clone<SimplifiedLine>(); + return newSerie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Line/SimplifiedLine.cs.meta b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLine.cs.meta new file mode 100644 index 0000000..486e64b --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5740626e12a84a0ca3a984935f61720 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Line/SimplifiedLineHandler.cs b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLineHandler.cs new file mode 100644 index 0000000..8b2b0e0 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLineHandler.cs @@ -0,0 +1,280 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + /// <summary> + /// For grid coord + /// </summary> + [UnityEngine.Scripting.Preserve] + internal sealed class SimplifiedLineHandler : SerieHandler<SimplifiedLine> + { + private GridCoord m_SerieGrid; + + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + UpdateCoordSerieParams(ref paramList, ref title, dataIndex, showCategory, category, + marker, itemFormatter, numericFormatter); + } + + public override void DrawSerie(VertexHelper vh) + { + DrawLineSerie(vh, serie); + } + + private void UpdateSerieContext() + { + if (m_SerieGrid == null) + return; + + var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; + var lineWidth = 0f; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + var needAnimation1 = false; + lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + serie.interact.SetValue(ref needAnimation1, lineWidth, false); + foreach (var serieData in serie.data) + { + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize); + serieData.context.highlight = false; + serieData.interact.SetValue(ref needAnimation1, symbolSize); + } + if (needAnimation1) + { + if (SeriesHelper.IsStack(chart.series)) + chart.RefreshTopPainter(); + else + chart.RefreshPainter(serie); + } + } + return; + } + m_LastCheckContextFlag = needCheck; + var themeSymbolSize = chart.theme.serie.lineSymbolSize; + var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize; + lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); + + var needInteract = false; + if (m_LegendEnter) + { + serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate); + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + } + else if (serie.context.isTriggerByAxis) + { + serie.context.pointerEnter = true; + serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate); + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + + if (i == serie.context.pointerItemDataIndex) + { + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + else + { + serieData.context.highlight = false; + serieData.interact.SetValue(ref needInteract, symbolSize); + } + } + } + else + { + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + var dist = Vector3.Distance(chart.pointerPos, serieData.context.position); + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + + if (dist <= symbolSelectedSize) + { + serie.context.pointerItemDataIndex = serieData.index; + serie.context.pointerEnter = true; + serie.interact.SetValue(ref needInteract, lineWidth, true); + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + else + { + serieData.context.highlight = false; + serieData.interact.SetValue(ref needInteract, symbolSize); + } + } + } + if (needInteract) + { + if (SeriesHelper.IsStack(chart.series)) + chart.RefreshTopPainter(); + else + chart.RefreshPainter(serie); + } + } + + private void DrawLineSerie(VertexHelper vh, SimplifiedLine serie) + { + if (!serie.show) + return; + if (serie.animation.HasFadeOut()) + return; + + var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); + + Axis axis; + Axis relativedAxis; + + if (isY) + { + axis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + relativedAxis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + } + else + { + axis = chart.GetChartComponent<XAxis>(serie.xAxisIndex); + relativedAxis = chart.GetChartComponent<YAxis>(serie.yAxisIndex); + } + m_SerieGrid = chart.GetChartComponent<GridCoord>(axis.gridIndex); + + if (axis == null) + return; + if (relativedAxis == null) + return; + if (m_SerieGrid == null) + return; + + var dataZoom = chart.GetDataZoomOfAxis(axis); + var showData = serie.GetDataList(dataZoom); + + if (showData.Count <= 0) + return; + + var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width; + var scaleWid = AxisHelper.GetDataWidth(axis, axisLength, showData.Count, dataZoom); + + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > showData.Count ? showData.Count : serie.maxShow) : + showData.Count; + int rate = LineHelper.GetDataAverageRate(serie, m_SerieGrid, maxCount, false); + var totalAverage = serie.sampleAverage > 0 ? + serie.sampleAverage : + DataHelper.DataAverage(ref showData, serie.sampleType, serie.minShow, maxCount, rate); + var dataChanging = false; + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + + var interacting = false; + var lineWidth = LineHelper.GetLineWidth(ref interacting, serie, chart.theme.serie.lineWidth); + + axis.context.scaleWidth = scaleWid; + serie.containerIndex = m_SerieGrid.index; + serie.containterInstanceId = m_SerieGrid.instanceId; + + for (int i = serie.minShow; i < maxCount; i += rate) + { + var serieData = showData[i]; + var isIgnore = serie.IsIgnoreValue(serieData); + if (isIgnore) + { + serieData.context.stackHeight = 0; + serieData.context.position = Vector3.zero; + if (serie.ignoreLineBreak && serie.context.dataIgnores.Count > 0) + { + serie.context.dataIgnores[serie.context.dataIgnores.Count - 1] = true; + } + } + else + { + var np = Vector3.zero; + var xValue = axis.IsCategory() ? i : serieData.GetData(0, axis.inverse); + var relativedValue = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, + maxCount, totalAverage, i, dataChangeDuration, ref dataChanging, relativedAxis); + + serieData.context.stackHeight = GetDataPoint(isY, axis, relativedAxis, m_SerieGrid, xValue, relativedValue, + i, scaleWid, false, ref np); + + serieData.context.position = np; + + serie.context.dataPoints.Add(np); + serie.context.dataIgnores.Add(false); + } + } + + if (dataChanging || interacting) + chart.RefreshPainter(serie); + + if (serie.context.dataPoints.Count <= 0) + return; + + serie.animation.InitProgress(serie.context.dataPoints, isY); + + LineHelper.UpdateSerieDrawPoints(serie, chart.settings, chart.theme, null, lineWidth, isY); + LineHelper.DrawSerieLineArea(vh, serie, null, chart.theme, null, isY, axis, relativedAxis, m_SerieGrid); + LineHelper.DrawSerieLine(vh, chart.theme, serie, null, m_SerieGrid, axis, relativedAxis, lineWidth); + + serie.context.vertCount = vh.currentVertCount; + + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(); + chart.RefreshPainter(serie); + } + } + + private float GetDataPoint(bool isY, Axis axis, Axis relativedAxis, GridCoord grid, double xValue, + double yValue, int i, float scaleWid, bool isStack, ref Vector3 np) + { + float xPos, yPos; + var gridXY = isY ? grid.context.x : grid.context.y; + + if (isY) + { + var valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleWid, yValue); + valueHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, valueHig); + + xPos = gridXY + valueHig; + yPos = AxisHelper.GetAxisValuePosition(grid, axis, scaleWid, xValue); + } + else + { + + var valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleWid, yValue); + valueHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, valueHig); + + yPos = gridXY + valueHig; + xPos = AxisHelper.GetAxisValuePosition(grid, axis, scaleWid, xValue); + } + np = new Vector3(xPos, yPos); + return yPos; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Line/SimplifiedLineHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLineHandler.cs.meta new file mode 100644 index 0000000..6a41fe3 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Line/SimplifiedLineHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c4714bd08de34548ac7be3ec6523ee1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Parallel.meta b/Assets/XCharts/Runtime/Serie/Parallel.meta new file mode 100644 index 0000000..60bd75e --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Parallel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2ba7099a74f54617b446aeaf3d95672 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Parallel/Parallel.cs b/Assets/XCharts/Runtime/Serie/Parallel/Parallel.cs new file mode 100644 index 0000000..9d6b752 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Parallel/Parallel.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(ParallelHandler), true)] + [RequireChartComponent(typeof(ParallelCoord))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraField()] + public class Parallel : Serie, INeedSerieContainer + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Parallel>(serieName); + serie.lineStyle.width = 0.8f; + serie.lineStyle.opacity = 0.6f; + + for (int i = 0; i < 100; i++) + { + var data = new List<double>() + { + Random.Range(0f, 50f), + Random.Range(0f, 100f), + Random.Range(0f, 1000f), + Random.Range(0, 5), + }; + serie.AddData(data, "data" + i); + } + chart.RefreshChart(); + return serie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Parallel/Parallel.cs.meta b/Assets/XCharts/Runtime/Serie/Parallel/Parallel.cs.meta new file mode 100644 index 0000000..3663842 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Parallel/Parallel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 283df79138f274a6ba975ff8f30c6d30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs b/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs new file mode 100644 index 0000000..38a6453 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs @@ -0,0 +1,150 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class ParallelHandler : SerieHandler<Parallel> + { + private List<Vector3> m_Points = new List<Vector3>(); + + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + public override void DrawSerie(VertexHelper vh) + { + DrawParallelSerie(vh, serie); + } + + private void UpdateSerieContext() + { } + + private void DrawParallelSerie(VertexHelper vh, Parallel serie) + { + if (!serie.show) return; + if (serie.animation.HasFadeOut()) return; + + var parallel = chart.GetChartComponent<ParallelCoord>(serie.parallelIndex); + if (parallel == null) + return; + + var axisCount = parallel.context.parallelAxes.Count; + if (axisCount <= 0) + return; + + var animationIndex = serie.animation.GetCurrIndex(); + var isHorizonal = parallel.orient == Orient.Horizonal; + var lineColor = SerieHelper.GetLineColor(serie, null, chart.theme, serie.context.colorIndex, false); + var lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); + + float currDetailProgress = !isHorizonal ? + parallel.context.x : + parallel.context.y; + + float totalDetailProgress = !isHorizonal ? + parallel.context.x + parallel.context.width : + parallel.context.y + parallel.context.height; + + serie.animation.InitProgress(currDetailProgress, totalDetailProgress); + + serie.context.dataPoints.Clear(); + serie.containerIndex = parallel.index; + serie.containterInstanceId = parallel.instanceId; + + var currProgress = serie.animation.GetCurrDetail(); + var isSmooth = serie.lineType == LineType.Smooth; + foreach (var serieData in serie.data) + { + m_Points.Clear(); + var count = Mathf.Min(axisCount, serieData.data.Count); + var lp = Vector3.zero; + for (int i = 0; i < count; i++) + { + if (animationIndex >= 0 && i > animationIndex) continue; + var pos = GetPos(parallel, i, serieData.data[i], isHorizonal); + if (!isHorizonal) + { + if (isSmooth) + { + m_Points.Add(pos); + } + else if (pos.x <= currProgress) + { + m_Points.Add(pos); + } + else + { + var currProgressStart = new Vector3(currProgress, parallel.context.y - 50); + var currProgressEnd = new Vector3(currProgress, parallel.context.y + parallel.context.height + 50); + var intersectionPos = Vector3.zero; + + if (UGLHelper.GetIntersection(lp, pos, currProgressStart, currProgressEnd, ref intersectionPos)) + m_Points.Add(intersectionPos); + else + m_Points.Add(pos); + break; + } + } + else + { + if (isSmooth) + { + m_Points.Add(pos); + } + else if (pos.y <= currProgress) + { + m_Points.Add(pos); + } + else + { + var currProgressStart = new Vector3(parallel.context.x - 50, currProgress); + var currProgressEnd = new Vector3(parallel.context.x + parallel.context.width + 50, currProgress); + var intersectionPos = Vector3.zero; + + if (UGLHelper.GetIntersection(lp, pos, currProgressStart, currProgressEnd, ref intersectionPos)) + m_Points.Add(intersectionPos); + else + m_Points.Add(pos); + break; + } + } + lp = pos; + } + if (isSmooth) + UGL.DrawCurves(vh, m_Points, lineWidth, lineColor, chart.settings.lineSmoothness, currProgress, isHorizonal); + else + UGL.DrawLine(vh, m_Points, lineWidth, lineColor, isSmooth); + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(totalDetailProgress - currDetailProgress); + chart.RefreshPainter(serie); + } + } + + private static ParallelAxis GetAxis(ParallelCoord parallel, int index) + { + if (index >= 0 && index < parallel.context.parallelAxes.Count) + return parallel.context.parallelAxes[index]; + else + return null; + } + + private static Vector3 GetPos(ParallelCoord parallel, int axisIndex, double dataValue, bool isHorizonal) + { + var axis = GetAxis(parallel, axisIndex); + if (axis == null) + return Vector3.zero; + + var sValueDist = axis.GetDistance(dataValue, axis.context.width); + return new Vector3( + isHorizonal ? axis.context.x + sValueDist : axis.context.x, + isHorizonal ? axis.context.y : axis.context.y + sValueDist); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs.meta new file mode 100644 index 0000000..e190cca --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Parallel/ParallelHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 482b461d91f8c4013bf291153d5810e6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Pie.meta b/Assets/XCharts/Runtime/Serie/Pie.meta new file mode 100644 index 0000000..cd666fa --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Pie.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5dfd0cb375a24f659bf56e113aa6fc8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Pie/Pie.cs b/Assets/XCharts/Runtime/Serie/Pie/Pie.cs new file mode 100644 index 0000000..3927879 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Pie/Pie.cs @@ -0,0 +1,30 @@ +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieConvert(typeof(Line), typeof(Bar))] + [SerieHandler(typeof(PieHandler), true)] + [DefaultAnimation(AnimationType.Clockwise)] + [SerieExtraComponent(typeof(LabelStyle), typeof(LabelLine), typeof(TitleStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle), typeof(EmphasisLabelLine))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(LabelLine), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle), typeof(EmphasisLabelLine))] + [SerieDataExtraField("m_Ignore", "m_Selected", "m_Radius")] + public class Pie : Serie + { + public override bool useDataNameForColor { get { return true; } } + public override bool titleJustForSerie { get { return true; } } + + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Pie>(serieName); + chart.AddData(serie.index, 70, "pie1"); + chart.AddData(serie.index, 20, "pie2"); + chart.AddData(serie.index, 10, "pie3"); + return serie; + } + + public static Pie CovertSerie(Serie serie) + { + var newSerie = SerieHelper.CloneSerie<Pie>(serie); + return newSerie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Pie/Pie.cs.meta b/Assets/XCharts/Runtime/Serie/Pie/Pie.cs.meta new file mode 100644 index 0000000..41dba77 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Pie/Pie.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 53f0d225949a3450e9e90687759f1714 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs b/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs new file mode 100644 index 0000000..d8ee94a --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs @@ -0,0 +1,564 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class PieHandler : SerieHandler<Pie> + { + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + public override void DrawSerie(VertexHelper vh) + { + UpdateRuntimeData(serie); + DrawPieLabelLine(vh, serie); + DrawPie(vh, serie); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + UpdateItemSerieParams(ref paramList, ref title, dataIndex, category, + marker, itemFormatter, numericFormatter); + } + + public override Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label) + { + var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData); + return SerieLabelHelper.GetRealLabelPosition(serie, serieData, label, labelLine); + } + + public override Vector3 GetSerieDataTitlePosition(SerieData serieData, TitleStyle titleStyle) + { + return serie.context.center; + } + + public override void OnLegendButtonClick(int index, string legendName, bool show) + { + if (!serie.IsLegendName(legendName)) + return; + LegendHelper.CheckDataShow(serie, legendName, show); + chart.UpdateLegendColor(legendName, show); + chart.RefreshPainter(serie); + } + + public override void OnLegendButtonEnter(int index, string legendName) + { + if (!serie.IsLegendName(legendName)) + return; + LegendHelper.CheckDataHighlighted(serie, legendName, true); + chart.RefreshPainter(serie); + } + + public override void OnLegendButtonExit(int index, string legendName) + { + if (!serie.IsLegendName(legendName)) + return; + LegendHelper.CheckDataHighlighted(serie, legendName, false); + chart.RefreshPainter(serie); + } + + public override void OnPointerDown(PointerEventData eventData) + { + if (!chart.HasSerie<Pie>()) return; + if (chart.pointerPos == Vector2.zero) return; + var refresh = false; + for (int i = 0; i < chart.series.Count; i++) + { + var serie = chart.GetSerie(i); + if (!(serie is Pie)) continue; + var index = GetPiePosIndex(serie, chart.pointerPos); + if (index >= 0) + { + refresh = true; + for (int j = 0; j < serie.data.Count; j++) + { + if (j == index) serie.data[j].context.selected = !serie.data[j].context.selected; + else serie.data[j].context.selected = false; + } + if (chart.onPointerClickPie != null) + { + chart.onPointerClickPie(eventData, i, index); + } + } + } + if (refresh) chart.RefreshChart(); + } + + private void UpdateSerieContext() + { + var needCheck = m_LegendEnter || (chart.isPointerInChart && PointerIsInPieSerie(serie, chart.pointerPos)); + var needInteract = false; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false); + var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, false); + serieData.context.highlight = false; + serieData.interact.SetValueAndColor(ref needInteract, serieData.context.outsideRadius, color, toColor); + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + return; + } + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + var dataIndex = GetPiePosIndex(serie, chart.pointerPos); + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + if (dataIndex == i || (m_LegendEnter && m_LegendEnterIndex == i)) + { + serie.context.pointerItemDataIndex = i; + serieData.context.highlight = true; + + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, true); + var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, true); + var value = serieData.context.outsideRadius + chart.theme.serie.pieTooltipExtraRadius; + serieData.interact.SetValueAndColor(ref needInteract, value, color, toColor); + } + else + { + serieData.context.highlight = false; + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false); + var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, false); + serieData.interact.SetValueAndColor(ref needInteract, serieData.context.outsideRadius, color, toColor); + } + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + + private void UpdateRuntimeData(Serie serie) + { + var data = serie.data; + serie.context.dataMax = serie.yMax; + serie.context.startAngle = GetStartAngle(serie); + var runtimePieDataTotal = serie.yTotal; + + SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight); + float startDegree = serie.context.startAngle; + float totalDegree = 0; + float zeroReplaceValue = 0; + int showdataCount = 0; + foreach (var sd in serie.data) + { + if (sd.show && serie.pieRoseType == RoseType.Area) showdataCount++; + sd.context.canShowLabel = false; + } + float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + bool isAllZeroValue = SerieHelper.IsAllZeroValue(serie, 1); + var dataTotalFilterMinAngle = runtimePieDataTotal; + if (isAllZeroValue) + { + totalDegree = 360; + zeroReplaceValue = totalDegree / data.Count; + serie.context.dataMax = zeroReplaceValue; + runtimePieDataTotal = 360; + dataTotalFilterMinAngle = 360; + } + else + { + dataTotalFilterMinAngle = GetTotalAngle(serie, runtimePieDataTotal, ref totalDegree); + } + for (int n = 0; n < data.Count; n++) + { + var serieData = data[n]; + serieData.index = n; + var value = isAllZeroValue ? zeroReplaceValue : serieData.GetCurrData(1, dataChangeDuration); + serieData.context.startAngle = startDegree; + serieData.context.toAngle = startDegree; + serieData.context.halfAngle = startDegree; + serieData.context.currentAngle = startDegree; + if (!serieData.show) + { + continue; + } + float degree = serie.pieRoseType == RoseType.Area ? + (totalDegree / showdataCount) : + (float) (totalDegree * value / dataTotalFilterMinAngle); + if (serie.minAngle > 0 && degree < serie.minAngle) degree = serie.minAngle; + serieData.context.toAngle = startDegree + degree; + if (serieData.radius > 0) + serieData.context.outsideRadius = ChartHelper.GetActualValue(serieData.radius, Mathf.Min(chart.chartWidth, chart.chartHeight)); + else + serieData.context.outsideRadius = serie.pieRoseType > 0 ? + serie.context.insideRadius + (float) ((serie.context.outsideRadius - serie.context.insideRadius) * value / serie.context.dataMax) : + serie.context.outsideRadius; + if (serieData.context.highlight) + { + serieData.context.outsideRadius += chart.theme.serie.pieTooltipExtraRadius; + } + var offset = 0f; + if (serie.pieClickOffset && serieData.selected) + { + offset += chart.theme.serie.pieSelectedOffset; + } + if (serie.animation.CheckDetailBreak(serieData.context.toAngle)) + { + serieData.context.currentAngle = serie.animation.GetCurrDetail(); + } + else + { + serieData.context.currentAngle = serieData.context.toAngle; + } + var halfDegree = (serieData.context.toAngle - startDegree) / 2; + serieData.context.halfAngle = startDegree + halfDegree; + serieData.context.offsetCenter = serie.context.center; + serieData.context.insideRadius = serie.context.insideRadius; + if (offset > 0) + { + var currRad = serieData.context.halfAngle * Mathf.Deg2Rad; + var currSin = Mathf.Sin(currRad); + var currCos = Mathf.Cos(currRad); + serieData.context.offsetRadius = 0; + serieData.context.insideRadius -= serieData.context.offsetRadius; + serieData.context.outsideRadius -= serieData.context.offsetRadius; + if (serie.pieClickOffset && serieData.selected) + { + serieData.context.offsetRadius += chart.theme.serie.pieSelectedOffset; + if (serieData.context.insideRadius > 0) + { + serieData.context.insideRadius += chart.theme.serie.pieSelectedOffset; + } + serieData.context.outsideRadius += chart.theme.serie.pieSelectedOffset; + } + serieData.context.offsetCenter = new Vector3( + serie.context.center.x + serieData.context.offsetRadius * currSin, + serie.context.center.y + serieData.context.offsetRadius * currCos); + } + serieData.context.canShowLabel = serieData.context.currentAngle >= serieData.context.halfAngle; + startDegree = serieData.context.toAngle; + SerieLabelHelper.UpdatePieLabelPosition(serie, serieData); + } + SerieLabelHelper.AvoidLabelOverlap(serie, chart.theme.common); + } + + private double GetTotalAngle(Serie serie, double dataTotal, ref float totalAngle) + { + totalAngle = serie.context.startAngle + 360f; + if (serie.minAngle > 0) + { + var rate = serie.minAngle / 360; + var minAngleValue = dataTotal * rate; + foreach (var serieData in serie.data) + { + var value = serieData.GetData(1); + if (value < minAngleValue) + { + totalAngle -= serie.minAngle; + dataTotal -= value; + } + } + return dataTotal; + } + else + { + return dataTotal; + } + } + + private void DrawPieCenter(VertexHelper vh, Serie serie, ItemStyle itemStyle, float insideRadius) + { + if (!ChartHelper.IsClearColor(itemStyle.centerColor)) + { + var radius = insideRadius - itemStyle.centerGap; + UGL.DrawCricle(vh, serie.context.center, radius, itemStyle.centerColor, chart.settings.cicleSmoothness); + } + } + + private void DrawPie(VertexHelper vh, Serie serie) + { + if (!serie.show || serie.animation.HasFadeOut()) + { + return; + } + var dataChanging = false; + var interacting = false; + var color = ColorUtil.clearColor32; + var toColor = ColorUtil.clearColor32; + var data = serie.data; + serie.animation.InitProgress(0, 360); + for (int n = 0; n < data.Count; n++) + { + var serieData = data[n]; + if (!serieData.show) + { + continue; + } + if (serieData.IsDataChanged()) + dataChanging = true; + + var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.context.highlight); + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); + var outsideRadius = 0f; + + var borderWidth = itemStyle.borderWidth; + var borderColor = itemStyle.borderColor; + + var progress = AnimationStyleHelper.CheckDataAnimation(chart, serie, n, 1); + var insideRadius = serieData.context.insideRadius * progress; + + //if (!serieData.interact.TryGetValueAndColor(ref outsideRadius, ref color, ref toColor, ref interacting)) + { + color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, serieData.context.highlight); + toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, serieData.context.highlight); + outsideRadius = serieData.context.outsideRadius * progress; + serieData.interact.SetValueAndColor(ref interacting, outsideRadius, color, toColor); + } + + if (serie.pieClickOffset && serieData.selected) + { + var drawEndDegree = serieData.context.currentAngle; + var needRoundCap = serie.roundCap && insideRadius > 0; + UGL.DrawDoughnut(vh, serieData.context.offsetCenter, insideRadius, + outsideRadius, color, toColor, Color.clear, serieData.context.startAngle, + drawEndDegree, borderWidth, borderColor, serie.gap / 2, chart.settings.cicleSmoothness, + needRoundCap, true); + } + else + { + var drawEndDegree = serieData.context.currentAngle; + var needRoundCap = serie.roundCap && insideRadius > 0; + UGL.DrawDoughnut(vh, serie.context.center, insideRadius, + outsideRadius, color, toColor, Color.clear, serieData.context.startAngle, + drawEndDegree, borderWidth, borderColor, serie.gap / 2, chart.settings.cicleSmoothness, + needRoundCap, true); + DrawPieCenter(vh, serie, itemStyle, insideRadius); + } + + if (serie.animation.CheckDetailBreak(serieData.context.toAngle)) + break; + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(); + serie.animation.CheckSymbol(serie.symbol.GetSize(null, chart.theme.serie.lineSymbolSize)); + chart.RefreshPainter(serie); + } + if (dataChanging) + { + chart.RefreshPainter(serie); + } + } + + private bool IsAnyPieClickOffset() + { + foreach (var serie in chart.series) + { + if (serie is Pie && serie.pieClickOffset) + return true; + } + return false; + } + + private bool IsAnyPieDataHighlight() + { + foreach (var serie in chart.series) + { + if (serie is Pie) + { + foreach (var serieData in serie.data) + { + if (serieData.context.highlight) + return true; + } + } + } + return false; + } + + private void DrawPieLabelLine(VertexHelper vh, Serie serie) + { + foreach (var serieData in serie.data) + { + var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); + if (SerieLabelHelper.CanShowLabel(serie, serieData, serieLabel, 1)) + { + int colorIndex = chart.m_LegendRealShowName.IndexOf(serieData.name); + Color color = chart.theme.GetColor(colorIndex); + DrawPieLabelLine(vh, serie, serieData, color); + } + } + } + + private void DrawPieLabelLine(VertexHelper vh, Serie serie, SerieData serieData, Color color) + { + var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); + var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData); + if (serieLabel != null && serieLabel.show && + labelLine != null && labelLine.show && + (serieLabel.IsDefaultPosition(LabelStyle.Position.Outside))) + { + var insideRadius = serieData.context.insideRadius; + var outSideRadius = serieData.context.outsideRadius; + var center = serie.context.center; + var currAngle = serieData.context.halfAngle; + + if (!ChartHelper.IsClearColor(labelLine.lineColor)) + color = labelLine.lineColor; + else if (labelLine.lineType == LabelLine.LineType.HorizontalLine) + color *= color; + + float currSin = Mathf.Sin(currAngle * Mathf.Deg2Rad); + float currCos = Mathf.Cos(currAngle * Mathf.Deg2Rad); + var radius1 = labelLine.lineType == LabelLine.LineType.HorizontalLine ? + serie.context.outsideRadius : outSideRadius; + var radius2 = serie.context.outsideRadius + labelLine.lineLength1; + var radius3 = insideRadius + (outSideRadius - insideRadius) / 2; + if (radius1 < serie.context.insideRadius) radius1 = serie.context.insideRadius; + radius1 -= 0.1f; + var pos0 = new Vector3(center.x + radius3 * currSin, center.y + radius3 * currCos); + var pos1 = new Vector3(center.x + radius1 * currSin, center.y + radius1 * currCos); + var pos2 = serieData.context.labelPosition; + if (pos2.x == 0) + { + pos2 = new Vector3(center.x + radius2 * currSin, center.y + radius2 * currCos); + } + Vector3 pos4, pos6; + var horizontalLineCircleRadius = labelLine.lineWidth * 4f; + var lineCircleDiff = horizontalLineCircleRadius - 0.3f; + var startAngle = serie.context.startAngle; + if (currAngle < 90) + { + var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos * radius3, 2)) - currSin * radius3; + r4 += labelLine.lineLength1 - lineCircleDiff; + pos6 = pos0 + Vector3.right * lineCircleDiff; + pos4 = pos6 + Vector3.right * r4; + } + else if (currAngle < 180) + { + var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos * radius3, 2)) - currSin * radius3; + r4 += labelLine.lineLength1 - lineCircleDiff; + pos6 = pos0 + Vector3.right * lineCircleDiff; + pos4 = pos6 + Vector3.right * r4; + } + else if (currAngle < 270) + { + var currSin1 = Mathf.Sin((360 - currAngle) * Mathf.Deg2Rad); + var currCos1 = Mathf.Cos((360 - currAngle) * Mathf.Deg2Rad); + var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos1 * radius3, 2)) - currSin1 * radius3; + r4 += labelLine.lineLength1 - lineCircleDiff; + pos6 = pos0 + Vector3.left * lineCircleDiff; + pos4 = pos6 + Vector3.left * r4; + } + else + { + var currSin1 = Mathf.Sin((360 - currAngle) * Mathf.Deg2Rad); + var currCos1 = Mathf.Cos((360 - currAngle) * Mathf.Deg2Rad); + var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos1 * radius3, 2)) - currSin1 * radius3; + r4 += labelLine.lineLength1 - lineCircleDiff; + pos6 = pos0 + Vector3.left * lineCircleDiff; + pos4 = pos6 + Vector3.left * r4; + } + var pos5X = (currAngle - startAngle) % 360 > 180 ? + pos2.x - labelLine.lineLength2 : pos2.x + labelLine.lineLength2; + var pos5 = new Vector3(pos5X, pos2.y); + switch (labelLine.lineType) + { + case LabelLine.LineType.BrokenLine: + UGL.DrawLine(vh, pos1, pos2, pos5, labelLine.lineWidth, color); + break; + case LabelLine.LineType.Curves: + UGL.DrawCurves(vh, pos1, pos5, pos1, pos2, labelLine.lineWidth, color, + chart.settings.lineSmoothness); + break; + case LabelLine.LineType.HorizontalLine: + UGL.DrawCricle(vh, pos0, horizontalLineCircleRadius, color); + UGL.DrawLine(vh, pos6, pos4, labelLine.lineWidth, color); + break; + } + } + } + + private int GetPiePosIndex(Serie serie, Vector2 local) + { + if (!(serie is Pie)) + return -1; + + var dist = Vector2.Distance(local, serie.context.center); + var maxRadius = serie.context.outsideRadius + 3 * chart.theme.serie.pieSelectedOffset; + if (dist < serie.context.insideRadius || dist > maxRadius) + return -1; + + var dir = local - new Vector2(serie.context.center.x, serie.context.center.y); + var angle = ChartHelper.GetAngle360(Vector2.up, dir); + for (int i = 0; i < serie.data.Count; i++) + { + var serieData = serie.data[i]; + if (angle >= serieData.context.startAngle && angle <= serieData.context.toAngle) + { + var ndist = serieData.selected ? + Vector2.Distance(local, serieData.context.offsetCenter) : + dist; + if (ndist >= serieData.context.insideRadius && ndist <= serieData.context.outsideRadius) + { + return i; + } + } + } + return -1; + } + + private bool PointerIsInPieSerie(Serie serie, Vector2 local) + { + if (!(serie is Pie)) + return false; + + var dist = Vector2.Distance(local, serie.context.center); + if (dist >= serie.context.insideRadius && dist <= serie.context.outsideRadius) + return true; + + return false; + } + + private float GetStartAngle(Serie serie) + { + return serie.clockwise ? (serie.startAngle + 360) % 360 : 360 - serie.startAngle; + } + + private float GetToAngle(Serie serie, float angle) + { + var toAngle = angle + serie.startAngle; + if (!serie.clockwise) + { + toAngle = 360 - angle - serie.startAngle; + } + if (!serie.animation.IsFinish()) + { + var currAngle = serie.animation.GetCurrDetail(); + if (serie.clockwise) + { + toAngle = toAngle > currAngle ? currAngle : toAngle; + } + else + { + toAngle = toAngle < 360 - currAngle ? 360 - currAngle : toAngle; + } + } + return toAngle; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs.meta new file mode 100644 index 0000000..3c1fddb --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Pie/PieHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13b8c981e5910447fbe769d539b77f96 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Radar.meta b/Assets/XCharts/Runtime/Serie/Radar.meta new file mode 100644 index 0000000..15c0c0c --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Radar.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 375cebcd4f8c54025ab608f35b1fa8c6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Radar/Radar.cs b/Assets/XCharts/Runtime/Serie/Radar/Radar.cs new file mode 100644 index 0000000..8af45a9 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Radar/Radar.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(RadarHandler), true)] + [RequireChartComponent(typeof(RadarCoord))] + [SerieExtraComponent(typeof(LabelStyle), typeof(AreaStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(AreaStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraField()] + public class Radar : Serie, INeedSerieContainer + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + public override bool useDataNameForColor { get { return true; } } + public override bool multiDimensionLabel { get { return radarType == RadarType.Multiple; } } + + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + chart.AddChartComponentWhenNoExist<RadarCoord>(); + var serie = chart.AddSerie<Radar>(serieName); + serie.symbol.show = true; + serie.symbol.type = SymbolType.Circle; + serie.showDataName = true; + List<double> data = new List<double>(); + for (int i = 0; i < 5; i++) + { + data.Add(Random.Range(20, 90)); + } + chart.AddData(serie.index, data, "legendName"); + return serie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Radar/Radar.cs.meta b/Assets/XCharts/Runtime/Serie/Radar/Radar.cs.meta new file mode 100644 index 0000000..1e2b8e5 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Radar/Radar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bda9968e18724e389ff1cbde57baeee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs b/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs new file mode 100644 index 0000000..374455d --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs @@ -0,0 +1,504 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class RadarHandler : SerieHandler<Radar> + { + private RadarCoord m_RadarCoord; + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + public override void DrawSerie(VertexHelper vh) + { + if (!serie.show) return; + switch (serie.radarType) + { + case RadarType.Multiple: + DrawMutipleRadar(vh); + break; + case RadarType.Single: + DrawSingleRadar(vh); + break; + } + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + if (!serie.context.pointerEnter) + return; + dataIndex = serie.context.pointerItemDataIndex; + if (dataIndex < 0) + return; + + if (serie.radarType == RadarType.Single) + { + UpdateItemSerieParams(ref paramList, ref title, dataIndex, category, + marker, itemFormatter, numericFormatter); + return; + } + + var radar = chart.GetChartComponent<RadarCoord>(serie.radarIndex); + if (radar == null) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, dataIndex, false);; + title = serieData.name; + for (int i = 0; i < serieData.data.Count; i++) + { + var indicator = radar.GetIndicator(i); + if (indicator == null) continue; + + var param = new SerieParams(); + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.dimension = i; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = serieData.GetData(i); + param.total = indicator.max; + param.color = color; + param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); + param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(indicator.name); + param.columns.Add(ChartCached.NumberToStr(serieData.GetData(i), param.numericFormatter)); + + paramList.Add(param); + } + } + + private void UpdateSerieContext() + { + var needCheck = m_LegendEnter || + (chart.isPointerInChart && (m_RadarCoord != null && m_RadarCoord.IsPointerEnter())); + var needInteract = false; + var needHideAll = false; + if (!needCheck) + { + if (m_LastCheckContextFlag == needCheck) + return; + needHideAll = true; + } + m_LastCheckContextFlag = needCheck; + serie.context.pointerEnter = false; + serie.context.pointerItemDataIndex = -1; + var areaStyle = serie.areaStyle; + switch (serie.radarType) + { + case RadarType.Multiple: + for (int i = 0; i < serie.data.Count; i++) + { + var serieData = serie.data[i]; + serieData.index = i; + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize); + if (needHideAll || m_LegendEnter) + { + serieData.context.highlight = needHideAll ? false : true; + serieData.interact.SetValue(ref needInteract, symbolSize, serieData.context.highlight); + } + else + { + serieData.context.highlight = false; + foreach (var pos in serieData.context.dataPoints) + { + if (Vector3.Distance(chart.pointerPos, pos) < symbolSize * 2) + { + serie.context.pointerEnter = true; + serie.context.pointerItemDataIndex = i; + serieData.context.highlight = true; + break; + } + } + if (!serieData.context.highlight && areaStyle != null) + { + var center = m_RadarCoord.context.center; + var dataPoints = serieData.context.dataPoints; + for (int n = 0; n < dataPoints.Count; n++) + { + var p1 = dataPoints[n]; + var p2 = n >= dataPoints.Count - 1 ? dataPoints[0] : dataPoints[n + 1]; + if (UGLHelper.IsPointInTriangle(p1, center, p2, chart.pointerPos)) + { + serie.context.pointerEnter = true; + serie.context.pointerItemDataIndex = i; + serieData.context.highlight = true; + break; + } + } + } + serieData.interact.SetValue(ref needInteract, symbolSize, serieData.context.highlight); + } + } + break; + case RadarType.Single: + for (int i = 0; i < serie.data.Count; i++) + { + var serieData = serie.data[i]; + serieData.index = i; + if (Vector3.Distance(chart.pointerPos, serieData.context.position) < serie.symbol.size * 2) + { + serie.context.pointerEnter = true; + serie.context.pointerItemDataIndex = i; + return; + } + } + if (!serie.context.pointerEnter && areaStyle != null) + { + var center = m_RadarCoord.context.center; + var dataPoints = serie.data; + for (int n = 0; n < dataPoints.Count; n++) + { + var p1 = dataPoints[n]; + var p2 = n >= dataPoints.Count - 1 ? dataPoints[0] : dataPoints[n + 1]; + if (UGLHelper.IsPointInTriangle(p1.context.position, center, p2.context.position, chart.pointerPos)) + { + serie.context.pointerEnter = true; + serie.context.pointerItemDataIndex = n; + p1.context.highlight = true; + break; + } + } + } + break; + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + + private void DrawMutipleRadar(VertexHelper vh) + { + if (!serie.show) return; + m_RadarCoord = chart.GetChartComponent<RadarCoord>(serie.radarIndex); + if (m_RadarCoord == null) return; + + serie.containerIndex = m_RadarCoord.index; + serie.containterInstanceId = m_RadarCoord.instanceId; + + var startPoint = Vector3.zero; + var toPoint = Vector3.zero; + var firstPoint = Vector3.zero; + var indicatorNum = m_RadarCoord.indicatorList.Count; + var angle = 2 * Mathf.PI / indicatorNum; + var centerPos = m_RadarCoord.context.center; + serie.animation.InitProgress(0, 1); + if (!serie.show || serie.animation.HasFadeOut()) + { + return; + } + var rate = serie.animation.GetCurrRate(); + var dataChanging = false; + var interacting = false; + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + SerieHelper.GetAllMinMaxData(serie, m_RadarCoord.ceilRate); + for (int j = 0; j < serie.data.Count; j++) + { + var serieData = serie.data[j]; + string dataName = serieData.name; + if (!serieData.show) + { + continue; + } + var lineStyle = SerieHelper.GetLineStyle(serie, serieData); + var areaStyle = SerieHelper.GetAreaStyle(serie, serieData); + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var isHighlight = serieData.context.highlight; + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); + var areaColor = SerieHelper.GetAreaColor(serie, serieData, chart.theme, colorIndex, isHighlight); + var areaToColor = SerieHelper.GetAreaToColor(serie, serieData, chart.theme, colorIndex, isHighlight); + var lineColor = SerieHelper.GetLineColor(serie, serieData, chart.theme, colorIndex, isHighlight); + var lineWidth = lineStyle.GetWidth(chart.theme.serie.lineWidth); + int dataCount = m_RadarCoord.indicatorList.Count; + serieData.context.dataPoints.Clear(); + for (int n = 0; n < dataCount; n++) + { + if (n >= serieData.data.Count) break; + var min = m_RadarCoord.GetIndicatorMin(n); + var max = m_RadarCoord.GetIndicatorMax(n); + var value = serieData.GetCurrData(n, dataChangeDuration); + if (serieData.IsDataChanged()) dataChanging = true; + if (max == 0) + { + if (serie.data.Count > 1) + { + SerieHelper.GetMinMaxData(serie, n, out min, out max); + min = ChartHelper.GetMinDivisibleValue(min, 0); + max = ChartHelper.GetMaxDivisibleValue(max, 0); + if (min > 0) min = 0; + } + else + { + max = serie.context.dataMax; + } + } + var radius = (float) (m_RadarCoord.context.dataRadius * (value - min) / (max - min)); + var currAngle = (n + (m_RadarCoord.positionType == RadarCoord.PositionType.Between ? 0.5f : 0)) * angle; + radius *= rate; + if (n == 0) + { + startPoint = new Vector3(centerPos.x + radius * Mathf.Sin(currAngle), + centerPos.y + radius * Mathf.Cos(currAngle)); + firstPoint = startPoint; + } + else + { + toPoint = new Vector3(centerPos.x + radius * Mathf.Sin(currAngle), + centerPos.y + radius * Mathf.Cos(currAngle)); + if (areaStyle != null && areaStyle.show) + { + UGL.DrawTriangle(vh, startPoint, toPoint, centerPos, areaColor, areaColor, areaToColor); + } + if (lineStyle.show) + { + ChartDrawer.DrawLineStyle(vh, lineStyle.type, lineWidth, startPoint, toPoint, lineColor); + } + startPoint = toPoint; + } + serieData.context.dataPoints.Add(startPoint); + } + if (areaStyle != null && areaStyle.show) + { + UGL.DrawTriangle(vh, startPoint, firstPoint, centerPos, areaColor, areaColor, areaToColor); + } + if (lineStyle.show) + { + ChartDrawer.DrawLineStyle(vh, lineStyle.type, lineWidth, startPoint, firstPoint, lineColor); + } + if (symbol.show && symbol.type != SymbolType.None) + { + for (int m = 0; m < serieData.context.dataPoints.Count; m++) + { + var point = serieData.context.dataPoints[m]; + var symbolSize = isHighlight ? + symbol.GetSelectedSize(null, chart.theme.serie.lineSymbolSelectedSize) : + symbol.GetSize(null, chart.theme.serie.lineSymbolSize); + if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting)) + { + symbolSize = isHighlight ? + symbol.GetSelectedSize(serieData.data, symbolSize) : + symbol.GetSize(serieData.data, symbolSize); + serieData.interact.SetValue(ref interacting, symbolSize); + symbolSize = serie.animation.GetSysmbolSize(symbolSize); + } + var symbolColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, j, isHighlight); + var symbolToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, j, isHighlight); + var symbolEmptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, j, isHighlight, false); + var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, chart.theme, isHighlight); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, chart.theme, isHighlight); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, isHighlight); + chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, point, symbolColor, + symbolToColor, symbolEmptyColor, borderColor, symbol.gap, cornerRadius); + } + } + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(1); + chart.RefreshPainter(serie); + } + if (dataChanging || interacting) + { + chart.RefreshPainter(serie); + } + } + + private void DrawSingleRadar(VertexHelper vh) + { + var radar = chart.GetChartComponent<RadarCoord>(serie.radarIndex); + if (radar == null) + return; + + var indicatorNum = radar.indicatorList.Count; + var angle = 2 * Mathf.PI / indicatorNum; + var centerPos = radar.context.center; + serie.animation.InitProgress(0, 1); + serie.context.dataPoints.Clear(); + if (!serie.show || serie.animation.HasFadeOut()) + { + return; + } + var startPoint = Vector3.zero; + var toPoint = Vector3.zero; + var firstPoint = Vector3.zero; + var lastColor = ColorUtil.clearColor32; + var firstColor = ColorUtil.clearColor32; + + var rate = serie.animation.GetCurrRate(); + var dataChanging = false; + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + var startIndex = GetStartShowIndex(serie); + var endIndex = GetEndShowIndex(serie); + SerieHelper.UpdateMinMaxData(serie, 1, radar.ceilRate); + for (int j = 0; j < serie.data.Count; j++) + { + var serieData = serie.data[j]; + serieData.index = j; + string dataName = serieData.name; + + if (!serieData.show) + { + serieData.context.labelPosition = Vector3.zero; + continue; + } + var lineStyle = SerieHelper.GetLineStyle(serie, serieData); + var areaStyle = SerieHelper.GetAreaStyle(serie, serieData); + var isHighlight = serie.context.pointerEnter; + var areaColor = SerieHelper.GetAreaColor(serie, serieData, chart.theme, j, isHighlight); + var areaToColor = SerieHelper.GetAreaToColor(serie, serieData, chart.theme, j, isHighlight); + var lineColor = SerieHelper.GetLineColor(serie, serieData, chart.theme, j, isHighlight); + int dataCount = radar.indicatorList.Count; + var index = serieData.index; + var p = radar.context.center; + var max = radar.GetIndicatorMax(index); + var value = serieData.GetCurrData(1, dataChangeDuration); + if (serieData.IsDataChanged()) dataChanging = true; + if (max == 0) + { + max = serie.context.dataMax; + } + if (!radar.IsInIndicatorRange(j, serieData.GetData(1))) + { + lineColor = radar.outRangeColor; + } + var radius = (float) (max < 0 ? radar.context.dataRadius - radar.context.dataRadius * value / max : + radar.context.dataRadius * value / max); + var currAngle = (index + (radar.positionType == RadarCoord.PositionType.Between ? 0.5f : 0)) * angle; + radius *= rate; + if (index == startIndex) + { + startPoint = new Vector3(p.x + radius * Mathf.Sin(currAngle), + p.y + radius * Mathf.Cos(currAngle)); + firstPoint = startPoint; + lastColor = lineColor; + firstColor = lineColor; + } + else + { + toPoint = new Vector3(p.x + radius * Mathf.Sin(currAngle), + p.y + radius * Mathf.Cos(currAngle)); + if (areaStyle != null && areaStyle.show) + { + UGL.DrawTriangle(vh, startPoint, toPoint, p, areaColor, areaColor, areaToColor); + } + if (lineStyle.show) + { + if (radar.connectCenter) + ChartDrawer.DrawLineStyle(vh, lineStyle, startPoint, centerPos, + chart.theme.serie.lineWidth, LineStyle.Type.Solid, lastColor, lastColor); + ChartDrawer.DrawLineStyle(vh, lineStyle, startPoint, toPoint, chart.theme.serie.lineWidth, + LineStyle.Type.Solid, radar.lineGradient ? lastColor : lineColor, lineColor); + } + startPoint = toPoint; + lastColor = lineColor; + } + serieData.context.position = startPoint; + serieData.context.labelPosition = startPoint; + + if (areaStyle != null && areaStyle.show && j == endIndex) + { + UGL.DrawTriangle(vh, startPoint, firstPoint, centerPos, areaColor, areaColor, areaToColor); + } + if (lineStyle.show && j == endIndex) + { + if (radar.connectCenter) + ChartDrawer.DrawLineStyle(vh, lineStyle, startPoint, centerPos, + chart.theme.serie.lineWidth, LineStyle.Type.Solid, lastColor, lastColor); + ChartDrawer.DrawLineStyle(vh, lineStyle, startPoint, firstPoint, chart.theme.serie.lineWidth, + LineStyle.Type.Solid, lineColor, radar.lineGradient ? firstColor : lineColor); + } + } + if (serie.symbol.show && serie.symbol.type != SymbolType.None) + { + for (int j = 0; j < serie.data.Count; j++) + { + var serieData = serie.data[j]; + if (!serieData.show) continue; + var isHighlight = serie.highlight || serieData.context.highlight || serie.context.pointerEnter; + var serieIndex = serieData.index; + var symbolSize = isHighlight ? + serie.symbol.GetSelectedSize(serieData.data, chart.theme.serie.lineSymbolSelectedSize) : + serie.symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize); + var symbolColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serieIndex, isHighlight); + var symbolToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serieIndex, isHighlight); + var symbolEmptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, serieIndex, isHighlight, false); + var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, chart.theme, isHighlight); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, chart.theme, isHighlight); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, isHighlight); + if (!radar.IsInIndicatorRange(j, serieData.GetData(1))) + { + symbolColor = radar.outRangeColor; + symbolToColor = radar.outRangeColor; + } + chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, serieData.context.labelPosition, symbolColor, + symbolToColor, symbolEmptyColor, borderColor, serie.symbol.gap, cornerRadius); + } + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(1); + chart.RefreshPainter(serie); + } + if (dataChanging) + { + chart.RefreshPainter(serie); + } + } + + private int GetStartShowIndex(Serie serie) + { + for (int i = 0; i < serie.dataCount; i++) + { + if (serie.data[i].show) return i; + } + return 0; + } + private int GetEndShowIndex(Serie serie) + { + for (int i = serie.dataCount - 1; i >= 0; i--) + { + if (serie.data[i].show) return i; + } + return 0; + } + + private void DrawRadarSymbol(VertexHelper vh, Serie serie, SerieData serieData, int serieIndex, bool isHighlight, + List<Vector3> pointList) + { + if (serie.symbol.show && serie.symbol.type != SymbolType.None) + { + var symbolSize = isHighlight ? + serie.symbol.GetSelectedSize(serieData.data, chart.theme.serie.lineSymbolSelectedSize) : + serie.symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize); + var symbolColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serieIndex, isHighlight); + var symbolToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serieIndex, isHighlight); + var symbolEmptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, serieIndex, isHighlight, false); + var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, chart.theme, isHighlight); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, chart.theme, isHighlight); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, isHighlight); + foreach (var point in pointList) + { + chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, point, symbolColor, + symbolToColor, symbolEmptyColor, borderColor, serie.symbol.gap, cornerRadius); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs.meta new file mode 100644 index 0000000..5a455a2 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Radar/RadarHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8dd73709db7a4451b2fe6f03476cb7f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Ring.meta b/Assets/XCharts/Runtime/Serie/Ring.meta new file mode 100644 index 0000000..98724f6 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Ring.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c15a1b60f1d3c4daca1fcd88d96ae7e7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Ring/Ring.cs b/Assets/XCharts/Runtime/Serie/Ring/Ring.cs new file mode 100644 index 0000000..d97cdb4 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Ring/Ring.cs @@ -0,0 +1,44 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(RingHandler), true)] + [SerieExtraComponent(typeof(LabelStyle), typeof(TitleStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(TitleStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraField()] + public class Ring : Serie + { + public override bool useDataNameForColor { get { return true; } } + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Ring>(serieName); + serie.roundCap = true; + serie.gap = 10; + serie.radius = new float[] { 0.3f, 0.35f }; + + var label = serie.AddExtraComponent<LabelStyle>(); + label.show = true; + label.position = LabelStyle.Position.Center; + label.formatter = "{d:f0}%"; + label.textStyle.autoColor = true; + label.textStyle.fontSize = 28; + + var titleStyle = serie.AddExtraComponent<TitleStyle>(); + titleStyle.show = false; + titleStyle.offset = new Vector2(0, 30); + + var value = Random.Range(30, 90); + var max = 100; + chart.AddData(serie.index, value, max, "data1"); + return serie; + } + + public override double GetDataTotal(int dimension, SerieData serieData = null) + { + if (serieData == null || serieData.data.Count <= 1) + return base.GetDataTotal(dimension, serieData); + return serieData.GetData(1); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Ring/Ring.cs.meta b/Assets/XCharts/Runtime/Serie/Ring/Ring.cs.meta new file mode 100644 index 0000000..c069450 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Ring/Ring.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c7fe8316f26241d8a9f4b3ce94d61bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs b/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs new file mode 100644 index 0000000..70c5f40 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs @@ -0,0 +1,323 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class RingHandler : SerieHandler<Ring> + { + + public override int defaultDimension { get { return 0; } } + + public override void Update() + { + base.Update(); + UpdateSerieContext(); + } + + private void UpdateSerieContext() + { + var needCheck = chart.isPointerInChart || m_LegendEnter; + var needInteract = false; + if (!needCheck) + { + if (m_LastCheckContextFlag != needCheck) + { + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + foreach (var serieData in serie.data) + { + serieData.context.highlight = false; + } + chart.RefreshPainter(serie); + } + return; + } + m_LastCheckContextFlag = needCheck; + if (m_LegendEnter) + { + serie.context.pointerEnter = true; + foreach (var serieData in serie.data) + { + serieData.context.highlight = true; + } + } + else + { + serie.context.pointerEnter = false; + serie.context.pointerItemDataIndex = -1; + var ringIndex = GetRingIndex(chart.pointerPos); + foreach (var serieData in serie.data) + { + if (!needInteract && ringIndex == serieData.index) + { + serie.context.pointerEnter = true; + serie.context.pointerItemDataIndex = ringIndex; + serieData.context.highlight = true; + needInteract = true; + } + else + { + serieData.context.highlight = false; + } + } + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + if (dataIndex < 0) + dataIndex = serie.context.pointerItemDataIndex; + + if (dataIndex < 0) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + var param = serie.context.param; + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.category = category; + param.dimension = defaultDimension; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = serieData.GetData(0); + param.total = serieData.GetData(1); + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, dataIndex, false); + param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); + param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);; + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(serieData.name); + param.columns.Add(ChartCached.NumberToStr(param.value, param.numericFormatter)); + + paramList.Add(param); + } + + public override Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label) + { + var centerRadius = (serieData.context.outsideRadius + serieData.context.insideRadius) / 2; + var startAngle = serieData.context.startAngle; + var toAngle = serieData.context.toAngle; + switch (label.position) + { + case LabelStyle.Position.Bottom: + case LabelStyle.Position.Start: + var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius; + var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius; + var xDiff = serie.clockwise ? -label.distance : label.distance; + serieData.context.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1); + break; + case LabelStyle.Position.Top: + case LabelStyle.Position.End: + startAngle += serie.clockwise ? -label.distance : label.distance; + toAngle += serie.clockwise ? label.distance : -label.distance; + var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius; + var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius; + serieData.context.labelPosition = serie.context.center + new Vector3(px2, py2); + break; + default: //LabelStyle.Position.Center + serieData.context.labelPosition = serie.context.center + label.offset; + break; + } + return serieData.context.labelPosition; + } + + public override void DrawSerie(VertexHelper vh) + { + if (!serie.show || serie.animation.HasFadeOut()) return; + var data = serie.data; + serie.animation.InitProgress(serie.startAngle, serie.startAngle + 360); + SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight); + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + var ringWidth = serie.context.outsideRadius - serie.context.insideRadius; + var dataChanging = false; + for (int j = 0; j < data.Count; j++) + { + var serieData = data[j]; + serieData.index = j; + if (!serieData.show) continue; + if (serieData.IsDataChanged()) dataChanging = true; + var value = serieData.GetFirstData(dataChangeDuration); + var max = serieData.GetLastData(); + var degree = (float) (360 * value / max); + var startDegree = GetStartAngle(serie); + var toDegree = GetToAngle(serie, degree); + var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.context.highlight); + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); + var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, serieData.context.highlight); + var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, serieData.context.highlight); + var outsideRadius = serie.context.outsideRadius - j * (ringWidth + serie.gap); + var insideRadius = outsideRadius - ringWidth; + var borderWidth = itemStyle.borderWidth; + var borderColor = itemStyle.borderColor; + var roundCap = serie.roundCap && insideRadius > 0; + + serieData.context.startAngle = serie.clockwise ? startDegree : toDegree; + serieData.context.toAngle = serie.clockwise ? toDegree : startDegree; + serieData.context.insideRadius = insideRadius; + serieData.context.outsideRadius = serieData.radius > 0 ? serieData.radius : outsideRadius; + DrawBackground(vh, serie, serieData, j, insideRadius, outsideRadius); + UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemColor, itemToColor, + Color.clear, startDegree, toDegree, borderWidth, borderColor, 0, chart.settings.cicleSmoothness, + roundCap, serie.clockwise); + DrawCenter(vh, serie, serieData, insideRadius, j == data.Count - 1); + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(360); + chart.RefreshChart(); + } + if (dataChanging) + { + chart.RefreshChart(); + } + } + + public override void OnLegendButtonClick(int index, string legendName, bool show) + { + if (!serie.IsLegendName(legendName)) + return; + LegendHelper.CheckDataShow(serie, legendName, show); + chart.UpdateLegendColor(legendName, show); + chart.RefreshPainter(serie); + } + + public override void OnLegendButtonEnter(int index, string legendName) + { + if (!serie.IsLegendName(legendName)) + return; + LegendHelper.CheckDataHighlighted(serie, legendName, true); + chart.RefreshPainter(serie); + } + + public override void OnLegendButtonExit(int index, string legendName) + { + if (!serie.IsLegendName(legendName)) + return; + LegendHelper.CheckDataHighlighted(serie, legendName, false); + chart.RefreshPainter(serie); + } + + public override void OnPointerDown(PointerEventData eventData) + { } + + private float GetStartAngle(Serie serie) + { + return serie.clockwise ? serie.startAngle : 360 - serie.startAngle; + } + + private float GetToAngle(Serie serie, float angle) + { + var toAngle = angle + serie.startAngle; + if (!serie.clockwise) + { + toAngle = 360 - angle - serie.startAngle; + } + if (!serie.animation.IsFinish()) + { + var currAngle = serie.animation.GetCurrDetail(); + if (serie.clockwise) + { + toAngle = toAngle > currAngle ? currAngle : toAngle; + } + else + { + toAngle = toAngle < 360 - currAngle ? 360 - currAngle : toAngle; + } + } + return toAngle; + } + + private void DrawCenter(VertexHelper vh, Serie serie, SerieData serieData, float insideRadius, bool last) + { + var itemStyle = SerieHelper.GetItemStyle(serie, serieData); + if (!ChartHelper.IsClearColor(itemStyle.centerColor) && last) + { + var radius = insideRadius - itemStyle.centerGap; + var smoothness = chart.settings.cicleSmoothness; + UGL.DrawCricle(vh, serie.context.center, radius, itemStyle.centerColor, smoothness); + } + } + + private void DrawBackground(VertexHelper vh, Serie serie, SerieData serieData, int index, float insideRadius, float outsideRadius) + { + var itemStyle = SerieHelper.GetItemStyle(serie, serieData); + var backgroundColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, index, false); + if (itemStyle.backgroundWidth != 0) + { + var centerRadius = (outsideRadius + insideRadius) / 2; + var inradius = centerRadius - itemStyle.backgroundWidth / 2; + var outradius = centerRadius + itemStyle.backgroundWidth / 2; + UGL.DrawDoughnut(vh, serie.context.center, inradius, + outradius, backgroundColor, Color.clear, chart.settings.cicleSmoothness); + } + else + { + UGL.DrawDoughnut(vh, serie.context.center, insideRadius, + outsideRadius, backgroundColor, Color.clear, chart.settings.cicleSmoothness); + } + } + + private void DrawBorder(VertexHelper vh, Serie serie, SerieData serieData, float insideRadius, float outsideRadius) + { + var itemStyle = SerieHelper.GetItemStyle(serie, serieData); + if (itemStyle.show && itemStyle.borderWidth > 0 && !ChartHelper.IsClearColor(itemStyle.borderColor)) + { + UGL.DrawDoughnut(vh, serie.context.center, outsideRadius, + outsideRadius + itemStyle.borderWidth, itemStyle.borderColor, + Color.clear, chart.settings.cicleSmoothness); + UGL.DrawDoughnut(vh, serie.context.center, insideRadius, + insideRadius + itemStyle.borderWidth, itemStyle.borderColor, + Color.clear, chart.settings.cicleSmoothness); + } + } + + private int GetRingIndex(Vector2 local) + { + var dist = Vector2.Distance(local, serie.context.center); + if (dist > serie.context.outsideRadius) return -1; + Vector2 dir = local - new Vector2(serie.context.center.x, serie.context.center.y); + float angle = VectorAngle(Vector2.up, dir); + for (int i = 0; i < serie.data.Count; i++) + { + var serieData = serie.data[i]; + serieData.index = i; + if (dist >= serieData.context.insideRadius && + dist <= serieData.context.outsideRadius && + angle >= serieData.context.startAngle && + angle <= serieData.context.toAngle) + { + return i; + } + } + return -1; + } + + private float VectorAngle(Vector2 from, Vector2 to) + { + float angle; + + Vector3 cross = Vector3.Cross(from, to); + angle = Vector2.Angle(from, to); + angle = cross.z > 0 ? -angle : angle; + angle = (angle + 360) % 360; + return angle; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs.meta new file mode 100644 index 0000000..293edfb --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Ring/RingHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c3c486efd6d8464a88d8f4b572b7bc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Scatter.meta b/Assets/XCharts/Runtime/Serie/Scatter.meta new file mode 100644 index 0000000..916354d --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97fc5bddab1db4321aa7377ab8b8b8bc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Scatter/BaseScatter.cs b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatter.cs new file mode 100644 index 0000000..bb0cbb5 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatter.cs @@ -0,0 +1,9 @@ +namespace XCharts.Runtime +{ + [System.Serializable] + public class BaseScatter : Serie, INeedSerieContainer + { + public int containerIndex { get; internal set; } + public int containterInstanceId { get; internal set; } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Scatter/BaseScatter.cs.meta b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatter.cs.meta new file mode 100644 index 0000000..8b9933e --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dba0ca827ad4d4b9989def35aba66665 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs new file mode 100644 index 0000000..f8a3aa7 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs @@ -0,0 +1,350 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal class BaseScatterHandler<T> : SerieHandler<T> where T : BaseScatter + { + private GridCoord m_Grid; + + public override void Update() + { + UpdateSerieContext(); + } + + public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, + string marker, string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) + { + dataIndex = serie.context.pointerItemDataIndex; + if (dataIndex < 0) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + title = serie.serieName; + + var param = serie.context.param; + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.category = category; + param.dimension = 1; + param.dataCount = serie.dataCount; + param.serieData = serieData; + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); + param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); + param.columns.Clear(); + + param.columns.Add(param.marker); + if (!string.IsNullOrEmpty(serieData.name)) + param.columns.Add(serieData.name); + param.columns.Add(ChartCached.NumberToStr(serieData.GetData(1), param.numericFormatter)); + + paramList.Add(param); + } + + public override void DrawSerie(VertexHelper vh) + { + if (serie.IsUseCoord<SingleAxisCoord>()) + { + DrawSingAxisScatterSerie(vh, serie); + } + else if (serie.IsUseCoord<GridCoord>()) + { + DrawScatterSerie(vh, serie); + } + } + + private void UpdateSerieContext() + { + var needCheck = m_LegendEnter || (chart.isPointerInChart && (m_Grid == null || m_Grid.IsPointerEnter())); + + var needHideAll = false; + if (!needCheck) + { + if (m_LastCheckContextFlag == needCheck) + return; + needHideAll = true; + } + m_LastCheckContextFlag = needCheck; + serie.context.pointerItemDataIndex = -1; + serie.context.pointerEnter = false; + var themeSymbolSize = chart.theme.serie.scatterSymbolSize; + var themeSymbolSelectedSize = chart.theme.serie.scatterSymbolSelectedSize; + var needInteract = false; + for (int i = serie.dataCount - 1; i >= 0; i--) + { + var serieData = serie.data[i]; + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); + var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); + if (m_LegendEnter || + (!needHideAll && Vector3.Distance(serieData.context.position, chart.pointerPos) <= symbolSize)) + { + serie.context.pointerItemDataIndex = i; + serie.context.pointerEnter = true; + serieData.context.highlight = true; + serieData.interact.SetValue(ref needInteract, symbolSelectedSize); + } + else + { + serieData.context.highlight = false; + serieData.interact.SetValue(ref needInteract, symbolSize); + } + } + if (needInteract) + { + chart.RefreshPainter(serie); + } + } + + protected virtual void DrawScatterSerie(VertexHelper vh, BaseScatter serie) + { + if (serie.animation.HasFadeOut()) + return; + + if (!serie.show) + return; + + XAxis xAxis; + if (!chart.TryGetChartComponent<XAxis>(out xAxis, serie.xAxisIndex)) + return; + + YAxis yAxis; + if (!chart.TryGetChartComponent<YAxis>(out yAxis, serie.yAxisIndex)) + return; + + if (!chart.TryGetChartComponent<GridCoord>(out m_Grid, xAxis.gridIndex)) + return; + + DataZoom xDataZoom; + DataZoom yDataZoom; + chart.GetDataZoomOfSerie(serie, out xDataZoom, out yDataZoom); + + var theme = chart.theme; + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > serie.dataCount ? serie.dataCount : serie.maxShow) : + serie.dataCount; + serie.animation.InitProgress(0, 1); + var rate = serie.animation.GetCurrRate(); + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + var dataChanging = false; + var interacting = false; + var dataList = serie.GetDataList(xDataZoom); + var isEffectScatter = serie is EffectScatter; + var colorIndex = serie.context.colorIndex; + + serie.containerIndex = m_Grid.index; + serie.containterInstanceId = m_Grid.instanceId; + + foreach (var serieData in dataList) + { + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + if (!symbol.ShowSymbol(serieData.index, maxCount)) + continue; + + var highlight = serie.highlight || serieData.context.highlight; + var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight); + var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight); + var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false); + var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, theme, highlight); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, theme, highlight); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight); + double xValue = serieData.GetCurrData(0, dataChangeDuration, xAxis.inverse); + double yValue = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse); + + if (serieData.IsDataChanged()) + dataChanging = true; + + float pX = m_Grid.context.x + xAxis.axisLine.GetWidth(theme.axis.lineWidth); + float pY = m_Grid.context.y + yAxis.axisLine.GetWidth(theme.axis.lineWidth); + float xDataHig = GetDataHig(xAxis, xValue, m_Grid.context.width); + float yDataHig = GetDataHig(yAxis, yValue, m_Grid.context.height); + var pos = new Vector3(pX + xDataHig, pY + yDataHig); + + if (!m_Grid.Contains(pos)) + continue; + + serie.context.dataPoints.Add(pos); + serieData.context.position = pos; + var datas = serieData.data; + var symbolSize = serie.highlight || serieData.context.highlight ? + theme.serie.scatterSymbolSelectedSize : + theme.serie.scatterSymbolSize; + if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting)) + { + symbolSize = highlight ? + symbol.GetSelectedSize(serieData.data, symbolSize) : + symbol.GetSize(serieData.data, symbolSize); + serieData.interact.SetValue(ref interacting, symbolSize); + } + + symbolSize *= rate; + + if (isEffectScatter) + { + for (int count = 0; count < symbol.animationSize.Count; count++) + { + var nowSize = symbol.animationSize[count]; + color.a = (byte) (255 * (symbolSize - nowSize) / symbolSize); + chart.DrawSymbol(vh, symbol.type, nowSize, symbolBorder, pos, + color, toColor, emptyColor, borderColor, symbol.gap, cornerRadius); + } + chart.RefreshPainter(serie); + } + else + { + if (symbolSize > 100) symbolSize = 100; + chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos, + color, toColor, emptyColor, borderColor, symbol.gap, cornerRadius); + } + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(1); + chart.RefreshPainter(serie); + } + if (dataChanging || interacting) + { + chart.RefreshPainter(serie); + } + } + + protected virtual void DrawSingAxisScatterSerie(VertexHelper vh, BaseScatter serie) + { + if (serie.animation.HasFadeOut()) + return; + + if (!serie.show) + return; + + var axis = chart.GetChartComponent<SingleAxis>(serie.singleAxisIndex); + if (axis == null) + return; + + DataZoom xDataZoom; + DataZoom yDataZoom; + chart.GetDataZoomOfSerie(serie, out xDataZoom, out yDataZoom); + + var theme = chart.theme; + int maxCount = serie.maxShow > 0 ? + (serie.maxShow > serie.dataCount ? serie.dataCount : serie.maxShow) : + serie.dataCount; + serie.animation.InitProgress(0, 1); + + var rate = serie.animation.GetCurrRate(); + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + var dataChanging = false; + var dataList = serie.GetDataList(xDataZoom); + var isEffectScatter = serie is EffectScatter; + var colorIndex = serie.context.colorIndex; + + serie.containerIndex = axis.index; + serie.containterInstanceId = axis.instanceId; + + foreach (var serieData in dataList) + { + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); + if (!symbol.ShowSymbol(serieData.index, maxCount)) + continue; + + var highlight = serie.highlight || serieData.context.highlight; + var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight); + var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight); + var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false); + var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, theme, highlight); + var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, theme, highlight); + var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight); + var xValue = serieData.GetCurrData(0, dataChangeDuration, axis.inverse); + + if (serieData.IsDataChanged()) + dataChanging = true; + + var pos = Vector3.zero; + if (axis.orient == Orient.Horizonal) + { + var xDataHig = GetDataHig(axis, xValue, axis.context.width); + var yDataHig = axis.context.height / 2; + pos = new Vector3(axis.context.x + xDataHig, axis.context.y + yDataHig); + } + else + { + var yDataHig = GetDataHig(axis, xValue, axis.context.width); + var xDataHig = axis.context.height / 2; + pos = new Vector3(axis.context.x + xDataHig, axis.context.y + yDataHig); + } + serie.context.dataPoints.Add(pos); + serieData.context.position = pos; + + var datas = serieData.data; + var symbolSize = 0f; + if (serie.highlight || serieData.context.highlight) + symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize); + else + symbolSize = symbol.GetSize(datas, theme.serie.scatterSymbolSize); + symbolSize *= rate; + + if (isEffectScatter) + { + if (symbolSize > 100) symbolSize = 100; + for (int count = 0; count < symbol.animationSize.Count; count++) + { + var nowSize = symbol.animationSize[count]; + color.a = (byte) (255 * (symbolSize - nowSize) / symbolSize); + chart.DrawSymbol(vh, symbol.type, nowSize, symbolBorder, pos, + color, toColor, emptyColor, borderColor, symbol.gap, cornerRadius); + } + chart.RefreshPainter(serie); + } + else + { + if (symbolSize > 100) symbolSize = 100; + chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos, + color, toColor, emptyColor, borderColor, symbol.gap, cornerRadius); + } + } + if (!serie.animation.IsFinish()) + { + serie.animation.CheckProgress(1); + chart.RefreshPainter(serie); + } + if (dataChanging) + { + chart.RefreshPainter(serie); + } + } + + private static float GetDataHig(Axis axis, double value, float totalWidth) + { + if (axis.IsLog()) + { + int minIndex = axis.GetLogMinIndex(); + float nowIndex = axis.GetLogValue(value); + return (nowIndex - minIndex) / axis.splitNumber * totalWidth; + } + else if (axis.IsCategory()) + { + if (axis.boundaryGap) + { + float tick = (float) (totalWidth / (axis.context.minMaxRange + 1)); + return tick / 2 + (float) (value - axis.context.minValue) * tick; + } + else + { + return (float) ((value - axis.context.minValue) / axis.context.minMaxRange * totalWidth); + } + } + else + { + return (float) ((value - axis.context.minValue) / axis.context.minMaxRange * totalWidth); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs.meta new file mode 100644 index 0000000..f665940 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/BaseScatterHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31373c1595ff249188e33330f2eff1ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Scatter/EffectScatter.cs b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatter.cs new file mode 100644 index 0000000..f221917 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatter.cs @@ -0,0 +1,27 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(EffectScatterHandler), true)] + [CoordOptions(typeof(GridCoord), typeof(SingleAxisCoord))] + [SerieExtraComponent(typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraField("m_Radius")] + public class EffectScatter : BaseScatter + { + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<EffectScatter>(serieName); + serie.symbol.show = true; + serie.symbol.type = SymbolType.Circle; + serie.itemStyle.opacity = 0.8f; + serie.clip = false; + for (int i = 0; i < 10; i++) + { + chart.AddData(serie.index, Random.Range(10, 100), Random.Range(10, 100)); + } + return serie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Scatter/EffectScatter.cs.meta b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatter.cs.meta new file mode 100644 index 0000000..d452884 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c34d4976ef53c48a4b091d52694d8a7f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Scatter/EffectScatterHandler.cs b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatterHandler.cs new file mode 100644 index 0000000..0ace159 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatterHandler.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class EffectScatterHandler : BaseScatterHandler<EffectScatter> + { + private float m_EffectScatterSpeed = 15; + + public override void Update() + { + base.Update(); + var symbolSize = serie.symbol.GetSize(null, chart.theme.serie.scatterSymbolSize); + for (int i = 0; i < serie.symbol.animationSize.Count; ++i) + { + serie.symbol.animationSize[i] += m_EffectScatterSpeed * Time.deltaTime; + if (serie.symbol.animationSize[i] > symbolSize) + { + serie.symbol.animationSize[i] = i * 5; + } + chart.RefreshPainter(serie); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Scatter/EffectScatterHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatterHandler.cs.meta new file mode 100644 index 0000000..5b7d2b7 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/EffectScatterHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb7c24770dff64d7b857f459de7b2333 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Scatter/Scatter.cs b/Assets/XCharts/Runtime/Serie/Scatter/Scatter.cs new file mode 100644 index 0000000..f633d74 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/Scatter.cs @@ -0,0 +1,27 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + [System.Serializable] + [SerieHandler(typeof(ScatterHandler), true)] + [CoordOptions(typeof(GridCoord), typeof(SingleAxisCoord))] + [SerieExtraComponent(typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraComponent(typeof(ItemStyle), typeof(LabelStyle), typeof(EmphasisItemStyle), typeof(EmphasisLabelStyle))] + [SerieDataExtraField("m_Radius")] + public class Scatter : BaseScatter + { + public static Serie AddDefaultSerie(BaseChart chart, string serieName) + { + var serie = chart.AddSerie<Scatter>(serieName); + serie.symbol.show = true; + serie.symbol.type = SymbolType.Circle; + serie.itemStyle.opacity = 0.8f; + serie.clip = false; + for (int i = 0; i < 10; i++) + { + chart.AddData(serie.index, Random.Range(10, 100), Random.Range(10, 100)); + } + return serie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Scatter/Scatter.cs.meta b/Assets/XCharts/Runtime/Serie/Scatter/Scatter.cs.meta new file mode 100644 index 0000000..e7e72d0 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/Scatter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75a031f5547984317b5659a03d7f5e32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Scatter/ScatterHandler.cs b/Assets/XCharts/Runtime/Serie/Scatter/ScatterHandler.cs new file mode 100644 index 0000000..9174cd3 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/ScatterHandler.cs @@ -0,0 +1,6 @@ +namespace XCharts.Runtime +{ + [UnityEngine.Scripting.Preserve] + internal sealed class ScatterHandler : BaseScatterHandler<Scatter> + { } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Scatter/ScatterHandler.cs.meta b/Assets/XCharts/Runtime/Serie/Scatter/ScatterHandler.cs.meta new file mode 100644 index 0000000..51d8f55 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Scatter/ScatterHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ee7d7a8f04034cd38fd9d43f1a41825 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Serie.ExtraComponent.cs b/Assets/XCharts/Runtime/Serie/Serie.ExtraComponent.cs new file mode 100644 index 0000000..01f21b9 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Serie.ExtraComponent.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace XCharts.Runtime +{ + public partial class Serie + { + public static Dictionary<Type, string> extraComponentMap = new Dictionary<Type, string> + { { typeof(LabelStyle), "m_Labels" }, + { typeof(LabelLine), "m_LabelLines" }, + { typeof(EndLabelStyle), "m_EndLabels" }, + { typeof(LineArrow), "m_LineArrows" }, + { typeof(AreaStyle), "m_AreaStyles" }, + { typeof(TitleStyle), "m_TitleStyles" }, + { typeof(EmphasisItemStyle), "m_EmphasisItemStyles" }, + { typeof(EmphasisLabelStyle), "m_EmphasisLabels" }, + { typeof(EmphasisLabelLine), "m_EmphasisLabelLines" }, + }; + + [SerializeField][IgnoreDoc] private List<LabelStyle> m_Labels = new List<LabelStyle>(); + [SerializeField][IgnoreDoc] private List<LabelLine> m_LabelLines = new List<LabelLine>(); + [SerializeField][IgnoreDoc] private List<EndLabelStyle> m_EndLabels = new List<EndLabelStyle>(); + [SerializeField][IgnoreDoc] private List<LineArrow> m_LineArrows = new List<LineArrow>(); + [SerializeField][IgnoreDoc] private List<AreaStyle> m_AreaStyles = new List<AreaStyle>(); + [SerializeField][IgnoreDoc] private List<TitleStyle> m_TitleStyles = new List<TitleStyle>(); + [SerializeField][IgnoreDoc] private List<EmphasisItemStyle> m_EmphasisItemStyles = new List<EmphasisItemStyle>(); + [SerializeField][IgnoreDoc] private List<EmphasisLabelStyle> m_EmphasisLabels = new List<EmphasisLabelStyle>(); + [SerializeField][IgnoreDoc] private List<EmphasisLabelLine> m_EmphasisLabelLines = new List<EmphasisLabelLine>(); + + /// <summary> + /// The style of area. + /// |区域填充样式。 + /// </summary> + public AreaStyle areaStyle { get { return m_AreaStyles.Count > 0 ? m_AreaStyles[0] : null; } } + /// <summary> + /// Text label of graphic element,to explain some data information about graphic item like value, name and so on. + /// |图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。 + /// </summary> + public LabelStyle label { get { return m_Labels.Count > 0 ? m_Labels[0] : null; } } + public LabelStyle endLabel { get { return m_EndLabels.Count > 0 ? m_EndLabels[0] : null; } } + /// <summary> + /// The line of label. + /// |标签上的视觉引导线。 + /// </summary> + public LabelLine labelLine { get { return m_LabelLines.Count > 0 ? m_LabelLines[0] : null; } } + /// <summary> + /// The arrow of line. + /// |折线图的箭头。 + /// </summary> + public LineArrow lineArrow { get { return m_LineArrows.Count > 0 ? m_LineArrows[0] : null; } } + /// <summary> + /// 高亮的图形样式 + /// </summary> + public EmphasisItemStyle emphasisItemStyle { get { return m_EmphasisItemStyles.Count > 0 ? m_EmphasisItemStyles[0] : null; } } + /// <summary> + /// 高亮时的标签样式 + /// </summary> + public EmphasisLabelStyle emphasisLabel { get { return m_EmphasisLabels.Count > 0 ? m_EmphasisLabels[0] : null; } } + /// <summary> + /// 高亮时的标签引导线样式 + /// </summary> + public EmphasisLabelLine emphasisLabelLine { get { return m_EmphasisLabelLines.Count > 0 ? m_EmphasisLabelLines[0] : null; } } + /// <summary> + /// the icon of data. + /// |数据项标题样式。 + /// </summary> + public TitleStyle titleStyle { get { return m_TitleStyles.Count > 0 ? m_TitleStyles[0] : null; } } + + public void RemoveAllExtraComponent() + { + var serieType = GetType(); + foreach (var kv in extraComponentMap) + { + ReflectionUtil.InvokeListClear(this, serieType.GetField(kv.Value)); + } + SetAllDirty(); + } + + public T AddExtraComponent<T>() where T : ChildComponent, ISerieExtraComponent + { + return AddExtraComponent(typeof(T)) as T; + } + + public ISerieExtraComponent AddExtraComponent(Type type) + { + if (GetType().IsDefined(typeof(SerieExtraComponentAttribute), false)) + { + var attr = GetType().GetAttribute<SerieExtraComponentAttribute>(); + if (attr.Contains(type)) + { + var fieldName = string.Empty; + if (extraComponentMap.TryGetValue(type, out fieldName)) + { + var field = typeof(Serie).GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic); + if (ReflectionUtil.InvokeListCount(this, field) <= 0) + { + var extraComponent = Activator.CreateInstance(type) as ISerieExtraComponent; + ReflectionUtil.InvokeListAdd(this, field, extraComponent); + SetAllDirty(); + return extraComponent; + } + else + { + return ReflectionUtil.InvokeListGet<ISerieExtraComponent>(this, field, 0); + } + } + } + } + throw new System.Exception(string.Format("Serie {0} not support extra component: {1}", + GetType().Name, type.Name)); + } + + public void RemoveExtraComponent<T>() where T : ISerieExtraComponent + { + RemoveExtraComponent(typeof(T)); + } + + public void RemoveExtraComponent(Type type) + { + if (GetType().IsDefined(typeof(SerieExtraComponentAttribute), false)) + { + var attr = GetType().GetAttribute<SerieExtraComponentAttribute>(); + if (attr.Contains(type)) + { + var fieldName = string.Empty; + if (extraComponentMap.TryGetValue(type, out fieldName)) + { + var field = typeof(Serie).GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic); + ReflectionUtil.InvokeListClear(this, field); + SetAllDirty(); + return; + } + } + } + throw new System.Exception(string.Format("Serie {0} not support extra component: {1}", + GetType().Name, type.Name)); + } + + private void RemoveExtraComponentList<T>(List<T> list) where T : ISerieExtraComponent + { + if (list.Count > 0) + { + list.Clear(); + SetAllDirty(); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Serie.ExtraComponent.cs.meta b/Assets/XCharts/Runtime/Serie/Serie.ExtraComponent.cs.meta new file mode 100644 index 0000000..97d8db3 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Serie.ExtraComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c4f3a01039fd4e7fbf771a65ede0069 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/Serie.cs b/Assets/XCharts/Runtime/Serie/Serie.cs new file mode 100644 index 0000000..96895ea --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Serie.cs @@ -0,0 +1,1765 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + /// <summary> + /// Whether to show as Nightingale chart, which distinguishs data through radius. + /// 是否展示成南丁格尔图,通过半径区分数据大小。 + /// </summary> + public enum RoseType + { + /// <summary> + /// Don't show as Nightingale chart. + /// |不展示成南丁格尔玫瑰图。 + /// </summary> + None, + /// <summary> + /// Use central angle to show the percentage of data, radius to show data size. + /// |扇区圆心角展现数据的百分比,半径展现数据的大小。 + /// </summary> + Radius, + /// <summary> + /// All the sectors will share the same central angle, the data size is shown only through radiuses. + /// |所有扇区圆心角相同,仅通过半径展现数据大小。 + /// </summary> + Area + } + + /// <summary> + /// the type of line chart. + /// |折线图样式类型 + /// </summary> + public enum LineType + { + /// <summary> + /// the normal line chart, + /// |普通折线图。 + /// </summary> + Normal, + /// <summary> + /// the smooth line chart, + /// |平滑曲线。 + /// </summary> + Smooth, + /// <summary> + /// step line. + /// |阶梯线图:当前点。 + /// </summary> + StepStart, + /// <summary> + /// step line. + /// |阶梯线图:当前点和下一个点的中间。 + /// </summary> + StepMiddle, + /// <summary> + /// step line. + /// |阶梯线图:下一个拐点。 + /// </summary> + StepEnd + } + + /// <summary> + /// the type of bar. |柱状图类型。 + /// </summary> + public enum BarType + { + /// <summary> + /// normal bar. + /// |普通柱形图。 + /// </summary> + Normal, + /// <summary> + /// zebra bar. + /// |斑马柱形图。 + /// </summary> + Zebra, + /// <summary> + /// capsule bar. + /// |胶囊柱形图。 + /// </summary> + Capsule + } + + /// <summary> + /// the type of radar. |雷达图类型。 + /// </summary> + public enum RadarType + { + /// <summary> + /// multiple radar. + /// |多圈雷达图。此时可一个雷达里绘制多个圈,一个serieData就可组成一个圈(多维数据)。 + /// </summary> + Multiple, + /// <summary> + /// single radar. + /// |单圈雷达图。此时一个雷达只能绘制一个圈,多个serieData组成一个圈,数据取自`data[1]`。 + /// </summary> + Single + } + + /// <summary> + /// 采样类型 + /// </summary> + public enum SampleType + { + /// <summary> + /// Take a peak. When the average value of the filter point is greater than or equal to 'sampleAverage', + /// take the maximum value; If you do it the other way around, you get the minimum. + /// |取峰值。 + /// </summary> + Peak, + /// <summary> + /// Take the average of the filter points. + /// |取过滤点的平均值。 + /// </summary> + Average, + /// <summary> + /// Take the maximum value of the filter point. + /// |取过滤点的最大值。 + /// </summary> + Max, + /// <summary> + /// Take the minimum value of the filter point. + /// |取过滤点的最小值。 + /// </summary> + Min, + /// <summary> + /// Take the sum of the filter points. + /// |取过滤点的和。 + /// </summary> + Sum + } + + /// <summary> + /// 数据排序方式 + /// </summary> + public enum SerieDataSortType + { + /// <summary> + /// 按 data 的顺序 + /// </summary> + None, + /// <summary> + /// 升序 + /// </summary> + Ascending, + /// <summary> + /// 降序 + /// </summary> + Descending, + } + + /// <summary> + /// 对齐方式 + /// </summary> + public enum Align + { + Center, + Left, + Right + } + + /// <summary> + /// 系列。 + /// </summary> + [System.Serializable] + public partial class Serie : BaseSerie, IComparable + { + [SerializeField] private int m_Index; + [SerializeField] private bool m_Show = true; + [SerializeField] private string m_CoordSystem = "GridCoord"; + [SerializeField] private string m_SerieType = ""; + [SerializeField] private string m_SerieName; + [SerializeField] private string m_Stack; + [SerializeField] private int m_XAxisIndex = 0; + [SerializeField] private int m_YAxisIndex = 0; + [SerializeField] private int m_RadarIndex = 0; + [SerializeField] private int m_VesselIndex = 0; + [SerializeField] private int m_PolarIndex = 0; + [SerializeField] private int m_SingleAxisIndex = 0; + [SerializeField] private int m_ParallelIndex = 0; + [SerializeField] protected int m_MinShow; + [SerializeField] protected int m_MaxShow; + [SerializeField] protected int m_MaxCache; + + [SerializeField] private float m_SampleDist = 0; + [SerializeField] private SampleType m_SampleType = SampleType.Average; + [SerializeField] private float m_SampleAverage = 0; + + [SerializeField] private LineType m_LineType = LineType.Normal; + [SerializeField] private BarType m_BarType = BarType.Normal; + [SerializeField] private bool m_BarPercentStack = false; + [SerializeField] private float m_BarWidth = 0; + [SerializeField] private float m_BarGap = 0.1f; + [SerializeField] private float m_BarZebraWidth = 4f; + [SerializeField] private float m_BarZebraGap = 2f; + + [SerializeField] private float m_Min; + [SerializeField] private float m_Max; + [SerializeField] private float m_MinSize = 0f; + [SerializeField] private float m_MaxSize = 1f; + [SerializeField] private float m_StartAngle; + [SerializeField] private float m_EndAngle; + [SerializeField] private float m_MinAngle; + [SerializeField] private bool m_Clockwise = true; + [SerializeField] private bool m_RoundCap; + [SerializeField] private int m_SplitNumber; + [SerializeField] private bool m_ClickOffset = true; + [SerializeField] private RoseType m_RoseType = RoseType.None; + [SerializeField] private float m_Gap; + [SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.48f }; + [SerializeField] private float[] m_Radius = new float[2] { 0, 0.28f }; + + [SerializeField][Range(1, 10)] private int m_ShowDataDimension; + [SerializeField] private bool m_ShowDataName; + [SerializeField] private bool m_Clip = false; + [SerializeField] private bool m_Ignore = false; + [SerializeField] private double m_IgnoreValue = 0; + [SerializeField] private bool m_IgnoreLineBreak = false; + [SerializeField] private bool m_ShowAsPositiveNumber = false; + [SerializeField] private bool m_Large = true; + [SerializeField] private int m_LargeThreshold = 200; + [SerializeField] private bool m_AvoidLabelOverlap = false; + [SerializeField] private RadarType m_RadarType = RadarType.Multiple; + [SerializeField] private bool m_PlaceHolder = false; + + [SerializeField] private SerieDataSortType m_DataSortType = SerieDataSortType.Descending; + [SerializeField] private Orient m_Orient = Orient.Vertical; + [SerializeField] private Align m_Align = Align.Center; + [SerializeField] private float m_Left; + [SerializeField] private float m_Right; + [SerializeField] private float m_Top; + [SerializeField] private float m_Bottom; + [SerializeField] private bool m_InsertDataToHead; + + [SerializeField] private LineStyle m_LineStyle = new LineStyle(); + [SerializeField] private SerieSymbol m_Symbol = new SerieSymbol(); + [SerializeField] private AnimationStyle m_Animation = new AnimationStyle(); + [SerializeField] private ItemStyle m_ItemStyle = new ItemStyle(); + [SerializeField] private List<SerieData> m_Data = new List<SerieData>(); + + [NonSerialized] internal int m_FilterStart; + [NonSerialized] internal int m_FilterEnd; + [NonSerialized] internal double m_FilterStartValue; + [NonSerialized] internal double m_FilterEndValue; + [NonSerialized] internal int m_FilterMinShow; + [NonSerialized] internal bool m_NeedUpdateFilterData; + [NonSerialized] public List<SerieData> m_FilterData = new List<SerieData>(); + [NonSerialized] private bool m_NameDirty; + + /// <summary> + /// The index of serie. + /// |系列索引。 + /// </summary> + public int index { get { return m_Index; } internal set { m_Index = value; } } + /// <summary> + /// Whether to show serie in chart. + /// |系列是否显示在图表上。 + /// </summary> + public bool show + { + get { return m_Show; } + set { if (PropertyUtil.SetStruct(ref m_Show, value)) { SetVerticesDirty(); SetSerieNameDirty(); } } + } + /// <summary> + /// the chart coord system of serie. + /// |使用的坐标系。 + /// </summary> + public string coordSystem + { + get { return m_CoordSystem; } + set { if (PropertyUtil.SetClass(ref m_CoordSystem, value, true)) SetVerticesDirty(); } + } + /// <summary> + /// the type of serie. + /// |系列类型。 + /// </summary> + public string serieType + { + get { return m_SerieType; } + set { if (PropertyUtil.SetClass(ref m_SerieType, value, true)) SetVerticesDirty(); } + } + /// <summary> + /// Series name used for displaying in tooltip and filtering with legend. + /// |系列名称,用于 tooltip 的显示,legend 的图例筛选。 + /// </summary> + public string serieName + { + get { return m_SerieName; } + set { if (PropertyUtil.SetClass(ref m_SerieName, value)) { SetVerticesDirty(); SetSerieNameDirty(); } } + } + /// <summary> + /// Legend name. When the serie name is not empty, the legend name is the series name; Otherwise, it is index. + /// |图例名称。当系列名称不为空时,图例名称即为系列名称;反之则为索引index。 + /// </summary> + public string legendName { get { return string.IsNullOrEmpty(serieName) ? ChartCached.IntToStr(index) : serieName; } } + /// <summary> + /// If stack the value. On the same category axis, the series with the same stack name would be put on top of each other. + /// |数据堆叠,同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加。 + /// </summary> + public string stack + { + get { return m_Stack; } + set { if (PropertyUtil.SetClass(ref m_Stack, value)) SetVerticesDirty(); } + } + /// <summary> + /// the index of XAxis. + /// |使用X轴的index。 + /// </summary> + public int xAxisIndex + { + get { return m_XAxisIndex; } + set { if (PropertyUtil.SetStruct(ref m_XAxisIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// the index of YAxis. + /// |使用Y轴的index。 + /// </summary> + public int yAxisIndex + { + get { return m_YAxisIndex; } + set { if (PropertyUtil.SetStruct(ref m_YAxisIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// Index of radar component that radar chart uses. + /// |雷达图所使用的 radar 组件的 index。 + /// </summary> + public int radarIndex + { + get { return m_RadarIndex; } + set { if (PropertyUtil.SetStruct(ref m_RadarIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// Index of vesel component that liquid chart uses. + /// |水位图所使用的 vessel 组件的 index。 + /// </summary> + public int vesselIndex + { + get { return m_VesselIndex; } + set { if (PropertyUtil.SetStruct(ref m_VesselIndex, value)) SetVerticesDirty(); } + } + /// <summary> + /// Index of polar component that serie uses. + /// |所使用的 polar 组件的 index。 + /// </summary> + public int polarIndex + { + get { return m_PolarIndex; } + set { if (PropertyUtil.SetStruct(ref m_PolarIndex, value)) SetVerticesDirty(); } + } + /// <summary>s + /// Index of single axis component that serie uses. + /// |所使用的 singleAxis 组件的 index。 + /// </summary> + public int singleAxisIndex + { + get { return m_SingleAxisIndex; } + set { if (PropertyUtil.SetStruct(ref m_SingleAxisIndex, value)) SetAllDirty(); } + } + /// <summary>s + /// Index of parallel coord component that serie uses. + /// |所使用的 parallel coord 组件的 index。 + /// </summary> + public int parallelIndex + { + get { return m_ParallelIndex; } + set { if (PropertyUtil.SetStruct(ref m_ParallelIndex, value)) SetAllDirty(); } + } + /// <summary> + /// The min number of data to show in chart. + /// |系列所显示数据的最小索引 + /// </summary> + public int minShow + { + get { return m_MinShow; } + set { if (PropertyUtil.SetStruct(ref m_MinShow, value < 0 ? 0 : value)) { SetVerticesDirty(); } } + } + /// <summary> + /// The max number of data to show in chart. + /// |系列所显示数据的最大索引 + /// </summary> + public int maxShow + { + get { return m_MaxShow; } + set { if (PropertyUtil.SetStruct(ref m_MaxShow, value < 0 ? 0 : value)) { SetVerticesDirty(); } } + } + /// <summary> + /// The max number of serie data cache. + /// The first data will be remove when the size of serie data is larger then maxCache. + /// |系列中可缓存的最大数据量。默认为0没有限制,大于0时超过指定值会移除旧数据再插入新数据。 + /// </summary> + public int maxCache + { + get { return m_MaxCache; } + set { if (PropertyUtil.SetStruct(ref m_MaxCache, value < 0 ? 0 : value)) { SetVerticesDirty(); } } + } + + /// <summary> + /// the symbol of serie data item. + /// |标记的图形。 + /// </summary> + public SerieSymbol symbol + { + get { return m_Symbol; } + set { if (PropertyUtil.SetClass(ref m_Symbol, value, true)) SetVerticesDirty(); } + } + /// <summary> + /// The type of line chart. + /// |折线图样式类型。 + /// </summary> + public LineType lineType + { + get { return m_LineType; } + set { if (PropertyUtil.SetStruct(ref m_LineType, value)) SetVerticesDirty(); } + } + /// <summary> + /// the min pixel dist of sample. + /// |采样的最小像素距离,默认为0时不采样。当两个数据点间的水平距离小于改值时,开启采样,保证两点间的水平距离不小于改值。 + /// </summary> + public float sampleDist + { + get { return m_SampleDist; } + set { if (PropertyUtil.SetStruct(ref m_SampleDist, value < 0 ? 0 : value)) SetVerticesDirty(); } + } + /// <summary> + /// the type of sample. + /// |采样类型。当sampleDist大于0时有效。 + /// </summary> + public SampleType sampleType + { + get { return m_SampleType; } + set { if (PropertyUtil.SetStruct(ref m_SampleType, value)) SetVerticesDirty(); } + } + /// <summary> + /// 设定的采样平均值。当sampleType 为 Peak 时,用于和过滤数据的平均值做对比是取最大值还是最小值。默认为0时会实时计算所有数据的平均值。 + /// </summary> + public float sampleAverage + { + get { return m_SampleAverage; } + set { if (PropertyUtil.SetStruct(ref m_SampleAverage, value)) SetVerticesDirty(); } + } + /// <summary> + /// The style of line. + /// |线条样式。 + /// </summary> + public LineStyle lineStyle + { + get { return m_LineStyle; } + set { if (PropertyUtil.SetClass(ref m_LineStyle, value, true)) SetVerticesDirty(); } + } + /// <summary> + /// 柱形图类型。 + /// </summary> + public BarType barType + { + get { return m_BarType; } + set { if (PropertyUtil.SetStruct(ref m_BarType, value)) SetVerticesDirty(); } + } + /// <summary> + /// 柱形图是否为百分比堆积。相同stack的serie只要有一个barPercentStack为true,则就显示成百分比堆叠柱状图。 + /// </summary> + public bool barPercentStack + { + get { return m_BarPercentStack; } + set { if (PropertyUtil.SetStruct(ref m_BarPercentStack, value)) SetVerticesDirty(); } + } + /// <summary> + /// The width of the bar. Adaptive when default 0. + /// |柱条的宽度,不设时自适应。支持设置成相对于类目宽度的百分比。 + /// </summary> + public float barWidth + { + get { return m_BarWidth; } + set { if (PropertyUtil.SetStruct(ref m_BarWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// The gap between bars between different series, is a percent value like '0.3f' , which means 30% of the bar width, can be set as a fixed value. + /// Set barGap as '-1' can overlap bars that belong to different series, which is useful when making a series of bar be background. + /// In a single coodinate system, this attribute is shared by multiple 'bar' series. + /// This attribute should be set on the last 'bar' series in the coodinate system, + /// then it will be adopted by all 'bar' series in the coordinate system. + /// |不同系列的柱间距离。为百分比(如 '0.3f',表示柱子宽度的 30%) + /// 如果想要两个系列的柱子重叠,可以设置 barGap 为 '-1f'。这在用柱子做背景的时候有用。 + /// 在同一坐标系上,此属性会被多个 'bar' 系列共享。此属性应设置于此坐标系中最后一个 'bar' 系列上才会生效,并且是对此坐标系中所有 'bar' 系列生效。 + /// </summary> + public float barGap + { + get { return m_BarGap; } + set { if (PropertyUtil.SetStruct(ref m_BarGap, value)) SetVerticesDirty(); } + } + /// <summary> + /// 斑马线的粗细。 + /// </summary> + public float barZebraWidth + { + get { return m_BarZebraWidth; } + set { if (PropertyUtil.SetStruct(ref m_BarZebraWidth, value < 0 ? 0 : value)) SetVerticesDirty(); } + } + /// <summary> + /// 斑马线的间距。 + /// </summary> + public float barZebraGap + { + get { return m_BarZebraGap; } + set { if (PropertyUtil.SetStruct(ref m_BarZebraGap, value < 0 ? 0 : value)) SetVerticesDirty(); } + } + + /// <summary> + /// Whether offset when mouse click pie chart item. + /// |鼠标点击时是否开启偏移,一般用在PieChart图表中。 + /// </summary> + public bool pieClickOffset + { + get { return m_ClickOffset; } + set { if (PropertyUtil.SetStruct(ref m_ClickOffset, value)) SetVerticesDirty(); } + } + /// <summary> + /// Whether to show as Nightingale chart. + /// |是否展示成南丁格尔图,通过半径区分数据大小。 + /// </summary> + public RoseType pieRoseType + { + get { return m_RoseType; } + set { if (PropertyUtil.SetStruct(ref m_RoseType, value)) SetVerticesDirty(); } + } + /// <summary> + /// gap of item. + /// |间距。 + /// </summary> + public float gap + { + get { return m_Gap; } + set { if (PropertyUtil.SetStruct(ref m_Gap, value)) SetVerticesDirty(); } + } + /// <summary> + /// the center of chart. + /// |中心点。 + /// </summary> + public float[] center + { + get { return m_Center; } + set { if (value != null && value.Length == 2) { m_Center = value; SetVerticesDirty(); } } + } + /// <summary> + /// the radius of chart. + /// |半径。radius[0]表示内径,radius[1]表示外径。 + /// </summary> + public float[] radius + { + get { return m_Radius; } + set { if (value != null && value.Length == 2) { m_Radius = value; SetVerticesDirty(); } } + } + /// <summary> + /// 最小值。 + /// </summary> + public float min + { + get { return m_Min; } + set { if (PropertyUtil.SetStruct(ref m_Min, value)) SetVerticesDirty(); } + } + /// <summary> + /// 最大值。 + /// </summary> + public float max + { + get { return m_Max; } + set { if (PropertyUtil.SetStruct(ref m_Max, value)) SetVerticesDirty(); } + } + /// <summary> + /// 数据最小值 min 映射的宽度。 + /// </summary> + public float minSize + { + get { return m_MinSize; } + set { if (PropertyUtil.SetStruct(ref m_MinSize, value)) SetVerticesDirty(); } + } + /// <summary> + /// 数据最大值 max 映射的宽度。 + /// </summary> + public float maxSize + { + get { return m_MaxSize; } + set { if (PropertyUtil.SetStruct(ref m_MaxSize, value)) SetVerticesDirty(); } + } + /// <summary> + /// 起始角度。和时钟一样,12点钟位置是0度,顺时针到360度。 + /// </summary> + public float startAngle + { + get { return m_StartAngle; } + set { if (PropertyUtil.SetStruct(ref m_StartAngle, value)) SetVerticesDirty(); } + } + /// <summary> + /// 结束角度。和时钟一样,12点钟位置是0度,顺时针到360度。 + /// </summary> + public float endAngle + { + get { return m_EndAngle; } + set { if (PropertyUtil.SetStruct(ref m_EndAngle, value)) SetVerticesDirty(); } + } + /// <summary> + /// The minimum angle of sector(0-360). It prevents some sector from being too small when value is small. + /// |最小的扇区角度(0-360)。用于防止某个值过小导致扇区太小影响交互。 + /// </summary> + public float minAngle + { + get { return m_MinAngle; } + set { if (PropertyUtil.SetStruct(ref m_MinAngle, value)) SetVerticesDirty(); } + } + /// <summary> + /// 是否顺时针。 + /// </summary> + public bool clockwise + { + get { return m_Clockwise; } + set { if (PropertyUtil.SetStruct(ref m_Clockwise, value)) SetVerticesDirty(); } + } + /// <summary> + /// 刻度分割段数。最大可设置36。 + /// </summary> + public int splitNumber + { + get { return m_SplitNumber; } + set { if (PropertyUtil.SetStruct(ref m_SplitNumber, value > 36 ? 36 : value)) SetVerticesDirty(); } + } + /// <summary> + /// 是否开启圆弧效果。 + /// </summary> + public bool roundCap + { + get { return m_RoundCap; } + set { if (PropertyUtil.SetStruct(ref m_RoundCap, value)) SetVerticesDirty(); } + } + /// <summary> + /// 是否开启忽略数据。当为 true 时,数据值为 ignoreValue 时不进行绘制。 + /// </summary> + public bool ignore + { + get { return m_Ignore; } + set { if (PropertyUtil.SetStruct(ref m_Ignore, value)) SetVerticesDirty(); } + } + /// <summary> + /// 忽略数据的默认值。当ignore为true才有效。 + /// </summary> + public double ignoreValue + { + get { return m_IgnoreValue; } + set { if (PropertyUtil.SetStruct(ref m_IgnoreValue, value)) SetVerticesDirty(); } + } + /// <summary> + /// 忽略数据时折线是断开还是连接。默认false为连接。 + /// </summary> + /// <value></value> + public bool ignoreLineBreak + { + get { return m_IgnoreLineBreak; } + set { if (PropertyUtil.SetStruct(ref m_IgnoreLineBreak, value)) SetVerticesDirty(); } + } + /// <summary> + /// 雷达图类型。 + /// </summary> + public RadarType radarType + { + get { return m_RadarType; } + set { if (PropertyUtil.SetStruct(ref m_RadarType, value)) SetVerticesDirty(); } + } + /// <summary> + /// The start animation. + /// |起始动画。 + /// </summary> + public AnimationStyle animation + { + get { return m_Animation; } + set { if (PropertyUtil.SetClass(ref m_Animation, value, true)) SetVerticesDirty(); } + } + /// <summary> + /// The style of data item. + /// |图形样式。 + /// </summary> + public ItemStyle itemStyle + { + get { return m_ItemStyle; } + set { if (PropertyUtil.SetClass(ref m_ItemStyle, value, true)) SetVerticesDirty(); } + } + /// <summary> + /// 数据项里的数据维数。 + /// </summary> + public int showDataDimension { get { return m_ShowDataDimension; } set { m_ShowDataDimension = value; } } + /// <summary> + /// 在Editor的inpsector上是否显示name参数 + /// </summary> + public bool showDataName { get { return m_ShowDataName; } set { m_ShowDataName = value; } } + /// <summary> + /// If clip the overflow on the coordinate system. + /// |是否裁剪超出坐标系部分的图形。 + /// </summary> + public bool clip + { + get { return m_Clip; } + set { if (PropertyUtil.SetStruct(ref m_Clip, value)) SetVerticesDirty(); } + } + /// <summary> + /// Show negative number as positive number. + /// |将负数数值显示为正数。一般和`AxisLabel`的`showAsPositiveNumber`配合使用。仅在折线图和柱状图中有效。 + /// </summary> + public bool showAsPositiveNumber + { + get { return m_ShowAsPositiveNumber; } + set { if (PropertyUtil.SetStruct(ref m_ShowAsPositiveNumber, value)) SetComponentDirty(); } + } + /// <summary> + /// 是否开启大数据量优化,在数据图形特别多而出现卡顿时候可以开启。 + /// 开启后配合 largeThreshold 在数据量大于指定阈值的时候对绘制进行优化。 + /// 缺点:优化后不能自定义设置单个数据项的样式,不能显示Label。 + /// </summary> + public bool large + { + get { return m_Large; } + set { if (PropertyUtil.SetStruct(ref m_Large, value)) SetAllDirty(); } + } + /// <summary> + /// 开启大数量优化的阈值。只有当开启了large并且数据量大于该阀值时才进入性能模式。 + /// </summary> + public int largeThreshold + { + get { return m_LargeThreshold; } + set { if (PropertyUtil.SetStruct(ref m_LargeThreshold, value)) SetAllDirty(); } + } + /// <summary> + /// 在饼图且标签外部显示的情况下,是否启用防止标签重叠策略,默认关闭,在标签拥挤重叠的情况下会挪动各个标签的位置,防止标签间的重叠。 + /// </summary> + public bool avoidLabelOverlap + { + get { return m_AvoidLabelOverlap; } + set { if (PropertyUtil.SetStruct(ref m_AvoidLabelOverlap, value)) SetVerticesDirty(); } + } + + /// <summary> + /// Distance between component and the left side of the container. + /// |组件离容器左侧的距离。 + /// </summary> + public float left + { + get { return m_Left; } + set { if (PropertyUtil.SetStruct(ref m_Left, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between component and the right side of the container. + /// |组件离容器右侧的距离。 + /// </summary> + public float right + { + get { return m_Right; } + set { if (PropertyUtil.SetStruct(ref m_Right, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between component and the top side of the container. + /// |组件离容器上侧的距离。 + /// </summary> + public float top + { + get { return m_Top; } + set { if (PropertyUtil.SetStruct(ref m_Top, value)) SetAllDirty(); } + } + /// <summary> + /// Distance between component and the bottom side of the container. + /// |组件离容器下侧的距离。 + /// </summary> + public float bottom + { + get { return m_Bottom; } + set { if (PropertyUtil.SetStruct(ref m_Bottom, value)) SetAllDirty(); } + } + /// <summary> + /// Whether to add new data at the head or at the end of the list. + /// |添加新数据时是在列表的头部还是尾部加入。 + /// </summary> + public bool insertDataToHead + { + get { return m_InsertDataToHead; } + set { if (PropertyUtil.SetStruct(ref m_InsertDataToHead, value)) SetAllDirty(); } + } + /// <summary> + /// 组件的数据排序。 + /// </summary> + public SerieDataSortType dataSortType + { + get { return m_DataSortType; } + set { if (PropertyUtil.SetStruct(ref m_DataSortType, value)) SetVerticesDirty(); } + } + /// <summary> + /// 组件的朝向。 + /// </summary> + public Orient orient + { + get { return m_Orient; } + set { if (PropertyUtil.SetStruct(ref m_Orient, value)) SetVerticesDirty(); } + } + /// <summary> + /// 组件水平方向对齐方式。 + /// </summary> + public Align align + { + get { return m_Align; } + set { if (PropertyUtil.SetStruct(ref m_Align, value)) SetVerticesDirty(); } + } + /// <summary> + /// 占位模式。占位模式时,数据有效但不参与渲染和显示。 + /// </summary> + public bool placeHolder + { + get { return m_PlaceHolder; } + set { if (PropertyUtil.SetStruct(ref m_PlaceHolder, value)) SetAllDirty(); } + } + /// <summary> + /// 系列中的数据内容数组。SerieData可以设置1到n维数据。 + /// </summary> + public List<SerieData> data { get { return m_Data; } } + + public override bool vertsDirty + { + get + { + return m_VertsDirty || + symbol.vertsDirty || + lineStyle.vertsDirty || + itemStyle.vertsDirty || + (lineArrow != null && lineArrow.vertsDirty) || + (areaStyle != null && areaStyle.vertsDirty) || + (label != null && label.vertsDirty) || + (labelLine != null && labelLine.vertsDirty) || + (emphasisItemStyle != null && emphasisItemStyle.vertsDirty) || + (titleStyle != null && titleStyle.vertsDirty) || + AnySerieDataVerticesDirty(); + } + } + + public override bool componentDirty + { + get + { + return m_ComponentDirty || + symbol.componentDirty || + (titleStyle != null && titleStyle.componentDirty) || + (label != null && label.componentDirty) || + (labelLine != null && labelLine.componentDirty) || + (emphasisLabel != null && emphasisLabel.componentDirty) || + (emphasisLabelLine != null && emphasisLabelLine.componentDirty); + } + } + public override void ClearVerticesDirty() + { + base.ClearVerticesDirty(); + foreach (var serieData in m_Data) + serieData.ClearVerticesDirty(); + symbol.ClearVerticesDirty(); + lineStyle.ClearVerticesDirty(); + itemStyle.ClearVerticesDirty(); + if (areaStyle != null) + areaStyle.ClearVerticesDirty(); + if (label != null) + label.ClearVerticesDirty(); + if (emphasisItemStyle != null) + emphasisItemStyle.ClearVerticesDirty(); + if (lineArrow != null) + lineArrow.ClearVerticesDirty(); + if (titleStyle != null) + titleStyle.ClearVerticesDirty(); + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + foreach (var serieData in m_Data) + serieData.ClearComponentDirty(); + symbol.ClearComponentDirty(); + lineStyle.ClearComponentDirty(); + itemStyle.ClearComponentDirty(); + if (areaStyle != null) + areaStyle.ClearComponentDirty(); + if (label != null) + label.ClearComponentDirty(); + if (emphasisLabel != null) + emphasisLabel.ClearComponentDirty(); + if (emphasisLabelLine != null) + emphasisLabelLine.ClearComponentDirty(); + if (lineArrow != null) + lineArrow.ClearComponentDirty(); + if (titleStyle != null) + titleStyle.ClearComponentDirty(); + } + + public override void SetAllDirty() + { + base.SetAllDirty(); + labelDirty = true; + titleDirty = true; + } + + private bool AnySerieDataVerticesDirty() + { + if (this is ISimplifiedSerie) + return false; + foreach (var serieData in m_Data) + if (serieData.vertsDirty) return true; + return false; + } + + private bool AnySerieDataComponentDirty() + { + if (this is ISimplifiedSerie) + return false; + foreach (var serieData in m_Data) + if (serieData.componentDirty) return true; + return false; + } + /// <summary> + /// Whether the serie is highlighted. + /// |该系列是否高亮,一般由图例悬停触发。 + /// </summary> + public bool highlight { get; internal set; } + /// <summary> + /// the count of data list. + /// |数据项个数。 + /// </summary> + public int dataCount { get { return m_Data.Count; } } + public bool nameDirty { get { return m_NameDirty; } } + public bool labelDirty { get; set; } + public bool titleDirty { get; set; } + public bool dataDirty { get; set; } + + private void SetSerieNameDirty() + { + m_NameDirty = true; + } + + public void ClearSerieNameDirty() + { + m_NameDirty = false; + } + + public override void ClearDirty() + { + base.ClearDirty(); + } + + /// <summary> + /// 维度Y对应数据中最大值。 + /// </summary> + public double yMax + { + get + { + var max = double.MinValue; + foreach (var sdata in data) + { + if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] > max) + { + max = sdata.data[1]; + } + } + return max; + } + } + + /// <summary> + /// 维度X对应数据中的最大值。 + /// </summary> + public double xMax + { + get + { + var max = double.MinValue; + foreach (var sdata in data) + { + if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] > max) + { + max = sdata.data[0]; + } + } + return max; + } + } + + /// <summary> + /// 维度Y对应数据的最小值。 + /// </summary> + public double yMin + { + get + { + var min = double.MaxValue; + foreach (var sdata in data) + { + if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] < min) + { + min = sdata.data[1]; + } + } + return min; + } + } + + /// <summary> + /// 维度X对应数据的最小值。 + /// </summary> + public double xMin + { + get + { + var min = double.MaxValue; + foreach (var sdata in data) + { + if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] < min) + { + min = sdata.data[0]; + } + } + return min; + } + } + + /// <summary> + /// 维度Y数据的总和。 + /// </summary> + public double yTotal + { + get + { + double total = 0; + if (IsPerformanceMode()) + { + foreach (var sdata in data) + { + if (sdata.show && !IsIgnoreValue(sdata.data[1])) + total += sdata.data[1]; + } + } + else + { + var duration = animation.GetUpdateAnimationDuration(); + foreach (var sdata in data) + { + if (sdata.show && !IsIgnoreValue(sdata.data[1])) + total += sdata.GetCurrData(1, duration); + } + } + return total; + } + } + + /// <summary> + /// 维度X数据的总和。 + /// </summary> + public double xTotal + { + get + { + double total = 0; + foreach (var sdata in data) + { + if (sdata.show && !IsIgnoreValue(sdata.data[1])) + total += sdata.data[0]; + } + return total; + } + } + + public void ResetInteract() + { + interact.Reset(); + foreach (var serieData in m_Data) + serieData.interact.Reset(); + } + + /// <summary> + /// 清空所有数据 + /// </summary> + public override void ClearData() + { + while (m_Data.Count > 0) + { + RemoveData(0); + } + m_Data.Clear(); + m_NeedUpdateFilterData = true; + dataDirty = true; + SetVerticesDirty(); + } + + /// <summary> + /// 移除指定索引的数据 + /// </summary> + /// <param name="index"></param> + public void RemoveData(int index) + { + if (index >= 0 && index < m_Data.Count) + { + if (!string.IsNullOrEmpty(m_Data[index].name)) + { + SetSerieNameDirty(); + } + SetVerticesDirty(); + var serieData = m_Data[index]; + SerieDataPool.Release(serieData); + if (serieData.labelObject != null) + { + SerieLabelPool.Release(serieData.labelObject.gameObject); + } + m_Data.RemoveAt(index); + m_NeedUpdateFilterData = true; + labelDirty = true; + dataDirty = true; + } + } + + /// <summary> + /// 添加一个数据到维度Y(此时维度X对应的数据是索引) + /// </summary> + /// <param name="value"></param> + /// <param name="dataName"></param> + /// <param name="dataId">the unique id of data</param> + public SerieData AddYData(double value, string dataName = null, string dataId = null) + { + CheckMaxCache(); + int xValue = m_Data.Count; + var serieData = SerieDataPool.Get(); + serieData.data.Add(xValue); + serieData.data.Add(value); + serieData.name = dataName; + serieData.index = xValue; + serieData.id = dataId; + AddSerieData(serieData); + m_ShowDataDimension = 1; + SetVerticesDirty(); + CheckDataName(dataName); + labelDirty = true; + dataDirty = true; + return serieData; + } + + public void AddSerieData(SerieData serieData) + { + if (m_InsertDataToHead) + m_Data.Insert(0, serieData); + else + m_Data.Add(serieData); + SetVerticesDirty(); + dataDirty = true; + m_NeedUpdateFilterData = true; + } + + private void CheckDataName(string dataName) + { + if (string.IsNullOrEmpty(dataName)) + SetSerieNameDirty(); + else + m_ShowDataName = true; + } + + /// <summary> + /// 添加(x,y)数据到维度X和维度Y + /// </summary> + /// <param name="xValue"></param> + /// <param name="yValue"></param> + /// <param name="dataName"></param> + /// <param name="dataId">the unique id of data</param> + public SerieData AddXYData(double xValue, double yValue, string dataName = null, string dataId = null) + { + CheckMaxCache(); + var serieData = SerieDataPool.Get(); + serieData.data.Clear(); + serieData.data.Add(xValue); + serieData.data.Add(yValue); + serieData.name = dataName; + serieData.index = m_Data.Count; + serieData.id = dataId; + AddSerieData(serieData); + m_ShowDataDimension = 2; + SetVerticesDirty(); + CheckDataName(dataName); + labelDirty = true; + return serieData; + } + + /// <summary> + /// 添加 (open, close, lowest, heighest) 数据 + /// </summary> + /// <param name="open"></param> + /// <param name="close"></param> + /// <param name="lowest"></param> + /// <param name="heighest"></param> + /// <param name="dataName"></param> + /// <param name="dataId">the unique id of data</param> + /// <returns></returns> + public SerieData AddData(double open, double close, double lowest, double heighest, string dataName = null, string dataId = null) + { + CheckMaxCache(); + var serieData = SerieDataPool.Get(); + serieData.data.Clear(); + serieData.data.Add(open); + serieData.data.Add(close); + serieData.data.Add(lowest); + serieData.data.Add(heighest); + serieData.name = dataName; + serieData.index = m_Data.Count; + serieData.id = dataId; + AddSerieData(serieData); + m_ShowDataDimension = 4; + SetVerticesDirty(); + CheckDataName(dataName); + labelDirty = true; + return serieData; + } + + /// <summary> + /// 将一组数据添加到系列中。 + /// 如果数据只有一个,默认添加到维度Y中。 + /// </summary> + /// <param name="valueList"></param> + /// <param name="dataName"></param> + /// <param name="dataId">the unique id of data</param> + public SerieData AddData(List<double> valueList, string dataName = null, string dataId = null) + { + if (valueList == null || valueList.Count == 0) return null; + if (valueList.Count == 1) + return AddYData(valueList[0], dataName, dataId); + else if (valueList.Count == 2) + return AddXYData(valueList[0], valueList[1], dataName, dataId); + else + { + CheckMaxCache(); + m_ShowDataDimension = valueList.Count; + var serieData = SerieDataPool.Get(); + serieData.name = dataName; + serieData.index = m_Data.Count; + serieData.id = dataId; + for (int i = 0; i < valueList.Count; i++) + { + serieData.data.Add(valueList[i]); + } + AddSerieData(serieData); + SetVerticesDirty(); + CheckDataName(dataName); + labelDirty = true; + return serieData; + } + } + + public SerieData AddChildData(SerieData parent, double value, string name, string id) + { + var serieData = new SerieData(); + serieData.name = name; + serieData.index = m_Data.Count; + serieData.id = id; + serieData.data = new List<double>() { m_Data.Count, value }; + AddChildData(parent, serieData); + return serieData; + } + + public SerieData AddChildData(SerieData parent, List<double> value, string name, string id) + { + var serieData = new SerieData(); + serieData.name = name; + serieData.index = m_Data.Count; + serieData.id = id; + serieData.data = new List<double>(value); + AddChildData(parent, serieData); + return serieData; + } + + public void AddChildData(SerieData parent, SerieData serieData) + { + serieData.parentId = parent.id; + serieData.context.parent = parent; + + if (!m_Data.Contains(serieData)) + AddSerieData(serieData); + + if (!parent.context.children.Contains(serieData)) + { + parent.context.children.Add(serieData); + } + } + + private void CheckMaxCache() + { + if (m_MaxCache <= 0) return; + while (m_Data.Count >= m_MaxCache) + { + m_NeedUpdateFilterData = true; + if (m_InsertDataToHead) RemoveData(m_Data.Count - 1); + else RemoveData(0); + } + } + + /// <summary> + /// 获得指定index指定维数的数据 + /// </summary> + /// <param name="index"></param> + /// <param name="dimension"></param> + /// <param name="dataZoom"></param> + /// <returns></returns> + public double GetData(int index, int dimension, DataZoom dataZoom = null) + { + if (index < 0 || dimension < 0) return 0; + var serieData = GetSerieData(index, dataZoom); + if (serieData != null && dimension < serieData.data.Count) + { + var value = serieData.GetData(dimension); + if (showAsPositiveNumber) + value = Math.Abs(value); + return value; + } + else + { + return 0; + } + } + + /// <summary> + /// 获得维度Y索引对应的数据 + /// </summary> + /// <param name="index"></param> + /// <param name="dataZoom"></param> + /// <returns></returns> + public double GetYData(int index, DataZoom dataZoom = null) + { + if (index < 0) return 0; + var serieData = GetDataList(dataZoom); + if (index < serieData.Count) + { + var value = serieData[index].data[1]; + if (showAsPositiveNumber) + value = Math.Abs(value); + return value; + } + return 0; + } + + public double GetYCurrData(int index, DataZoom dataZoom = null) + { + if (index < 0) return 0; + var serieData = GetDataList(dataZoom); + if (index < serieData.Count) + { + var value = serieData[index].GetCurrData(1, animation.GetUpdateAnimationDuration()); + if (showAsPositiveNumber) + value = Math.Abs(value); + return value; + } + return 0; + } + + /// <summary> + /// 获得维度Y索引对应的数据和数据名 + /// </summary> + /// <param name="index">索引</param> + /// <param name="yData">对应的数据值</param> + /// <param name="dataName">对应的数据名</param> + /// <param name="dataZoom">区域缩放</param> + public void GetYData(int index, out double yData, out string dataName, DataZoom dataZoom = null) + { + yData = 0; + dataName = null; + if (index < 0) return; + var serieData = GetDataList(dataZoom); + if (index < serieData.Count) + { + yData = serieData[index].data[1]; + if (showAsPositiveNumber) + yData = Math.Abs(yData); + dataName = serieData[index].name; + } + } + + /// <summary> + /// 获得指定索引的数据项 + /// </summary> + /// <param name="index"></param> + /// <param name="dataZoom"></param> + /// <returns></returns> + public SerieData GetSerieData(int index, DataZoom dataZoom = null) + { + var data = GetDataList(dataZoom); + if (index >= 0 && index <= data.Count - 1) + return data[index]; + return null; + } + + public SerieData GetSerieData(string id, DataZoom dataZoom = null) + { + var data = GetDataList(dataZoom); + foreach (var serieData in data) + { + var target = GetSerieData(serieData, id); + if (target != null) return target; + } + return null; + } + + public SerieData GetSerieData(SerieData parent, string id) + { + if (id.Equals(parent.id)) return parent; + foreach (var child in parent.context.children) + { + var data = GetSerieData(child, id); + if (data != null) + { + return data; + } + } + return null; + } + + /// <summary> + /// 获得指定索引的维度X和维度Y的数据 + /// </summary> + /// <param name="index"></param> + /// <param name="dataZoom"></param> + /// <param name="xValue"></param> + /// <param name="yVlaue"></param> + public void GetXYData(int index, DataZoom dataZoom, out double xValue, out double yVlaue) + { + xValue = 0; + yVlaue = 0; + if (index < 0) return; + var showData = GetDataList(dataZoom); + if (index < showData.Count) + { + var serieData = showData[index]; + xValue = serieData.data[0]; + yVlaue = serieData.data[1]; + if (showAsPositiveNumber) + { + xValue = Math.Abs(xValue); + yVlaue = Math.Abs(yVlaue); + } + } + } + + public virtual double GetDataTotal(int dimension, SerieData serieData = null) + { + if (m_Max > 0) return m_Max; + + double total = 0; + foreach (var sdata in data) + { + if (sdata.show) + total += sdata.GetData(dimension); + } + return total; + } + + /// <summary> + /// 获得系列的数据列表 + /// </summary> + /// <param name="dataZoom"></param> + /// <returns></returns> + public List<SerieData> GetDataList(DataZoom dataZoom = null) + { + if (dataZoom != null && dataZoom.enable && + (dataZoom.IsContainsXAxis(xAxisIndex) || dataZoom.IsContainsYAxis(yAxisIndex))) + { + SerieHelper.UpdateFilterData(this, dataZoom); + return m_FilterData; + } + else + { + return useSortData && context.sortedData.Count > 0 ? context.sortedData : m_Data; + } + } + + /// <summary> + /// 更新指定索引的维度Y数据 + /// </summary> + /// <param name="index"></param> + /// <param name="value"></param> + public bool UpdateYData(int index, double value) + { + UpdateData(index, 1, value); + return true; + } + + /// <summary> + /// 更新指定索引的维度X和维度Y的数据 + /// </summary> + /// <param name="index"></param> + /// <param name="xValue"></param> + /// <param name="yValue"></param> + public bool UpdateXYData(int index, float xValue, float yValue) + { + var flag1 = UpdateData(index, 0, xValue); + var flag2 = UpdateData(index, 1, yValue); + return flag1 || flag2; + } + + /// <summary> + /// 更新指定索引指定维数的数据 + /// </summary> + /// <param name="index">要更新数据的索引</param> + /// <param name="dimension">要更新数据的维数</param> + /// <param name="value">新的数据值</param> + public bool UpdateData(int index, int dimension, double value) + { + if (index >= 0 && index < m_Data.Count) + { + var animationOpen = animation.enable; + var animationDuration = animation.GetUpdateAnimationDuration(); + var flag = m_Data[index].UpdateData(dimension, value, animationOpen, animationDuration); + if (flag) + { + SetVerticesDirty(); + dataDirty = true; + } + return flag; + } + else + { + return false; + } + } + + /// <summary> + /// 更新指定索引的数据项数据列表 + /// </summary> + /// <param name="index"></param> + /// <param name="values"></param> + public bool UpdateData(int index, List<double> values) + { + if (index >= 0 && index < m_Data.Count && values != null) + { + var serieData = m_Data[index]; + var animationOpen = animation.enable; + var animationDuration = animation.GetUpdateAnimationDuration(); + for (int i = 0; i < values.Count; i++) + serieData.UpdateData(i, values[i], animationOpen, animationDuration); + SetVerticesDirty(); + dataDirty = true; + return true; + } + return false; + } + + public bool UpdateDataName(int index, string name) + { + if (index >= 0 && index < m_Data.Count) + { + var serieData = m_Data[index]; + serieData.name = name; + SetSerieNameDirty(); + if (serieData.labelObject != null) + { + serieData.labelObject.SetText(name == null ? "" : name); + } + return true; + } + return false; + } + + /// <summary> + /// 清除所有数据的高亮标志 + /// </summary> + public void ClearHighlight() + { + highlight = false; + foreach (var serieData in m_Data) + serieData.context.highlight = false; + } + + /// <summary> + /// 设置指定索引的数据为高亮状态 + /// </summary> + public void SetHighlight(int index, bool flag) + { + var serieData = GetSerieData(index); + if (serieData != null) + serieData.context.highlight = flag; + } + + public float GetBarWidth(float categoryWidth, int barCount = 0) + { + if (m_BarWidth == 0) + { + var width = ChartHelper.GetActualValue(0.6f, categoryWidth); + if (barCount == 0) + return width < 1 ? categoryWidth : width; + else + return width / barCount; + } + else + return ChartHelper.GetActualValue(m_BarWidth, categoryWidth); + } + + public bool IsIgnoreIndex(int index, int dimension = 1) + { + var serieData = GetSerieData(index); + if (serieData != null) + return IsIgnoreValue(serieData, dimension); + return false; + } + + public bool IsIgnoreValue(SerieData serieData, int dimension = 1) + { + return serieData.ignore || IsIgnoreValue(serieData.GetData(dimension)); + } + + public bool IsIgnoreValue(double value) + { + return m_Ignore && MathUtil.Approximately(value, m_IgnoreValue); + } + + public bool IsIgnorePoint(int index) + { + if (index >= 0 && index < dataCount) + { + return ChartHelper.IsIngore(data[index].context.position); + } + return false; + } + + public bool IsSerie<T>() where T : Serie + { + return this is T; + } + + public bool IsUseCoord<T>() where T : CoordSystem + { + return ChartCached.GetTypeName<T>().Equals(m_CoordSystem); + } + + public bool SetCoord<T>() where T : CoordSystem + { + if (GetType().IsDefined(typeof(CoordOptionsAttribute), false)) + { + var attribute = GetType().GetAttribute<CoordOptionsAttribute>(); + if (attribute.Contains<T>()) + { + m_CoordSystem = typeof(T).Name; + return true; + } + } + Debug.LogError("not support coord system:" + typeof(T)); + return false; + } + + /// <summary> + /// 是否为性能模式。性能模式下不绘制Symbol,不刷新Label,不单独设置数据项配置。 + /// </summary> + public bool IsPerformanceMode() + { + return m_Large && m_Data.Count > m_LargeThreshold; + } + + public bool IsLegendName(string legendName) + { + if (useDataNameForColor) + { + return IsSerieDataLegendName(legendName) || IsSerieLegendName(legendName); + } + else + { + return IsSerieLegendName(legendName); + } + } + + public bool IsSerieLegendName(string legendName) + { + return legendName.Equals(this.legendName); + } + + public bool IsSerieDataLegendName(string legendName) + { + foreach (var serieData in m_Data) + { + if (legendName.Equals(serieData.legendName)) + return true; + } + return false; + } + + /// <summary> + /// 启用或取消初始动画 + /// </summary> + public void AnimationEnable(bool flag) + { + if (animation.enable) animation.enable = flag; + SetVerticesDirty(); + } + + /// <summary> + /// 渐入动画 + /// </summary> + public void AnimationFadeIn() + { + if (animation.enable) animation.FadeIn(); + SetVerticesDirty(); + } + + /// <summary> + /// 渐出动画 + /// </summary> + public void AnimationFadeOut() + { + if (animation.enable) animation.FadeOut(); + SetVerticesDirty(); + } + + /// <summary> + /// 暂停动画 + /// </summary> + public void AnimationPause() + { + if (animation.enable) animation.Pause(); + SetVerticesDirty(); + } + + /// <summary> + /// 继续动画 + /// </summary> + public void AnimationResume() + { + if (animation.enable) animation.Resume(); + SetVerticesDirty(); + } + + /// <summary> + /// 重置动画 + /// </summary> + public void AnimationReset() + { + if (animation.enable) animation.Reset(); + SetVerticesDirty(); + } + + /// <summary> + /// 重置动画 + /// </summary> + public void AnimationRestart() + { + if (animation.enable) animation.Restart(); + SetVerticesDirty(); + } + + public int CompareTo(object obj) + { + return index.CompareTo((obj as Serie).index); + } + + public T Clone<T>() where T : Serie + { + var newSerie = Activator.CreateInstance<T>(); + SerieHelper.CopySerie(this, newSerie); + return newSerie; + } + + public Serie Clone() + { + var newSerie = Activator.CreateInstance(GetType()) as Serie; + SerieHelper.CopySerie(this, newSerie); + return newSerie; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/Serie.cs.meta b/Assets/XCharts/Runtime/Serie/Serie.cs.meta new file mode 100644 index 0000000..5a02397 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/Serie.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa9c09045961a4ea9a34a098f099f2a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/SerieContext.cs b/Assets/XCharts/Runtime/Serie/SerieContext.cs new file mode 100644 index 0000000..931513f --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieContext.cs @@ -0,0 +1,109 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public struct PointInfo + { + public Vector3 position; + public bool isIgnoreBreak; + + public PointInfo(Vector3 pos, bool ignore) + { + this.position = pos; + this.isIgnoreBreak = ignore; + } + } + + public class SerieContext + { + /// <summary> + /// 鼠标是否进入serie + /// </summary> + public bool pointerEnter; + /// <summary> + /// 鼠标当前指示的数据项索引(单个) + /// </summary> + public int pointerItemDataIndex = -1; + /// <summary> + /// 鼠标所在轴线上的数据项索引(可能有多个) + /// </summary> + public List<int> pointerAxisDataIndexs = new List<int>(); + public bool isTriggerByAxis = false; + + /// <summary> + /// 中心点 + /// </summary> + public Vector3 center; + /// <summary> + /// 线段终点 + /// </summary> + public Vector3 lineEndPostion; + public double lineEndValue; + /// <summary> + /// 内半径 + /// </summary> + public float insideRadius; + /// <summary> + /// 外半径 + /// </summary> + public float outsideRadius; + public float startAngle; + /// <summary> + /// 最大值 + /// </summary> + public double dataMax; + /// <summary> + /// 最小值 + /// </summary> + public double dataMin; + public double checkValue; + /// <summary> + /// 左下角坐标X + /// </summary> + public float x; + /// <summary> + /// 左下角坐标Y + /// </summary> + public float y; + /// <summary> + /// 宽 + /// </summary> + public float width; + /// <summary> + /// 高 + /// </summary> + public float height; + /// <summary> + /// 矩形区域 + /// </summary> + public Rect rect; + /// <summary> + /// 绘制顶点数 + /// </summary> + public int vertCount; + /// <summary> + /// 数据对应的位置坐标。 + /// </summary> + public List<Vector3> dataPoints = new List<Vector3>(); + /// <summary> + /// 数据对应的位置坐标是否忽略(忽略时连线是透明的),dataIgnore 和 dataPoints 一一对应。 + /// </summary> + public List<bool> dataIgnores = new List<bool>(); + /// <summary> + /// 排序后的数据 + /// </summary> + public List<SerieData> sortedData = new List<SerieData>(); + public List<SerieData> rootData = new List<SerieData>(); + /// <summary> + /// theme的颜色索引 + /// </summary> + public int colorIndex; + /// <summary> + /// 绘制点 + /// </summary> + public List<PointInfo> drawPoints = new List<PointInfo>(); + public SerieParams param = new SerieParams(); + public ChartLabel titleObject { get; set; } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/SerieContext.cs.meta b/Assets/XCharts/Runtime/Serie/SerieContext.cs.meta new file mode 100644 index 0000000..0966877 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87f333572a32a4cb39aa0a05ed97983a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/SerieData.cs b/Assets/XCharts/Runtime/Serie/SerieData.cs new file mode 100644 index 0000000..bfa99c1 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieData.cs @@ -0,0 +1,565 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using XUGL; + +namespace XCharts.Runtime +{ + /// <summary> + /// A data item of serie. + /// |系列中的一个数据项。可存储数据名和1-n维个数据。 + /// </summary> + [System.Serializable] + public class SerieData : ChildComponent + { + public static List<string> extraFieldList = new List<string>() + { + "m_Id", + "m_ParentId", + "m_Ignore", + "m_Selected", + "m_Radius" + }; + public static Dictionary<Type, string> extraComponentMap = new Dictionary<Type, string> + { { typeof(ItemStyle), "m_ItemStyles" }, + { typeof(LabelStyle), "m_Labels" }, + { typeof(LabelLine), "m_LabelLines" }, + { typeof(SerieSymbol), "m_Symbols" }, + { typeof(LineStyle), "m_LineStyles" }, + { typeof(AreaStyle), "m_AreaStyles" }, + { typeof(TitleStyle), "m_TitleStyles" }, + { typeof(EmphasisItemStyle), "m_EmphasisItemStyles" }, + { typeof(EmphasisLabelStyle), "m_EmphasisLabels" }, + { typeof(EmphasisLabelLine), "m_EmphasisLabelLines" }, + }; + + [SerializeField] private int m_Index; + [SerializeField] private string m_Name; + [SerializeField] private string m_Id; + [SerializeField] private string m_ParentId; + [SerializeField] private bool m_Ignore; + [SerializeField] private bool m_Selected; + [SerializeField] private float m_Radius; + [SerializeField][IgnoreDoc] private List<ItemStyle> m_ItemStyles = new List<ItemStyle>(); + [SerializeField][IgnoreDoc] private List<LabelStyle> m_Labels = new List<LabelStyle>(); + [SerializeField][IgnoreDoc] private List<LabelLine> m_LabelLines = new List<LabelLine>(); + [SerializeField][IgnoreDoc] private List<SerieSymbol> m_Symbols = new List<SerieSymbol>(); + [SerializeField][IgnoreDoc] private List<LineStyle> m_LineStyles = new List<LineStyle>(); + [SerializeField][IgnoreDoc] private List<AreaStyle> m_AreaStyles = new List<AreaStyle>(); + [SerializeField][IgnoreDoc] private List<TitleStyle> m_TitleStyles = new List<TitleStyle>(); + [SerializeField][IgnoreDoc] private List<EmphasisItemStyle> m_EmphasisItemStyles = new List<EmphasisItemStyle>(); + [SerializeField][IgnoreDoc] private List<EmphasisLabelStyle> m_EmphasisLabels = new List<EmphasisLabelStyle>(); + [SerializeField][IgnoreDoc] private List<EmphasisLabelLine> m_EmphasisLabelLines = new List<EmphasisLabelLine>(); + [SerializeField] private List<double> m_Data = new List<double>(); + + [NonSerialized] public SerieDataContext context = new SerieDataContext(); + [NonSerialized] public InteractData interact = new InteractData(); + + public ChartLabel labelObject { get; set; } + public ChartLabel titleObject { get; set; } + + private bool m_Show = true; + /// <summary> + /// the index of SerieData. + /// |数据项索引。 + /// </summary> + public override int index { get { return m_Index; } set { m_Index = value; } } + /// <summary> + /// the name of data item. + /// |数据项名称。 + /// </summary> + public string name { get { return m_Name; } set { m_Name = value; } } + /// <summary> + /// the id of data. + /// |数据项的唯一id。唯一id不是必须设置的。 + /// </summary> + public string id { get { return m_Id; } set { m_Id = value; } } + /// <summary> + /// the id of parent SerieData. + /// |父节点id。父节点id不是必须设置的。 + /// </summary> + public string parentId { get { return m_ParentId; } set { m_ParentId = value; } } + /// <summary> + /// 是否忽略数据。当为 true 时,数据不进行绘制。 + /// </summary> + public bool ignore + { + get { return m_Ignore; } + set { if (PropertyUtil.SetStruct(ref m_Ignore, value)) SetVerticesDirty(); } + } + /// <summary> + /// 自定义半径。可用在饼图中自定义某个数据项的半径。 + /// </summary> + public float radius { get { return m_Radius; } set { m_Radius = value; } } + /// <summary> + /// Whether the data item is selected. + /// |该数据项是否被选中。 + /// </summary> + public bool selected { get { return m_Selected; } set { m_Selected = value; } } + /// <summary> + /// 数据项图例名称。当数据项名称不为空时,图例名称即为系列名称;反之则为索引index。 + /// </summary> + /// <value></value> + public string legendName { get { return string.IsNullOrEmpty(name) ? ChartCached.IntToStr(index) : name; } } + + /// <summary> + /// 单个数据项的标签设置。 + /// </summary> + public LabelStyle labelStyle { get { return m_Labels.Count > 0 ? m_Labels[0] : null; } } + public LabelLine labelLine { get { return m_LabelLines.Count > 0 ? m_LabelLines[0] : null; } } + /// <summary> + /// 单个数据项的样式设置。 + /// </summary> + public ItemStyle itemStyle { get { return m_ItemStyles.Count > 0 ? m_ItemStyles[0] : null; } } + /// <summary> + /// 单个数据项的标记设置。 + /// </summary> + public SerieSymbol symbol { get { return m_Symbols.Count > 0 ? m_Symbols[0] : null; } } + public LineStyle lineStyle { get { return m_LineStyles.Count > 0 ? m_LineStyles[0] : null; } } + public AreaStyle areaStyle { get { return m_AreaStyles.Count > 0 ? m_AreaStyles[0] : null; } } + public TitleStyle titleStyle { get { return m_TitleStyles.Count > 0 ? m_TitleStyles[0] : null; } } + /// <summary> + /// 高亮的图形样式 + /// </summary> + public EmphasisItemStyle emphasisItemStyle { get { return m_EmphasisItemStyles.Count > 0 ? m_EmphasisItemStyles[0] : null; } } + /// <summary> + /// 高亮时的标签样式 + /// </summary> + public EmphasisLabelStyle emphasisLabel { get { return m_EmphasisLabels.Count > 0 ? m_EmphasisLabels[0] : null; } } + /// <summary> + /// 高亮时的标签引导线样式 + /// </summary> + public EmphasisLabelLine emphasisLabelLine { get { return m_EmphasisLabelLines.Count > 0 ? m_EmphasisLabelLines[0] : null; } } + + /// <summary> + /// An arbitrary dimension data list of data item. + /// |可指定任意维数的数值列表。 + /// </summary> + public List<double> data { get { return m_Data; } set { m_Data = value; } } + /// <summary> + /// [default:true] Whether the data item is showed. + /// |该数据项是否要显示。 + /// </summary> + public bool show { get { return m_Show; } set { m_Show = value; } } + + private List<double> m_PreviousData = new List<double>(); + private List<float> m_DataUpdateTime = new List<float>(); + private List<bool> m_DataUpdateFlag = new List<bool>(); + private List<Vector2> m_PolygonPoints = new List<Vector2>(); + + public override bool vertsDirty + { + get + { + return m_VertsDirty || + (labelLine != null && labelLine.vertsDirty) || + (itemStyle != null && itemStyle.vertsDirty) || + (symbol != null && symbol.vertsDirty) || + (lineStyle != null && lineStyle.vertsDirty) || + (areaStyle != null && areaStyle.vertsDirty) || + (emphasisItemStyle != null && emphasisItemStyle.vertsDirty); + } + } + public override bool componentDirty + { + get + { + return m_ComponentDirty || + (labelStyle != null && labelStyle.componentDirty) || + (labelLine != null && labelLine.componentDirty) || + (titleStyle != null && titleStyle.componentDirty) || + (emphasisLabel != null && emphasisLabel.componentDirty) || + (emphasisLabelLine != null && emphasisLabelLine.componentDirty); + } + } + + public override void ClearVerticesDirty() + { + base.ClearVerticesDirty(); + if (labelLine != null) labelLine.ClearVerticesDirty(); + if (itemStyle != null) itemStyle.ClearVerticesDirty(); + if (lineStyle != null) lineStyle.ClearVerticesDirty(); + if (areaStyle != null) areaStyle.ClearVerticesDirty(); + if (symbol != null) symbol.ClearVerticesDirty(); + if (emphasisItemStyle != null) emphasisItemStyle.ClearVerticesDirty(); + } + + public override void ClearComponentDirty() + { + base.ClearComponentDirty(); + if (labelLine != null) labelLine.ClearComponentDirty(); + if (itemStyle != null) itemStyle.ClearComponentDirty(); + if (lineStyle != null) lineStyle.ClearComponentDirty(); + if (areaStyle != null) areaStyle.ClearComponentDirty(); + if (symbol != null) symbol.ClearComponentDirty(); + if (emphasisLabel != null) emphasisLabel.ClearComponentDirty(); + if (emphasisLabelLine != null) emphasisLabelLine.ClearComponentDirty(); + } + + public void Reset() + { + index = 0; + m_Id = null; + m_ParentId = null; + labelObject = null; + m_Name = string.Empty; + m_Show = true; + context.Reset(); + interact.Reset(); + m_Data.Clear(); + m_PreviousData.Clear(); + m_DataUpdateTime.Clear(); + m_DataUpdateFlag.Clear(); + m_Labels.Clear(); + m_LabelLines.Clear(); + m_ItemStyles.Clear(); + m_Symbols.Clear(); + m_LineStyles.Clear(); + m_AreaStyles.Clear(); + m_TitleStyles.Clear(); + m_EmphasisItemStyles.Clear(); + m_EmphasisLabels.Clear(); + m_EmphasisLabelLines.Clear(); + } + + public T GetOrAddComponent<T>() where T : ChildComponent, ISerieDataComponent + { + return GetOrAddComponent(typeof(T)) as T; + } + + public ISerieDataComponent GetOrAddComponent(Type type) + { + if (type == typeof(ItemStyle)) + { + if (m_ItemStyles.Count == 0) + m_ItemStyles.Add(new ItemStyle() { show = true }); + return m_ItemStyles[0]; + } + else if (type == typeof(LabelStyle)) + { + if (m_Labels.Count == 0) + m_Labels.Add(new LabelStyle() { show = true }); + return m_Labels[0]; + } + else if (type == typeof(LabelLine)) + { + if (m_LabelLines.Count == 0) + m_LabelLines.Add(new LabelLine() { show = true }); + return m_LabelLines[0]; + } + else if (type == typeof(EmphasisItemStyle)) + { + if (m_EmphasisItemStyles.Count == 0) + m_EmphasisItemStyles.Add(new EmphasisItemStyle() { show = true }); + return m_EmphasisItemStyles[0]; + } + else if (type == typeof(EmphasisLabelStyle)) + { + if (m_EmphasisLabels.Count == 0) + m_EmphasisLabels.Add(new EmphasisLabelStyle() { show = true }); + return m_EmphasisLabels[0]; + } + else if (type == typeof(EmphasisLabelLine)) + { + if (m_EmphasisLabelLines.Count == 0) + m_EmphasisLabelLines.Add(new EmphasisLabelLine() { show = true }); + return m_EmphasisLabelLines[0]; + } + else if (type == typeof(SerieSymbol)) + { + if (m_Symbols.Count == 0) + m_Symbols.Add(new SerieSymbol() { show = true }); + return m_Symbols[0]; + } + else if (type == typeof(LineStyle)) + { + if (m_LineStyles.Count == 0) + m_LineStyles.Add(new LineStyle() { show = true }); + return m_LineStyles[0]; + } + else if (type == typeof(AreaStyle)) + { + if (m_AreaStyles.Count == 0) + m_AreaStyles.Add(new AreaStyle() { show = true }); + return m_AreaStyles[0]; + } + else if (type == typeof(TitleStyle)) + { + if (m_TitleStyles.Count == 0) + m_TitleStyles.Add(new TitleStyle() { show = true }); + return m_TitleStyles[0]; + } + else + { + throw new System.Exception("SerieData not support component:" + type); + } + } + + public void RemoveAllComponent() + { + m_ItemStyles.Clear(); + m_Labels.Clear(); + m_LabelLines.Clear(); + m_Symbols.Clear(); + m_EmphasisItemStyles.Clear(); + m_EmphasisLabels.Clear(); + m_EmphasisLabelLines.Clear(); + m_LineStyles.Clear(); + m_AreaStyles.Clear(); + m_TitleStyles.Clear(); + } + + public void RemoveComponent<T>() where T : ISerieDataComponent + { + RemoveComponent(typeof(T)); + } + + public void RemoveComponent(Type type) + { + if (type == typeof(ItemStyle)) + m_ItemStyles.Clear(); + else if (type == typeof(LabelStyle)) + m_Labels.Clear(); + else if (type == typeof(LabelLine)) + m_LabelLines.Clear(); + else if (type == typeof(EmphasisItemStyle)) + m_EmphasisItemStyles.Clear(); + else if (type == typeof(EmphasisLabelStyle)) + m_EmphasisLabels.Clear(); + else if (type == typeof(EmphasisLabelLine)) + m_EmphasisLabelLines.Clear(); + else if (type == typeof(SerieSymbol)) + m_Symbols.Clear(); + else if (type == typeof(LineStyle)) + m_LineStyles.Clear(); + else if (type == typeof(AreaStyle)) + m_AreaStyles.Clear(); + else if (type == typeof(TitleStyle)) + m_TitleStyles.Clear(); + else + throw new System.Exception("SerieData not support component:" + type); + } + public double GetData(int index, bool inverse = false) + { + if (index >= 0 && index < m_Data.Count) + { + return inverse ? -m_Data[index] : m_Data[index]; + } + else return 0; + } + + public double GetData(int index, double min, double max) + { + if (index >= 0 && index < m_Data.Count) + { + var value = m_Data[index]; + if (value < min) return min; + else if (value > max) return max; + else return value; + } + else return 0; + } + + public double GetPreviousData(int index, bool inverse = false) + { + if (index >= 0 && index < m_PreviousData.Count) + { + return inverse ? -m_PreviousData[index] : m_PreviousData[index]; + } + else return 0; + } + + public double GetFirstData(float animationDuration = 500f) + { + if (m_Data.Count > 0) return GetCurrData(0, animationDuration); + return 0; + } + + public double GetLastData() + { + if (m_Data.Count > 0) return m_Data[m_Data.Count - 1]; + return 0; + } + + public double GetCurrData(int index, float animationDuration = 500f, bool inverse = false) + { + return GetCurrData(index, animationDuration, inverse, 0, 0); + } + + public double GetCurrData(int index, float animationDuration, bool inverse, double min, double max) + { + if (index < m_DataUpdateFlag.Count && m_DataUpdateFlag[index] && animationDuration > 0) + { + var time = Time.time - m_DataUpdateTime[index]; + var total = animationDuration / 1000; + + var rate = time / total; + if (rate > 1) rate = 1; + if (rate < 1) + { + CheckLastData(); + var curr = MathUtil.Lerp(GetPreviousData(index), GetData(index), rate); + if (min != 0 || max != 0) + { + if (inverse) + { + var temp = min; + min = -max; + max = -temp; + } + var pre = m_PreviousData[index]; + if (pre < min) + { + m_PreviousData[index] = min; + curr = min; + } + else if (pre > max) + { + m_PreviousData[index] = max; + curr = max; + } + } + curr = inverse ? -curr : curr; + return curr; + } + else + { + m_DataUpdateFlag[index] = false; + return GetData(index, inverse); + } + } + else + { + return GetData(index, inverse); + } + } + + /// <summary> + /// the maxinum value. + /// |最大值。 + /// </summary> + public double GetMaxData(bool inverse = false) + { + if (m_Data.Count == 0) return 0; + var temp = double.MinValue; + for (int i = 0; i < m_Data.Count; i++) + { + var value = GetData(i, inverse); + if (value > temp) temp = value; + } + return temp; + } + + /// <summary> + /// the mininum value. + /// |最小值。 + /// </summary> + public double GetMinData(bool inverse = false) + { + if (m_Data.Count == 0) return 0; + var temp = double.MaxValue; + for (int i = 0; i < m_Data.Count; i++) + { + var value = GetData(i, inverse); + if (value < temp) temp = value; + } + return temp; + } + + public double GetTotalData() + { + var total = 0d; + foreach (var value in m_Data) + total += value; + return total; + } + + public bool UpdateData(int dimension, double value, bool updateAnimation, float animationDuration = 500f) + { + if (dimension >= 0 && dimension < data.Count) + { + CheckLastData(); + m_PreviousData[dimension] = GetCurrData(dimension, animationDuration); + //m_PreviousData[dimension] = data[dimension];; + m_DataUpdateTime[dimension] = Time.time; + m_DataUpdateFlag[dimension] = updateAnimation; + data[dimension] = value; + return true; + } + return false; + } + + public bool UpdateData(int dimension, double value) + { + if (dimension >= 0 && dimension < data.Count) + { + data[dimension] = value; + return true; + } + return false; + } + + private void CheckLastData() + { + if (m_PreviousData.Count != m_Data.Count) + { + m_PreviousData.Clear(); + m_DataUpdateTime.Clear(); + m_DataUpdateFlag.Clear(); + for (int i = 0; i < m_Data.Count; i++) + { + m_PreviousData.Add(m_Data[i]); + m_DataUpdateTime.Add(Time.time); + m_DataUpdateFlag.Add(false); + } + } + } + + public bool IsDataChanged() + { + for (int i = 0; i < m_DataUpdateFlag.Count; i++) + if (m_DataUpdateFlag[i]) return true; + return false; + } + + public float GetLabelWidth() + { + if (labelObject != null) return labelObject.GetTextWidth(); + else return 0; + } + + public float GetLabelHeight() + { + if (labelObject != null) return labelObject.GetTextHeight(); + return 0; + } + + public void SetLabelActive(bool flag) + { + if (labelObject != null) labelObject.SetActive(flag); + } + public void SetIconActive(bool flag) + { + if (labelObject != null) labelObject.SetActive(flag); + } + + public void SetPolygon(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4) + { + m_PolygonPoints.Clear(); + m_PolygonPoints.Add(p1); + m_PolygonPoints.Add(p2); + m_PolygonPoints.Add(p3); + m_PolygonPoints.Add(p4); + } + public void SetPolygon(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, Vector2 p5) + { + SetPolygon(p1, p2, p3, p4); + m_PolygonPoints.Add(p5); + } + + public bool IsInPolygon(Vector2 p) + { + return UGLHelper.IsPointInPolygon(p, m_PolygonPoints); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/SerieData.cs.meta b/Assets/XCharts/Runtime/Serie/SerieData.cs.meta new file mode 100644 index 0000000..93cfdac --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbf44007311214228976678a623479b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/SerieDataContext.cs b/Assets/XCharts/Runtime/Serie/SerieDataContext.cs new file mode 100644 index 0000000..d2bdf49 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieDataContext.cs @@ -0,0 +1,84 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public class SerieDataContext + { + public Vector3 labelPosition; + /// <summary> + /// 开始角度 + /// </summary> + public float startAngle; + /// <summary> + /// 结束角度 + /// </summary> + public float toAngle; + /// <summary> + /// 一半时的角度 + /// </summary> + public float halfAngle; + /// <summary> + /// 当前角度 + /// </summary> + public float currentAngle; + /// <summary> + /// 饼图数据项的内半径 + /// </summary> + public float insideRadius; + /// <summary> + /// 饼图数据项的偏移半径 + /// </summary> + public float offsetRadius; + public float outsideRadius; + public Vector3 position; + public List<Vector3> dataPoints = new List<Vector3>(); + public List<ChartLabel> dataLabels = new List<ChartLabel>(); + public List<SerieData> children = new List<SerieData>(); + /// <summary> + /// 绘制区域。 + /// </summary> + public Rect rect; + public Rect backgroundRect; + public Rect subRect; + public int level; + public SerieData parent; + public Color32 color; + public double area; + public float angle; + public Vector3 offsetCenter; + public Vector3 areaCenter; + public float stackHeight; + public bool isClip; + public bool canShowLabel = true; + public Image symbol; + /// <summary> + /// Whether the data item is highlighted. + /// |该数据项是否被高亮,一般由鼠标悬停或图例悬停触发高亮。 + /// </summary> + public bool highlight + { + get { return m_Highligth; } + set + { + m_Highligth = value; + } + } + private bool m_Highligth; + public bool selected; + + public void Reset() + { + canShowLabel = true; + highlight = false; + parent = null; + symbol = null; + rect = Rect.zero; + subRect = Rect.zero; + children.Clear(); + dataPoints.Clear(); + dataLabels.Clear(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/SerieDataContext.cs.meta b/Assets/XCharts/Runtime/Serie/SerieDataContext.cs.meta new file mode 100644 index 0000000..a202cbb --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieDataContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6fa67a86e80b4456cbe76ef4b330f3fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/SerieHandler.cs b/Assets/XCharts/Runtime/Serie/SerieHandler.cs new file mode 100644 index 0000000..8a2594b --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieHandler.cs @@ -0,0 +1,579 @@ +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace XCharts.Runtime +{ + public abstract class SerieHandler + { + public BaseChart chart { get; internal set; } + public SerieHandlerAttribute attribute { get; internal set; } + public virtual int defaultDimension { get; internal set; } + + public virtual void InitComponent() { } + public virtual void RemoveComponent() { } + public virtual void CheckComponent(StringBuilder sb) { } + public virtual void Update() { } + public virtual void DrawBase(VertexHelper vh) { } + public virtual void DrawSerie(VertexHelper vh) { } + public virtual void DrawTop(VertexHelper vh) { } + public virtual void OnPointerClick(PointerEventData eventData) { } + public virtual void OnPointerDown(PointerEventData eventData) { } + public virtual void OnPointerUp(PointerEventData eventData) { } + public virtual void OnPointerEnter(PointerEventData eventData) { } + public virtual void OnPointerExit(PointerEventData eventData) { } + public virtual void OnDrag(PointerEventData eventData) { } + public virtual void OnBeginDrag(PointerEventData eventData) { } + public virtual void OnEndDrag(PointerEventData eventData) { } + public virtual void OnScroll(PointerEventData eventData) { } + public virtual void RefreshLabelNextFrame() { } + public virtual void RefreshLabelInternal() { } + public virtual void UpdateTooltipSerieParams(int dataIndex, bool showCategory, + string category, string marker, + string itemFormatter, string numericFormatter, + ref List<SerieParams> paramList, ref string title) { } + public virtual void OnLegendButtonClick(int index, string legendName, bool show) { } + public virtual void OnLegendButtonEnter(int index, string legendName) { } + public virtual void OnLegendButtonExit(int index, string legendName) { } + internal abstract void SetSerie(Serie serie); + } + + public abstract class SerieHandler<T> : SerieHandler where T : Serie + { + private static readonly string s_SerieLabelObjectName = "label"; + private static readonly string s_SerieTitleObjectName = "title"; + private static readonly string s_SerieRootObjectName = "serie"; + private static readonly string s_SerieEndLabelObjectName = "end_label"; + protected GameObject m_SerieRoot; + protected GameObject m_SerieLabelRoot; + protected bool m_InitedLabel; + protected bool m_NeedInitComponent; + protected bool m_RefreshLabel; + protected bool m_LastCheckContextFlag = false; + protected bool m_LegendEnter = false; + protected int m_LegendEnterIndex; + protected ChartLabel m_EndLabel; + + public T serie { get; internal set; } + public GameObject labelObject { get { return m_SerieLabelRoot; } } + + internal override void SetSerie(Serie serie) + { + this.serie = (T) serie; + this.serie.context.param.serieType = typeof(T); + m_NeedInitComponent = true; + AnimationStyleHelper.UpdateSerieAnimation(serie); + } + + public override void Update() + { + if (m_NeedInitComponent) + { + m_NeedInitComponent = false; + InitComponent(); + } + if (m_RefreshLabel) + { + m_RefreshLabel = false; + RefreshLabelInternal(); + RefreshEndLabelInternal(); + } + if (serie.dataDirty) + { + SeriesHelper.UpdateSerieNameList(chart, ref chart.m_LegendRealShowName); + serie.OnDataUpdate(); + serie.dataDirty = false; + } + if (serie.label != null && (serie.labelDirty || serie.label.componentDirty)) + { + serie.labelDirty = false; + serie.label.ClearComponentDirty(); + InitSerieLabel(); + InitSerieEndLabel(); + } + if (serie.endLabel != null && serie.endLabel.componentDirty) + { + serie.endLabel.ClearComponentDirty(); + InitSerieEndLabel(); + } + if (serie.titleStyle != null && (serie.titleDirty || serie.titleStyle.componentDirty)) + { + serie.titleDirty = false; + serie.titleStyle.ClearComponentDirty(); + InitSerieTitle(); + } + if (serie.nameDirty) + { + foreach (var component in chart.components) + { + if (component is Legend) + component.SetAllDirty(); + } + chart.RefreshChart(); + serie.ClearSerieNameDirty(); + } + if (serie.vertsDirty) + { + chart.RefreshPainter(serie); + serie.ResetInteract(); + serie.ClearVerticesDirty(); + } + } + + public override void RefreshLabelNextFrame() + { + m_RefreshLabel = true; + } + + public override void InitComponent() + { + m_InitedLabel = false; + InitRoot(); + InitSerieLabel(); + InitSerieTitle(); + InitSerieEndLabel(); + } + + public override void RemoveComponent() + { + ChartHelper.SetActive(m_SerieRoot, false); + } + + public override void OnLegendButtonClick(int index, string legendName, bool show) + { + if (serie.useDataNameForColor && serie.IsSerieDataLegendName(legendName)) + { + LegendHelper.CheckDataShow(serie, legendName, show); + chart.UpdateLegendColor(legendName, show); + chart.RefreshPainter(serie); + } + else if (serie.IsLegendName(legendName)) + { + chart.SetSerieActive(serie, show); + chart.RefreshPainter(serie); + } + } + + public override void OnLegendButtonEnter(int index, string legendName) + { + if (serie.useDataNameForColor && serie.IsSerieDataLegendName(legendName)) + { + LegendHelper.CheckDataHighlighted(serie, legendName, true); + chart.RefreshPainter(serie); + } + else if (serie.IsLegendName(legendName)) + { + m_LegendEnter = true; + chart.RefreshPainter(serie); + } + } + + public override void OnLegendButtonExit(int index, string legendName) + { + if (serie.useDataNameForColor && serie.IsSerieDataLegendName(legendName)) + { + LegendHelper.CheckDataHighlighted(serie, legendName, false); + chart.RefreshPainter(serie); + } + else if (serie.IsLegendName(legendName)) + { + m_LegendEnter = false; + chart.RefreshPainter(serie); + } + } + + private void InitRoot() + { + if (m_SerieRoot != null) + { + var rect = ChartHelper.GetOrAddComponent<RectTransform>(m_SerieRoot); + rect.localPosition = Vector3.zero; + rect.sizeDelta = chart.chartSizeDelta; + rect.anchorMin = chart.chartMinAnchor; + rect.anchorMax = chart.chartMaxAnchor; + rect.pivot = chart.chartPivot; + return; + } + var objName = s_SerieRootObjectName + "_" + serie.index; + m_SerieRoot = ChartHelper.AddObject(objName, chart.transform, chart.chartMinAnchor, + chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + m_SerieRoot.hideFlags = chart.chartHideFlags; + ChartHelper.SetActive(m_SerieRoot, true); + ChartHelper.HideAllObject(m_SerieRoot); + } + + private void InitSerieLabel() + { + InitRoot(); + m_SerieLabelRoot = ChartHelper.AddObject(s_SerieLabelObjectName, m_SerieRoot.transform, + chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + m_SerieLabelRoot.hideFlags = chart.chartHideFlags; + SerieLabelPool.ReleaseAll(m_SerieLabelRoot.transform); + //ChartHelper.DestroyAllChildren(m_SerieLabelRoot.transform); + int count = 0; + SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight); + for (int j = 0; j < serie.data.Count; j++) + { + var serieData = serie.data[j]; + serieData.index = count; + serieData.labelObject = null; + if (AddSerieLabel(m_SerieLabelRoot, serieData, ref count)) + { + m_InitedLabel = true; + count++; + } + } + RefreshLabelInternal(); + } + + protected bool AddSerieLabel(GameObject serieLabelRoot, SerieData serieData, ref int count) + { + if (serieData == null) + return false; + if (serieLabelRoot == null) + return false; + if (serie.IsPerformanceMode()) + return false; + + if (count == -1) count = serie.dataCount; + var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); + if (serieLabel == null) + { + serieLabel = SerieHelper.GetSerieEmphasisLabel(serie, serieData); + if (serieLabel == null || !serieLabel.show) + return false; + } + + var dataAutoColor = GetSerieDataAutoColor(serieData); + serieData.context.dataLabels.Clear(); + if (serie.multiDimensionLabel) + { + for (int i = 0; i < serieData.data.Count; i++) + { + var textName = string.Format("{0}_{1}_{2}_{3}", s_SerieLabelObjectName, serie.index, serieData.index, i); + var label = ChartHelper.AddChartLabel(textName, serieLabelRoot.transform, serieLabel, chart.theme.common, + "", dataAutoColor, TextAnchor.MiddleCenter); + label.SetActive(serieLabel.show); + serieData.context.dataLabels.Add(label); + } + } + else + { + var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, serie.index, serieData.index); + var label = ChartHelper.AddChartLabel(textName, serieLabelRoot.transform, serieLabel, chart.theme.common, + "", dataAutoColor, TextAnchor.MiddleCenter); + label.SetActive(serieLabel.show); + serieData.labelObject = label; + } + + if (serieData.context.children.Count > 0) + { + foreach (var childSerieData in serieData.context.children) + { + AddSerieLabel(serieLabelRoot, childSerieData, ref count); + count++; + } + } + return true; + } + + private void InitSerieEndLabel() + { + if (serie.endLabel == null) + { + if (m_EndLabel != null) + { + m_EndLabel.SetActive(false); + m_EndLabel = null; + } + return; + } + InitRoot(); + var dataAutoColor = (Color) chart.GetLegendRealShowNameColor(serie.legendName); + m_EndLabel = ChartHelper.AddChartLabel(s_SerieEndLabelObjectName, m_SerieRoot.transform, serie.endLabel, + chart.theme.common, "", dataAutoColor, TextAnchor.MiddleLeft); + m_EndLabel.SetActive(serie.endLabel.show); + RefreshEndLabelInternal(); + } + + private void InitSerieTitle() + { + InitRoot(); + var serieTitleRoot = ChartHelper.AddObject(s_SerieTitleObjectName, m_SerieRoot.transform, + chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); + serieTitleRoot.hideFlags = chart.chartHideFlags; + SerieLabelPool.ReleaseAll(serieTitleRoot.transform); + ChartHelper.RemoveComponent<Text>(serieTitleRoot); + + SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight); + + if (serie.titleJustForSerie) + { + var titleStyle = SerieHelper.GetTitleStyle(serie, null); + if (titleStyle != null) + { + var color = chart.GetItemColor(serie, null); + var content = string.Empty; + if (string.IsNullOrEmpty(titleStyle.formatter)) + { + content = serie.serieName; + } + else + { + content = titleStyle.formatter; + FormatterHelper.ReplaceContent(ref content, 0, titleStyle.numericFormatter, serie, chart); + } + var label = ChartHelper.AddChartLabel("title_" + 0, serieTitleRoot.transform, titleStyle, chart.theme.common, + content, color, TextAnchor.MiddleCenter); + serie.context.titleObject = label; + label.SetActive(titleStyle.show); + var labelPosition = GetSerieDataTitlePosition(null, titleStyle); + var offset = titleStyle.GetOffset(serie.context.insideRadius); + label.SetPosition(labelPosition + offset); + } + } + else + { + for (int i = 0; i < serie.dataCount; i++) + { + var serieData = serie.data[i]; + var titleStyle = SerieHelper.GetTitleStyle(serie, serieData); + if (titleStyle == null) continue; + var color = chart.GetItemColor(serie, serieData); + var content = string.Empty; + if (string.IsNullOrEmpty(titleStyle.formatter)) + { + content = serieData.name; + } + else + { + content = titleStyle.formatter; + FormatterHelper.ReplaceContent(ref content, 0, titleStyle.numericFormatter, serie, chart); + } + FormatterHelper.ReplaceContent(ref content, i, titleStyle.numericFormatter, serie, chart); + var label = ChartHelper.AddChartLabel("title_" + i, serieTitleRoot.transform, titleStyle, chart.theme.common, + content, color, TextAnchor.MiddleCenter); + serieData.titleObject = label; + label.SetActive(titleStyle.show); + var labelPosition = GetSerieDataTitlePosition(serieData, titleStyle); + var offset = titleStyle.GetOffset(serie.context.insideRadius); + label.SetPosition(labelPosition + offset); + } + } + } + + public override void RefreshLabelInternal() + { + if (!m_InitedLabel) + return; + + var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); + foreach (var serieData in serie.data) + { + if (serieData.labelObject == null && serieData.context.dataLabels.Count <= 0) + continue; + var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); + var emphasisLabel = SerieHelper.GetSerieEmphasisLabel(serie, serieData); + var isHighlight = (serieData.context.highlight && emphasisLabel != null && emphasisLabel.show); + var isIgnore = serie.IsIgnoreIndex(serieData.index, defaultDimension); + var currLabel = isHighlight && emphasisLabel != null ? emphasisLabel : serieLabel; + if (serie.show && + currLabel != null && + (currLabel.show || isHighlight) && + serieData.context.canShowLabel && + !isIgnore) + { + if (serie.multiDimensionLabel) + { + var total = serieData.GetTotalData(); + var color = chart.GetItemColor(serie, serieData); + for (int i = 0; i < serieData.context.dataLabels.Count; i++) + { + if (i >= serieData.context.dataPoints.Count) continue; + var labelObject = serieData.context.dataLabels[i]; + var value = serieData.GetCurrData(i, dataChangeDuration); + var content = string.IsNullOrEmpty(currLabel.formatter) ? + ChartCached.NumberToStr(value, serieLabel.numericFormatter) : + SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, + currLabel, color); + var offset = GetSerieDataLabelOffset(serieData, currLabel); + labelObject.SetActive(!isIgnore); + labelObject.SetText(content); + labelObject.SetPosition(serieData.context.dataPoints[i] + offset); + labelObject.UpdateIcon(currLabel.icon); + if (currLabel.textStyle.autoColor) + { + var dataAutoColor = GetSerieDataAutoColor(serieData); + if (!ChartHelper.IsClearColor(dataAutoColor)) + labelObject.SetTextColor(dataAutoColor); + } + } + } + else + { + var value = serieData.GetCurrData(defaultDimension, dataChangeDuration); + var total = serie.GetDataTotal(defaultDimension, serieData); + var color = chart.GetItemColor(serie, serieData); + var content = string.IsNullOrEmpty(currLabel.formatter) ? + ChartCached.NumberToStr(value, serieLabel.numericFormatter) : + SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, + currLabel, color); + serieData.SetLabelActive(!isIgnore); + serieData.labelObject.UpdateIcon(currLabel.icon); + serieData.labelObject.SetText(content); + UpdateLabelPosition(serieData, currLabel); + if (currLabel.textStyle.autoColor) + { + var dataAutoColor = GetSerieDataAutoColor(serieData); + if (!ChartHelper.IsClearColor(dataAutoColor)) + serieData.labelObject.SetTextColor(dataAutoColor); + } + } + } + else + { + serieData.SetLabelActive(false); + foreach (var labelObject in serieData.context.dataLabels) + { + labelObject.SetActive(false); + } + } + } + } + + public virtual void RefreshEndLabelInternal() + { + if (m_EndLabel == null) + return; + var endLabelStyle = serie.endLabel; + if (endLabelStyle == null) + return; + var dataCount = serie.context.drawPoints.Count; + var active = endLabelStyle.show && dataCount > 0; + m_EndLabel.SetActive(active); + if (active) + { + var value = serie.context.lineEndValue; + var content = SerieLabelHelper.GetFormatterContent(serie, null, value, 0, + endLabelStyle, Color.clear); + m_EndLabel.SetText(content); + m_EndLabel.SetPosition(serie.context.lineEndPostion + endLabelStyle.offset); + } + m_EndLabel.isAnimationEnd = serie.animation.IsFinish(); + } + + private void UpdateLabelPosition(SerieData serieData, LabelStyle currLabel) + { + var labelPosition = GetSerieDataLabelPosition(serieData, currLabel); + var offset = GetSerieDataLabelOffset(serieData, currLabel); + serieData.labelObject.SetPosition(labelPosition + offset); + } + + public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label) + { + return ChartHelper.IsZeroVector(serieData.context.labelPosition) ? + serieData.context.position : + serieData.context.labelPosition; + } + + public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label) + { + return label.GetOffset(serie.context.insideRadius); + } + + public virtual Vector3 GetSerieDataTitlePosition(SerieData serieData, TitleStyle titleStyle) + { + return serieData.context.position; + } + + public virtual Color GetSerieDataAutoColor(SerieData serieData) + { + var colorIndex = serie.useDataNameForColor ? serieData.index : serie.index; + return (Color) SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false, false); + } + + protected void UpdateCoordSerieParams(ref List<SerieParams> paramList, ref string title, + int dataIndex, bool showCategory, string category, string marker, + string itemFormatter, string numericFormatter) + { + if (dataIndex < 0) + dataIndex = serie.context.pointerItemDataIndex; + + if (dataIndex < 0) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + if (TooltipHelper.IsIgnoreItemFormatter(itemFormatter)) + return; + + var param = serie.context.param; + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.category = category; + param.dimension = 1; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = serieData.GetData(1); + param.total = serie.yTotal; + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); + param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); + param.itemFormatter = itemFormatter; + param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(showCategory ? category : serie.serieName); + param.columns.Add(ChartCached.NumberToStr(param.value, param.numericFormatter)); + + paramList.Add(param); + } + + protected void UpdateItemSerieParams(ref List<SerieParams> paramList, ref string title, + int dataIndex, string category, string marker, + string itemFormatter, string numericFormatter, int dimension = 1) + { + if (dataIndex < 0) + dataIndex = serie.context.pointerItemDataIndex; + + if (dataIndex < 0) + return; + + var serieData = serie.GetSerieData(dataIndex); + if (serieData == null) + return; + + itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); + if (TooltipHelper.IsIgnoreItemFormatter(itemFormatter)) + return; + + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.name); + + var param = serie.context.param; + param.serieName = serie.serieName; + param.serieIndex = serie.index; + param.category = category; + param.dimension = dimension; + param.serieData = serieData; + param.dataCount = serie.dataCount; + param.value = serieData.GetData(param.dimension); + param.total = SerieHelper.GetMaxData(serie, dimension); + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false); + param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); + param.itemFormatter = itemFormatter; + param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); + param.columns.Clear(); + + param.columns.Add(param.marker); + param.columns.Add(serieData.name); + param.columns.Add(ChartCached.NumberToStr(param.value, param.numericFormatter)); + + paramList.Add(param); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/SerieHandler.cs.meta b/Assets/XCharts/Runtime/Serie/SerieHandler.cs.meta new file mode 100644 index 0000000..87f9fd8 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f2bc0a6a80a84eae9c87842c954bc32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Serie/SerieParams.cs b/Assets/XCharts/Runtime/Serie/SerieParams.cs new file mode 100644 index 0000000..d2948a8 --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieParams.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public class SerieParams + { + public Type serieType; + public int serieIndex; + public string serieName; + public string marker = "●"; + public string category; + public int dimension; + public SerieData serieData; + public int dataCount; + public double value; + public double total; + public Color32 color; + public string itemFormatter; + public string numericFormatter; + public List<string> columns = new List<string>(); + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Serie/SerieParams.cs.meta b/Assets/XCharts/Runtime/Serie/SerieParams.cs.meta new file mode 100644 index 0000000..f8f138f --- /dev/null +++ b/Assets/XCharts/Runtime/Serie/SerieParams.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c46808eb5842743c5b02d03c4c503228 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme.meta b/Assets/XCharts/Runtime/Theme.meta new file mode 100644 index 0000000..6987280 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b421f1dec4b2943d19640698c2504c6b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/AxisTheme.cs b/Assets/XCharts/Runtime/Theme/AxisTheme.cs new file mode 100644 index 0000000..be4496b --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/AxisTheme.cs @@ -0,0 +1,247 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + [Serializable] + public class BaseAxisTheme : ComponentTheme + { + [SerializeField] protected LineStyle.Type m_LineType = LineStyle.Type.Solid; + [SerializeField] protected float m_LineWidth = 1f; + [SerializeField] protected float m_LineLength = 0f; + [SerializeField] protected Color32 m_LineColor; + [SerializeField] protected LineStyle.Type m_SplitLineType = LineStyle.Type.Dashed; + [SerializeField] protected float m_SplitLineWidth = 1f; + [SerializeField] protected float m_SplitLineLength = 0f; + [SerializeField] protected Color32 m_SplitLineColor; + [SerializeField] protected float m_TickWidth = 1f; + [SerializeField] protected float m_TickLength = 5f; + [SerializeField] protected Color32 m_TickColor; + [SerializeField] protected List<Color32> m_SplitAreaColors = new List<Color32>(); + + /// <summary> + /// the type of line. + /// |坐标轴线类型。 + /// </summary> + public LineStyle.Type lineType + { + get { return m_LineType; } + set { if (PropertyUtil.SetStruct(ref m_LineType, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of line. + /// |坐标轴线宽。 + /// </summary> + public float lineWidth + { + get { return m_LineWidth; } + set { if (PropertyUtil.SetStruct(ref m_LineWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the length of line. + /// |坐标轴线长。 + /// </summary> + public float lineLength + { + get { return m_LineLength; } + set { if (PropertyUtil.SetStruct(ref m_LineLength, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of line. + /// |坐标轴线颜色。 + /// </summary> + public Color32 lineColor + { + get { return m_LineColor; } + set { if (PropertyUtil.SetColor(ref m_LineColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// the type of split line. + /// |分割线线类型。 + /// </summary> + public LineStyle.Type splitLineType + { + get { return m_SplitLineType; } + set { if (PropertyUtil.SetStruct(ref m_SplitLineType, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of split line. + /// |分割线线宽。 + /// </summary> + public float splitLineWidth + { + get { return m_SplitLineWidth; } + set { if (PropertyUtil.SetStruct(ref m_SplitLineWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the length of split line. + /// |分割线线长。 + /// </summary> + public float splitLineLength + { + get { return m_SplitLineLength; } + set { if (PropertyUtil.SetStruct(ref m_SplitLineLength, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of line. + /// |分割线线颜色。 + /// </summary> + public Color32 splitLineColor + { + get { return m_SplitLineColor; } + set { if (PropertyUtil.SetColor(ref m_SplitLineColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// the length of tick. + /// |刻度线线长。 + /// </summary> + public float tickLength + { + get { return m_TickLength; } + set { if (PropertyUtil.SetStruct(ref m_TickLength, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of tick. + /// |刻度线线宽。 + /// </summary> + public float tickWidth + { + get { return m_TickWidth; } + set { if (PropertyUtil.SetStruct(ref m_TickWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of tick. + /// |坐标轴线颜色。 + /// </summary> + public Color32 tickColor + { + get { return m_TickColor; } + set { if (PropertyUtil.SetColor(ref m_TickColor, value)) SetVerticesDirty(); } + } + + public List<Color32> splitAreaColors + { + get { return m_SplitAreaColors; } + set { if (value != null) { m_SplitAreaColors = value; SetVerticesDirty(); } } + } + + public BaseAxisTheme(ThemeType theme) : base(theme) + { + m_FontSize = XCSettings.fontSizeLv4; + m_LineType = XCSettings.axisLineType; + m_LineWidth = XCSettings.axisLineWidth; + m_LineLength = 0; + m_SplitLineType = XCSettings.axisSplitLineType; + m_SplitLineWidth = XCSettings.axisSplitLineWidth; + m_SplitLineLength = 0; + m_TickWidth = XCSettings.axisTickWidth; + m_TickLength = XCSettings.axisTickLength; + switch (theme) + { + case ThemeType.Default: + m_LineColor = ColorUtil.GetColor("#514D4D"); + m_TickColor = ColorUtil.GetColor("#514D4D"); + m_SplitLineColor = ColorUtil.GetColor("#51515120"); + m_SplitAreaColors = new List<Color32> + { + new Color32(250, 250, 250, 77), + new Color32(200, 200, 200, 77) + }; + break; + case ThemeType.Light: + m_LineColor = ColorUtil.GetColor("#514D4D"); + m_TickColor = ColorUtil.GetColor("#514D4D"); + m_SplitLineColor = ColorUtil.GetColor("#51515120"); + m_SplitAreaColors = new List<Color32> + { + new Color32(250, 250, 250, 77), + new Color32(200, 200, 200, 77) + }; + break; + case ThemeType.Dark: + m_LineColor = ColorUtil.GetColor("#B9B8CE"); + m_TickColor = ColorUtil.GetColor("#B9B8CE"); + m_SplitLineColor = ColorUtil.GetColor("#484753"); + m_SplitAreaColors = new List<Color32> + { + new Color32(255, 255, 255, (byte) (0.02f * 255)), + new Color32(255, 255, 255, (byte) (0.05f * 255)) + }; + break; + } + } + + public void Copy(BaseAxisTheme theme) + { + base.Copy(theme); + m_LineType = theme.lineType; + m_LineWidth = theme.lineWidth; + m_LineLength = theme.lineLength; + m_LineColor = theme.lineColor; + m_SplitLineType = theme.splitLineType; + m_SplitLineWidth = theme.splitLineWidth; + m_SplitLineLength = theme.splitLineLength; + m_SplitLineColor = theme.splitLineColor; + m_TickWidth = theme.tickWidth; + m_TickLength = theme.tickLength; + m_TickColor = theme.tickColor; + ChartHelper.CopyList(m_SplitAreaColors, theme.splitAreaColors); + } + } + + [Serializable] + public class AxisTheme : BaseAxisTheme + { + public AxisTheme(ThemeType theme) : base(theme) + { } + } + + [Serializable] + public class RadiusAxisTheme : BaseAxisTheme + { + public RadiusAxisTheme(ThemeType theme) : base(theme) + { } + } + + [Serializable] + public class AngleAxisTheme : BaseAxisTheme + { + public AngleAxisTheme(ThemeType theme) : base(theme) + { } + } + + [Serializable] + public class PolarAxisTheme : BaseAxisTheme + { + public PolarAxisTheme(ThemeType theme) : base(theme) + { } + } + + [Serializable] + public class RadarAxisTheme : BaseAxisTheme + { + public RadarAxisTheme(ThemeType theme) : base(theme) + { + m_SplitAreaColors.Clear(); + switch (theme) + { + case ThemeType.Dark: + m_SplitAreaColors.Add(ThemeStyle.GetColor("#6f6f6f")); + m_SplitAreaColors.Add(ThemeStyle.GetColor("#606060")); + break; + case ThemeType.Default: + m_SplitAreaColors.Add(ThemeStyle.GetColor("#f6f6f6")); + m_SplitAreaColors.Add(ThemeStyle.GetColor("#e7e7e7")); + break; + case ThemeType.Light: + m_SplitAreaColors.Add(ThemeStyle.GetColor("#f6f6f6")); + m_SplitAreaColors.Add(ThemeStyle.GetColor("#e7e7e7")); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/AxisTheme.cs.meta b/Assets/XCharts/Runtime/Theme/AxisTheme.cs.meta new file mode 100644 index 0000000..cc88ab9 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/AxisTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aefd22e76a6f642c9985b1a29e389858 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/ComponentTheme.cs b/Assets/XCharts/Runtime/Theme/ComponentTheme.cs new file mode 100644 index 0000000..91141cf --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/ComponentTheme.cs @@ -0,0 +1,102 @@ +using System; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + [Serializable] + public class ComponentTheme : ChildComponent + { + [SerializeField] protected Font m_Font; + [SerializeField] protected Color m_TextColor; + [SerializeField] protected Color m_TextBackgroundColor; + [SerializeField] protected int m_FontSize = 18; +#if dUI_TextMeshPro + [SerializeField] protected TMP_FontAsset m_TMPFont; +#endif + + /// <summary> + /// the font of text. + /// |字体。 + /// </summary> + public Font font + { + get { return m_Font; } + set { m_Font = value; SetComponentDirty(); } + } + /// <summary> + /// the color of text. + /// |文本颜色。 + /// </summary> + public Color textColor + { + get { return m_TextColor; } + set { if (PropertyUtil.SetColor(ref m_TextColor, value)) SetComponentDirty(); } + } + /// <summary> + /// the color of text. + /// |文本颜色。 + /// </summary> + public Color textBackgroundColor + { + get { return m_TextBackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_TextBackgroundColor, value)) SetComponentDirty(); } + } + /// <summary> + /// the font size of text. + /// |文本字体大小。 + /// </summary> + public int fontSize + { + get { return m_FontSize; } + set { if (PropertyUtil.SetStruct(ref m_FontSize, value)) SetComponentDirty(); } + } + +#if dUI_TextMeshPro + /// <summary> + /// the font of chart text。 + /// |字体。 + /// </summary> + public TMP_FontAsset tmpFont + { + get { return m_TMPFont; } + set { m_TMPFont = value; SetComponentDirty(); } + } +#endif + + public ComponentTheme(ThemeType theme) + { + m_FontSize = XCSettings.fontSizeLv3; + switch (theme) + { + case ThemeType.Default: + m_TextColor = ColorUtil.GetColor("#514D4D"); + break; + case ThemeType.Light: + m_TextColor = ColorUtil.GetColor("#514D4D"); + break; + case ThemeType.Dark: + m_TextColor = ColorUtil.GetColor("#B9B8CE"); + break; + } + } + + public virtual void Copy(ComponentTheme theme) + { + m_Font = theme.font; + m_FontSize = theme.fontSize; + m_TextColor = theme.textColor; + m_TextBackgroundColor = theme.textBackgroundColor; +#if dUI_TextMeshPro + m_TMPFont = theme.tmpFont; +#endif + } + + public virtual void Reset(ComponentTheme defaultTheme) + { + Copy(defaultTheme); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/ComponentTheme.cs.meta b/Assets/XCharts/Runtime/Theme/ComponentTheme.cs.meta new file mode 100644 index 0000000..e401a88 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/ComponentTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e78d1c80572324fc0b5cc5c935a2e34c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/DataZoomTheme.cs b/Assets/XCharts/Runtime/Theme/DataZoomTheme.cs new file mode 100644 index 0000000..0c4a886 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/DataZoomTheme.cs @@ -0,0 +1,125 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + public class DataZoomTheme : ComponentTheme + { + [SerializeField] protected float m_BorderWidth; + [SerializeField] protected float m_DataLineWidth; + [SerializeField] protected Color32 m_FillerColor; + [SerializeField] protected Color32 m_BorderColor; + [SerializeField] protected Color32 m_DataLineColor; + [SerializeField] protected Color32 m_DataAreaColor; + [SerializeField] protected Color32 m_BackgroundColor; + + /// <summary> + /// the width of border line. + /// |边框线宽。 + /// </summary> + public float borderWidth + { + get { return m_BorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_BorderWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of data line. + /// |数据阴影线宽。 + /// </summary> + public float dataLineWidth + { + get { return m_DataLineWidth; } + set { if (PropertyUtil.SetStruct(ref m_DataLineWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of dataZoom data area. + /// |数据区域颜色。 + /// </summary> + public Color32 fillerColor + { + get { return m_FillerColor; } + set { if (PropertyUtil.SetColor(ref m_FillerColor, value)) SetVerticesDirty(); } + } + + /// <summary> + /// the color of dataZoom border. + /// |边框颜色。 + /// </summary> + public Color32 borderColor + { + get { return m_BorderColor; } + set { if (PropertyUtil.SetColor(ref m_BorderColor, value)) SetComponentDirty(); } + } + /// <summary> + /// the color of data area line. + /// |数据阴影的线条颜色。 + /// </summary> + public Color32 dataLineColor + { + get { return m_DataLineColor; } + set { if (PropertyUtil.SetColor(ref m_DataLineColor, value)) SetComponentDirty(); } + } + /// <summary> + /// the color of data area line. + /// |数据阴影的填充颜色。 + /// </summary> + public Color32 dataAreaColor + { + get { return m_DataAreaColor; } + set { if (PropertyUtil.SetColor(ref m_DataAreaColor, value)) SetComponentDirty(); } + } + /// <summary> + /// the background color of datazoom. + /// |背景颜色。 + /// </summary> + public Color32 backgroundColor + { + get { return m_BackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_BackgroundColor, value)) SetComponentDirty(); } + } + + public DataZoomTheme(ThemeType theme) : base(theme) + { + m_BorderWidth = XCSettings.dataZoomBorderWidth; + m_DataLineWidth = XCSettings.dataZoomDataLineWidth; + m_BackgroundColor = Color.clear; + switch (theme) + { + case ThemeType.Default: + m_TextColor = ColorUtil.GetColor("#333"); + m_FillerColor = new Color32(167, 183, 204, 110); + m_BorderColor = ColorUtil.GetColor("#ddd"); + m_DataLineColor = ColorUtil.GetColor("#2f4554"); + m_DataAreaColor = new Color32(47, 69, 84, 85); + break; + case ThemeType.Light: + m_TextColor = ColorUtil.GetColor("#333"); + m_FillerColor = new Color32(167, 183, 204, 110); + m_BorderColor = ColorUtil.GetColor("#ddd"); + m_DataLineColor = ColorUtil.GetColor("#2f4554"); + m_DataAreaColor = new Color32(47, 69, 84, 85); + break; + case ThemeType.Dark: + m_TextColor = ColorUtil.GetColor("#B9B8CE"); + m_FillerColor = new Color32(135, 163, 206, (byte) (0.2f * 255)); + m_BorderColor = ColorUtil.GetColor("#71708A"); + m_DataLineColor = ColorUtil.GetColor("#71708A"); + m_DataAreaColor = ColorUtil.GetColor("#71708A"); + break; + } + } + + public void Copy(DataZoomTheme theme) + { + base.Copy(theme); + m_BorderWidth = theme.borderWidth; + m_DataLineWidth = theme.dataLineWidth; + m_FillerColor = theme.fillerColor; + m_BorderColor = theme.borderColor; + m_DataLineColor = theme.dataLineColor; + m_DataAreaColor = theme.dataAreaColor; + m_BackgroundColor = theme.backgroundColor; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/DataZoomTheme.cs.meta b/Assets/XCharts/Runtime/Theme/DataZoomTheme.cs.meta new file mode 100644 index 0000000..9545b7f --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/DataZoomTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba535ef75742b4825b3cc2be4df6716f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/LegendTheme.cs b/Assets/XCharts/Runtime/Theme/LegendTheme.cs new file mode 100644 index 0000000..259abd4 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/LegendTheme.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + [Serializable] + public class LegendTheme : ComponentTheme + { + [SerializeField] protected Color m_UnableColor; + + /// <summary> + /// the color of text. + /// |文本颜色。 + /// </summary> + public Color unableColor + { + get { return m_UnableColor; } + set { if (PropertyUtil.SetColor(ref m_UnableColor, value)) SetComponentDirty(); } + } + + public void Copy(LegendTheme theme) + { + base.Copy(theme); + m_UnableColor = theme.unableColor; + } + + public LegendTheme(ThemeType theme) : base(theme) + { + m_UnableColor = ColorUtil.GetColor("#cccccc"); + + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/LegendTheme.cs.meta b/Assets/XCharts/Runtime/Theme/LegendTheme.cs.meta new file mode 100644 index 0000000..d544c65 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/LegendTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a86fb06a6b71c4735b87769ee0708293 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/SerieTheme.cs b/Assets/XCharts/Runtime/Theme/SerieTheme.cs new file mode 100644 index 0000000..f22e0c6 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/SerieTheme.cs @@ -0,0 +1,152 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + public class SerieTheme : ChildComponent + { + [SerializeField] protected float m_LineWidth; + [SerializeField] protected float m_LineSymbolSize; + [SerializeField] protected float m_ScatterSymbolSize; + [SerializeField] protected float m_PieTooltipExtraRadius; + [SerializeField] protected float m_SelectedRate = 1.3f; + [SerializeField] protected float m_PieSelectedOffset; + [SerializeField] protected Color32 m_CandlestickColor = new Color32(235, 84, 84, 255); + [SerializeField] protected Color32 m_CandlestickColor0 = new Color32(71, 178, 98, 255); + [SerializeField] protected float m_CandlestickBorderWidth = 1; + [SerializeField] protected Color32 m_CandlestickBorderColor = new Color32(235, 84, 84, 255); + [SerializeField] protected Color32 m_CandlestickBorderColor0 = new Color32(71, 178, 98, 255); + + /// <summary> + /// the color of text. + /// |文本颜色。 + /// </summary> + public float lineWidth + { + get { return m_LineWidth; } + set { if (PropertyUtil.SetStruct(ref m_LineWidth, value)) SetVerticesDirty(); } + } + public float lineSymbolSize + { + get { return m_LineSymbolSize; } + set { if (PropertyUtil.SetStruct(ref m_LineSymbolSize, value)) SetVerticesDirty(); } + } + public float lineSymbolSelectedSize { get { return lineSymbolSize * selectedRate; } } + public float scatterSymbolSize + { + get { return m_ScatterSymbolSize; } + set { if (PropertyUtil.SetStruct(ref m_ScatterSymbolSize, value)) SetVerticesDirty(); } + } + public float scatterSymbolSelectedSize { get { return scatterSymbolSize * selectedRate; } } + public float selectedRate + { + get { return m_SelectedRate; } + set { if (PropertyUtil.SetStruct(ref m_SelectedRate, value)) SetVerticesDirty(); } + } + + /// <summary> + /// 饼图鼠标移到高亮时的额外半径 + /// </summary> + public float pieTooltipExtraRadius + { + get { return m_PieTooltipExtraRadius; } + set { if (PropertyUtil.SetStruct(ref m_PieTooltipExtraRadius, value < 0 ? 0f : value)) SetVerticesDirty(); } + } + /// <summary> + /// 饼图选中时的中心点偏移 + /// </summary> + public float pieSelectedOffset + { + get { return m_PieSelectedOffset; } + set { if (PropertyUtil.SetStruct(ref m_PieSelectedOffset, value < 0 ? 0f : value)) SetVerticesDirty(); } + } + /// <summary> + /// K线图阳线(涨)填充色 + /// </summary> + public Color32 candlestickColor + { + get { return m_CandlestickColor; } + set { if (PropertyUtil.SetColor(ref m_CandlestickColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// K线图阴线(跌)填充色 + /// </summary> + public Color32 candlestickColor0 + { + get { return m_CandlestickColor0; } + set { if (PropertyUtil.SetColor(ref m_CandlestickColor0, value)) SetVerticesDirty(); } + } + /// <summary> + /// K线图阳线(跌)边框色 + /// </summary> + public Color32 candlestickBorderColor + { + get { return m_CandlestickBorderColor; } + set { if (PropertyUtil.SetColor(ref m_CandlestickBorderColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// K线图阴线(跌)边框色 + /// </summary> + public Color32 candlestickBorderColor0 + { + get { return m_CandlestickBorderColor0; } + set { if (PropertyUtil.SetColor(ref m_CandlestickBorderColor0, value)) SetVerticesDirty(); } + } + + /// <summary> + /// K线图边框宽度 + /// </summary> + public float candlestickBorderWidth + { + get { return m_CandlestickBorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_CandlestickBorderWidth, value < 0 ? 0f : value)) SetVerticesDirty(); } + } + + public void Copy(SerieTheme theme) + { + m_LineWidth = theme.lineWidth; + m_LineSymbolSize = theme.lineSymbolSize; + m_ScatterSymbolSize = theme.scatterSymbolSize; + selectedRate = theme.selectedRate; + m_PieTooltipExtraRadius = theme.pieTooltipExtraRadius; + m_PieSelectedOffset = theme.pieSelectedOffset; + m_CandlestickColor = theme.candlestickColor; + m_CandlestickColor0 = theme.candlestickColor0; + m_CandlestickBorderColor = theme.candlestickBorderColor; + m_CandlestickBorderColor0 = theme.candlestickBorderColor0; + m_CandlestickBorderWidth = theme.candlestickBorderWidth; + } + + public SerieTheme(ThemeType theme) + { + m_LineWidth = XCSettings.serieLineWidth; + m_LineSymbolSize = XCSettings.serieLineSymbolSize; + m_ScatterSymbolSize = XCSettings.serieScatterSymbolSize; + m_PieTooltipExtraRadius = XCSettings.pieTooltipExtraRadius; + m_PieSelectedOffset = XCSettings.pieSelectedOffset; + m_CandlestickBorderWidth = XCSettings.serieCandlestickBorderWidth; + switch (theme) + { + case ThemeType.Default: + m_CandlestickColor = ColorUtil.GetColor("#eb5454"); + m_CandlestickColor0 = ColorUtil.GetColor("#47b262"); + m_CandlestickBorderColor = ColorUtil.GetColor("#eb5454"); + m_CandlestickBorderColor0 = ColorUtil.GetColor("#47b262"); + break; + case ThemeType.Light: + m_CandlestickColor = ColorUtil.GetColor("#eb5454"); + m_CandlestickColor0 = ColorUtil.GetColor("#47b262"); + m_CandlestickBorderColor = ColorUtil.GetColor("#eb5454"); + m_CandlestickBorderColor0 = ColorUtil.GetColor("#47b262"); + break; + case ThemeType.Dark: + m_CandlestickColor = ColorUtil.GetColor("#f64e56"); + m_CandlestickColor0 = ColorUtil.GetColor("#54ea92"); + m_CandlestickBorderColor = ColorUtil.GetColor("#f64e56"); + m_CandlestickBorderColor0 = ColorUtil.GetColor("#54ea92"); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/SerieTheme.cs.meta b/Assets/XCharts/Runtime/Theme/SerieTheme.cs.meta new file mode 100644 index 0000000..6649238 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/SerieTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9030b0e4afb164967b4991247947b195 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/SubTitleTheme.cs b/Assets/XCharts/Runtime/Theme/SubTitleTheme.cs new file mode 100644 index 0000000..7e0ae93 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/SubTitleTheme.cs @@ -0,0 +1,25 @@ +using System; + +namespace XCharts.Runtime +{ + [Serializable] + public class SubTitleTheme : ComponentTheme + { + public SubTitleTheme(ThemeType theme) : base(theme) + { + m_FontSize = XCSettings.fontSizeLv2; + switch (theme) + { + case ThemeType.Default: + m_TextColor = ColorUtil.GetColor("#969696"); + break; + case ThemeType.Light: + m_TextColor = ColorUtil.GetColor("#969696"); + break; + case ThemeType.Dark: + m_TextColor = ColorUtil.GetColor("#B9B8CE"); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/SubTitleTheme.cs.meta b/Assets/XCharts/Runtime/Theme/SubTitleTheme.cs.meta new file mode 100644 index 0000000..c296a35 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/SubTitleTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c642293f2d6674cbb85d1f081b9d89e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/Theme.cs b/Assets/XCharts/Runtime/Theme/Theme.cs new file mode 100644 index 0000000..bd6e4bc --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/Theme.cs @@ -0,0 +1,407 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + /// <summary> + /// Theme. + /// |主题相关配置。 + /// </summary> + [Serializable] + public class Theme : ScriptableObject + { + [SerializeField] private ThemeType m_ThemeType = ThemeType.Default; + [SerializeField] private string m_ThemeName = ThemeType.Default.ToString(); + [SerializeField] private Font m_Font; +#if dUI_TextMeshPro + [SerializeField] private TMP_FontAsset m_TMPFont; +#endif + + [SerializeField] private Color32 m_ContrastColor; + [SerializeField] private Color32 m_BackgroundColor; + +#if UNITY_2020_2 + [NonReorderable] +#endif + [SerializeField] private List<Color32> m_ColorPalette = new List<Color32>(13); + + [SerializeField] private ComponentTheme m_Common; + [SerializeField] private TitleTheme m_Title; + [SerializeField] private SubTitleTheme m_SubTitle; + [SerializeField] private LegendTheme m_Legend; + [SerializeField] private AxisTheme m_Axis; + [SerializeField] private TooltipTheme m_Tooltip; + [SerializeField] private DataZoomTheme m_DataZoom; + [SerializeField] private VisualMapTheme m_VisualMap; + [SerializeField] private SerieTheme m_Serie; + + /// <summary> + /// the theme of chart. + /// |主题类型。 + /// </summary> + public ThemeType themeType + { + get { return m_ThemeType; } + set { PropertyUtil.SetStruct(ref m_ThemeType, value); } + } + /// <summary> + /// the name of theme. + /// |主题名称。 + /// </summary> + public string themeName + { + get { return m_ThemeName; } + set { PropertyUtil.SetClass(ref m_ThemeName, value); } + } + + /// <summary> + /// the contrast color of chart. + /// |对比色。 + /// </summary> + public Color32 contrastColor + { + get { return m_ContrastColor; } + set { PropertyUtil.SetColor(ref m_ContrastColor, value); } + } + /// <summary> + /// the background color of chart. + /// |背景颜色。 + /// </summary> + public Color32 backgroundColor + { + get { return m_BackgroundColor; } + set { PropertyUtil.SetColor(ref m_BackgroundColor, value); } + } + + /// <summary> + /// The color list of palette. If no color is set in series, the colors would be adopted sequentially and circularly from this list as the colors of series. + /// |调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。 + /// </summary> + public List<Color32> colorPalette { get { return m_ColorPalette; } set { m_ColorPalette = value; } } + public ComponentTheme common { get { return m_Common; } set { m_Common = value; } } + public TitleTheme title { get { return m_Title; } set { m_Title = value; } } + public SubTitleTheme subTitle { get { return m_SubTitle; } set { m_SubTitle = value; } } + public LegendTheme legend { get { return m_Legend; } set { m_Legend = value; } } + public AxisTheme axis { get { return m_Axis; } set { m_Axis = value; } } + public TooltipTheme tooltip { get { return m_Tooltip; } set { m_Tooltip = value; } } + public DataZoomTheme dataZoom { get { return m_DataZoom; } set { m_DataZoom = value; } } + public VisualMapTheme visualMap { get { return m_VisualMap; } set { m_VisualMap = value; } } + public SerieTheme serie { get { return m_Serie; } set { m_Serie = value; } } +#if dUI_TextMeshPro + /// <summary> + /// the font of chart text。 + /// |主题字体。 + /// </summary> + public TMP_FontAsset tmpFont + { + get { return m_TMPFont; } + set + { + m_TMPFont = value; + SyncTMPFontToSubComponent(); + } + } +#endif + /// <summary> + /// the font of chart text。 + /// |主题字体。 + /// </summary> + public Font font + { + get { return m_Font; } + set + { + m_Font = value; + SyncFontToSubComponent(); + } + } + + // void OnEnable() + // { + // } + + // void OnDisable() + // { + // } + + public void SetDefaultFont() + { +#if dUI_TextMeshPro + tmpFont = XCSettings.tmpFont; + SyncTMPFontToSubComponent(); +#else + font = XCSettings.font; + SyncFontToSubComponent(); +#endif + } + + /// <summary> + /// Gets the color of the specified index from the palette. + /// |获得调色盘对应系列索引的颜色值。 + /// </summary> + /// <param name="index">编号索引</param> + /// <returns>the color,or Color.clear when failed.颜色值,失败时返回Color.clear</returns> + public Color32 GetColor(int index) + { + if (index < 0) index = 0; + var newIndex = index < m_ColorPalette.Count ? index : index % m_ColorPalette.Count; + if (newIndex < m_ColorPalette.Count) + return m_ColorPalette[newIndex]; + else return Color.clear; + } + + public void CheckWarning(StringBuilder sb) + { +#if dUI_TextMeshPro + if (m_TMPFont == null) + { + sb.AppendFormat("warning:theme->tmpFont is null\n"); + } +#else + if (m_Font == null) + { + sb.AppendFormat("warning:theme->font is null\n"); + } +#endif + if (m_ColorPalette.Count == 0) + { + sb.AppendFormat("warning:theme->colorPalette is empty\n"); + } + for (int i = 0; i < m_ColorPalette.Count; i++) + { + if (!ChartHelper.IsClearColor(m_ColorPalette[i]) && m_ColorPalette[i].a == 0) + sb.AppendFormat("warning:theme->colorPalette[{0}] alpha = 0\n", i); + } + } + + Dictionary<int, string> _colorDic = new Dictionary<int, string>(); + /// <summary> + /// Gets the hexadecimal color string of the specified index from the palette. + /// |获得指定索引的十六进制颜色值字符串。 + /// </summary> + /// <param name="index"></param> + /// <returns></returns> + public string GetColorStr(int index) + { + if (index < 0) + { + index = 0; + } + index = index % m_ColorPalette.Count; + if (_colorDic.ContainsKey(index)) return _colorDic[index]; + else + { + _colorDic[index] = ColorUtility.ToHtmlStringRGBA(GetColor(index)); + return _colorDic[index]; + } + } + + public bool CopyTheme(ThemeType theme) + { + switch (theme) + { + case ThemeType.Dark: + ResetToDarkTheme(this); + return true; + case ThemeType.Default: + ResetToDefaultTheme(this); + return true; + } + return false; + } + + /// <summary> + /// copy all configurations from theme. + /// |复制主题的所有配置。 + /// </summary> + /// <param name="theme"></param> + public void CopyTheme(Theme theme) + { + m_ThemeType = theme.themeType; + m_ThemeName = theme.themeName; +#if dUI_TextMeshPro + tmpFont = theme.tmpFont; +#endif + font = theme.font; + m_BackgroundColor = theme.backgroundColor; + m_Common.Copy(theme.common); + m_Legend.Copy(theme.legend); + m_Title.Copy(theme.title); + m_SubTitle.Copy(theme.subTitle); + m_Axis.Copy(theme.axis); + m_Tooltip.Copy(theme.tooltip); + m_DataZoom.Copy(theme.dataZoom); + m_VisualMap.Copy(theme.visualMap); + m_Serie.Copy(theme.serie); + ChartHelper.CopyList(m_ColorPalette, theme.colorPalette); + } + + /// <summary> + /// Clear all custom configurations. + /// |重置,清除所有自定义配置。 + /// </summary> + public bool ResetTheme() + { + switch (m_ThemeType) + { + case ThemeType.Default: + ResetToDefaultTheme(this); + return true; + case ThemeType.Dark: + ResetToDarkTheme(this); + return true; + case ThemeType.Custom: + return false; + } + return false; + } + + /// <summary> + /// 克隆主题。 + /// </summary> + /// <returns></returns> + public Theme CloneTheme() + { + var theme = ScriptableObject.CreateInstance<Theme>(); + InitChartComponentTheme(theme); + theme.CopyTheme(this); + return theme; + } + + /// <summary> + /// default theme. + /// |默认主题。 + /// </summary> + /// <value></value> + public static void ResetToDefaultTheme(Theme theme) + { + theme.themeType = ThemeType.Default; + theme.themeName = ThemeType.Default.ToString(); + theme.backgroundColor = new Color32(255, 255, 255, 255); + theme.colorPalette = new List<Color32> + { + ColorUtil.GetColor("#5470c6"), + ColorUtil.GetColor("#91cc75"), + ColorUtil.GetColor("#fac858"), + ColorUtil.GetColor("#ee6666"), + ColorUtil.GetColor("#73c0de"), + ColorUtil.GetColor("#3ba272"), + ColorUtil.GetColor("#fc8452"), + ColorUtil.GetColor("#9a60b4"), + ColorUtil.GetColor("#ea7ccc"), + + }; + InitChartComponentTheme(theme); + } + + /// <summary> + /// dark theme. + /// |暗主题。 + /// </summary> + /// <value></value> + public static void ResetToDarkTheme(Theme theme) + { + theme.themeType = ThemeType.Dark; + theme.themeName = ThemeType.Dark.ToString(); + theme.backgroundColor = ColorUtil.GetColor("#100C2A"); + theme.colorPalette = new List<Color32> + { + ColorUtil.GetColor("#4992ff"), + ColorUtil.GetColor("#7cffb2"), + ColorUtil.GetColor("#fddd60"), + ColorUtil.GetColor("#ff6e76"), + ColorUtil.GetColor("#58d9f9"), + ColorUtil.GetColor("#05c091"), + ColorUtil.GetColor("#ff8a45"), + ColorUtil.GetColor("#8d48e3"), + ColorUtil.GetColor("#dd79ff"), + }; + InitChartComponentTheme(theme); + } + + public static Theme EmptyTheme + { + get + { + var theme = ScriptableObject.CreateInstance<Theme>(); + theme.themeType = ThemeType.Custom; + theme.themeName = ThemeType.Custom.ToString(); + theme.backgroundColor = Color.clear; + theme.colorPalette = new List<Color32>(); + InitChartComponentTheme(theme); + return theme; + } + } + + public void SyncFontToSubComponent() + { + common.font = font; + title.font = font; + subTitle.font = font; + legend.font = font; + axis.font = font; + tooltip.font = font; + dataZoom.font = font; + visualMap.font = font; + } + +#if dUI_TextMeshPro + public void SyncTMPFontToSubComponent() + { + common.tmpFont = tmpFont; + title.tmpFont = tmpFont; + subTitle.tmpFont = tmpFont; + legend.tmpFont = tmpFont; + axis.tmpFont = tmpFont; + tooltip.tmpFont = tmpFont; + dataZoom.tmpFont = tmpFont; + visualMap.tmpFont = tmpFont; + } +#endif + + private static void InitChartComponentTheme(Theme theme) + { + theme.common = new ComponentTheme(theme.themeType); + theme.title = new TitleTheme(theme.themeType); + theme.subTitle = new SubTitleTheme(theme.themeType); + theme.legend = new LegendTheme(theme.themeType); + theme.axis = new AxisTheme(theme.themeType); + theme.tooltip = new TooltipTheme(theme.themeType); + theme.dataZoom = new DataZoomTheme(theme.themeType); + theme.visualMap = new VisualMapTheme(theme.themeType); + theme.serie = new SerieTheme(theme.themeType); + theme.SetDefaultFont(); + } + + /// <summary> + /// Convert the html string to color. + /// |将字符串颜色值转成Color。 + /// </summary> + /// <param name="hexColorStr"></param> + /// <returns></returns> + public static Color32 GetColor(string hexColorStr) + { + Color color; + ColorUtility.TryParseHtmlString(hexColorStr, out color); + return (Color32) color; + } + + public void SetColorPalette(List<string> hexColorStringList) + { + m_ColorPalette.Clear(); + foreach (var hexColor in hexColorStringList) + m_ColorPalette.Add(ColorUtil.GetColor(hexColor)); + + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/Theme.cs.meta b/Assets/XCharts/Runtime/Theme/Theme.cs.meta new file mode 100644 index 0000000..15f4828 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/Theme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c59330ca0f4443b69f06b890a44f32e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/ThemeStyle.cs b/Assets/XCharts/Runtime/Theme/ThemeStyle.cs new file mode 100644 index 0000000..aaa616e --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/ThemeStyle.cs @@ -0,0 +1,236 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +#if dUI_TextMeshPro +using TMPro; +#endif + +namespace XCharts.Runtime +{ + /// <summary> + /// 主题 + /// </summary> + public enum ThemeType + { + /// <summary> + /// 默认主题。 + /// </summary> + Default, + /// <summary> + /// 亮主题。 + /// </summary> + Light, + /// <summary> + /// 暗主题。 + /// </summary> + Dark, + /// <summary> + /// 自定义主题。 + /// </summary> + Custom, + } + + [Serializable] + /// <summary> + /// Theme. + /// |主题相关配置。 + /// </summary> + public class ThemeStyle : ChildComponent + { + [SerializeField] private bool m_Show = true; + [SerializeField] private Theme m_SharedTheme; + [SerializeField] private bool m_TransparentBackground = false; + [SerializeField] private bool m_EnableCustomTheme = false; + [SerializeField] private Font m_CustomFont; + [SerializeField] private Color32 m_CustomBackgroundColor; +#if UNITY_2020_2 + [NonReorderable] +#endif + [SerializeField] private List<Color32> m_CustomColorPalette = new List<Color32>(13); + + public bool show { get { return m_Show; } } + /// <summary> + /// the theme of chart. + /// |主题类型。 + /// </summary> + public ThemeType themeType + { + get { return sharedTheme.themeType; } + } + public string themeName + { + get { return sharedTheme.themeName; } + } + + public Theme sharedTheme + { + get { return m_SharedTheme; } + set { m_SharedTheme = value; SetAllDirty(); } + } + + /// <summary> + /// the contrast color of chart. + /// |对比色。 + /// </summary> + public Color32 contrastColor + { + get { return sharedTheme.contrastColor; } + } + /// <summary> + /// the background color of chart. + /// |背景颜色。 + /// </summary> + public Color32 backgroundColor + { + get + { + if (m_TransparentBackground) return ColorUtil.clearColor32; + else return m_EnableCustomTheme ? m_CustomBackgroundColor : sharedTheme.backgroundColor; + } + } + /// <summary> + /// Whether the background color is transparent. When true, the background color is not drawn. + /// |是否透明背景颜色。当设置为true时,不绘制背景颜色。 + /// </summary> + public bool transparentBackground + { + get { return m_TransparentBackground; } + set { m_TransparentBackground = value; SetAllDirty(); } + } + /// <summary> + /// Whether to customize theme colors. When set to true, + /// you can use 'sync color to custom' to synchronize the theme color to the custom color. It can also be set manually. + /// |是否自定义主题颜色。当设置为true时,可以用‘sync color to custom’同步主题的颜色到自定义颜色。也可以手动设置。 + /// </summary> + /// <value></value> + public bool enableCustomTheme + { + get { return m_EnableCustomTheme; } + set { m_EnableCustomTheme = value; _colorDic.Clear(); SetAllDirty(); } + } + /// <summary> + /// the custom background color of chart. + /// |自定义的背景颜色。 + /// </summary> + public Color32 customBackgroundColor + { + get { return m_CustomBackgroundColor; } + set { m_CustomBackgroundColor = value; SetAllDirty(); } + } + + /// <summary> + /// The color list of palette. If no color is set in series, the colors would be adopted sequentially and circularly from this list as the colors of series. + /// |调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。 + /// </summary> + public List<Color32> colorPalette + { + get { return m_EnableCustomTheme ? m_CustomColorPalette : sharedTheme.colorPalette; } + } + public List<Color32> customColorPalette { get { return m_CustomColorPalette; } set { m_CustomColorPalette = value; SetVerticesDirty(); } } + public ComponentTheme common { get { return sharedTheme.common; } } + public TitleTheme title { get { return sharedTheme.title; } } + public SubTitleTheme subTitle { get { return sharedTheme.subTitle; } } + public LegendTheme legend { get { return sharedTheme.legend; } } + public AxisTheme axis { get { return sharedTheme.axis; } } + public TooltipTheme tooltip { get { return sharedTheme.tooltip; } } + public DataZoomTheme dataZoom { get { return sharedTheme.dataZoom; } } + public VisualMapTheme visualMap { get { return sharedTheme.visualMap; } } + public SerieTheme serie { get { return sharedTheme.serie; } } + + /// <summary> + /// Gets the color of the specified index from the palette. + /// |获得调色盘对应系列索引的颜色值。 + /// </summary> + /// <param name="index">编号索引</param> + /// <returns>the color,or Color.clear when failed.颜色值,失败时返回Color.clear</returns> + public Color32 GetColor(int index) + { + if (colorPalette.Count <= 0) return Color.clear; + if (index < 0) index = 0; + var newIndex = index < colorPalette.Count ? index : index % colorPalette.Count; + if (newIndex < colorPalette.Count) + return colorPalette[newIndex]; + else return Color.clear; + } + + public Color32 GetBackgroundColor(Background background) + { + if (background != null && background.show && !background.autoColor) + return background.imageColor; + else + return backgroundColor; + } + + public void SyncSharedThemeColorToCustom() + { + m_CustomBackgroundColor = sharedTheme.backgroundColor; + m_CustomColorPalette.Clear(); + foreach (var color in sharedTheme.colorPalette) + { + m_CustomColorPalette.Add(color); + } + SetAllDirty(); + } + + public void CheckWarning(StringBuilder sb) + { +#if dUI_TextMeshPro + if (sharedTheme.tmpFont == null) + { + sb.AppendFormat("warning:theme->tmpFont is null\n"); + } +#else + if (sharedTheme.font == null) + { + sb.AppendFormat("warning:theme->font is null\n"); + } +#endif + if (sharedTheme.colorPalette.Count == 0) + { + sb.AppendFormat("warning:theme->colorPalette is empty\n"); + } + for (int i = 0; i < sharedTheme.colorPalette.Count; i++) + { + if (!ChartHelper.IsClearColor(sharedTheme.colorPalette[i]) && sharedTheme.colorPalette[i].a == 0) + sb.AppendFormat("warning:theme->colorPalette[{0}] alpha = 0\n", i); + } + } + + Dictionary<int, string> _colorDic = new Dictionary<int, string>(); + /// <summary> + /// Gets the hexadecimal color string of the specified index from the palette. + /// |获得指定索引的十六进制颜色值字符串。 + /// </summary> + /// <param name="index"></param> + /// <returns></returns> + public string GetColorStr(int index) + { + if (index < 0) + { + index = 0; + } + index = index % colorPalette.Count; + if (_colorDic.ContainsKey(index)) return _colorDic[index]; + else + { + _colorDic[index] = ColorUtility.ToHtmlStringRGBA(GetColor(index)); + return _colorDic[index]; + } + } + + /// <summary> + /// Convert the html string to color. + /// |将字符串颜色值转成Color。 + /// </summary> + /// <param name="hexColorStr"></param> + /// <returns></returns> + public static Color32 GetColor(string hexColorStr) + { + Color color; + ColorUtility.TryParseHtmlString(hexColorStr, out color); + return (Color32) color; + } + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/ThemeStyle.cs.meta b/Assets/XCharts/Runtime/Theme/ThemeStyle.cs.meta new file mode 100644 index 0000000..ba89424 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/ThemeStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd363d1f78f9d47dab079b1376cf0680 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/TitleTheme.cs b/Assets/XCharts/Runtime/Theme/TitleTheme.cs new file mode 100644 index 0000000..e675cf5 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/TitleTheme.cs @@ -0,0 +1,24 @@ +using System; + +namespace XCharts.Runtime +{ + [Serializable] + public class TitleTheme : ComponentTheme + { + public TitleTheme(ThemeType theme) : base(theme) + { + m_FontSize = XCSettings.fontSizeLv1; + switch (theme) + { + case ThemeType.Default: + m_TextColor = ColorUtil.GetColor("#514D4D"); + break; + case ThemeType.Light: + break; + case ThemeType.Dark: + m_TextColor = ColorUtil.GetColor("#EEF1FA"); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/TitleTheme.cs.meta b/Assets/XCharts/Runtime/Theme/TitleTheme.cs.meta new file mode 100644 index 0000000..a409e26 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/TitleTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6649bc33964624c14a13ce34dd7eae77 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/TooltipTheme.cs b/Assets/XCharts/Runtime/Theme/TooltipTheme.cs new file mode 100644 index 0000000..a0d0dab --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/TooltipTheme.cs @@ -0,0 +1,118 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + public class TooltipTheme : ComponentTheme + { + + [SerializeField] protected LineStyle.Type m_LineType = LineStyle.Type.Solid; + [SerializeField] protected float m_LineWidth = 1f; + [SerializeField] protected Color32 m_LineColor; + [SerializeField] protected Color32 m_AreaColor; + [SerializeField] protected Color32 m_LabelTextColor; + [SerializeField] protected Color32 m_LabelBackgroundColor; + + /// <summary> + /// the type of line. + /// |坐标轴线类型。 + /// </summary> + public LineStyle.Type lineType + { + get { return m_LineType; } + set { if (PropertyUtil.SetStruct(ref m_LineType, value)) SetVerticesDirty(); } + } + /// <summary> + /// the width of line. + /// |指示线线宽。 + /// </summary> + public float lineWidth + { + get { return m_LineWidth; } + set { if (PropertyUtil.SetStruct(ref m_LineWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of line. + /// |指示线颜色。 + /// </summary> + public Color32 lineColor + { + get { return m_LineColor; } + set { if (PropertyUtil.SetColor(ref m_LineColor, value)) SetVerticesDirty(); } + } + + /// <summary> + /// the color of line. + /// |区域指示的颜色。 + /// </summary> + public Color32 areaColor + { + get { return m_AreaColor; } + set { if (PropertyUtil.SetColor(ref m_AreaColor, value)) SetVerticesDirty(); } + } + /// <summary> + /// the text color of tooltip cross indicator's axis label. + /// |十字指示器坐标轴标签的文本颜色。 + /// </summary> + public Color32 labelTextColor + { + get { return m_LabelTextColor; } + set { if (PropertyUtil.SetColor(ref m_LabelTextColor, value)) SetComponentDirty(); } + } + + /// <summary> + /// the background color of tooltip cross indicator's axis label. + /// |十字指示器坐标轴标签的背景颜色。 + /// </summary> + public Color32 labelBackgroundColor + { + get { return m_LabelBackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_LabelBackgroundColor, value)) SetComponentDirty(); } + } + + public TooltipTheme(ThemeType theme) : base(theme) + { + m_LineType = LineStyle.Type.Solid; + m_LineWidth = XCSettings.tootipLineWidth; + switch (theme) + { + case ThemeType.Default: + m_TextBackgroundColor = ColorUtil.GetColor("#FFFFFFFF"); + m_TextColor = ColorUtil.GetColor("#000000FF"); + m_AreaColor = ColorUtil.GetColor("#51515120"); + m_LabelTextColor = ColorUtil.GetColor("#FFFFFFFF"); + m_LabelBackgroundColor = ColorUtil.GetColor("#292929FF"); + m_LineColor = ColorUtil.GetColor("#29292964"); + break; + case ThemeType.Light: + m_TextBackgroundColor = ColorUtil.GetColor("#FFFFFFFF"); + m_TextColor = ColorUtil.GetColor("#000000FF"); + m_AreaColor = ColorUtil.GetColor("#51515120"); + m_LabelTextColor = ColorUtil.GetColor("#FFFFFFFF"); + m_LabelBackgroundColor = ColorUtil.GetColor("#292929FF"); + m_LineColor = ColorUtil.GetColor("#29292964"); + break; + case ThemeType.Dark: + m_TextBackgroundColor = ColorUtil.GetColor("#FFFFFFFF"); + m_TextColor = ColorUtil.GetColor("#000000FF"); + m_AreaColor = ColorUtil.GetColor("#51515120"); + m_LabelTextColor = ColorUtil.GetColor("#FFFFFFFF"); + m_LabelBackgroundColor = ColorUtil.GetColor("#292929FF"); + m_LineColor = ColorUtil.GetColor("#29292964"); + break; + } + } + + public void Copy(TooltipTheme theme) + { + base.Copy(theme); + m_LineType = theme.lineType; + m_LineWidth = theme.lineWidth; + m_LineColor = theme.lineColor; + m_AreaColor = theme.areaColor; + m_LabelTextColor = theme.labelTextColor; + m_LabelBackgroundColor = theme.labelBackgroundColor; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/TooltipTheme.cs.meta b/Assets/XCharts/Runtime/Theme/TooltipTheme.cs.meta new file mode 100644 index 0000000..534835c --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/TooltipTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f38f041e827e042a88338628b2b2c0db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Theme/VisualMapTheme.cs b/Assets/XCharts/Runtime/Theme/VisualMapTheme.cs new file mode 100644 index 0000000..3810838 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/VisualMapTheme.cs @@ -0,0 +1,86 @@ +using System; +using UnityEngine; + +namespace XCharts.Runtime +{ + [Serializable] + public class VisualMapTheme : ComponentTheme + { + [SerializeField] protected float m_BorderWidth; + [SerializeField] protected Color32 m_BorderColor; + [SerializeField] protected Color32 m_BackgroundColor; + [SerializeField][Range(10, 50)] protected float m_TriangeLen = 20f; + + /// <summary> + /// the width of border. + /// |边框线宽。 + /// </summary> + public float borderWidth + { + get { return m_BorderWidth; } + set { if (PropertyUtil.SetStruct(ref m_BorderWidth, value)) SetVerticesDirty(); } + } + /// <summary> + /// the color of dataZoom border. + /// |边框颜色。 + /// </summary> + public Color32 borderColor + { + get { return m_BorderColor; } + set { if (PropertyUtil.SetColor(ref m_BorderColor, value)) SetComponentDirty(); } + } + + /// <summary> + /// the background color of visualmap. + /// |背景颜色。 + /// </summary> + public Color32 backgroundColor + { + get { return m_BackgroundColor; } + set { if (PropertyUtil.SetColor(ref m_BackgroundColor, value)) SetComponentDirty(); } + } + /// <summary> + /// 可视化组件的调节三角形边长。 + /// </summary> + /// <value></value> + public float triangeLen + { + get { return m_TriangeLen; } + set { if (PropertyUtil.SetStruct(ref m_TriangeLen, value < 0 ? 1f : value)) SetVerticesDirty(); } + } + + public VisualMapTheme(ThemeType theme) : base(theme) + { + m_BorderWidth = XCSettings.visualMapBorderWidth; + m_TriangeLen = XCSettings.visualMapTriangeLen; + m_FontSize = XCSettings.fontSizeLv4; + switch (theme) + { + case ThemeType.Default: + m_TextColor = ColorUtil.GetColor("#333"); + m_BorderColor = ColorUtil.GetColor("#ccc"); + m_BackgroundColor = ColorUtil.clearColor32; + break; + case ThemeType.Light: + m_TextColor = ColorUtil.GetColor("#333"); + m_BorderColor = ColorUtil.GetColor("#ccc"); + m_BackgroundColor = ColorUtil.clearColor32; + break; + case ThemeType.Dark: + m_TextColor = ColorUtil.GetColor("#B9B8CE"); + m_BorderColor = ColorUtil.GetColor("#ccc"); + m_BackgroundColor = ColorUtil.clearColor32; + break; + } + } + + public void Copy(VisualMapTheme theme) + { + base.Copy(theme); + m_TriangeLen = theme.triangeLen; + m_BorderWidth = theme.borderWidth; + m_BorderColor = theme.borderColor; + m_BackgroundColor = theme.backgroundColor; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Theme/VisualMapTheme.cs.meta b/Assets/XCharts/Runtime/Theme/VisualMapTheme.cs.meta new file mode 100644 index 0000000..e737722 --- /dev/null +++ b/Assets/XCharts/Runtime/Theme/VisualMapTheme.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 35e5797039b994b23850aaa7ca827766 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Utilities.meta b/Assets/XCharts/Runtime/Utilities.meta new file mode 100644 index 0000000..8665a90 --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3e4cdd9c66b14907bd1934dd8037eee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Utilities/ColorUtil.cs b/Assets/XCharts/Runtime/Utilities/ColorUtil.cs new file mode 100644 index 0000000..ab650e4 --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/ColorUtil.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class ColorUtil + { + public static readonly Color32 clearColor32 = new Color32(0, 0, 0, 0); + public static readonly Vector2 zeroVector2 = Vector2.zero; + /// <summary> + /// Convert the html string to color. + /// |将字符串颜色值转成Color。 + /// </summary> + /// <param name="hexColorStr"></param> + /// <returns></returns> + public static Color32 GetColor(string hexColorStr) + { + Color color; + ColorUtility.TryParseHtmlString(hexColorStr, out color); + return (Color32) color; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Utilities/ColorUtil.cs.meta b/Assets/XCharts/Runtime/Utilities/ColorUtil.cs.meta new file mode 100644 index 0000000..a53ccbb --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/ColorUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4260c3b8fdaff435a8bc10375b812bd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Utilities/DateTimeUtil.cs b/Assets/XCharts/Runtime/Utilities/DateTimeUtil.cs new file mode 100644 index 0000000..361218f --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/DateTimeUtil.cs @@ -0,0 +1,166 @@ +using System; +using System.Collections.Generic; + +namespace XCharts.Runtime +{ + public static class DateTimeUtil + { + //private static readonly DateTime k_DateTime1970 = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.Local); + private static readonly DateTime k_DateTime1970 = new DateTime(1970, 1, 1); + public static readonly int ONE_SECOND = 1; + public static readonly int ONE_MINUTE = ONE_SECOND * 60; + public static readonly int ONE_HOUR = ONE_MINUTE * 60; + public static readonly int ONE_DAY = ONE_HOUR * 24; + public static readonly int ONE_MONTH = ONE_DAY * 30; + public static readonly int ONE_YEAR = ONE_DAY * 365; + public static readonly int MIN_TIME_SPLIT_NUMBER = 4; + + private static string s_YearDateFormatter = "yyyy"; + //private static string s_MonthDateFormatter = "MM"; + //private static string s_DayDateFormatter = "dd"; + private static string s_HourDateFormatter = "HH:mm"; + private static string s_MinuteDateFormatter = "HH:mm"; + private static string s_SecondDateFormatter = "HH:mm:ss"; + //private static string s_DateFormatter = "yyyy-MM-dd HH:mm:ss"; + + public static int GetTimestamp() + { + return (int) (DateTime.Now - k_DateTime1970).TotalSeconds; + } + + public static int GetTimestamp(DateTime time) + { + return (int) (time - k_DateTime1970).TotalSeconds; + } + + public static DateTime GetDateTime(int timestamp) + { + long span = ((long) timestamp) * 10000000; + return k_DateTime1970.Add(new TimeSpan(span)); + } + + internal static string GetDateTimeFormatString(DateTime dateTime, double range) + { + var dateString = String.Empty; + if (range >= DateTimeUtil.ONE_YEAR * DateTimeUtil.MIN_TIME_SPLIT_NUMBER) + { + dateString = dateTime.ToString(s_YearDateFormatter); + } + else if (range >= DateTimeUtil.ONE_MONTH * DateTimeUtil.MIN_TIME_SPLIT_NUMBER) + { + dateString = dateTime.Month == 1 ? + dateTime.ToString(s_YearDateFormatter) : + XCSettings.lang.GetMonthAbbr(dateTime.Month); + } + else if (range >= DateTimeUtil.ONE_DAY * DateTimeUtil.MIN_TIME_SPLIT_NUMBER) + { + dateString = dateTime.Day == 1 ? + XCSettings.lang.GetMonthAbbr(dateTime.Month) : + XCSettings.lang.GetDay(dateTime.Day); + } + else if (range >= DateTimeUtil.ONE_HOUR * DateTimeUtil.MIN_TIME_SPLIT_NUMBER) + { + dateString = dateTime.ToString(s_HourDateFormatter); + } + else if (range >= DateTimeUtil.ONE_MINUTE * DateTimeUtil.MIN_TIME_SPLIT_NUMBER) + { + dateString = dateTime.ToString(s_MinuteDateFormatter); + } + else + { + dateString = dateTime.ToString(s_SecondDateFormatter); + } + return dateString; + } + + /// <summary> + /// 根据给定的最大最小时间戳范围,计算合适的Tick值 + /// </summary> + /// <param name="list"></param> + /// <param name="minTimestamp"></param> + /// <param name="maxTimestamp"></param> + /// <param name="splitNumber"></param> + internal static void UpdateTimeAxisDateTimeList(List<double> list, int minTimestamp, int maxTimestamp, int splitNumber) + { + list.Clear(); + var range = maxTimestamp - minTimestamp; + if (range <= 0) return; + if (splitNumber <= 0) splitNumber = 1; + var dtMin = DateTimeUtil.GetDateTime(minTimestamp); + var dtMax = DateTimeUtil.GetDateTime(maxTimestamp); + if (range >= ONE_YEAR * MIN_TIME_SPLIT_NUMBER) + { + var num = Math.Max(range / (splitNumber * ONE_YEAR), 1); + var dtStart = new DateTime(dtMin.Year + 1, 1, 1); + while (dtStart.Ticks < dtMax.Ticks) + { + list.Add(DateTimeUtil.GetTimestamp(dtStart)); + dtStart = dtStart.AddYears(num); + } + } + else if (range >= ONE_MONTH * MIN_TIME_SPLIT_NUMBER) + { + var num = Math.Max(range / (splitNumber * ONE_MONTH), 1); + var dtStart = new DateTime(dtMin.Year, dtMin.Month, 1).AddMonths(1); + while (dtStart.Ticks < dtMax.Ticks) + { + list.Add(DateTimeUtil.GetTimestamp(dtStart)); + dtStart = dtStart.AddMonths(num); + } + } + else if (range >= ONE_DAY * MIN_TIME_SPLIT_NUMBER) + { + var tick = GetTickSecond(range, splitNumber, ONE_DAY); + var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; + AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); + } + else if (range >= ONE_HOUR * MIN_TIME_SPLIT_NUMBER) + { + var tick = GetTickSecond(range, splitNumber, ONE_HOUR); + var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; + AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); + } + else if (range >= ONE_MINUTE * MIN_TIME_SPLIT_NUMBER) + { + var tick = GetTickSecond(range, splitNumber, ONE_MINUTE); + var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; + AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); + } + else + { + var tick = GetTickSecond(range, splitNumber, ONE_SECOND); + var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; + AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); + } + } + + private static int GetTickSecond(int range, int splitNumber, int tickSecond) + { + var num = 0; + if (splitNumber > 0) + { + num = Math.Max(range / (splitNumber * tickSecond), 1); + } + else + { + num = 1; + var tick = tickSecond; + while (range / tick > 8) + { + num++; + tick = num * tickSecond; + } + } + return num * tickSecond; + } + + private static void AddTickTimestamp(List<double> list, int startTimestamp, int maxTimestamp, int tickSecond) + { + while (startTimestamp < maxTimestamp) + { + list.Add(startTimestamp); + startTimestamp += tickSecond; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Utilities/DateTimeUtil.cs.meta b/Assets/XCharts/Runtime/Utilities/DateTimeUtil.cs.meta new file mode 100644 index 0000000..ac2244b --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/DateTimeUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f0ac80f189a04b5c826f40c8bc8af64 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Utilities/DefineSymbolsUtil.cs b/Assets/XCharts/Runtime/Utilities/DefineSymbolsUtil.cs new file mode 100644 index 0000000..12a24c8 --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/DefineSymbolsUtil.cs @@ -0,0 +1,89 @@ +#if UNITY_EDITOR + +using System; +using System.Reflection; +using System.Text; +using UnityEditor; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class DefineSymbolsUtil + { + private static readonly StringBuilder s_StringBuilder = new StringBuilder(); + + public static void AddGlobalDefine(string symbol) + { + var flag = false; + var num = 0; + foreach (var buildTargetGroup in (BuildTargetGroup[]) Enum.GetValues(typeof(BuildTargetGroup))) + { + if (IsValidBuildTargetGroup(buildTargetGroup)) + { + var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + symbols = symbols.Replace(" ", ""); + if (Array.IndexOf(symbols.Split(';'), symbol) != -1) continue; + flag = true; + num++; + var defines = symbols + (symbols.Length > 0 ? ";" + symbol : symbol); + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, defines); + } + } + if (flag) + { + Debug.LogFormat("Added global define symbol \"{0}\" to {1} BuildTargetGroups.", symbol, num); + } + } + + public static void RemoveGlobalDefine(string symbol) + { + var flag = false; + var num = 0; + foreach (var buildTargetGroup in (BuildTargetGroup[]) Enum.GetValues(typeof(BuildTargetGroup))) + { + if (IsValidBuildTargetGroup(buildTargetGroup)) + { + var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup).Split(';'); + if (Array.IndexOf(symbols, symbol) == -1) continue; + flag = true; + num++; + s_StringBuilder.Length = 0; + foreach (var str in symbols) + { + if (!str.Equals(symbol)) + { + if (s_StringBuilder.Length > 0) s_StringBuilder.Append(";"); + s_StringBuilder.Append(str); + } + } + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, s_StringBuilder.ToString()); + } + } + if (flag) + { + Debug.LogFormat("Removed global define symbol \"{0}\" to {1} BuildTargetGroups.", symbol, num); + } + } + + private static bool IsValidBuildTargetGroup(BuildTargetGroup group) + { + if (group == BuildTargetGroup.Unknown) return false; + var type = Type.GetType("UnityEditor.Modules.ModuleManager, UnityEditor.dll"); + if (type == null) return true; + var method1 = type.GetMethod("GetTargetStringFromBuildTargetGroup", BindingFlags.Static | BindingFlags.NonPublic); + var method2 = typeof(PlayerSettings).GetMethod("GetPlatformName", BindingFlags.Static | BindingFlags.NonPublic); + if (method1 == null || method2 == null) return true; + var str1 = (string) method1.Invoke(null, new object[] { group }); + var str2 = (string) method2.Invoke(null, new object[] { group }); + if (string.IsNullOrEmpty(str1)) + { + return !string.IsNullOrEmpty(str2); + } + else + { + return true; + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Utilities/DefineSymbolsUtil.cs.meta b/Assets/XCharts/Runtime/Utilities/DefineSymbolsUtil.cs.meta new file mode 100644 index 0000000..eae3d81 --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/DefineSymbolsUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91545951242fa441eb1a9bba3a6ad5a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Utilities/PropertyUtil.cs b/Assets/XCharts/Runtime/Utilities/PropertyUtil.cs new file mode 100644 index 0000000..313ac3d --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/PropertyUtil.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class PropertyUtil + { + public static bool SetColor(ref Color currentValue, Color newValue) + { + if (currentValue.r == newValue.r && currentValue.g == newValue.g && currentValue.b == newValue.b && currentValue.a == newValue.a) + return false; + + currentValue = newValue; + return true; + } + + public static bool SetColor(ref Color32 currentValue, Color32 newValue) + { + if (currentValue.r == newValue.r && currentValue.g == newValue.g && currentValue.b == newValue.b && currentValue.a == newValue.a) + return false; + + currentValue = newValue; + return true; + } + + public static bool SetStruct<T>(ref T currentValue, T newValue) where T : struct + { + if (EqualityComparer<T>.Default.Equals(currentValue, newValue)) + return false; + + currentValue = newValue; + return true; + } + + public static bool SetClass<T>(ref T currentValue, T newValue, bool notNull = false) where T : class + { + if (notNull) + { + if (newValue == null) + { + Debug.LogError("can not be null."); + return false; + } + } + if ((currentValue == null && newValue == null) || (currentValue != null && currentValue.Equals(newValue))) + return false; + + currentValue = newValue; + return true; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Utilities/PropertyUtil.cs.meta b/Assets/XCharts/Runtime/Utilities/PropertyUtil.cs.meta new file mode 100644 index 0000000..9292ef0 --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/PropertyUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1f52eadd805d43aea47947fb81e761f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Utilities/ReflectionUtil.cs b/Assets/XCharts/Runtime/Utilities/ReflectionUtil.cs new file mode 100644 index 0000000..5af73af --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/ReflectionUtil.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace XCharts.Runtime +{ + public static class ReflectionUtil + { + private static Dictionary<object, MethodInfo> listClearMethodInfoCaches = new Dictionary<object, MethodInfo>(); + private static Dictionary<object, MethodInfo> listAddMethodInfoCaches = new Dictionary<object, MethodInfo>(); + + public static void InvokeListClear(object obj, FieldInfo field) + { + var list = field.GetValue(obj); + MethodInfo method; + if (!listClearMethodInfoCaches.TryGetValue(list, out method)) + { + method = list.GetType().GetMethod("Clear"); + listClearMethodInfoCaches[list] = method; + } + method.Invoke(list, new object[] { }); + } + public static int InvokeListCount(object obj, FieldInfo field) + { + var list = field.GetValue(obj); + return (int) list.GetType().GetProperty("Count").GetValue(list, null); + } + + public static void InvokeListAdd(object obj, FieldInfo field, object item) + { + var list = field.GetValue(obj); + MethodInfo method; + if (!listAddMethodInfoCaches.TryGetValue(list, out method)) + { + method = list.GetType().GetMethod("Add"); + listAddMethodInfoCaches[list] = method; + } + method.Invoke(list, new object[] { item }); + } + + public static T InvokeListGet<T>(object obj, FieldInfo field, int i) + { + var list = field.GetValue(obj); + var item = list.GetType().GetProperty("Item").GetValue(list, new object[] { i }); + return (T) item; + } + + public static void InvokeListAddTo<T>(object obj, FieldInfo field, Action<T> callback) + { + var list = field.GetValue(obj); + var listType = list.GetType(); + var count = Convert.ToInt32(listType.GetProperty("Count").GetValue(list, null)); + for (int i = 0; i < count; i++) + { + var item = listType.GetProperty("Item").GetValue(list, new object[] { i }); + callback((T) item); + } + } + + public static object DeepCloneSerializeField(object obj) + { + if (obj == null) + return null; + + var type = obj.GetType(); + if (type.IsValueType || type == typeof(string)) + { + return obj; + } + else if (type.IsArray) + { + var elementType = Type.GetType(type.FullName.Replace("[]", string.Empty)); + var array = obj as Array; + var copied = Array.CreateInstance(elementType, array.Length); + for (int i = 0; i < array.Length; i++) + copied.SetValue(DeepCloneSerializeField(array.GetValue(i)), i); + return Convert.ChangeType(copied, obj.GetType()); + } + else if (type.IsClass) + { + object returnObj; + var listObj = obj as IList; + if (listObj != null) + { + var properties = type.GetProperties(); + var customList = typeof(List<>).MakeGenericType((properties[properties.Length - 1]).PropertyType); + returnObj = (IList) Activator.CreateInstance(customList); + var list = (IList) returnObj; + foreach (var item in ((IList) obj)) + { + if (item == null) + continue; + list.Add(DeepCloneSerializeField(item)); + } + } + else + { + try + { + returnObj = Activator.CreateInstance(type); + } + catch + { + return null; + } + var fileds = type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + for (int i = 0; i < fileds.Length; i++) + { + var field = fileds[i]; + if (!field.IsDefined(typeof(SerializeField), false)) + continue; + var filedValue = field.GetValue(obj); + if (filedValue == null) + { + field.SetValue(returnObj, filedValue); + } + else + { + field.SetValue(returnObj, DeepCloneSerializeField(filedValue)); + } + } + } + return returnObj; + } + else + { + throw new ArgumentException("DeepCloneSerializeField: Unknown type:" + type + "," + obj); + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Utilities/ReflectionUtil.cs.meta b/Assets/XCharts/Runtime/Utilities/ReflectionUtil.cs.meta new file mode 100644 index 0000000..77dc154 --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/ReflectionUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03acc4ee710ff4bad9a1740391c86cb9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Utilities/RuntimeUtil.cs b/Assets/XCharts/Runtime/Utilities/RuntimeUtil.cs new file mode 100644 index 0000000..8bd0fe0 --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/RuntimeUtil.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using UnityEngine; +using UnityEngine.Assertions; + +namespace XCharts.Runtime +{ + public static class RuntimeUtil + { + public static bool HasSubclass(Type type) + { + var typeMap = GetAllTypesDerivedFrom(type); + foreach (var t in typeMap) + { + return true; + } + return false; + } + + public static IEnumerable<Type> GetAllTypesDerivedFrom<T>() + { +#if UNITY_EDITOR && UNITY_2019_2_OR_NEWER + return UnityEditor.TypeCache.GetTypesDerivedFrom<T>(); +#else + return GetAllAssemblyTypes().Where(t => t.IsSubclassOf(typeof(T))); +#endif + } + public static IEnumerable<Type> GetAllTypesDerivedFrom(Type type) + { +#if UNITY_EDITOR && UNITY_2019_2_OR_NEWER + return UnityEditor.TypeCache.GetTypesDerivedFrom(type); +#else + return GetAllAssemblyTypes().Where(t => t.IsSubclassOf(type)); +#endif + } + + static IEnumerable<Type> m_AssemblyTypes; + + public static IEnumerable<Type> GetAllAssemblyTypes() + { + if (m_AssemblyTypes == null) + { + m_AssemblyTypes = AppDomain.CurrentDomain.GetAssemblies() + .SelectMany(t => + { + var innerTypes = new Type[0]; + try + { + innerTypes = t.GetTypes(); + } + catch { } + return innerTypes; + }); + } + return m_AssemblyTypes; + } + + public static T GetAttribute<T>(this Type type, bool check = true) where T : Attribute + { + if (type.IsDefined(typeof(T), false)) + return (T) type.GetCustomAttributes(typeof(T), false) [0]; + else + { + if (check) + Assert.IsTrue(false, "Attribute not found:" + type.Name); + return null; + } + } + public static T GetAttribute<T>(this MemberInfo type, bool check = true) where T : Attribute + { + if (type.IsDefined(typeof(T), false)) + return (T) type.GetCustomAttributes(typeof(T), false) [0]; + else + { + if (check) + Assert.IsTrue(false, "Attribute not found:" + type.Name); + return null; + } + } + + + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Utilities/RuntimeUtil.cs.meta b/Assets/XCharts/Runtime/Utilities/RuntimeUtil.cs.meta new file mode 100644 index 0000000..448e24e --- /dev/null +++ b/Assets/XCharts/Runtime/Utilities/RuntimeUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44becf1664ae64397b44adcf65e6d8d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Widgets.meta b/Assets/XCharts/Runtime/Widgets.meta new file mode 100644 index 0000000..acbde32 --- /dev/null +++ b/Assets/XCharts/Runtime/Widgets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e8b7c21c2d5a45f09bfd4028bbe5f63 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Widgets/ProgressBar.cs b/Assets/XCharts/Runtime/Widgets/ProgressBar.cs new file mode 100644 index 0000000..8efac8a --- /dev/null +++ b/Assets/XCharts/Runtime/Widgets/ProgressBar.cs @@ -0,0 +1,51 @@ +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [DisallowMultipleComponent] + public class ProgressBar : BaseChart + { + [SerializeField][Range(0f, 1f)] private float m_Value = 0.5f; + [SerializeField] private Color m_BackgroundColor = new Color32(255, 233, 233, 255); + [SerializeField] private Color m_StartColor = Color.blue; + [SerializeField] private Color m_EndColor = Color.red; + [SerializeField] private float[] m_CornerRadius = new float[] { 0, 0, 0, 0 }; + + public float value { get { return m_Value; } set { m_Value = value; SetVerticesDirty(); } } + public Color32 backgroundColor { get { return m_BackgroundColor; } set { m_BackgroundColor = value; SetVerticesDirty(); } } + public Color32 startColor { get { return m_StartColor; } set { m_StartColor = value; SetVerticesDirty(); } } + public Color32 endColor { get { return m_EndColor; } set { m_EndColor = value; SetVerticesDirty(); } } + public float[] cornerRadius { get { return m_CornerRadius; } set { m_CornerRadius = value; SetVerticesDirty(); } } + +#if UNITY_EDITOR + protected override void Reset() + { + base.Reset(); + var title = GetOrAddChartComponent<Title>(); + title.text = "ProgressBar"; + title.show = false; + SetSize(580, 4); + RemoveData(); + } +#endif + + protected override void OnDrawPainterBase(VertexHelper vh, Painter painter) + { + vh.Clear(); + var centerPos = new Vector3(chartPosition.x + m_ChartWidth / 2, chartPosition.y + m_ChartHeight / 2); + UGL.DrawRoundRectangle(vh, centerPos, m_ChartWidth, m_ChartHeight, m_BackgroundColor, m_BackgroundColor, + 0, m_CornerRadius, true); + + var valueWidth = m_Value * m_ChartWidth; + var valuePos = new Vector3(chartPosition.x + valueWidth / 2, centerPos.y); + var endColor = Color.Lerp(m_StartColor, m_EndColor, m_Value); + UGL.DrawRoundRectangle(vh, valuePos, valueWidth, m_ChartHeight, m_StartColor, endColor, 0, + m_CornerRadius, true); + } + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Widgets/ProgressBar.cs.meta b/Assets/XCharts/Runtime/Widgets/ProgressBar.cs.meta new file mode 100644 index 0000000..1b34a70 --- /dev/null +++ b/Assets/XCharts/Runtime/Widgets/ProgressBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd18af5634e604a3c97fb1ff0fc5d682 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/Widgets/SVGImage.cs b/Assets/XCharts/Runtime/Widgets/SVGImage.cs new file mode 100644 index 0000000..1e12c97 --- /dev/null +++ b/Assets/XCharts/Runtime/Widgets/SVGImage.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using UnityEngine.UI; +using XUGL; + +namespace XCharts.Runtime +{ + [ExecuteInEditMode] + public class SVGImage : MaskableGraphic + { + [SerializeField] private bool m_MirrorY; + [SerializeField] private string m_SVGPath; + + private SVGPath m_Path; + + public string svgPath { set { m_SVGPath = value; } get { return m_SVGPath; } } + public bool mirrorY { set { m_MirrorY = value; } get { return m_MirrorY; } } + + protected override void Awake() + { + base.Awake(); + m_Path = SVGPath.Parse(m_SVGPath); + m_Path.mirrorY = m_MirrorY; + } + + protected override void OnPopulateMesh(VertexHelper vh) + { + vh.Clear(); + if (m_Path != null) + m_Path.Draw(vh); + } + + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/Widgets/SVGImage.cs.meta b/Assets/XCharts/Runtime/Widgets/SVGImage.cs.meta new file mode 100644 index 0000000..cf55b08 --- /dev/null +++ b/Assets/XCharts/Runtime/Widgets/SVGImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe10ee35a038646b6aedfffb30f84024 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XCharts.Runtime.asmdef b/Assets/XCharts/Runtime/XCharts.Runtime.asmdef new file mode 100644 index 0000000..aa9babc --- /dev/null +++ b/Assets/XCharts/Runtime/XCharts.Runtime.asmdef @@ -0,0 +1,13 @@ +{ + "name": "XCharts.Runtime", + "references": [ + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XCharts.Runtime.asmdef.meta b/Assets/XCharts/Runtime/XCharts.Runtime.asmdef.meta new file mode 100644 index 0000000..2b08206 --- /dev/null +++ b/Assets/XCharts/Runtime/XCharts.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dd8043639e4014317a7246f064330196 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL.meta b/Assets/XCharts/Runtime/XUGL.meta new file mode 100644 index 0000000..53b2bee --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4fe06f67e9674b808b44154ab0e5fc3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/SVG.meta b/Assets/XCharts/Runtime/XUGL/SVG.meta new file mode 100644 index 0000000..bd6001d --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e78d1d27fb8f42948af1c6050eb6a46 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVG.cs b/Assets/XCharts/Runtime/XUGL/SVG/SVG.cs new file mode 100644 index 0000000..791620d --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVG.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XUGL +{ + public static class SVG + { + public static bool yMirror = false; + public static void Test(VertexHelper vh) + { + //UGL.DrawSvgPath(vh, "path://M600,800 C625,700 725,700 750,800 S875,900 900,800"); + //UGL.DrawSvgPath(vh, "path://M67.335,33.596L67.335,33.596c-0.002-1.39-1.153-3.183-3.328-4.218h-9.096v-2.07h5.371 c-4.939-2.07-11.199-4.141-14.89-4.141H19.72v12.421v5.176h38.373c4.033,0,8.457-1.035,9.142-5.176h-0.027 c0.076-0.367,0.129-0.751,0.129-1.165L67.335,33.596L67.335,33.596z M27.999,30.413h-3.105v-4.141h3.105V30.413z M35.245,30.413 h-3.104v-4.141h3.104V30.413z M42.491,30.413h-3.104v-4.141h3.104V30.413z M49.736,30.413h-3.104v-4.141h3.104V30.413z M14.544,40.764c1.143,0,2.07-0.927,2.07-2.07V35.59V25.237c0-1.145-0.928-2.07-2.07-2.07H-9.265c-1.143,0-2.068,0.926-2.068,2.07 v10.351v3.105c0,1.144,0.926,2.07,2.068,2.07H14.544L14.544,40.764z M8.333,26.272h3.105v4.141H8.333V26.272z M1.087,26.272h3.105 v4.141H1.087V26.272z M-6.159,26.272h3.105v4.141h-3.105V26.272z M-9.265,41.798h69.352v1.035H-9.265V41.798z"); + //UGL.DrawSvgPath(vh, "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z"); + + //人体 + UGL.DrawSvgPath(vh, "path://M36.7,102.84c-1.17,2.54-2.99,4.98-3.39,7.63c-1.51,9.89-3.31,19.58-1.93,29.95 c0.95,7.15-2.91,14.82-3.57,22.35c-0.64,7.36-0.2,14.86,0.35,22.25c0.12,1.68,2.66,3.17,4.67,5.4c-0.6,0.82-1.5,2.22-2.58,3.48 c-0.96,1.12-1.96,2.35-3.21,3.04c-1.71,0.95-3.71,2.03-5.51,1.9c-1.18-0.08-3.04-2.13-3.16-3.43c-0.44-4.72,0-9.52-0.41-14.25 c-0.94-10.88-2.32-21.72-3.24-32.61c-0.49-5.84-1.63-12.01-0.35-17.54c3.39-14.56,2.8-28.84,0.36-43.4 c-2.71-16.16-1.06-32.4,0.54-48.59c0.91-9.22,4.62-17.36,8.53-25.57c1.32-2.77,1.88-6.84,0.87-9.62C21.89-3.77,18.09-11,14.7-18.38 c-0.56,0.1-1.13,0.21-1.69,0.31C10.17-11.52,6.29-5.2,4.71,1.65C2.05,13.21-4.42,22.3-11.43,31.28c-1.32,1.69-2.51,3.5-3.98,5.04 c-4.85,5.08-3.25,10.98-2.32,16.82c0.25,1.53,0.52,3.06,0.77,4.59c-0.53,0.22-1.07,0.43-1.6,0.65c-1.07-2.09-2.14-4.19-3.28-6.44 c-6.39,2.91-2.67,9.6-5.23,15.16c-1.61-3.31-2.77-5.68-3.93-8.06c0-0.33,0-0.67,0-1c6.96-16.08,14.63-31.9,20.68-48.31 C-5.24-4.07-2.03-18.55,2-32.73c0.36-1.27,0.75-2.53,0.98-3.82c1.36-7.75,4.19-10.23,11.88-10.38c1.76-0.04,3.52-0.21,5.76-0.35 c-0.55-3.95-1.21-7.3-1.45-10.68c-0.61-8.67,0.77-16.69,7.39-23.19c2.18-2.14,4.27-4.82,5.25-7.65c2.39-6.88,11.66-9,16.94-8.12 c5.92,0.99,12.15,7.93,12.16,14.12c0.01,9.89-5.19,17.26-12.24,23.68c-2.17,1.97-5.35,4.77-5.17,6.94c0.31,3.78,4.15,5.66,8.08,6.04 c1.82,0.18,3.7,0.37,5.49,0.1c5.62-0.85,8.8,2.17,10.85,6.73C73.38-27.19,78.46-14.9,84.2-2.91c1.52,3.17,4.52,5.91,7.41,8.09 c7.64,5.77,15.57,11.16,23.45,16.61c2.28,1.58,4.64,3.23,7.21,4.14c5.18,1.84,8.09,5.63,9.82,10.46c0.45,1.24,0.19,3.71-0.6,4.18 c-1.06,0.63-3.15,0.27-4.44-0.38c-7.05-3.54-12.84-8.88-19.14-13.5c-3.5-2.57-7.9-4-12.03-5.6c-9.44-3.66-17.73-8.42-22.5-18.09 c-2.43-4.94-6.09-9.27-9.69-14.61c-1.2,10.98-4.46,20.65,1.14,31.19c6.62,12.47,5.89,26.25,1.21,39.49 c-2.52,7.11-6.5,13.74-8.67,20.94c-1.91,6.33-2.2,13.15-3.23,19.75c-0.72,4.63-0.84,9.48-2.36,13.84 c-2.49,7.16-6.67,13.83-5.84,21.82c0.42,4.02,1.29,7.99,2.1,12.8c-3.74-0.49-7.47-0.4-10.67-1.66c-1.33-0.53-2.43-4.11-2.07-6.01 c1.86-9.94,3.89-19.69,0.07-29.74C34.55,108.63,36.19,105.52,36.7,102.84c1.25-8.45,2.51-16.89,3.71-24.9 c-0.83-0.58-0.85-0.59-0.87-0.61c-0.03,0.16-0.07,0.32-0.09,0.48C38.53,86.15,37.62,94.5,36.7,102.84z"); + + //UGL.DrawSvgPath(vh, "path://M29.902,23.275c1.86,0,3.368-1.506,3.368-3.365c0-1.859-1.508-3.365-3.368-3.365 c-1.857,0-3.365,1.506-3.365,3.365C26.537,21.769,28.045,23.275,29.902,23.275z M36.867,30.74c-1.666-0.467-3.799-1.6-4.732-4.199 c-0.932-2.6-3.131-2.998-4.797-2.998s-7.098,3.894-7.098,3.894c-1.133,1.001-2.1,6.502-0.967,6.769 c1.133,0.269,1.266-1.533,1.934-3.599c0.666-2.065,3.797-3.466,3.797-3.466s0.201,2.467-0.398,3.866 c-0.599,1.399-1.133,2.866-1.467,6.198s-1.6,3.665-3.799,6.266c-2.199,2.598-0.6,3.797,0.398,3.664 c1.002-0.133,5.865-5.598,6.398-6.998c0.533-1.397,0.668-3.732,0.668-3.732s0,0,2.199,1.867c2.199,1.865,2.332,4.6,2.998,7.73 s2.332,0.934,2.332-0.467c0-1.401,0.269-5.465-1-7.064c-1.265-1.6-3.73-3.465-3.73-5.265s1.199-3.732,1.199-3.732 c0.332,1.667,3.335,3.065,5.599,3.399C38.668,33.206,38.533,31.207,36.867,30.74z"); + + //钟表指针 + //UGL.DrawSvgPath(vh, "path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z"); + + //钟表指针 + //UGL.DrawSvgPath(vh, "path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z"); + } + + public static void DrawPath(VertexHelper vh, string path) + { + var svgPath = SVGPath.Parse(path); + DrawPath(vh, svgPath); + } + + public static void DrawPath(VertexHelper vh, SVGPath path) + { + path.Draw(vh); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVG.cs.meta b/Assets/XCharts/Runtime/XUGL/SVG/SVG.cs.meta new file mode 100644 index 0000000..133f0d2 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVG.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbe2b3aa282ad4cd9b469792fde7e092 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVGPath.cs b/Assets/XCharts/Runtime/XUGL/SVG/SVGPath.cs new file mode 100644 index 0000000..9239ee1 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVGPath.cs @@ -0,0 +1,202 @@ +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.UI; + +namespace XUGL +{ + public class SVGPath + { + private static Regex s_PathRegex = new Regex(@"(([a-z]|[A-Z])(\d|\.|,|-)*)"); + private static Regex s_PathValueRegex = new Regex(@"(^[a-z]|[A-Z])\s*(-?\d+\.*\d*)*[\s|,|-]*(\d+\.*\d*)*"); + private static Regex s_PathValueRegex2 = new Regex(@"(-?\d+\.?\d*)"); + public bool mirrorY = true; + public List<SVGPathSeg> segs = new List<SVGPathSeg>(); + + public void AddSegment(SVGPathSeg seg) + { + segs.Add(seg); + } + + public static SVGPath Parse(string path) + { + if (string.IsNullOrEmpty(path)) + return new SVGPath(); + if (path.StartsWith("path://")) + { + path = path.Substring(7); + } + path = path.Replace(' ', ','); + var mc = s_PathRegex.Matches(path); + var svgPath = new SVGPath(); + + foreach (var m in mc) + { + var key = m.ToString(); + if (key.Equals("Z") || key.Equals("z")) + { + var seg = new SVGPathSeg(SVGPathSegType.Z); + seg.raw = key; + seg.relative = key.Equals("z"); + svgPath.AddSegment(seg); + } + else + { + var type = s_PathValueRegex.Match(key).Groups[1].ToString().ToCharArray() [0]; + var mc3 = s_PathValueRegex2.Matches(key); + SVGPathSeg seg = null; + switch (type) + { + case 'M': + case 'm': + seg = new SVGPathSeg(SVGPathSegType.M); + seg.relative = type == 'm'; + break; + case 'L': + case 'l': + seg = new SVGPathSeg(SVGPathSegType.L); + seg.relative = type == 'l'; + break; + case 'H': + case 'h': + seg = new SVGPathSeg(SVGPathSegType.H); + seg.relative = type == 'h'; + break; + case 'V': + case 'v': + seg = new SVGPathSeg(SVGPathSegType.V); + seg.relative = type == 'v'; + break; + case 'C': + case 'c': + seg = new SVGPathSeg(SVGPathSegType.C); + seg.relative = type == 'c'; + break; + case 'S': + case 's': + seg = new SVGPathSeg(SVGPathSegType.S); + seg.relative = type == 's'; + break; + case 'Q': + case 'q': + seg = new SVGPathSeg(SVGPathSegType.Q); + seg.relative = type == 'q'; + break; + case 'T': + case 't': + seg = new SVGPathSeg(SVGPathSegType.T); + seg.relative = type == 't'; + break; + case 'A': + case 'a': + seg = new SVGPathSeg(SVGPathSegType.A); + seg.relative = type == 'a'; + break; + } + if (seg != null) + { + seg.raw = key; + foreach (var m3 in mc3) + { + // if (type == 'c' || type == 'C') + //Debug.LogError("\tmc3:" + type + "," + m3.ToString()); + float p; + if (float.TryParse(m3.ToString(), out p)) + seg.parameters.Add(p); + } + svgPath.AddSegment(seg); + } + } + } + // Debug.LogError(path); + // foreach (var cmd in svgPath.commands) + // { + // Debug.LogError(cmd.raw); + // } + return svgPath; + } + + public void Draw(VertexHelper vh) + { + var sp = Vector2.zero; + var np = Vector2.zero; + var posList = new List<Vector3>(); + var bezierList = new List<Vector3>(); + var cp2 = Vector2.zero; + foreach (var seg in segs) + { + switch (seg.type) + { + case SVGPathSegType.M: + sp = np = seg.relative ? np + seg.p1 : seg.p1; + if (posList.Count > 0) + { + DrawPosList(vh, posList); + } + posList.Add(np); + break; + case SVGPathSegType.L: + np = seg.relative ? np + seg.p1 : seg.p1; + posList.Add(np); + break; + case SVGPathSegType.H: + np = seg.relative ? np + new Vector2(seg.value, 0) : new Vector2(seg.value, np.y); + posList.Add(np); + break; + case SVGPathSegType.V: + np = seg.relative ? np + new Vector2(0, seg.value) : new Vector2(np.x, seg.value); + posList.Add(np); + break; + case SVGPathSegType.C: + var cp1 = seg.relative ? np + seg.p1 : seg.p1; + cp2 = seg.relative ? np + seg.p2 : seg.p2; + var ep = seg.relative ? np + seg.p3 : seg.p3; + var dist = (int) Vector2.Distance(np, ep) * 2; + if (dist < 2) dist = 2; + UGLHelper.GetBezierList2(ref bezierList, np, ep, dist, cp1, cp2); + for (int n = 1; n < bezierList.Count; n++) + posList.Add(bezierList[n]); + np = ep; + break; + case SVGPathSegType.S: + cp1 = np + (np - cp2).normalized * Vector2.Distance(np, cp2); + var scp2 = seg.relative ? np + seg.p1 : seg.p1; + ep = seg.relative ? np + seg.p2 : seg.p2; + dist = (int) Vector2.Distance(np, ep) * 2; + if (dist < 2) dist = 2; + UGLHelper.GetBezierList2(ref bezierList, np, ep, dist, cp1, scp2); + for (int n = 1; n < bezierList.Count; n++) + posList.Add(bezierList[n]); + break; + case SVGPathSegType.Z: + posList.Add(sp); + DrawPosList(vh, posList); + break; + case SVGPathSegType.Q: + case SVGPathSegType.T: + case SVGPathSegType.A: + default: + Debug.LogError("unknow seg:" + seg.type); + break; + } + } + if (posList.Count > 0) + DrawPosList(vh, posList); + //UGL.DrawCricle(vh, sp, 1, Color.black); + } + + private void DrawPosList(VertexHelper vh, List<Vector3> posList) + { + if (mirrorY) + { + for (int i = posList.Count - 1; i >= 0; i--) + { + var pos = posList[i]; + posList[i] = new Vector3(pos.x, -pos.y); + } + } + UGL.DrawLine(vh, posList, 1f, Color.red, false); + posList.Clear(); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVGPath.cs.meta b/Assets/XCharts/Runtime/XUGL/SVG/SVGPath.cs.meta new file mode 100644 index 0000000..20f5c8d --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVGPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4119dc5490ec4f8bbcc67aa6eee024a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSeg.cs b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSeg.cs new file mode 100644 index 0000000..acce361 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSeg.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.UI; + +namespace XUGL +{ + public class SVGPathSeg + { + public SVGPathSegType type; + public bool relative; + public List<float> parameters = new List<float>(); + public string raw; + + public SVGPathSeg(SVGPathSegType type) + { + this.type = type; + } + + public float value + { + get + { + if (type == SVGPathSegType.H) + return SVG.yMirror ? -parameters[0] : parameters[0]; + else + return parameters[0]; + } + } + public float x { get { return parameters[0]; } } + public float y { get { return SVG.yMirror ? -parameters[1] : parameters[1]; } } + public Vector2 p1 { get { return new Vector2(parameters[0], (SVG.yMirror ? -parameters[1] : parameters[1])); } } + public Vector2 p2 { get { return new Vector2(parameters[2], (SVG.yMirror ? -parameters[3] : parameters[3])); } } + public Vector2 p3 { get { return new Vector2(parameters[4], (SVG.yMirror ? -parameters[5] : parameters[5])); } } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSeg.cs.meta b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSeg.cs.meta new file mode 100644 index 0000000..8127559 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSeg.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c97d44ceb28a471aa3d657f3984e6b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSegType.cs b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSegType.cs new file mode 100644 index 0000000..174dc1c --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSegType.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.UI; + +namespace XUGL +{ + public enum SVGPathSegType + { + /// <summary> + /// move to + /// </summary> + M, + /// <summary> + /// line to + /// </summary> + L, + /// <summary> + /// horizontal line to + /// </summary> + H, + /// <summary> + /// vertial line to + /// </summary> + V, + /// <summary> + /// curve to + /// </summary> + C, + /// <summary> + /// smooth curve to + /// </summary> + S, + /// <summary> + /// quadratic bezier curve + /// </summary> + Q, + /// <summary> + /// smooth quadratic bezier curve to + /// </summary> + T, + /// <summary> + /// elliptical Arc + /// </summary> + A, + /// <summary> + /// close path + /// </summary> + Z + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSegType.cs.meta b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSegType.cs.meta new file mode 100644 index 0000000..217d4b6 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/SVG/SVGPathSegType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebd7fe1a38c81433697bbe21c2e962ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/UGL.cs b/Assets/XCharts/Runtime/XUGL/UGL.cs new file mode 100644 index 0000000..b260a52 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/UGL.cs @@ -0,0 +1,1901 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XUGL +{ + /// <summary> + /// UGUI Graphics Library. + /// |UGUI 图形库 + /// </summary> + public static class UGL + { + private static readonly Color32 s_ClearColor32 = new Color32(0, 0, 0, 0); + private static readonly Vector2 s_ZeroVector2 = Vector2.zero; + private static UIVertex[] s_Vertex = new UIVertex[4]; + private static List<Vector3> s_CurvesPosList = new List<Vector3>(); + + /// <summary> + /// Draw a arrow. 画箭头 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起始位置</param> + /// <param name="arrowPoint">箭头位置</param> + /// <param name="width">箭头宽</param> + /// <param name="height">箭头长</param> + /// <param name="offset">相对箭头位置的偏移</param> + /// <param name="dent">箭头凹度</param> + /// <param name="color">颜色</param> + public static void DrawArrow(VertexHelper vh, Vector3 startPoint, Vector3 arrowPoint, float width, + float height, float offset, float dent, Color32 color) + { + var dir = (arrowPoint - startPoint).normalized; + var sharpPos = arrowPoint + (offset + height / 4) * dir; + var middle = sharpPos + (dent - height) * dir; + var diff = Vector3.Cross(dir, Vector3.forward).normalized * width / 2; + var left = sharpPos - height * dir + diff; + var right = sharpPos - height * dir - diff; + DrawTriangle(vh, middle, sharpPos, left, color); + DrawTriangle(vh, middle, sharpPos, right, color); + } + + /// <summary> + /// Draw a line. 画直线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起点</param> + /// <param name="endPoint">终点</param> + /// <param name="width">线宽</param> + /// <param name="color">颜色</param> + public static void DrawLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, Color32 color) + { + DrawLine(vh, startPoint, endPoint, width, color, color); + } + + /// <summary> + /// Draw a line. 画直线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起点</param> + /// <param name="endPoint">终点</param> + /// <param name="width">线宽</param> + /// <param name="color">颜色</param> + /// <param name="toColor">渐变颜色</param> + public static void DrawLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, Color32 color, Color32 toColor) + { + if (startPoint == endPoint) return; + Vector3 v = Vector3.Cross(endPoint - startPoint, Vector3.forward).normalized * width; + s_Vertex[0].position = startPoint - v; + s_Vertex[1].position = endPoint - v; + s_Vertex[2].position = endPoint + v; + s_Vertex[3].position = startPoint + v; + + for (int j = 0; j < 4; j++) + { + s_Vertex[j].color = j == 0 || j == 3 ? color : toColor; + s_Vertex[j].uv0 = s_ZeroVector2; + } + vh.AddUIVertexQuad(s_Vertex); + } + + /// <summary> + /// Draw a line defined by three points. 画一条由3个点确定的折线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起始点</param> + /// <param name="middlePoint">中间转折点</param> + /// <param name="endPoint">终点</param> + /// <param name="width">线宽</param> + /// <param name="color">颜色</param> + public static void DrawLine(VertexHelper vh, Vector3 startPoint, Vector3 middlePoint, Vector3 endPoint, + float width, Color32 color) + { + var dir1 = (middlePoint - startPoint).normalized; + var dir2 = (endPoint - middlePoint).normalized; + var dir1v = Vector3.Cross(dir1, Vector3.forward).normalized; + var dir2v = Vector3.Cross(dir2, Vector3.forward).normalized; + var dir3 = (dir1 + dir2).normalized; + var isDown = Vector3.Cross(dir1, dir2).z <= 0; + var angle = (180 - Vector3.Angle(dir1, dir2)) * Mathf.Deg2Rad / 2; + var diff = width / Mathf.Sin(angle); + var dirDp = Vector3.Cross(dir3, Vector3.forward).normalized; + var dnPos = middlePoint + (isDown ? dirDp : -dirDp) * diff; + var upPos1 = middlePoint + (isDown ? -dir1v : dir1v) * width; + var upPos2 = middlePoint + (isDown ? -dir2v : dir2v) * width; + var startUp = startPoint - dir1v * width; + var startDn = startPoint + dir1v * width; + var endUp = endPoint - dir2v * width; + var endDn = endPoint + dir2v * width; + if (isDown) + { + DrawQuadrilateral(vh, startDn, startUp, upPos1, dnPos, color); + DrawQuadrilateral(vh, dnPos, upPos2, endUp, endDn, color); + DrawTriangle(vh, dnPos, upPos1, upPos2, color); + } + else + { + DrawQuadrilateral(vh, startDn, startUp, dnPos, upPos1, color); + DrawQuadrilateral(vh, upPos2, dnPos, endUp, endDn, color); + DrawTriangle(vh, dnPos, upPos1, upPos2, color); + } + } + + public static void DrawLine(VertexHelper vh, List<Vector3> points, float width, Color32 color, bool smooth, bool closepath = false) + { + for (int i = points.Count - 1; i >= 1; i--) + { + if (UGLHelper.IsValueEqualsVector3(points[i], points[i - 1])) + points.RemoveAt(i); + } + if (points.Count < 2) return; + else if (points.Count <= 2) + { + DrawLine(vh, points[0], points[1], width, color); + } + else if (smooth) + { + DrawCurves(vh, points, width, color, 2); + } + else + { + var ltp = Vector3.zero; + var lbp = Vector3.zero; + var ntp = Vector3.zero; + var nbp = Vector3.zero; + var itp = Vector3.zero; + var ibp = Vector3.zero; + var ctp = Vector3.zero; + var cbp = Vector3.zero; + if (closepath && !UGLHelper.IsValueEqualsVector3(points[points.Count - 1], points[0])) + { + points.Add(points[0]); + } + for (int i = 1; i < points.Count - 1; i++) + { + bool bitp = true, bibp = true; + UGLHelper.GetLinePoints(points[i - 1], points[i], points[i + 1], width, + ref ltp, ref lbp, + ref ntp, ref nbp, + ref itp, ref ibp, + ref ctp, ref cbp, + ref bitp, ref bibp); + if (i == 1) + { + vh.AddVert(ltp, color, Vector2.zero); + vh.AddVert(lbp, color, Vector2.zero); + } + if (bitp == bibp) + { + AddVertToVertexHelper(vh, itp, ibp, color); + } + else + { + if (bitp) + { + AddVertToVertexHelper(vh, itp, ctp, color); + AddVertToVertexHelper(vh, itp, cbp, color); + } + else + { + AddVertToVertexHelper(vh, ctp, ibp, color); + AddVertToVertexHelper(vh, cbp, ibp, color); + } + } + } + AddVertToVertexHelper(vh, ntp, nbp, color); + } + } + + public static void AddVertToVertexHelper(VertexHelper vh, Vector3 top, + Vector3 bottom, Color32 color, bool needTriangle = true) + { + AddVertToVertexHelper(vh, top, bottom, color, color, needTriangle); + } + + public static void AddVertToVertexHelper(VertexHelper vh, Vector3 top, + Vector3 bottom, Color32 topColor, Color32 bottomColor, bool needTriangle = true) + { + var lastVertCount = vh.currentVertCount; + vh.AddVert(top, topColor, Vector2.zero); + vh.AddVert(bottom, bottomColor, Vector2.zero); + if (needTriangle) + { + var indexRt = lastVertCount; + var indexRb = indexRt + 1; + var indexLt = indexRt - 2; + var indexLb = indexLt + 1; + vh.AddTriangle(indexLt, indexRb, indexLb); + vh.AddTriangle(indexLt, indexRt, indexRb); + } + } + + /// <summary> + /// Draw a dash line. 画虚线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起始点</param> + /// <param name="endPoint">结束点</param> + /// <param name="width">线宽</param> + /// <param name="color">起始颜色</param> + /// <param name="toColor">结束颜色</param> + /// <param name="lineLength">实线部分长度,默认为线宽的12倍</param> + /// <param name="gapLength">间隙部分长度,默认为线宽的3倍</param> + /// <param name="posList">可选,输出的关键点</param> + public static void DrawDashLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, + Color32 color, Color32 toColor, float lineLength = 0f, float gapLength = 0f, List<Vector3> posList = null) + { + float dist = Vector3.Distance(startPoint, endPoint); + if (dist < 0.1f) return; + if (lineLength == 0) lineLength = 12 * width; + if (gapLength == 0) gapLength = 3 * width; + int segment = Mathf.CeilToInt(dist / (lineLength + gapLength)); + Vector3 dir = (endPoint - startPoint).normalized; + Vector3 sp = startPoint, np; + var isGradient = !color.Equals(toColor); + if (posList != null) posList.Clear(); + for (int i = 1; i <= segment; i++) + { + if (posList != null) posList.Add(sp); + np = startPoint + dir * dist * i / segment; + var dashep = np - dir * gapLength; + DrawLine(vh, sp, dashep, width, isGradient ? Color32.Lerp(color, toColor, i * 1.0f / segment) : color); + sp = np; + } + if (posList != null) posList.Add(endPoint); + DrawLine(vh, sp, endPoint, width, toColor); + } + + /// <summary> + /// Draw a dot line. 画点线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起始点</param> + /// <param name="endPoint">结束点</param> + /// <param name="width">线宽</param> + /// <param name="color">起始颜色</param> + /// <param name="toColor">结束颜色</param> + /// <param name="lineLength">实线部分长度,默认为线宽的3倍</param> + /// <param name="gapLength">间隙部分长度,默认为线宽的3倍</param> + /// <param name="posList">可选,输出的关键点</param> + public static void DrawDotLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, + Color32 color, Color32 toColor, float lineLength = 0f, float gapLength = 0f, List<Vector3> posList = null) + { + var dist = Vector3.Distance(startPoint, endPoint); + if (dist < 0.1f) return; + if (lineLength == 0) lineLength = 3 * width; + if (gapLength == 0) gapLength = 3 * width; + var segment = Mathf.CeilToInt(dist / (lineLength + gapLength)); + var dir = (endPoint - startPoint).normalized; + var sp = startPoint; + var np = Vector3.zero; + var isGradient = !color.Equals(toColor); + if (posList != null) posList.Clear(); + for (int i = 1; i <= segment; i++) + { + if (posList != null) posList.Add(sp); + np = startPoint + dir * dist * i / segment; + var dashep = np - dir * gapLength; + DrawLine(vh, sp, dashep, width, isGradient ? Color32.Lerp(color, toColor, i * 1.0f / segment) : color); + sp = np; + } + if (posList != null) posList.Add(endPoint); + DrawLine(vh, sp, endPoint, width, toColor); + } + + /// <summary> + /// Draw a dash-dot line. 画点划线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起始点</param> + /// <param name="endPoint">结束点</param> + /// <param name="width">线宽</param> + /// <param name="color">颜色</param> + /// <param name="dashLength">划线长,默认15倍线宽</param> + /// <param name="dotLength">点线长,默认3倍线宽</param> + /// <param name="gapLength">间隙长,默认5倍线宽</param> + /// <param name="posList">可选,输出的关键点</param> + public static void DrawDashDotLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, + Color32 color, float dashLength = 0f, float dotLength = 0, float gapLength = 0f, + List<Vector3> posList = null) + { + float dist = Vector3.Distance(startPoint, endPoint); + if (dist < 0.1f) return; + if (dashLength == 0) dashLength = 15 * width; + if (dotLength == 0) dotLength = 3 * width; + if (gapLength == 0) gapLength = 5 * width; + int segment = Mathf.CeilToInt(dist / (dashLength + 2 * gapLength + dotLength)); + Vector3 dir = (endPoint - startPoint).normalized; + Vector3 sp = startPoint, np; + if (posList != null) posList.Clear(); + for (int i = 1; i <= segment; i++) + { + if (posList != null) posList.Add(sp); + np = startPoint + dir * dist * i / segment; + var dashep = np - dir * (2 * gapLength + dotLength); + DrawLine(vh, sp, dashep, width, color); + if (posList != null) posList.Add(dashep); + var dotsp = dashep + gapLength * dir; + var dotep = dotsp + dotLength * dir; + DrawLine(vh, dotsp, dotep, width, color); + if (posList != null) posList.Add(dotsp); + sp = np; + } + if (posList != null) posList.Add(endPoint); + DrawLine(vh, sp, endPoint, width, color); + } + + /// <summary> + /// Draw a dash-dot-dot line. 画双点划线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起始点</param> + /// <param name="endPoint">结束点</param> + /// <param name="width">线宽</param> + /// <param name="color">颜色</param> + /// <param name="dashLength">折线长,默认15倍线宽</param> + /// <param name="dotLength">点线长,默认3倍线宽</param> + /// <param name="gapLength">间隙长,默认5倍线宽</param> + /// <param name="posList">可选,输出的关键点</param> + public static void DrawDashDotDotLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, + Color32 color, float dashLength = 0f, float dotLength = 0f, float gapLength = 0f, + List<Vector3> posList = null) + { + float dist = Vector3.Distance(startPoint, endPoint); + if (dist < 0.1f) return; + if (dashLength == 0) dashLength = 15 * width; + if (dotLength == 0) dotLength = 3 * width; + if (gapLength == 0) gapLength = 5 * width; + int segment = Mathf.CeilToInt(dist / (dashLength + 3 * gapLength + 2 * dotLength)); + Vector3 dir = (endPoint - startPoint).normalized; + Vector3 sp = startPoint, np; + if (posList != null) posList.Clear(); + for (int i = 1; i <= segment; i++) + { + if (posList != null) posList.Add(sp); + np = startPoint + dir * dist * i / segment; + var dashep = np - dir * (3 * gapLength + 2 * dotLength); + DrawLine(vh, sp, dashep, width, color); + if (posList != null) posList.Add(dashep); + var dotsp = dashep + gapLength * dir; + var dotep = dotsp + dotLength * dir; + DrawLine(vh, dotsp, dotep, width, color); + if (posList != null) posList.Add(dotep); + var dotsp2 = dotep + gapLength * dir; + var dotep2 = dotsp2 + dotLength * dir; + DrawLine(vh, dotsp2, dotep2, width, color); + if (posList != null) posList.Add(dotep2); + sp = np; + } + if (posList != null) posList.Add(endPoint); + DrawLine(vh, sp, endPoint, width, color); + } + + /// <summary> + /// Draw a zebar-line. 画斑马线 + /// </summary> + /// <param name="vh"></param> + /// <param name="startPoint">起始点</param> + /// <param name="endPoint">结束点</param> + /// <param name="width">线宽</param> + /// <param name="zebraWidth">斑马条纹宽</param> + /// <param name="zebraGap">间隙宽</param> + /// <param name="color">起始颜色</param> + /// <param name="toColor">结束颜色</param> + public static void DrawZebraLine(VertexHelper vh, Vector3 startPoint, Vector3 endPoint, float width, + float zebraWidth, float zebraGap, Color32 color, Color32 toColor, float maxDistance) + { + var dist = Vector3.Distance(startPoint, endPoint); + if (dist < 0.1f) return; + if (zebraWidth == 0) zebraWidth = 3 * width; + if (zebraGap == 0) zebraGap = 3 * width; + var allSegment = Mathf.CeilToInt(maxDistance / (zebraWidth + zebraGap)); + var segment = Mathf.CeilToInt(dist / maxDistance * allSegment); + var dir = (endPoint - startPoint).normalized; + var sp = startPoint; + var np = Vector3.zero; + var isGradient = !color.Equals(toColor); + zebraWidth = (maxDistance - zebraGap * (allSegment - 1)) / allSegment; + for (int i = 1; i <= segment; i++) + { + np = sp + dir * zebraWidth; + DrawLine(vh, sp, np, width, isGradient ? Color32.Lerp(color, toColor, i * 1.0f / allSegment) : color); + sp = np + dir * zebraGap; + } + } + + /// <summary> + /// Draw a diamond. 画菱形(钻石形状) + /// </summary> + /// <param name="vh"></param> + /// <param name="center">中心点</param> + /// <param name="size">尺寸</param> + /// <param name="color">颜色</param> + public static void DrawDiamond(VertexHelper vh, Vector3 center, float size, Color32 color) + { + DrawDiamond(vh, center, size, color, color); + } + + /// <summary> + /// Draw a diamond. 画菱形(钻石形状) + /// </summary> + /// <param name="vh"></param> + /// <param name="center">中心点</param> + /// <param name="size">尺寸</param> + /// <param name="color">渐变色1</param> + /// <param name="toColor">渐变色2</param> + public static void DrawDiamond(VertexHelper vh, Vector3 center, float size, Color32 color, Color32 toColor) + { + var p1 = new Vector2(center.x - size, center.y); + var p2 = new Vector2(center.x, center.y + size); + var p3 = new Vector2(center.x + size, center.y); + var p4 = new Vector2(center.x, center.y - size); + DrawTriangle(vh, p4, p1, p2, color, color, toColor); + DrawTriangle(vh, p3, p4, p2, color, color, toColor); + } + + /// <summary> + /// Draw a square. 画正方形 + /// </summary> + /// <param name="center">中心点</param> + /// <param name="radius">半径</param> + /// <param name="color">颜色</param> + public static void DrawSquare(VertexHelper vh, Vector3 center, float radius, Color32 color) + { + DrawSquare(vh, center, radius, color, color, true); + } + + /// <summary> + /// Draw a square. 画带渐变的正方形 + /// </summary> + /// <param name="vh"></param> + /// <param name="center">中心点</param> + /// <param name="radius">半径</param> + /// <param name="color">渐变色1</param> + /// <param name="toColor">渐变色2</param> + /// <param name="vertical">渐变是否为垂直方向</param> + public static void DrawSquare(VertexHelper vh, Vector3 center, float radius, Color32 color, + Color32 toColor, bool vertical = true) + { + Vector3 p1, p2, p3, p4; + if (vertical) + { + p1 = new Vector3(center.x + radius, center.y - radius); + p2 = new Vector3(center.x - radius, center.y - radius); + p3 = new Vector3(center.x - radius, center.y + radius); + p4 = new Vector3(center.x + radius, center.y + radius); + } + else + { + p1 = new Vector3(center.x - radius, center.y - radius); + p2 = new Vector3(center.x - radius, center.y + radius); + p3 = new Vector3(center.x + radius, center.y + radius); + p4 = new Vector3(center.x + radius, center.y - radius); + } + DrawQuadrilateral(vh, p1, p2, p3, p4, color, toColor); + } + + /// <summary> + /// Draw a rectangle. 画带长方形 + /// </summary> + /// <param name="p1">起始点</param> + /// <param name="p2">结束点</param> + /// <param name="radius">半径</param> + /// <param name="color">颜色</param> + public static void DrawRectangle(VertexHelper vh, Vector3 p1, Vector3 p2, float radius, Color32 color) + { + DrawRectangle(vh, p1, p2, radius, color, color); + } + + /// <summary> + /// Draw a rectangle. 画带渐变的长方形 + /// </summary> + /// <param name="vh"></param> + /// <param name="p1">起始点</param> + /// <param name="p2">结束点</param> + /// <param name="radius">半径</param> + /// <param name="color">渐变色1</param> + /// <param name="toColor">渐变色2</param> + public static void DrawRectangle(VertexHelper vh, Vector3 p1, Vector3 p2, float radius, Color32 color, + Color32 toColor) + { + var dir = (p2 - p1).normalized; + var dirv = Vector3.Cross(dir, Vector3.forward).normalized; + + var p3 = p1 + dirv * radius; + var p4 = p1 - dirv * radius; + var p5 = p2 - dirv * radius; + var p6 = p2 + dirv * radius; + DrawQuadrilateral(vh, p3, p4, p5, p6, color, toColor); + } + + /// <summary> + /// Draw a rectangle. 画长方形 + /// </summary> + /// <param name="vh"></param> + /// <param name="p">中心点</param> + /// <param name="xRadius">x宽</param> + /// <param name="yRadius">y宽</param> + /// <param name="color">颜色</param> + /// <param name="vertical">是否垂直方向</param> + public static void DrawRectangle(VertexHelper vh, Vector3 p, float xRadius, float yRadius, + Color32 color, bool vertical = true) + { + DrawRectangle(vh, p, xRadius, yRadius, color, color, vertical); + } + + /// <summary> + /// Draw a rectangle. 画带渐变的长方形 + /// </summary> + /// <param name="vh"></param> + /// <param name="p">中心点</param> + /// <param name="xRadius">x宽</param> + /// <param name="yRadius">y宽</param> + /// <param name="color">渐变色1</param> + /// <param name="toColor">渐变色2</param> + /// <param name="vertical">是否垂直方向</param> + public static void DrawRectangle(VertexHelper vh, Vector3 p, float xRadius, float yRadius, + Color32 color, Color32 toColor, bool vertical = true) + { + Vector3 p1, p2, p3, p4; + if (vertical) + { + p1 = new Vector3(p.x + xRadius, p.y - yRadius); + p2 = new Vector3(p.x - xRadius, p.y - yRadius); + p3 = new Vector3(p.x - xRadius, p.y + yRadius); + p4 = new Vector3(p.x + xRadius, p.y + yRadius); + } + else + { + p1 = new Vector3(p.x - xRadius, p.y - yRadius); + p2 = new Vector3(p.x - xRadius, p.y + yRadius); + p3 = new Vector3(p.x + xRadius, p.y + yRadius); + p4 = new Vector3(p.x + xRadius, p.y - yRadius); + } + + DrawQuadrilateral(vh, p1, p2, p3, p4, color, toColor); + } + + public static void DrawRectangle(VertexHelper vh, Rect rect, Color32 color) + { + DrawRectangle(vh, rect.center, rect.width / 2, rect.height / 2, color, color, true); + } + + public static void DrawRectangle(VertexHelper vh, Rect rect, Color32 color, Color32 toColor) + { + DrawRectangle(vh, rect.center, rect.width / 2, rect.height / 2, color, toColor, true); + } + + public static void DrawRectangle(VertexHelper vh, Rect rect, float border, Color32 color) + { + DrawRectangle(vh, rect, border, color, color); + } + + public static void DrawRectangle(VertexHelper vh, Rect rect, float border, Color32 color, Color32 toColor) + { + DrawRectangle(vh, rect.center, rect.width / 2 - border, rect.height / 2 - border, color, toColor, true); + } + + /// <summary> + /// Draw a quadrilateral. 画任意的四边形 + /// </summary> + /// <param name="vh"></param> + /// <param name="p1"></param> + /// <param name="p2"></param> + /// <param name="p3"></param> + /// <param name="p4"></param> + /// <param name="color"></param> + public static void DrawQuadrilateral(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, + Color32 color) + { + DrawQuadrilateral(vh, p1, p2, p3, p4, color, color); + } + + /// <summary> + /// Draw a quadrilateral. 画任意带渐变的四边形 + /// </summary> + /// <param name="vh"></param> + /// <param name="p1"></param> + /// <param name="p2"></param> + /// <param name="p3"></param> + /// <param name="p4"></param> + /// <param name="startColor"></param> + /// <param name="toColor"></param> + public static void DrawQuadrilateral(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, + Color32 startColor, Color32 toColor) + { + DrawQuadrilateral(vh, p1, p2, p3, p4, startColor, startColor, toColor, toColor); + } + + public static void DrawQuadrilateral(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, + Color32 color1, Color32 color2, Color32 color3, Color32 color4) + { + s_Vertex[0].position = p1; + s_Vertex[1].position = p2; + s_Vertex[2].position = p3; + s_Vertex[3].position = p4; + s_Vertex[0].color = color1; + s_Vertex[1].color = color2; + s_Vertex[2].color = color3; + s_Vertex[3].color = color4; + for (int j = 0; j < 4; j++) + { + s_Vertex[j].uv0 = s_ZeroVector2; + } + vh.AddUIVertexQuad(s_Vertex); + } + + public static void InitCornerRadius(float[] cornerRadius, float width, float height, bool horizontal, + bool invert, ref float brLt, ref float brRt, ref float brRb, ref float brLb, ref bool needRound) + { + if (cornerRadius == null || cornerRadius.Length == 0) return; + if (invert) + { + if (horizontal) + { + brLt = cornerRadius.Length > 0 ? cornerRadius[1] : 0; + brRt = cornerRadius.Length > 1 ? cornerRadius[0] : 0; + brRb = cornerRadius.Length > 2 ? cornerRadius[3] : 0; + brLb = cornerRadius.Length > 3 ? cornerRadius[2] : 0; + } + else + { + brLt = cornerRadius.Length > 0 ? cornerRadius[3] : 0; + brRt = cornerRadius.Length > 1 ? cornerRadius[2] : 0; + brRb = cornerRadius.Length > 2 ? cornerRadius[1] : 0; + brLb = cornerRadius.Length > 3 ? cornerRadius[0] : 0; + } + } + else + { + brLt = cornerRadius.Length > 0 ? cornerRadius[0] : 0; + brRt = cornerRadius.Length > 1 ? cornerRadius[1] : 0; + brRb = cornerRadius.Length > 2 ? cornerRadius[2] : 0; + brLb = cornerRadius.Length > 3 ? cornerRadius[3] : 0; + } + + needRound = brLb != 0 || brRt != 0 || brRb != 0 || brLb != 0; + if (needRound) + { + var min = Mathf.Min(width, height); + if (brLt == 1 && brRt == 1 && brRb == 1 && brLb == 1) + { + brLt = brRt = brRb = brLb = min / 2; + return; + } + if (brLt > 0 && brLt <= 1) brLt = brLt * min; + if (brRt > 0 && brRt <= 1) brRt = brRt * min; + if (brRb > 0 && brRb <= 1) brRb = brRb * min; + if (brLb > 0 && brLb <= 1) brLb = brLb * min; + if (horizontal) + { + if (brLb + brLt >= height) + { + var total = brLb + brLt; + brLb = height * (brLb / total); + brLt = height * (brLt / total); + } + if (brRt + brRb >= height) + { + var total = brRt + brRb; + brRt = height * (brRt / total); + brRb = height * (brRb / total); + } + if (brLt + brRt >= width) + { + var total = brLt + brRt; + brLt = width * (brLt / total); + brRt = width * (brRt / total); + } + if (brRb + brLb >= width) + { + var total = brRb + brLb; + brRb = width * (brRb / total); + brLb = width * (brLb / total); + } + } + else + { + if (brLt + brRt >= width) + { + var total = brLt + brRt; + brLt = width * (brLt / total); + brRt = width * (brRt / total); + } + if (brRb + brLb >= width) + { + var total = brRb + brLb; + brRb = width * (brRb / total); + brLb = width * (brLb / total); + } + if (brLb + brLt >= height) + { + var total = brLb + brLt; + brLb = height * (brLb / total); + brLt = height * (brLt / total); + } + if (brRt + brRb >= height) + { + var total = brRt + brRb; + brRt = height * (brRt / total); + brRb = height * (brRb / total); + } + } + } + } + + public static void DrawRoundRectangle(VertexHelper vh, Rect rect, + Color32 color, Color32 toColor, float rotate = 0, float[] cornerRadius = null, bool isYAxis = false, + float smoothness = 2, bool invert = false) + { + DrawRoundRectangle(vh, rect.center, rect.width, rect.height, color, toColor, rotate, cornerRadius, + isYAxis, smoothness, invert); + } + + /// <summary> + /// 绘制圆角矩形 + /// </summary> + /// <param name="vh"></param> + /// <param name="center"></param> + /// <param name="rectWidth"></param> + /// <param name="rectHeight"></param> + /// <param name="color"></param> + /// <param name="toColor"></param> + /// <param name="rotate"></param> + /// <param name="cornerRadius"></param> + /// <param name="horizontal"></param> + /// <param name="smoothness"></param> + /// <param name="invert"></param> + public static void DrawRoundRectangle(VertexHelper vh, Vector3 center, float rectWidth, float rectHeight, + Color32 color, Color32 toColor, float rotate = 0, float[] cornerRadius = null, bool horizontal = false, + float smoothness = 2, bool invert = false) + { + if (invert) + { + var temp = toColor; + toColor = color; + color = temp; + } + var isGradient = !UGLHelper.IsValueEqualsColor(color, toColor); + var halfWid = rectWidth / 2; + var halfHig = rectHeight / 2; + float brLt = 0, brRt = 0, brRb = 0, brLb = 0; + bool needRound = false; + InitCornerRadius(cornerRadius, rectWidth, rectHeight, horizontal, invert, ref brLt, ref brRt, ref brRb, + ref brLb, ref needRound); + var tempCenter = Vector3.zero; + var lbIn = new Vector3(center.x - halfWid, center.y - halfHig); + var ltIn = new Vector3(center.x - halfWid, center.y + halfHig); + var rtIn = new Vector3(center.x + halfWid, center.y + halfHig); + var rbIn = new Vector3(center.x + halfWid, center.y - halfHig); + if (needRound) + { + var lbIn2 = lbIn; + var ltIn2 = ltIn; + var rtIn2 = rtIn; + var rbIn2 = rbIn; + var roundLb = lbIn; + var roundLt = ltIn; + var roundRt = rtIn; + var roundRb = rbIn; + if (brLt > 0) + { + roundLt = new Vector3(center.x - halfWid + brLt, center.y + halfHig - brLt); + ltIn = roundLt + brLt * Vector3.left; + ltIn2 = roundLt + brLt * Vector3.up; + } + if (brRt > 0) + { + roundRt = new Vector3(center.x + halfWid - brRt, center.y + halfHig - brRt); + rtIn = roundRt + brRt * Vector3.up; + rtIn2 = roundRt + brRt * Vector3.right; + } + if (brRb > 0) + { + roundRb = new Vector3(center.x + halfWid - brRb, center.y - halfHig + brRb); + rbIn = roundRb + brRb * Vector3.right; + rbIn2 = roundRb + brRb * Vector3.down; + } + if (brLb > 0) + { + roundLb = new Vector3(center.x - halfWid + brLb, center.y - halfHig + brLb); + lbIn = roundLb + brLb * Vector3.left; + lbIn2 = roundLb + brLb * Vector3.down; + } + + if (horizontal) + { + var maxLeft = Mathf.Max(brLt, brLb); + var maxRight = Mathf.Max(brRt, brRb); + var ltInRight = ltIn + maxLeft * Vector3.right; + var lbInRight = lbIn + maxLeft * Vector3.right; + var rtIn2Left = rtIn2 + maxRight * Vector3.left; + var rbInLeft = rbIn + maxRight * Vector3.left; + + var roundLbRight = roundLb + (maxLeft - brLb) * Vector3.right; + var lbIn2Right = lbIn2 + (maxLeft - brLb) * Vector3.right; + if (roundLbRight.x > roundRb.x) roundLbRight.x = roundRb.x; + if (lbIn2Right.x > roundRb.x) lbIn2Right.x = roundRb.x; + + var ltIn2Right = ltIn2 + (maxLeft - brLt) * Vector3.right; + var roundLtRight = roundLt + (maxLeft - brLt) * Vector3.right; + if (ltIn2Right.x > roundRt.x) ltIn2Right.x = roundRt.x; + if (roundLtRight.x > roundRt.x) roundLtRight.x = roundRt.x; + + var roundRtLeft = roundRt + (maxRight - brRt) * Vector3.left; + var rtInLeft = rtIn + (maxRight - brRt) * Vector3.left; + if (roundRtLeft.x < roundLt.x) roundRtLeft.x = roundLt.x; + if (rtInLeft.x < roundLt.x) rtInLeft.x = roundLt.x; + + var rbIn2Left = rbIn2 + (maxRight - brRb) * Vector3.left; + var roundRbLeft = roundRb + (maxRight - brRb) * Vector3.left; + if (rbIn2Left.x < roundLb.x) rbIn2Left.x = roundLb.x; + if (roundRbLeft.x < roundLb.x) roundRbLeft.x = roundLb.x; + if (!isGradient) + { + DrawSector(vh, roundLt, brLt, color, color, 270, 360, 1, horizontal, smoothness); + DrawSector(vh, roundRt, brRt, toColor, toColor, 0, 90, 1, horizontal, smoothness); + DrawSector(vh, roundRb, brRb, toColor, toColor, 90, 180, 1, horizontal, smoothness); + DrawSector(vh, roundLb, brLb, color, color, 180, 270, 1, horizontal, smoothness); + + DrawQuadrilateral(vh, ltIn, ltInRight, lbInRight, lbIn, color, color); + DrawQuadrilateral(vh, lbIn2, roundLb, roundLbRight, lbIn2Right, color, color); + DrawQuadrilateral(vh, roundLt, ltIn2, ltIn2Right, roundLtRight, color, color); + + DrawQuadrilateral(vh, rbInLeft, rtIn2Left, rtIn2, rbIn, toColor, toColor); + DrawQuadrilateral(vh, roundRtLeft, rtInLeft, rtIn, roundRt, toColor, toColor); + DrawQuadrilateral(vh, rbIn2Left, roundRbLeft, roundRb, rbIn2, toColor, toColor); + + var clt = new Vector3(center.x - halfWid + maxLeft, center.y + halfHig); + var crt = new Vector3(center.x + halfWid - maxRight, center.y + halfHig); + var crb = new Vector3(center.x + halfWid - maxRight, center.y - halfHig); + var clb = new Vector3(center.x - halfWid + maxLeft, center.y - halfHig); + if (crt.x > clt.x) + { + DrawQuadrilateral(vh, clb, clt, crt, crb, color, toColor); + } + } + else + { + var tempLeftColor = Color32.Lerp(color, toColor, maxLeft / rectWidth); + var upLeftColor = Color32.Lerp(color, tempLeftColor, brLt / maxLeft); + var downLeftColor = Color32.Lerp(color, tempLeftColor, brLb / maxLeft); + + var tempRightColor = Color32.Lerp(color, toColor, (rectWidth - maxRight) / rectWidth); + var upRightColor = Color32.Lerp(tempRightColor, toColor, (maxRight - brRt) / maxRight); + var downRightColor = Color32.Lerp(tempRightColor, toColor, (maxRight - brRb) / maxRight); + + DrawSector(vh, roundLt, brLt, color, upLeftColor, 270, 360, 1, horizontal, smoothness); + DrawSector(vh, roundRt, brRt, upRightColor, toColor, 0, 90, 1, horizontal, smoothness); + DrawSector(vh, roundRb, brRb, downRightColor, toColor, 90, 180, 1, horizontal, smoothness); + DrawSector(vh, roundLb, brLb, color, downLeftColor, 180, 270, 1, horizontal, smoothness); + + DrawQuadrilateral(vh, lbIn, ltIn, ltInRight, lbInRight, color, tempLeftColor); + DrawQuadrilateral(vh, lbIn2, roundLb, roundLbRight, lbIn2Right, downLeftColor, + roundLbRight.x == roundRb.x ? downRightColor : tempLeftColor); + DrawQuadrilateral(vh, roundLt, ltIn2, ltIn2Right, roundLtRight, upLeftColor, + ltIn2Right.x == roundRt.x ? upRightColor : tempLeftColor); + + DrawQuadrilateral(vh, rbInLeft, rtIn2Left, rtIn2, rbIn, tempRightColor, toColor); + DrawQuadrilateral(vh, roundRtLeft, rtInLeft, rtIn, roundRt, + roundRtLeft.x == roundLt.x ? upLeftColor : tempRightColor, upRightColor); + DrawQuadrilateral(vh, rbIn2Left, roundRbLeft, roundRb, rbIn2, + rbIn2Left.x == roundLb.x ? downLeftColor : tempRightColor, downRightColor); + + var clt = new Vector3(center.x - halfWid + maxLeft, center.y + halfHig); + var crt = new Vector3(center.x + halfWid - maxRight, center.y + halfHig); + var crb = new Vector3(center.x + halfWid - maxRight, center.y - halfHig); + var clb = new Vector3(center.x - halfWid + maxLeft, center.y - halfHig); + if (crt.x > clt.x) + { + DrawQuadrilateral(vh, clb, clt, crt, crb, tempLeftColor, tempRightColor); + } + } + } + else + { + var maxup = Mathf.Max(brLt, brRt); + var maxdown = Mathf.Max(brLb, brRb); + var clt = new Vector3(center.x - halfWid, center.y + halfHig - maxup); + var crt = new Vector3(center.x + halfWid, center.y + halfHig - maxup); + var crb = new Vector3(center.x + halfWid, center.y - halfHig + maxdown); + var clb = new Vector3(center.x - halfWid, center.y - halfHig + maxdown); + var lbIn2Up = lbIn2 + maxdown * Vector3.up; + var rbIn2Up = rbIn2 + maxdown * Vector3.up; + var rtInDown = rtIn + maxup * Vector3.down; + var ltIn2Down = ltIn2 + maxup * Vector3.down; + + var roundLtDown = roundLt + (maxup - brLt) * Vector3.down; + var ltInDown = ltIn + (maxup - brLt) * Vector3.down; + if (roundLtDown.y < roundLb.y) roundLtDown.y = roundLb.y; + if (ltInDown.y < roundLb.y) ltInDown.y = roundLb.y; + + var rtIn2Down = rtIn2 + (maxup - brRt) * Vector3.down; + var roundRtDown = roundRt + (maxup - brRt) * Vector3.down; + if (rtIn2Down.y < roundRb.y) rtIn2Down.y = roundRb.y; + if (roundRtDown.y < roundRb.y) roundRtDown.y = roundRb.y; + + var lbInUp = lbIn + (maxdown - brLb) * Vector3.up; + var roundLbUp = roundLb + (maxdown - brLb) * Vector3.up; + if (lbInUp.y > roundLt.y) lbInUp.y = roundLt.y; + if (roundLbUp.y > roundLt.y) roundLbUp.y = roundLt.y; + + var roundRbUp = roundRb + (maxdown - brRb) * Vector3.up; + var rbInUp = rbIn + (maxdown - brRb) * Vector3.up; + if (roundRbUp.y > roundRt.y) roundRbUp.y = roundRt.y; + if (rbInUp.y > roundRt.y) rbInUp.y = roundRt.y; + + if (!isGradient) + { + DrawSector(vh, roundLt, brLt, toColor, toColor, 270, 360, 1, horizontal, smoothness); + DrawSector(vh, roundRt, brRt, toColor, toColor, 0, 90, 1, horizontal, smoothness); + DrawSector(vh, roundRb, brRb, color, color, 90, 180, 1, horizontal, smoothness); + DrawSector(vh, roundLb, brLb, color, color, 180, 270, 1, horizontal, smoothness); + + DrawQuadrilateral(vh, ltIn2, rtIn, rtInDown, ltIn2Down, toColor, toColor); + DrawQuadrilateral(vh, ltIn, roundLt, roundLtDown, ltInDown, toColor, toColor); + DrawQuadrilateral(vh, roundRt, rtIn2, rtIn2Down, roundRtDown, toColor, toColor); + + DrawQuadrilateral(vh, lbIn2, lbIn2Up, rbIn2Up, rbIn2, color, color); + DrawQuadrilateral(vh, lbIn, lbInUp, roundLbUp, roundLb, color, color); + DrawQuadrilateral(vh, roundRb, roundRbUp, rbInUp, rbIn, color, color); + if (clt.y > clb.y) + { + DrawQuadrilateral(vh, clt, crt, crb, clb, toColor, color); + } + } + else + { + var tempUpColor = Color32.Lerp(color, toColor, (rectHeight - maxup) / rectHeight); + var leftUpColor = Color32.Lerp(tempUpColor, toColor, (maxup - brLt) / maxup); + var rightUpColor = Color32.Lerp(tempUpColor, toColor, (maxup - brRt) / maxup); + var tempDownColor = Color32.Lerp(color, toColor, maxdown / rectHeight); + var leftDownColor = Color32.Lerp(color, tempDownColor, brLb / maxdown); + var rightDownColor = Color32.Lerp(color, tempDownColor, brRb / maxdown); + + DrawSector(vh, roundLt, brLt, leftUpColor, toColor, 270, 360, 1, horizontal, smoothness); + DrawSector(vh, roundRt, brRt, rightUpColor, toColor, 0, 90, 1, horizontal, smoothness); + DrawSector(vh, roundRb, brRb, rightDownColor, color, 90, 180, 1, horizontal, smoothness); + DrawSector(vh, roundLb, brLb, leftDownColor, color, 180, 270, 1, horizontal, smoothness); + + DrawQuadrilateral(vh, ltIn2, rtIn, rtInDown, ltIn2Down, toColor, tempUpColor); + DrawQuadrilateral(vh, ltIn, roundLt, roundLtDown, ltInDown, leftUpColor, + roundLtDown.y == roundLb.y ? leftDownColor : tempUpColor); + DrawQuadrilateral(vh, roundRt, rtIn2, rtIn2Down, roundRtDown, rightUpColor, + rtIn2Down.y == roundRb.y ? rightDownColor : tempUpColor); + + DrawQuadrilateral(vh, rbIn2, lbIn2, lbIn2Up, rbIn2Up, color, tempDownColor); + DrawQuadrilateral(vh, roundLb, lbIn, lbInUp, roundLbUp, leftDownColor, + lbInUp.y == roundLt.y ? leftUpColor : tempDownColor); + DrawQuadrilateral(vh, rbIn, roundRb, roundRbUp, rbInUp, rightDownColor, + roundRbUp.y == roundRt.y ? rightUpColor : tempDownColor); + if (clt.y > clb.y) + { + DrawQuadrilateral(vh, clt, crt, crb, clb, tempUpColor, tempDownColor); + } + } + } + } + else + { + if (horizontal) + DrawQuadrilateral(vh, lbIn, ltIn, rtIn, rbIn, color, toColor); + else + DrawQuadrilateral(vh, rbIn, lbIn, ltIn, rtIn, color, toColor); + } + } + + /// <summary> + /// 绘制(圆角)边框 + /// </summary> + /// <param name="vh"></param> + /// <param name="center"></param> + /// <param name="rectWidth"></param> + /// <param name="rectHeight"></param> + /// <param name="borderWidth"></param> + /// <param name="color"></param> + /// <param name="rotate"></param> + /// <param name="cornerRadius"></param> + /// <param name="invertCorner"></param> + /// <param name="extWidth"></param> + public static void DrawBorder(VertexHelper vh, Vector3 center, float rectWidth, float rectHeight, + float borderWidth, Color32 color, float rotate = 0, float[] cornerRadius = null, + bool horizontal = false, float smoothness = 1f, bool invertCorner = false, float extWidth = 0) + { + DrawBorder(vh, center, rectWidth, rectHeight, borderWidth, color, s_ClearColor32, rotate, + cornerRadius, horizontal, smoothness, invertCorner, extWidth); + } + + /// <summary> + /// 绘制(圆角)边框 + /// </summary> + /// <param name="vh"></param> + /// <param name="rect"></param> + /// <param name="borderWidth"></param> + /// <param name="color"></param> + /// <param name="rotate"></param> + /// <param name="cornerRadius"></param> + /// <param name="horizontal"></param> + /// <param name="smoothness"></param> + /// <param name="invertCorner"></param> + /// <param name="extWidth"></param> + public static void DrawBorder(VertexHelper vh, Rect rect, + float borderWidth, Color32 color, float rotate = 0, float[] cornerRadius = null, + bool horizontal = false, float smoothness = 1f, bool invertCorner = false, float extWidth = 0) + { + DrawBorder(vh, rect.center, rect.width, rect.height, borderWidth, color, s_ClearColor32, rotate, + cornerRadius, horizontal, smoothness, invertCorner, extWidth); + } + + /// <summary> + /// 绘制(圆角)边框 + /// </summary> + /// <param name="vh"></param> + /// <param name="center"></param> + /// <param name="rectWidth"></param> + /// <param name="rectHeight"></param> + /// <param name="borderWidth"></param> + /// <param name="color"></param> + /// <param name="toColor"></param> + /// <param name="rotate"></param> + /// <param name="cornerRadius"></param> + /// <param name="horizontal"></param> + /// <param name="smoothness"></param> + /// <param name="invertCorner"></param> + /// <param name="extWidth"></param> + public static void DrawBorder(VertexHelper vh, Vector3 center, float rectWidth, float rectHeight, + float borderWidth, Color32 color, Color32 toColor, float rotate = 0, float[] cornerRadius = null, + bool horizontal = false, float smoothness = 1f, bool invertCorner = false, float extWidth = 0) + { + if (borderWidth == 0 || UGLHelper.IsClearColor(color)) return; + var halfWid = rectWidth / 2; + var halfHig = rectHeight / 2; + var lbIn = new Vector3(center.x - halfWid - extWidth, center.y - halfHig - extWidth); + var lbOt = new Vector3(center.x - halfWid - borderWidth - extWidth, center.y - halfHig - borderWidth - extWidth); + var ltIn = new Vector3(center.x - halfWid - extWidth, center.y + halfHig + extWidth); + var ltOt = new Vector3(center.x - halfWid - borderWidth - extWidth, center.y + halfHig + borderWidth + extWidth); + var rtIn = new Vector3(center.x + halfWid + extWidth, center.y + halfHig + extWidth); + var rtOt = new Vector3(center.x + halfWid + borderWidth + extWidth, center.y + halfHig + borderWidth + extWidth); + var rbIn = new Vector3(center.x + halfWid + extWidth, center.y - halfHig - extWidth); + var rbOt = new Vector3(center.x + halfWid + borderWidth + extWidth, center.y - halfHig - borderWidth - extWidth); + float brLt = 0, brRt = 0, brRb = 0, brLb = 0; + bool needRound = false; + InitCornerRadius(cornerRadius, rectWidth, rectHeight, horizontal, invertCorner, ref brLt, ref brRt, ref brRb, + ref brLb, ref needRound); + var tempCenter = Vector3.zero; + if (UGLHelper.IsClearColor(toColor)) + { + toColor = color; + } + if (needRound) + { + var lbIn2 = lbIn; + var lbOt2 = lbOt; + var ltIn2 = ltIn; + var ltOt2 = ltOt; + var rtIn2 = rtIn; + var rtOt2 = rtOt; + var rbIn2 = rbIn; + var rbOt2 = rbOt; + //if (brLt > 0) + { + tempCenter = new Vector3(center.x - halfWid + brLt, center.y + halfHig - brLt); + brLt += extWidth; + DrawDoughnut(vh, tempCenter, brLt, brLt + borderWidth, horizontal ? color : toColor, s_ClearColor32, + 270, 360, smoothness); + ltIn = tempCenter + brLt * Vector3.left; + ltOt = tempCenter + (brLt + borderWidth) * Vector3.left; + ltIn2 = tempCenter + brLt * Vector3.up; + ltOt2 = tempCenter + (brLt + borderWidth) * Vector3.up; + } + //if (brRt > 0) + { + tempCenter = new Vector3(center.x + halfWid - brRt, center.y + halfHig - brRt); + brRt += extWidth; + DrawDoughnut(vh, tempCenter, brRt, brRt + borderWidth, toColor, s_ClearColor32, 0, 90, smoothness); + rtIn = tempCenter + brRt * Vector3.up; + rtOt = tempCenter + (brRt + borderWidth) * Vector3.up; + rtIn2 = tempCenter + brRt * Vector3.right; + rtOt2 = tempCenter + (brRt + borderWidth) * Vector3.right; + } + //if (brRb > 0) + { + tempCenter = new Vector3(center.x + halfWid - brRb, center.y - halfHig + brRb); + brRb += extWidth; + DrawDoughnut(vh, tempCenter, brRb, brRb + borderWidth, horizontal ? toColor : color, s_ClearColor32, + 90, 180, smoothness); + rbIn = tempCenter + brRb * Vector3.right; + rbOt = tempCenter + (brRb + borderWidth) * Vector3.right; + rbIn2 = tempCenter + brRb * Vector3.down; + rbOt2 = tempCenter + (brRb + borderWidth) * Vector3.down; + } + //if (brLb > 0) + { + tempCenter = new Vector3(center.x - halfWid + brLb, center.y - halfHig + brLb); + brLb += extWidth; + DrawDoughnut(vh, tempCenter, brLb, brLb + borderWidth, color, s_ClearColor32, 180, 270, smoothness); + lbIn = tempCenter + brLb * Vector3.left; + lbOt = tempCenter + (brLb + borderWidth) * Vector3.left; + lbIn2 = tempCenter + brLb * Vector3.down; + lbOt2 = tempCenter + (brLb + borderWidth) * Vector3.down; + } + if (horizontal) + { + DrawQuadrilateral(vh, lbIn, lbOt, ltOt, ltIn, color, color); + DrawQuadrilateral(vh, ltIn2, ltOt2, rtOt, rtIn, color, toColor); + DrawQuadrilateral(vh, rtIn2, rtOt2, rbOt, rbIn, toColor, toColor); + DrawQuadrilateral(vh, rbIn2, rbOt2, lbOt2, lbIn2, toColor, color); + } + else + { + DrawQuadrilateral(vh, lbIn, lbOt, ltOt, ltIn, color, toColor); + DrawQuadrilateral(vh, ltIn2, ltOt2, rtOt, rtIn, toColor, toColor); + DrawQuadrilateral(vh, rtIn2, rtOt2, rbOt, rbIn, toColor, color); + DrawQuadrilateral(vh, rbIn2, rbOt2, lbOt2, lbIn2, color, color); + } + } + else + { + if (rotate > 0) + { + lbIn = UGLHelper.RotateRound(lbIn, center, Vector3.forward, rotate); + lbOt = UGLHelper.RotateRound(lbOt, center, Vector3.forward, rotate); + ltIn = UGLHelper.RotateRound(ltIn, center, Vector3.forward, rotate); + ltOt = UGLHelper.RotateRound(ltOt, center, Vector3.forward, rotate); + rtIn = UGLHelper.RotateRound(rtIn, center, Vector3.forward, rotate); + rtOt = UGLHelper.RotateRound(rtOt, center, Vector3.forward, rotate); + rbIn = UGLHelper.RotateRound(rbIn, center, Vector3.forward, rotate); + rbOt = UGLHelper.RotateRound(rbOt, center, Vector3.forward, rotate); + } + if (horizontal) + { + DrawQuadrilateral(vh, lbIn, lbOt, ltOt, ltIn, color, color); + DrawQuadrilateral(vh, ltIn, ltOt, rtOt, rtIn, color, toColor); + DrawQuadrilateral(vh, rtIn, rtOt, rbOt, rbIn, toColor, toColor); + DrawQuadrilateral(vh, rbIn, rbOt, lbOt, lbIn, toColor, color); + } + else + { + DrawQuadrilateral(vh, lbIn, lbOt, ltOt, ltIn, color, toColor); + DrawQuadrilateral(vh, ltIn, ltOt, rtOt, rtIn, toColor, toColor); + DrawQuadrilateral(vh, rtIn, rtOt, rbOt, rbIn, toColor, color); + DrawQuadrilateral(vh, rbIn, rbOt, lbOt, lbIn, color, color); + } + } + } + + public static void DrawTriangle(VertexHelper vh, Vector3 p1, + Vector3 p2, Vector3 p3, Color32 color) + { + DrawTriangle(vh, p1, p2, p3, color, color, color); + } + + public static void DrawTriangle(VertexHelper vh, Vector3 pos, float size, Color32 color) + { + DrawTriangle(vh, pos, size, color, color); + } + + public static void DrawTriangle(VertexHelper vh, Vector3 pos, float size, Color32 color, Color32 toColor) + { + var x = size * Mathf.Cos(30 * Mathf.PI / 180); + var y = size * Mathf.Sin(30 * Mathf.PI / 180); + var p1 = new Vector2(pos.x - x, pos.y - y); + var p2 = new Vector2(pos.x, pos.y + size); + var p3 = new Vector2(pos.x + x, pos.y - y); + DrawTriangle(vh, p1, p2, p3, color, toColor, color); + } + + public static void DrawTriangle(VertexHelper vh, Vector3 p1, + Vector3 p2, Vector3 p3, Color32 color, Color32 color2, Color32 color3) + { + UIVertex v1 = new UIVertex(); + v1.position = p1; + v1.color = color; + v1.uv0 = s_ZeroVector2; + UIVertex v2 = new UIVertex(); + v2.position = p2; + v2.color = color2; + v2.uv0 = s_ZeroVector2; + UIVertex v3 = new UIVertex(); + v3.position = p3; + v3.color = color3; + v3.uv0 = s_ZeroVector2; + int startIndex = vh.currentVertCount; + vh.AddVert(v1); + vh.AddVert(v2); + vh.AddVert(v3); + vh.AddTriangle(startIndex, startIndex + 1, startIndex + 2); + } + + public static void DrawCricle(VertexHelper vh, Vector3 center, float radius, Color32 color, + float smoothness = 2f) + { + DrawCricle(vh, center, radius, color, color, 0, s_ClearColor32, smoothness); + } + + public static void DrawCricle(VertexHelper vh, Vector3 center, float radius, Color32 color, + Color32 toColor, float smoothness = 2f) + { + DrawSector(vh, center, radius, color, toColor, 0, 360, 0, s_ClearColor32, smoothness); + } + + public static void DrawCricle(VertexHelper vh, Vector3 center, float radius, Color32 color, + Color32 toColor, float borderWidth, Color32 borderColor, float smoothness = 2f) + { + DrawSector(vh, center, radius, color, toColor, 0, 360, borderWidth, borderColor, smoothness); + } + + public static void DrawCricle(VertexHelper vh, Vector3 center, float radius, Color32 color, + float borderWidth, Color32 borderColor, float smoothness = 2f) + { + DrawCricle(vh, center, radius, color, color, borderWidth, borderColor, smoothness); + } + + public static void DrawEmptyCricle(VertexHelper vh, Vector3 center, float radius, float tickness, + Color32 color, Color32 emptyColor, float smoothness = 2f) + { + DrawDoughnut(vh, center, radius - tickness, radius, color, color, emptyColor, 0, 360, 0, s_ClearColor32, + 0, smoothness); + } + + public static void DrawEmptyCricle(VertexHelper vh, Vector3 center, float radius, float tickness, + Color32 color, Color32 emptyColor, float borderWidth, Color32 borderColor, float smoothness = 2f) + { + DrawDoughnut(vh, center, radius - tickness, radius, color, color, emptyColor, 0, 360, borderWidth, + borderColor, 0, smoothness); + } + + public static void DrawEmptyCricle(VertexHelper vh, Vector3 center, float radius, float tickness, + Color32 color, Color32 toColor, Color32 emptyColor, float smoothness = 2f) + { + DrawDoughnut(vh, center, radius - tickness, radius, color, toColor, emptyColor, 0, 360, 0, + s_ClearColor32, 0, smoothness); + } + + public static void DrawEmptyCricle(VertexHelper vh, Vector3 center, float radius, float tickness, + Color32 color, Color32 toColor, Color32 emptyColor, float borderWidth, Color32 borderColor, + float smoothness = 2f) + { + DrawDoughnut(vh, center, radius - tickness, radius, color, toColor, emptyColor, 0, 360, borderWidth, + borderColor, 0, smoothness); + } + + public static void DrawSector(VertexHelper vh, Vector3 center, float radius, Color32 color, + float startDegree, float toDegree, float smoothness = 2f) + { + DrawSector(vh, center, radius, color, color, startDegree, toDegree, 0, s_ClearColor32, smoothness); + } + + public static void DrawSector(VertexHelper vh, Vector3 center, float radius, Color32 color, Color32 toColor, + float startDegree, float toDegree, int gradientType = 0, bool isYAxis = false, float smoothness = 2f) + { + DrawSector(vh, center, radius, color, toColor, startDegree, toDegree, 0, s_ClearColor32, 0, smoothness, + gradientType, isYAxis); + } + + public static void DrawSector(VertexHelper vh, Vector3 center, float radius, Color32 color, + float startDegree, float toDegree, float borderWidth, Color32 borderColor, float smoothness = 2f) + { + DrawSector(vh, center, radius, color, color, startDegree, toDegree, borderWidth, borderColor, smoothness); + } + + public static void DrawSector(VertexHelper vh, Vector3 center, float radius, Color32 color, Color32 toColor, + float startDegree, float toDegree, float borderWidth, Color32 borderColor, float smoothness = 2f) + { + DrawSector(vh, center, radius, color, toColor, startDegree, toDegree, borderWidth, borderColor, 0, smoothness); + } + + /// <summary> + /// 绘制扇形(可带边框、有空白边距、3种类型渐变) + /// </summary> + /// <param name="vh"></param> + /// <param name="center">中心点</param> + /// <param name="radius">半径</param> + /// <param name="color">颜色</param> + /// <param name="toColor">渐变颜色</param> + /// <param name="startDegree">开始角度</param> + /// <param name="toDegree">结束角度</param> + /// <param name="borderWidth">边框宽度</param> + /// <param name="borderColor">边框颜色</param> + /// <param name="gap">边距</param> + /// <param name="smoothness">光滑度</param> + /// <param name="gradientType">渐变类型,0:向圆形渐变,1:水平或垂直渐变,2:开始角度向结束角度渐变</param> + /// <param name="isYAxis">水平渐变还是垂直渐变,gradientType为1时生效</param> + public static void DrawSector(VertexHelper vh, Vector3 center, float radius, Color32 color, Color32 toColor, + float startDegree, float toDegree, float borderWidth, Color32 borderColor, float gap, + float smoothness, int gradientType = 0, bool isYAxis = false) + { + if (radius == 0) return; + if (gap > 0 && Mathf.Abs(toDegree - startDegree) >= 360) gap = 0; + radius -= borderWidth; + smoothness = (smoothness < 0 ? 2f : smoothness); + int segments = (int) ((2 * Mathf.PI * radius) * (Mathf.Abs(toDegree - startDegree) / 360) / smoothness); + if (segments < 1) segments = 1; + float startAngle = startDegree * Mathf.Deg2Rad; + float toAngle = toDegree * Mathf.Deg2Rad; + float realStartAngle = startAngle; + float realToAngle = toAngle; + float halfAngle = (toAngle - startAngle) / 2; + float borderAngle = 0; + float spaceAngle = 0; + + var p2 = center + radius * UGLHelper.GetDire(startAngle); + var p3 = Vector3.zero; + var p4 = Vector3.zero; + var spaceCenter = center; + var realCenter = center; + var lastP4 = center; + var lastColor = color; + var needBorder = borderWidth != 0; + var needSpace = gap != 0; + var borderLineWidth = needSpace ? borderWidth : borderWidth / 2; + var lastPos = Vector3.zero; + var middleDire = UGLHelper.GetDire(startAngle + halfAngle); + if (needBorder || needSpace) + { + float spaceDiff = 0f; + float borderDiff = 0f; + if (needSpace) + { + spaceDiff = gap / Mathf.Sin(halfAngle); + spaceCenter = center + spaceDiff * middleDire; + realCenter = spaceCenter; + spaceAngle = 2 * Mathf.Asin(gap / (2 * radius)); + realStartAngle = startAngle + spaceAngle; + realToAngle = toAngle - spaceAngle; + if (realToAngle < realStartAngle) realToAngle = realStartAngle; + p2 = UGLHelper.GetPos(center, radius, realStartAngle); + } + if (needBorder) + { + borderDiff = borderLineWidth / Mathf.Sin(halfAngle); + realCenter += borderDiff * middleDire; + borderAngle = 2 * Mathf.Asin(borderLineWidth / (2 * radius)); + realStartAngle = realStartAngle + borderAngle; + realToAngle = realToAngle - borderAngle; + if (realToAngle < realStartAngle) + { + realToAngle = realStartAngle; + p2 = UGLHelper.GetPos(center, radius, realStartAngle); + } + else + { + var borderX1 = UGLHelper.GetPos(center, radius, realStartAngle); + DrawQuadrilateral(vh, realCenter, spaceCenter, p2, borderX1, borderColor); + p2 = borderX1; + + var borderX2 = UGLHelper.GetPos(center, radius, realToAngle); + var pEnd = UGLHelper.GetPos(center, radius, toAngle - spaceAngle); + DrawQuadrilateral(vh, realCenter, borderX2, pEnd, spaceCenter, borderColor); + } + } + } + float segmentAngle = (realToAngle - realStartAngle) / segments; + bool isLeft = startDegree >= 180; + for (int i = 0; i <= segments; i++) + { + float currAngle = realStartAngle + i * segmentAngle; + p3 = center + radius * UGLHelper.GetDire(currAngle); + if (gradientType == 1) + { + if (isYAxis) + { + p4 = new Vector3(p3.x, realCenter.y); + var dist = p4.x - realCenter.x; + var tcolor = Color32.Lerp(color, toColor, dist >= 0 ? + dist / radius : + Mathf.Min(radius + dist, radius) / radius); + if (isLeft && (i == segments || i == 0)) tcolor = toColor; + DrawQuadrilateral(vh, lastP4, p2, p3, p4, lastColor, tcolor); + lastP4 = p4; + lastColor = tcolor; + } + else + { + p4 = new Vector3(realCenter.x, p3.y); + var tcolor = Color32.Lerp(color, toColor, Mathf.Abs(p4.y - realCenter.y) / radius); + DrawQuadrilateral(vh, lastP4, p2, p3, p4, lastColor, tcolor); + lastP4 = p4; + lastColor = tcolor; + } + } + else if (gradientType == 2) + { + var tcolor = Color32.Lerp(color, toColor, i / segments); + DrawQuadrilateral(vh, realCenter, p2, p3, realCenter, lastColor, tcolor); + lastColor = tcolor; + } + else + { + AddVertToVertexHelper(vh, p3, realCenter, color, toColor, i > 0); + } + p2 = p3; + + } + if (needBorder || needSpace) + { + if (realToAngle > realStartAngle) + { + var borderX2 = center + radius * UGLHelper.GetDire(realToAngle); + DrawTriangle(vh, realCenter, p2, borderX2, toColor, color, color); + if (needBorder) + { + var realStartDegree = (realStartAngle - borderAngle) * Mathf.Rad2Deg; + var realToDegree = (realToAngle + borderAngle) * Mathf.Rad2Deg; + DrawDoughnut(vh, center, radius, radius + borderWidth, borderColor, s_ClearColor32, + realStartDegree, realToDegree, smoothness); + } + } + } + } + + public static void DrawRoundCap(VertexHelper vh, Vector3 center, float width, float radius, float angle, + bool clockwise, Color32 color, bool end) + { + var px = Mathf.Sin(angle * Mathf.Deg2Rad) * radius; + var py = Mathf.Cos(angle * Mathf.Deg2Rad) * radius; + var pos = new Vector3(px, py) + center; + if (end) + { + if (clockwise) + DrawSector(vh, pos, width, color, angle, angle + 180, 0, s_ClearColor32); + else + DrawSector(vh, pos, width, color, angle, angle - 180, 0, s_ClearColor32); + } + else + { + if (clockwise) + DrawSector(vh, pos, width, color, angle + 180, angle + 360, 0, s_ClearColor32); + else + DrawSector(vh, pos, width, color, angle - 180, angle - 360, 0, s_ClearColor32); + } + } + + public static void DrawDoughnut(VertexHelper vh, Vector3 center, float insideRadius, float outsideRadius, + Color32 color, Color32 emptyColor, float smoothness = 2f) + { + DrawDoughnut(vh, center, insideRadius, outsideRadius, color, color, emptyColor, 0, 360, 0, + s_ClearColor32, 0, smoothness); + } + + public static void DrawDoughnut(VertexHelper vh, Vector3 center, float insideRadius, float outsideRadius, + Color32 color, Color32 emptyColor, float startDegree, + float toDegree, float smoothness = 1f) + { + DrawDoughnut(vh, center, insideRadius, outsideRadius, color, color, emptyColor, startDegree, toDegree, + 0, s_ClearColor32, 0, smoothness); + } + + public static void DrawDoughnut(VertexHelper vh, Vector3 center, float insideRadius, float outsideRadius, + Color32 color, Color32 emptyColor, float startDegree, + float toDegree, float borderWidth, Color32 borderColor, float smoothness = 2f) + { + DrawDoughnut(vh, center, insideRadius, outsideRadius, color, color, emptyColor, startDegree, toDegree, + borderWidth, borderColor, 0, smoothness); + } + + public static void DrawDoughnut(VertexHelper vh, Vector3 center, float insideRadius, float outsideRadius, + Color32 color, Color32 toColor, Color32 emptyColor, float smoothness = 2f) + { + DrawDoughnut(vh, center, insideRadius, outsideRadius, color, toColor, emptyColor, 0, 360, 0, + s_ClearColor32, 0, smoothness); + } + + public static void DrawDoughnut(VertexHelper vh, Vector3 center, float insideRadius, float outsideRadius, + Color32 color, Color32 toColor, Color32 emptyColor, float startDegree, float toDegree, float borderWidth, + Color32 borderColor, float gap, float smoothness, bool roundCap = false, bool clockwise = true) + { + if (toDegree - startDegree == 0) return; + if (gap > 0 && Mathf.Abs(toDegree - startDegree) >= 360) gap = 0; + if (insideRadius <= 0) + { + DrawSector(vh, center, outsideRadius, color, toColor, startDegree, toDegree, borderWidth, borderColor, + gap, smoothness); + return; + } + outsideRadius -= borderWidth; + insideRadius += borderWidth; + smoothness = smoothness < 0 ? 2f : smoothness; + Vector3 p1, p2, p3, p4, e1, e2; + var needBorder = borderWidth != 0; + var needSpace = gap != 0; + var diffAngle = Mathf.Abs(toDegree - startDegree) * Mathf.Deg2Rad; + + int segments = (int) ((2 * Mathf.PI * outsideRadius) * (diffAngle * Mathf.Rad2Deg / 360) / smoothness); + if (segments < 1) segments = 1; + float startAngle = startDegree * Mathf.Deg2Rad; + float toAngle = toDegree * Mathf.Deg2Rad; + + float realStartOutAngle = startAngle; + float realToOutAngle = toAngle; + float realStartInAngle = startAngle; + float realToInAngle = toAngle; + float halfAngle = (toAngle - startAngle) / 2; + float borderAngle = 0, borderInAngle = 0, borderHalfAngle = 0; + float spaceAngle = 0, spaceInAngle = 0, spaceHalfAngle = 0; + + var spaceCenter = center; + var realCenter = center; + var startDire = new Vector3(Mathf.Sin(startAngle), Mathf.Cos(startAngle)).normalized; + var toDire = new Vector3(Mathf.Sin(toAngle), Mathf.Cos(toAngle)).normalized; + var middleDire = new Vector3(Mathf.Sin(startAngle + halfAngle), Mathf.Cos(startAngle + halfAngle)).normalized; + p1 = center + insideRadius * startDire; + p2 = center + outsideRadius * startDire; + e1 = center + insideRadius * toDire; + e2 = center + outsideRadius * toDire; + if (roundCap) + { + var roundRadius = (outsideRadius - insideRadius) / 2; + var roundAngleRadius = insideRadius + roundRadius; + var roundAngle = Mathf.Atan(roundRadius / roundAngleRadius); + if (diffAngle < 2 * roundAngle) + { + roundCap = false; + } + } + if (needBorder || needSpace) + { + if (needSpace) + { + var spaceDiff = gap / Mathf.Sin(halfAngle); + spaceCenter = center + Mathf.Abs(spaceDiff) * middleDire; + realCenter = spaceCenter; + spaceAngle = 2 * Mathf.Asin(gap / (2 * outsideRadius)); + spaceInAngle = 2 * Mathf.Asin(gap / (2 * insideRadius)); + spaceHalfAngle = 2 * Mathf.Asin(gap / (2 * (insideRadius + (outsideRadius - insideRadius) / 2))); + if (clockwise) + { + p1 = UGLHelper.GetPos(center, insideRadius, startAngle + spaceInAngle, false); + e1 = UGLHelper.GetPos(center, insideRadius, toAngle - spaceInAngle, false); + realStartOutAngle = startAngle + spaceAngle; + realToOutAngle = toAngle - spaceAngle; + realStartInAngle = startAngle + spaceInAngle; + realToInAngle = toAngle - spaceInAngle; + } + else + { + p1 = UGLHelper.GetPos(center, insideRadius, startAngle - spaceInAngle, false); + e1 = UGLHelper.GetPos(center, insideRadius, toAngle + spaceInAngle, false); + realStartOutAngle = startAngle - spaceAngle; + realToOutAngle = toAngle + spaceAngle; + realStartInAngle = startAngle - spaceInAngle; + realToOutAngle = toAngle + spaceInAngle; + } + p2 = UGLHelper.GetPos(center, outsideRadius, realStartOutAngle, false); + e2 = UGLHelper.GetPos(center, outsideRadius, realToOutAngle, false); + } + if (needBorder) + { + var borderDiff = borderWidth / Mathf.Sin(halfAngle); + realCenter += Mathf.Abs(borderDiff) * middleDire; + borderAngle = 2 * Mathf.Asin(borderWidth / (2 * outsideRadius)); + borderInAngle = 2 * Mathf.Asin(borderWidth / (2 * insideRadius)); + borderHalfAngle = 2 * Mathf.Asin(borderWidth / (2 * (insideRadius + (outsideRadius - insideRadius) / 2))); + if (clockwise) + { + realStartOutAngle = realStartOutAngle + borderAngle; + realToOutAngle = realToOutAngle - borderAngle; + realStartInAngle = startAngle + spaceInAngle + borderInAngle; + realToInAngle = toAngle - spaceInAngle - borderInAngle; + var newp1 = UGLHelper.GetPos(center, insideRadius, startAngle + spaceInAngle + borderInAngle, false); + var newp2 = UGLHelper.GetPos(center, outsideRadius, realStartOutAngle, false); + if (!roundCap) DrawQuadrilateral(vh, newp2, newp1, p1, p2, borderColor); + p1 = newp1; + p2 = newp2; + if (toAngle - spaceInAngle - 2 * borderInAngle > realStartOutAngle) + { + var newe1 = UGLHelper.GetPos(center, insideRadius, toAngle - spaceInAngle - borderInAngle, false); + var newe2 = UGLHelper.GetPos(center, outsideRadius, realToOutAngle, false); + if (!roundCap) DrawQuadrilateral(vh, newe2, e2, e1, newe1, borderColor); + e1 = newe1; + e2 = newe2; + } + } + else + { + realStartOutAngle = realStartOutAngle - borderAngle; + realToOutAngle = realToOutAngle + borderAngle; + realStartInAngle = startAngle - spaceInAngle - borderInAngle; + realToInAngle = toAngle + spaceInAngle + borderInAngle; + var newp1 = UGLHelper.GetPos(center, insideRadius, startAngle - spaceInAngle - borderInAngle, false); + var newp2 = UGLHelper.GetPos(center, outsideRadius, realStartOutAngle, false); + if (!roundCap) DrawQuadrilateral(vh, newp2, newp1, p1, p2, borderColor); + p1 = newp1; + p2 = newp2; + if (toAngle + spaceInAngle + 2 * borderInAngle < realStartOutAngle) + { + var newe1 = UGLHelper.GetPos(center, insideRadius, toAngle + spaceInAngle + borderInAngle, false); + var newe2 = UGLHelper.GetPos(center, outsideRadius, realToOutAngle, false); + if (!roundCap) DrawQuadrilateral(vh, newe2, e2, e1, newe1, borderColor); + e1 = newe1; + e2 = newe2; + } + } + } + } + if (roundCap) + { + var roundRadius = (outsideRadius - insideRadius) / 2; + var roundAngleRadius = insideRadius + roundRadius; + var roundAngle = Mathf.Atan(roundRadius / roundAngleRadius); + if (clockwise) + { + realStartOutAngle = startAngle + 2 * spaceHalfAngle + borderHalfAngle + roundAngle; + realStartInAngle = startAngle + 2 * spaceHalfAngle + borderHalfAngle + roundAngle; + } + else + { + realStartOutAngle = startAngle - 2 * spaceHalfAngle - borderHalfAngle - roundAngle; + realStartInAngle = startAngle - 2 * spaceHalfAngle - borderHalfAngle - roundAngle; + } + var roundTotalDegree = realStartOutAngle * Mathf.Rad2Deg; + var roundCenter = center + roundAngleRadius * UGLHelper.GetDire(realStartOutAngle); + var sectorStartDegree = clockwise ? roundTotalDegree + 180 : roundTotalDegree; + var sectorToDegree = clockwise ? roundTotalDegree + 360 : roundTotalDegree + 180; + DrawSector(vh, roundCenter, roundRadius, color, sectorStartDegree, sectorToDegree, smoothness / 2); + if (needBorder) + { + DrawDoughnut(vh, roundCenter, roundRadius, roundRadius + borderWidth, borderColor, + s_ClearColor32, sectorStartDegree, sectorToDegree, smoothness / 2); + } + p1 = UGLHelper.GetPos(center, insideRadius, realStartOutAngle); + p2 = UGLHelper.GetPos(center, outsideRadius, realStartOutAngle); + + if (clockwise) + { + realToOutAngle = toAngle - 2 * spaceHalfAngle - borderHalfAngle - roundAngle; + realToInAngle = toAngle - 2 * spaceHalfAngle - borderHalfAngle - roundAngle; + if (realToOutAngle < realStartOutAngle) realToOutAngle = realStartOutAngle; + } + else + { + realToOutAngle = toAngle + 2 * spaceHalfAngle + borderHalfAngle + roundAngle; + realToInAngle = toAngle + 2 * spaceHalfAngle + borderHalfAngle + roundAngle; + if (realToOutAngle > realStartOutAngle) realToOutAngle = realStartOutAngle; + } + roundTotalDegree = realToOutAngle * Mathf.Rad2Deg; + roundCenter = center + roundAngleRadius * UGLHelper.GetDire(realToOutAngle); + sectorStartDegree = clockwise ? roundTotalDegree : roundTotalDegree + 180; + sectorToDegree = clockwise ? roundTotalDegree + 180 : roundTotalDegree + 360; + DrawSector(vh, roundCenter, roundRadius, toColor, sectorStartDegree, sectorToDegree, smoothness / 2); + if (needBorder) + { + DrawDoughnut(vh, roundCenter, roundRadius, roundRadius + borderWidth, borderColor, + s_ClearColor32, sectorStartDegree, sectorToDegree, smoothness / 2); + } + e1 = UGLHelper.GetPos(center, insideRadius, realToOutAngle); + e2 = UGLHelper.GetPos(center, outsideRadius, realToOutAngle); + } + var segmentAngle = (realToInAngle - realStartInAngle) / segments; + var isGradient = !UGLHelper.IsValueEqualsColor(color, toColor); + for (int i = 0; i <= segments; i++) + { + float currAngle = realStartInAngle + i * segmentAngle; + p3 = new Vector3(center.x + outsideRadius * Mathf.Sin(currAngle), + center.y + outsideRadius * Mathf.Cos(currAngle)); + p4 = new Vector3(center.x + insideRadius * Mathf.Sin(currAngle), + center.y + insideRadius * Mathf.Cos(currAngle)); + if (isGradient) + { + var tcolor = Color32.Lerp(color, toColor, i * 1.0f / segments); + AddVertToVertexHelper(vh, p3, p4, tcolor, tcolor, i > 0); + } + else + { + AddVertToVertexHelper(vh, p3, p4, color, color, i > 0); + } + p1 = p4; + p2 = p3; + } + if (!UGLHelper.IsClearColor(emptyColor)) + { + for (int i = 0; i <= segments; i++) + { + float currAngle = realStartInAngle + i * segmentAngle; + p4 = new Vector3(center.x + insideRadius * Mathf.Sin(currAngle), + center.y + insideRadius * Mathf.Cos(currAngle)); + AddVertToVertexHelper(vh, center, p4, emptyColor, emptyColor, i > 0); + } + } + if (needBorder || needSpace || roundCap) + { + if (clockwise) + { + var isInAngleFixed = toAngle - spaceInAngle - 2 * borderInAngle > realStartOutAngle; + if (isInAngleFixed) DrawQuadrilateral(vh, p2, e2, e1, p1, color, toColor); + else DrawTriangle(vh, p2, e2, p1, color, color, toColor); + if (needBorder) + { + var realStartDegree = (realStartOutAngle - (roundCap ? 0 : borderAngle)) * Mathf.Rad2Deg; + var realToDegree = (realToOutAngle + (roundCap ? 0 : borderAngle)) * Mathf.Rad2Deg; + if (realToDegree < realStartOutAngle) realToDegree = realStartOutAngle; + var inStartDegree = roundCap ? realStartDegree : (startAngle + spaceInAngle) * Mathf.Rad2Deg; + var inToDegree = roundCap ? realToDegree : (toAngle - spaceInAngle) * Mathf.Rad2Deg; + if (inToDegree < inStartDegree) inToDegree = inStartDegree; + if (isInAngleFixed) DrawDoughnut(vh, center, insideRadius - borderWidth, insideRadius, borderColor, + s_ClearColor32, inStartDegree, inToDegree, smoothness); + DrawDoughnut(vh, center, outsideRadius, outsideRadius + borderWidth, borderColor, s_ClearColor32, + realStartDegree, realToDegree, smoothness); + } + } + else + { + var isInAngleFixed = toAngle + spaceInAngle + 2 * borderInAngle < realStartOutAngle; + if (isInAngleFixed) DrawQuadrilateral(vh, p2, e2, e1, p1, color, toColor); + else DrawTriangle(vh, p2, e2, p1, color, color, toColor); + if (needBorder) + { + var realStartDegree = (realStartOutAngle + (roundCap ? 0 : borderAngle)) * Mathf.Rad2Deg; + var realToDegree = (realToOutAngle - (roundCap ? 0 : borderAngle)) * Mathf.Rad2Deg; + var inStartDegree = roundCap ? realStartDegree : (startAngle - spaceInAngle) * Mathf.Rad2Deg; + var inToDegree = roundCap ? realToDegree : (toAngle + spaceInAngle) * Mathf.Rad2Deg; + if (inToDegree > inStartDegree) inToDegree = inStartDegree; + if (isInAngleFixed) + { + DrawDoughnut(vh, center, insideRadius - borderWidth, insideRadius, borderColor, + s_ClearColor32, inStartDegree, inToDegree, smoothness); + } + DrawDoughnut(vh, center, outsideRadius, outsideRadius + borderWidth, borderColor, + s_ClearColor32, realStartDegree, realToDegree, smoothness); + } + } + } + } + + /// <summary> + /// 画贝塞尔曲线 + /// </summary> + /// <param name="vh"></param> + /// <param name="sp">起始点</param> + /// <param name="ep">结束点</param> + /// <param name="cp1">控制点1</param> + /// <param name="cp2">控制点2</param> + /// <param name="lineWidth">曲线宽</param> + /// <param name="lineColor">曲线颜色</param> + public static void DrawCurves(VertexHelper vh, Vector3 sp, Vector3 ep, Vector3 cp1, Vector3 cp2, + float lineWidth, Color32 lineColor, float smoothness) + { + var dist = Vector3.Distance(sp, ep); + var segment = (int) (dist / (smoothness <= 0 ? 2f : smoothness)); + UGLHelper.GetBezierList2(ref s_CurvesPosList, sp, ep, segment, cp1, cp2); + DrawCurvesInternal(vh, s_CurvesPosList, lineWidth, lineColor); + } + + public static void DrawCurves(VertexHelper vh, List<Vector3> points, float width, Color32 color, + float smoothness, float currProgress = float.PositiveInfinity, bool isYAxis = false) + { + for (int i = 0; i < points.Count - 1; i++) + { + var sp = points[i]; + var ep = points[i + 1]; + var lsp = i > 0 ? points[i - 1] : sp; + var nep = i < points.Count - 2 ? points[i + 2] : ep; + var smoothness2 = smoothness; + if (currProgress != float.PositiveInfinity) + { + if (isYAxis) + smoothness2 = ep.y <= currProgress ? smoothness : smoothness * 0.5f; + else + smoothness2 = ep.x <= currProgress ? smoothness : smoothness * 0.5f; + } + if (isYAxis) + UGLHelper.GetBezierListVertical(ref s_CurvesPosList, sp, ep, smoothness2); + else + UGLHelper.GetBezierList(ref s_CurvesPosList, sp, ep, lsp, nep, smoothness2); + + DrawCurvesInternal(vh, s_CurvesPosList, width, color, currProgress, isYAxis); + } + } + + private static void DrawCurvesInternal(VertexHelper vh, List<Vector3> curvesPosList, float lineWidth, + Color32 lineColor, float currProgress = float.PositiveInfinity, bool isYAxis = false) + { + if (curvesPosList.Count > 1) + { + var start = curvesPosList[0]; + var to = Vector3.zero; + var dir = curvesPosList[1] - start; + var diff = Vector3.Cross(dir, Vector3.forward).normalized * lineWidth; + var startUp = start - diff; + var startDn = start + diff; + var toUp = Vector3.zero; + var toDn = Vector3.zero; + + var lastVertCount = vh.currentVertCount; + AddVertToVertexHelper(vh, startUp, startDn, lineColor, false); + for (int i = 1; i < curvesPosList.Count; i++) + { + to = curvesPosList[i]; + if (currProgress != float.PositiveInfinity) + { + if (isYAxis && to.y > currProgress) + break; + if (!isYAxis && to.x > currProgress) + break; + } + + diff = Vector3.Cross(to - start, Vector3.forward).normalized * lineWidth; + toUp = to - diff; + toDn = to + diff; + + AddVertToVertexHelper(vh, toUp, toDn, lineColor); + + startUp = toUp; + startDn = toDn; + start = to; + } + AddVertToVertexHelper(vh, toUp, toDn, lineColor); + } + } + + public static void DrawSvgPath(VertexHelper vh, string path) + { + SVG.DrawPath(vh, path); + } + + public static void DrawEllipse(VertexHelper vh, Vector3 center, float w, float h, Color32 color, float smoothness = 1) + { + DrawEllipse(vh, center, w, h, color, smoothness, 0, s_ClearColor32, 0, 360); + } + + public static void DrawEllipse(VertexHelper vh, Vector3 center, float w, float h, Color32 color, float smoothness, + float borderWidth, Color32 borderColor, + float startAngle, float endAngle) + { + startAngle = (startAngle + 360) % 360; + endAngle = (endAngle + 360) % 360; + if (endAngle < startAngle) + endAngle += 360; + if (endAngle <= startAngle) + return; + + var angle = startAngle; + var lp = Vector2.zero; + var fill = color.a != 0; + var border = borderWidth != 0 && borderColor.a != 0; + if (!fill && !border) + return; + + var startTriangleIndex = vh.currentVertCount; + if (fill) + { + vh.AddVert(center, color, Vector2.zero); + } + if (smoothness < 0.5f) + smoothness = 0.5f; + + var i = 0; + while (angle <= endAngle) + { + var rad = angle * Mathf.Deg2Rad; + var x = center.x + w * Mathf.Cos(rad); + var y = center.y + h * Mathf.Sin(rad); + var p1 = new Vector3(x, y); + vh.AddVert(p1, color, Vector2.zero); + if (border) + { + var dire = (p1 - center).normalized; + var diff = dire * borderWidth; + var p2 = p1 + diff; + vh.AddVert(p1, borderColor, Vector2.zero); + vh.AddVert(p2, borderColor, Vector2.zero); + + if (i > 0) + { + var index = startTriangleIndex + i * 3 + 2; + vh.AddTriangle(index - 3, index + 1, index - 2); + vh.AddTriangle(index - 3, index, index + 1); + if (fill) + vh.AddTriangle(startTriangleIndex, index - 1, index - 4); + } + } + else if (i > 0 && fill) + { + var index = startTriangleIndex + i; + vh.AddTriangle(startTriangleIndex, index + 1, index); + } + i++; + angle += smoothness; + } + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XUGL/UGL.cs.meta b/Assets/XCharts/Runtime/XUGL/UGL.cs.meta new file mode 100644 index 0000000..0ca349f --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/UGL.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 463dc57c2fc1849379941a7facf8dc84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/UGLExample.cs b/Assets/XCharts/Runtime/XUGL/UGLExample.cs new file mode 100644 index 0000000..a245ec7 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/UGLExample.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace XUGL +{ + [ExecuteInEditMode] + public class UGLExample : MaskableGraphic + { + private float m_Width = 800; + private float m_Height = 800; + private Vector3 m_Center = Vector3.zero; + private Vector3 m_LeftTopPos = Vector3.zero; + private Color32 m_BackgroundColor = new Color32(224, 224, 224, 255); + private Color32 m_DrawColor = new Color32(255, 132, 142, 255); + private float[] m_BorderRadius = new float[] { 5, 5, 10, 10 }; + + protected override void Awake() + { + base.Awake(); + var rectTransform = GetComponent<RectTransform>(); + rectTransform.sizeDelta = new Vector2(500, 500); + rectTransform.anchorMin = new Vector2(0.5f, 0.5f); + rectTransform.anchorMax = new Vector2(0.5f, 0.5f); + rectTransform.pivot = new Vector2(0.5f, 0.5f); + m_Center = Vector3.zero; + m_LeftTopPos = new Vector3(-m_Width / 2, m_Height / 2); + } + + protected override void OnPopulateMesh(VertexHelper vh) + { + Vector3 sp, cp, ep; + vh.Clear(); + + //背景边框 + UGL.DrawSquare(vh, m_Center, m_Width / 2, m_BackgroundColor); + UGL.DrawBorder(vh, m_Center, m_Width, m_Height, 40, Color.green, Color.red, 0, m_BorderRadius, false, 1); + + //点 + UGL.DrawCricle(vh, m_LeftTopPos + new Vector3(20, -20), 10, m_DrawColor); + + //直线 + sp = new Vector3(m_LeftTopPos.x + 50, m_LeftTopPos.y - 20); + ep = new Vector3(m_LeftTopPos.x + 250, m_LeftTopPos.y - 20); + UGL.DrawLine(vh, sp, ep, 3, m_DrawColor); + + //3点确定的折线 + sp = new Vector3(m_LeftTopPos.x + 20, m_LeftTopPos.y - 100); + cp = new Vector3(m_LeftTopPos.x + 200, m_LeftTopPos.y - 40); + ep = new Vector3(m_LeftTopPos.x + 250, m_LeftTopPos.y - 80); + UGL.DrawLine(vh, sp, cp, ep, 5, m_DrawColor); + + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XUGL/UGLExample.cs.meta b/Assets/XCharts/Runtime/XUGL/UGLExample.cs.meta new file mode 100644 index 0000000..e216aea --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/UGLExample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8a87ea5df031473da3eb5fb8f57e20a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Runtime/XUGL/UGLHelper.cs b/Assets/XCharts/Runtime/XUGL/UGLHelper.cs new file mode 100644 index 0000000..9d17934 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/UGLHelper.cs @@ -0,0 +1,389 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace XUGL +{ + public static class UGLHelper + { + public static bool IsValueEqualsColor(Color32 color1, Color32 color2) + { + return color1.a == color2.a && + color1.b == color2.b && + color1.g == color2.g && + color1.r == color2.r; + } + + public static bool IsValueEqualsColor(Color color1, Color color2) + { + return color1.a == color2.a && + color1.b == color2.b && + color1.g == color2.g && + color1.r == color2.r; + } + + public static bool IsValueEqualsString(string str1, string str2) + { + if (str1 == null && str2 == null) + return true; + else if (str1 != null && str2 != null) + return str1.Equals(str2); + else return false; + } + + public static bool IsValueEqualsVector2(Vector2 v1, Vector2 v2) + { + return v1.x == v2.x && + v1.y == v2.y; + } + + public static bool IsValueEqualsVector3(Vector3 v1, Vector3 v2) + { + return v1.x == v2.x && + v1.y == v2.y && + v1.z == v2.z; + } + + public static bool IsValueEqualsVector3(Vector3 v1, Vector2 v2) + { + return v1.x == v2.x && + v1.y == v2.y; + } + + public static bool IsValueEqualsList<T>(List<T> list1, List<T> list2) + { + if (list1 == null || list2 == null) + return false; + + if (list1.Count != list2.Count) + return false; + + for (int i = 0; i < list1.Count; i++) + { + if (list1[i] == null && list2[i] == null) + { } + else + { + if (list1[i] != null) + { + if (!list1[i].Equals(list2[i])) + return false; + } + else + { + if (!list2[i].Equals(list1[i])) + return false; + } + } + } + return true; + } + + public static bool IsClearColor(Color32 color) + { + return color.a == 0 && + color.b == 0 && + color.g == 0 && + color.r == 0; + } + + public static bool IsClearColor(Color color) + { + return color.a == 0 && + color.b == 0 && + color.g == 0 && + color.r == 0; + } + + public static bool IsZeroVector(Vector3 pos) + { + return pos.x == 0 && + pos.y == 0 && + pos.z == 0; + } + + public static Vector3 RotateRound(Vector3 position, Vector3 center, Vector3 axis, float angle) + { + Vector3 point = Quaternion.AngleAxis(angle, axis) * (position - center); + Vector3 resultVec3 = center + point; + return resultVec3; + } + + public static void GetBezierList(ref List<Vector3> posList, Vector3 sp, Vector3 ep, + Vector3 lsp, Vector3 nep, float smoothness = 2f, float k = 2.0f) + { + float dist = Mathf.Abs(sp.x - ep.x); + Vector3 cp1, cp2; + var dir = (ep - sp).normalized; + var diff = dist / k; + if (lsp == sp) + { + cp1 = sp + dist / k * dir * 1; + cp1.y = sp.y; + cp1 = sp; + } + else + { + cp1 = sp + (ep - lsp).normalized * diff; + } + if (nep == ep) cp2 = ep; + else cp2 = ep - (nep - sp).normalized * diff; + dist = Vector3.Distance(sp, ep); + int segment = (int) (dist / (smoothness <= 0 ? 2f : smoothness)); + if (segment < 1) segment = (int) (dist / 0.5f); + if (segment < 4) segment = 4; + GetBezierList2(ref posList, sp, ep, segment, cp1, cp2); + if (posList.Count < 2) + { + posList.Clear(); + posList.Add(sp); + posList.Add(ep); + } + } + + public static void GetBezierListVertical(ref List<Vector3> posList, Vector3 sp, Vector3 ep, + float smoothness = 2f, float k = 2.0f) + { + Vector3 dir = (ep - sp).normalized; + float dist = Vector3.Distance(sp, ep); + Vector3 cp1 = sp + dist / k * dir * 1; + Vector3 cp2 = sp + dist / k * dir * (k - 1); + cp1.x = sp.x; + cp2.x = ep.x; + int segment = (int) (dist / (smoothness <= 0 ? 2f : smoothness)); + GetBezierList2(ref posList, sp, ep, segment, cp1, cp2); + if (posList.Count < 2) + { + posList.Clear(); + posList.Add(sp); + posList.Add(ep); + } + } + + public static List<Vector3> GetBezierList(Vector3 sp, Vector3 ep, int segment, Vector3 cp) + { + List<Vector3> list = new List<Vector3>(); + for (int i = 0; i < segment; i++) + { + list.Add(GetBezier(i / (float) segment, sp, cp, ep)); + } + list.Add(ep); + return list; + } + + public static void GetBezierList2(ref List<Vector3> posList, Vector3 sp, Vector3 ep, + int segment, Vector3 cp, Vector3 cp2) + { + posList.Clear(); + if (posList.Capacity < segment + 1) + { + posList.Capacity = segment + 1; + } + for (int i = 0; i < segment; i++) + { + posList.Add((GetBezier2(i / (float) segment, sp, cp, cp2, ep))); + } + posList.Add(ep); + } + + public static Vector3 GetBezier(float t, Vector3 sp, Vector3 cp, Vector3 ep) + { + Vector3 aa = sp + (cp - sp) * t; + Vector3 bb = cp + (ep - cp) * t; + return aa + (bb - aa) * t; + } + + public static Vector3 GetBezier2(float t, Vector3 sp, Vector3 p1, Vector3 p2, Vector3 ep) + { + t = Mathf.Clamp01(t); + var oneMinusT = 1f - t; + return oneMinusT * oneMinusT * oneMinusT * sp + + 3f * oneMinusT * oneMinusT * t * p1 + + 3f * oneMinusT * t * t * p2 + + t * t * t * ep; + } + + public static Vector3 GetDire(float angle, bool isDegree = false) + { + angle = isDegree ? angle * Mathf.Deg2Rad : angle; + return new Vector3(Mathf.Sin(angle), Mathf.Cos(angle)); + } + + public static Vector3 GetVertialDire(Vector3 dire) + { + if (dire.x == 0) + return new Vector3(-1, 0, 0); + + if (dire.y == 0) + return new Vector3(0, -1, 0); + else + return new Vector3(-dire.y / dire.x, 1, 0).normalized; + } + + /// <summary> + /// 获得0-360的角度(12点钟方向为0度) + /// </summary> + /// <param name="from"></param> + /// <param name="to"></param> + /// <returns></returns> + public static float GetAngle360(Vector2 from, Vector2 to) + { + float angle; + + Vector3 cross = Vector3.Cross(from, to); + angle = Vector2.Angle(from, to); + angle = cross.z > 0 ? -angle : angle; + angle = (angle + 360) % 360; + return angle; + } + + public static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false) + { + angle = isDegree ? angle * Mathf.Deg2Rad : angle; + return new Vector3(center.x + radius * Mathf.Sin(angle), + center.y + radius * Mathf.Cos(angle)); + } + + /// <summary> + /// 获得两直线的交点 + /// </summary> + /// <param name="p1">线段1起点</param> + /// <param name="p2">线段1终点</param> + /// <param name="p3">线段2起点</param> + /// <param name="p4">线段2终点</param> + /// <param name="intersection">相交点。当不想交时默认为 Vector3.zero </param> + /// <returns>相交则返回 true, 否则返回 false</returns> + public static bool GetIntersection(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, ref Vector3 intersection) + { + intersection = Vector3.zero; + + var d = (p2.x - p1.x) * (p4.y - p3.y) - (p2.y - p1.y) * (p4.x - p3.x); + if (d == 0) + return false; + + var u = ((p3.x - p1.x) * (p4.y - p3.y) - (p3.y - p1.y) * (p4.x - p3.x)) / d; + var v = ((p3.x - p1.x) * (p2.y - p1.y) - (p3.y - p1.y) * (p2.x - p1.x)) / d; + if (u < 0 || u > 1 || v < 0 || v > 1) + return false; + + intersection.x = p1.x + u * (p2.x - p1.x); + intersection.y = p1.y + u * (p2.y - p1.y); + return true; + } + + /// <summary> + /// 三个点画线段所需要的六个关键点 + /// </summary> + /// <param name="lp">上一个点</param> + /// <param name="cp">当前点</param> + /// <param name="np">下一个点</param> + /// <param name="width">线段宽度</param> + /// <param name="ltp">上一个点的上角点</param> + /// <param name="lbp">上一个点的下角点</param> + /// <param name="ntp">下一个点的上角点</param> + /// <param name="nbp">下一个点的下角点</param> + /// <param name="itp">交汇点的上角点</param> + /// <param name="ibp">交汇点的下角点</param> + internal static void GetLinePoints(Vector3 lp, Vector3 cp, Vector3 np, float width, + ref Vector3 ltp, ref Vector3 lbp, + ref Vector3 ntp, ref Vector3 nbp, + ref Vector3 itp, ref Vector3 ibp, + ref Vector3 clp, ref Vector3 crp, + ref bool bitp, ref bool bibp, int debugIndex = 0) + { + var dir1 = (cp - lp).normalized; + var dir1v = Vector3.Cross(dir1, Vector3.forward).normalized * width; + ltp = lp - dir1v; + lbp = lp + dir1v; + if (debugIndex == 1 && cp == np) + { + ntp = np - dir1v; + nbp = np + dir1v; + clp = cp - dir1v; + crp = cp + dir1v; + return; + } + + var dir2 = (cp - np).normalized; + var dir2v = Vector3.Cross(dir2, Vector3.back).normalized * width; + ntp = np - dir2v; + nbp = np + dir2v; + clp = cp - dir2v; + crp = cp + dir2v; + + if (Vector3.Cross(dir1, dir2) == Vector3.zero && np != cp) + { + itp = ntp; + ibp = nbp; + return; + } + + var ldist = (Vector3.Distance(cp, lp) + 1) * dir1; + var rdist = (Vector3.Distance(cp, np) + 1) * dir2; + + bitp = true; + if (!UGLHelper.GetIntersection(ltp, ltp + ldist, ntp, ntp + rdist, ref itp)) + { + itp = cp - dir1v; + clp = cp - dir1v; + crp = cp - dir2v; + bitp = false; + } + bibp = true; + if (!UGLHelper.GetIntersection(lbp, lbp + ldist, nbp, nbp + rdist, ref ibp)) + { + ibp = cp + dir1v; + clp = cp + dir1v; + crp = cp + dir2v; + bibp = false; + } + if (bitp == false && bibp == false && cp == np) + { + ltp = cp - dir1v; + clp = cp + dir1v; + crp = cp + dir1v; + } + } + + public static bool IsPointInTriangle(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 check) + { + var dire1 = check - p1; + var dire2 = check - p2; + var dire3 = check - p3; + var c1 = dire1.x * dire2.y - dire1.y * dire2.x; + var c2 = dire2.x * dire3.y - dire2.y * dire3.x; + var c3 = dire3.x * dire1.y - dire3.y * dire1.x; + return c1 * c2 >= 0 && c1 * c3 >= 0; + } + + public static bool IsPointInPolygon(Vector3 p, List<Vector3> polyons) + { + if (polyons.Count == 0) return false; + var inside = false; + var j = polyons.Count - 1; + for (int i = 0; i < polyons.Count; j = i++) + { + var pi = polyons[i]; + var pj = polyons[j]; + if (((pi.y <= p.y && p.y < pj.y) || (pj.y <= p.y && p.y < pi.y)) && + (p.x < (pj.x - pi.x) * (p.y - pi.y) / (pj.y - pi.y) + pi.x)) + inside = !inside; + } + return inside; + } + public static bool IsPointInPolygon(Vector3 p, List<Vector2> polyons) + { + if (polyons.Count == 0) return false; + var inside = false; + var j = polyons.Count - 1; + for (int i = 0; i < polyons.Count; j = i++) + { + var pi = polyons[i]; + var pj = polyons[j]; + if (((pi.y <= p.y && p.y < pj.y) || (pj.y <= p.y && p.y < pi.y)) && + (p.x < (pj.x - pi.x) * (p.y - pi.y) / (pj.y - pi.y) + pi.x)) + inside = !inside; + } + return inside; + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Runtime/XUGL/UGLHelper.cs.meta b/Assets/XCharts/Runtime/XUGL/UGLHelper.cs.meta new file mode 100644 index 0000000..2165db1 --- /dev/null +++ b/Assets/XCharts/Runtime/XUGL/UGLHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc77f59a050d547caa3de82f4a9abd99 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/package.json b/Assets/XCharts/package.json new file mode 100644 index 0000000..5e21cef --- /dev/null +++ b/Assets/XCharts/package.json @@ -0,0 +1,27 @@ +{ + "name": "com.monitor1394.xcharts", + "displayName": "XCharts", + "version": "3.0.1", + "date": "20220616", + "checkdate": "20220616", + "desc": "如果 XCharts 对您有帮助,希望您能在 Github 上点 Star 支持,非常感谢!", + "unity": "2018.3", + "description": "A charting and data visualization library for Unity.", + "keywords": [ + "chart", + "charts", + "graph", + "data-visualization" + ], + "category": "chart", + "repository": { + "type": "git", + "url": "git+https://github.com/XCharts-Team/XCharts.git" + }, + "author": "monitor1394", + "license": "MIT", + "bugs": { + "url": "https://github.com/XCharts-Team/XCharts/issues" + }, + "homepage": "https://github.com/XCharts-Team/XCharts" +} \ No newline at end of file diff --git a/Assets/XCharts/package.json.meta b/Assets/XCharts/package.json.meta new file mode 100644 index 0000000..9bc810b --- /dev/null +++ b/Assets/XCharts/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c4d5abd20b2304597ae3d0d57fd8986e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/prototype_512x512_white.png b/Assets/prototype_512x512_white.png new file mode 100644 index 0000000..2c3ad6b Binary files /dev/null and b/Assets/prototype_512x512_white.png differ diff --git a/Assets/prototype_512x512_white.png.meta b/Assets/prototype_512x512_white.png.meta new file mode 100644 index 0000000..335438e --- /dev/null +++ b/Assets/prototype_512x512_white.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 279ff8449cb84c043bdf3af5d5589ea3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json new file mode 100644 index 0000000..7fc6dbe --- /dev/null +++ b/Packages/manifest.json @@ -0,0 +1,44 @@ +{ + "dependencies": { + "com.unity.collab-proxy": "1.9.0", + "com.unity.ide.rider": "2.0.7", + "com.unity.ide.visualstudio": "2.0.11", + "com.unity.ide.vscode": "1.2.4", + "com.unity.ml-agents": "2.0.1", + "com.unity.test-framework": "1.1.29", + "com.unity.textmeshpro": "3.0.6", + "com.unity.timeline": "1.4.8", + "com.unity.ugui": "1.0.0", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.androidjni": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } +} diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json new file mode 100644 index 0000000..8f73da3 --- /dev/null +++ b/Packages/packages-lock.json @@ -0,0 +1,376 @@ +{ + "dependencies": { + "com.unity.barracuda": { + "version": "2.0.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.burst": "1.6.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.burst": { + "version": "1.6.0", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.mathematics": "1.2.1" + }, + "url": "https://packages.unity.com" + }, + "com.unity.collab-proxy": { + "version": "1.9.0", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ext.nunit": { + "version": "1.0.6", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ide.rider": { + "version": "2.0.7", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.1" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.visualstudio": { + "version": "2.0.11", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.vscode": { + "version": "1.2.4", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.mathematics": { + "version": "1.2.1", + "depth": 3, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ml-agents": { + "version": "2.0.1", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.barracuda": "2.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.test-framework": { + "version": "1.1.29", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ext.nunit": "1.0.6", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.textmeshpro": { + "version": "3.0.6", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.timeline": { + "version": "1.4.8", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ugui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0" + } + }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.androidjni": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.animation": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.assetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.audio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.cloth": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.director": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.animation": "1.0.0" + } + }, + "com.unity.modules.imageconversion": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imgui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.jsonserialize": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.particlesystem": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics2d": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.screencapture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.subsystems": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.terrain": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.terrainphysics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0" + } + }, + "com.unity.modules.tilemap": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics2d": "1.0.0" + } + }, + "com.unity.modules.ui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.uielements": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.uielementsnative": "1.0.0" + } + }, + "com.unity.modules.uielementsnative": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.umbra": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unityanalytics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.unitywebrequest": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequestassetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestaudio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.audio": "1.0.0" + } + }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestwww": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.vehicles": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.video": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.vr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } + }, + "com.unity.modules.wind": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.xr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.subsystems": "1.0.0" + } + } + } +} diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..07ebfb0 --- /dev/null +++ b/ProjectSettings/AudioManager.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 1024 diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..cdc1f3e --- /dev/null +++ b/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_DefaultMaxAngluarSpeed: 7 diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..0147887 --- /dev/null +++ b/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: [] + m_configObjects: {} diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..de5d0b2 --- /dev/null +++ b/ProjectSettings/EditorSettings.asset @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 0 + m_DefaultBehaviorMode: 0 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref + m_ProjectGenerationRootNamespace: + m_CollabEditorSettings: + inProgressEnabled: 1 + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_AsyncShaderCompilation: 1 + m_EnterPlayModeOptionsEnabled: 0 + m_EnterPlayModeOptions: 3 + m_ShowLightmapResolutionOverlay: 1 + m_UseLegacyProbeSampleCount: 0 + m_SerializeInlineMappingsOnOneLine: 1 \ No newline at end of file diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..43369e3 --- /dev/null +++ b/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 0 + m_LightsUseColorTemperature: 0 + m_LogWhenShaderIsCompiled: 0 + m_AllowEnlightenSupportForUpgradedProject: 0 diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..17c8f53 --- /dev/null +++ b/ProjectSettings/InputManager.asset @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset new file mode 100644 index 0000000..568fee6 --- /dev/null +++ b/ProjectSettings/PackageManagerSettings.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_EnablePreviewPackages: 1 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 + m_ScopedRegistriesSettingsExpanded: 1 + oneTimeWarningShown: 1 + m_Registries: + - m_Id: main + m_Name: + m_Url: https://packages.unity.com + m_Scopes: [] + m_IsDefault: 1 + m_Capabilities: 7 + m_UserSelectedRegistryName: + m_UserAddingNewScopedRegistry: 0 + m_RegistryInfoDraft: + m_ErrorMessage: + m_Original: + m_Id: + m_Name: + m_Url: + m_Scopes: [] + m_IsDefault: 0 + m_Capabilities: 0 + m_Modified: 0 + m_Name: + m_Url: + m_Scopes: + - + m_SelectedScopeIndex: 0 diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..47880b1 --- /dev/null +++ b/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..67a94da --- /dev/null +++ b/ProjectSettings/PresetManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..c454e7e --- /dev/null +++ b/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,688 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 22 + productGUID: 6d8e5b7bfe71b01418058e48276cf380 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: Aimbot-ParallelEnv + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 0 + m_MTRendering: 1 + mipStripping: 0 + numberOfMipsStripped: 0 + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosUseCustomAppBackgroundBehavior: 0 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 1 + androidUseSwappy: 1 + androidBlitType: 0 + androidResizableWindow: 0 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 1 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + useFlipModelSwapchain: 1 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 0 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + stadiaPresentMode: 0 + stadiaTargetFramerate: 0 + vulkanNumSwapchainBuffers: 3 + vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 0 + vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleVersion: 0.1 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + vrSettings: + enable360StereoCapture: 0 + isWsaHolographicRemotingEnabled: 0 + enableFrameTimingStats: 0 + useHDRDisplay: 0 + D3DHDRBitDepth: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + applicationIdentifier: {} + buildNumber: + Standalone: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 0 + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 19 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 1 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSTargetOSVersionString: 11.0 + tvOSSdkVersion: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 11.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + shaderPrecisionModel: 0 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.unity.template.3d@5.0.4 + templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomProguardFile: 0 + AndroidTargetArchitectures: 1 + AndroidTargetDevices: 0 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + chromeosInputEmulation: 1 + AndroidMinifyWithR8: 0 + AndroidMinifyRelease: 0 + AndroidMinifyDebug: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsJobs: + - m_BuildTarget: MacStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: Switch + m_GraphicsJobs: 1 + - m_BuildTarget: MetroSupport + m_GraphicsJobs: 1 + - m_BuildTarget: AppleTVSupport + m_GraphicsJobs: 0 + - m_BuildTarget: BJMSupport + m_GraphicsJobs: 1 + - m_BuildTarget: LinuxStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: PS4Player + m_GraphicsJobs: 1 + - m_BuildTarget: iOSSupport + m_GraphicsJobs: 0 + - m_BuildTarget: WindowsStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobs: 1 + - m_BuildTarget: LuminSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AndroidPlayer + m_GraphicsJobs: 0 + - m_BuildTarget: WebGLSupport + m_GraphicsJobs: 0 + m_BuildTargetGraphicsJobMode: + - m_BuildTarget: PS4Player + m_GraphicsJobMode: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobMode: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 150000000b000000 + m_Automatic: 0 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 0 + m_Devices: + - Oculus + - OpenVR + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + openGLRequireES32: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetNormalMapEncoding: [] + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + bluetoothUsageDescription: + switchNMETAOverride: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchUseGOLDLinker: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchTitleNames_15: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchPublisherNames_15: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchTouchScreenUsage: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 22 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchPlayerConnectionEnabled: 1 + switchUseNewStyleFilepaths: 0 + switchUseMicroSleepForYield: 1 + switchMicroSleepForYieldTime: 25 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 + ps4GPU800MHz: 1 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 + spritePackerPolicy: + webGLMemorySize: 16 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 1 + webGLWasmArithmeticExceptions: 0 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + webGLDecompressionFallback: 0 + scriptingDefineSymbols: {} + additionalCompilerArguments: {} + platformArchitecture: {} + scriptingBackend: {} + il2cppCompilerConfiguration: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 + allowUnsafeCode: 0 + useDeterministicCompilation: 1 + useReferenceAssemblies: 1 + enableRoslynAnalyzers: 1 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + gcIncremental: 1 + assemblyVersionValidation: 1 + gcWBarrierValidation: 0 + apiCompatibilityLevelPerPlatform: {} + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Template_3D + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Template_3D + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} + metroSplashScreenUseBackgroundColor: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: + vrEditorSettings: {} + cloudServicesEnabled: + UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_SignPackage: 1 + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + apiCompatibilityLevel: 6 + activeInputHandler: 0 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] + projectName: + organizationId: + cloudEnabled: 0 + legacyClampBlendShapeWeights: 0 + virtualTexturingSupportEnabled: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..39e9125 --- /dev/null +++ b/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 2020.3.19f1 +m_EditorVersionWithRevision: 2020.3.19f1 (68f137dc9bbe) diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..7b7658d --- /dev/null +++ b/ProjectSettings/QualitySettings.asset @@ -0,0 +1,232 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 5 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 70 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Lumin: 5 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Stadia: 5 + Standalone: 5 + WebGL: 3 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..1c92a78 --- /dev/null +++ b/ProjectSettings/TagManager.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..558a017 --- /dev/null +++ b/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..6125b30 --- /dev/null +++ b/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..3a95c98 --- /dev/null +++ b/ProjectSettings/VFXManager.asset @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_StripUpdateShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/ProjectSettings/VersionControlSettings.asset b/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/ProjectSettings/XRSettings.asset b/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset new file mode 100644 index 0000000..7388c32 --- /dev/null +++ b/UserSettings/EditorUserSettings.asset @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!162 &1 +EditorUserSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_ConfigSettings: + RecentlyUsedScenePath-0: + value: 22424703114646680e0b0227036c6c111b07142f1f2b233e2867083debf42d + flags: 0 + RecentlyUsedScenePath-1: + value: 22424703114646680e0b0227036c6c0417050c6439262f2434 + flags: 0 + RecentlyUsedScenePath-2: + value: 22424703114646680e0b0227036c761e3116152f623d28393930 + flags: 0 + vcSharedLogLevel: + value: 0d5e400f0650 + flags: 0 + m_VCAutomaticAdd: 1 + m_VCDebugCom: 0 + m_VCDebugCmd: 0 + m_VCDebugOut: 0 + m_SemanticMergeMode: 2 + m_VCShowFailedCheckout: 1 + m_VCOverwriteFailedCheckoutAssets: 1 + m_VCProjectOverlayIcons: 1 + m_VCHierarchyOverlayIcons: 1 + m_VCOtherOverlayIcons: 1 + m_VCAllowAsyncUpdate: 1