diff --git a/Document~/UDEXREAL Glove SDK License Agreement.pdf b/Document~/UDEXREAL Glove SDK License Agreement.pdf new file mode 100644 index 0000000..2191fdf Binary files /dev/null and b/Document~/UDEXREAL Glove SDK License Agreement.pdf differ diff --git a/HandDriver/SDK/Android Bluetooth SDK.meta b/HandDriver/SDK/Android Bluetooth SDK.meta new file mode 100644 index 0000000..0d68f9c --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d2b2b70df6ecad4c85d3fb380509587 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI.meta new file mode 100644 index 0000000..2d4cb15 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f889989d24901d14095c74b70f1d63ee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Calibration.unity b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Calibration.unity new file mode 100644 index 0000000..8272d55 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Calibration.unity @@ -0,0 +1,6345 @@ +%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.18028378, g: 0.22571412, b: 0.30692285, 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 &2890286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2890287} + - component: {fileID: 2890289} + - component: {fileID: 2890288} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2890287 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2890286} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1962051308} + 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 &2890288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2890286} + 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: 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: 22 + 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: "\u7EE7\u7EED" +--- !u!222 &2890289 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2890286} + m_CullTransparentMesh: 1 +--- !u!1 &29888883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 29888884} + - component: {fileID: 29888886} + - component: {fileID: 29888885} + m_Layer: 5 + m_Name: Line + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &29888884 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29888883} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 736668366} + 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: -70} + m_SizeDelta: {x: 1, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &29888885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29888883} + 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.23529412, g: 0.3372549, b: 0.44705883, 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 &29888886 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29888883} + m_CullTransparentMesh: 1 +--- !u!1 &36952674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 36952675} + - component: {fileID: 36952677} + - component: {fileID: 36952676} + m_Layer: 5 + m_Name: load + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &36952675 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 36952674} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 395447765} + 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: 240, y: 240} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &36952676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 36952674} + 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: f28939b0192af8948a5cdd4646e29d39, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 0 + m_FillClockwise: 1 + m_FillOrigin: 2 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &36952677 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 36952674} + m_CullTransparentMesh: 1 +--- !u!1 &104765799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 104765800} + - component: {fileID: 104765802} + - component: {fileID: 104765801} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &104765800 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 104765799} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1481137393} + 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: -18, y: 199} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &104765801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 104765799} + 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: 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: 25 + 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: "1 \u8F7B\u63E1\u62F3\u5934" +--- !u!222 &104765802 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 104765799} + m_CullTransparentMesh: 1 +--- !u!1 &181020068 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 181020069} + - component: {fileID: 181020071} + - component: {fileID: 181020070} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &181020069 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181020068} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1401565455} + 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: -79, y: 199} + m_SizeDelta: {x: 40, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &181020070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181020068} + 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.11372549, g: 0.2784314, b: 0.5529412, 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 &181020071 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181020068} + m_CullTransparentMesh: 1 +--- !u!1 &196431708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 196431709} + - component: {fileID: 196431711} + - component: {fileID: 196431710} + m_Layer: 5 + m_Name: Pose3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &196431709 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196431708} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 608008417} + - {fileID: 1199860617} + m_Father: {fileID: 316946443} + 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: 220, y: 0} + m_SizeDelta: {x: 420, y: 420} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &196431710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196431708} + 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: eeff450c75f719240bebd0eab7fda9b6, 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 &196431711 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196431708} + m_CullTransparentMesh: 1 +--- !u!1 &209810316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 209810317} + - component: {fileID: 209810319} + - component: {fileID: 209810318} + m_Layer: 5 + m_Name: Pose1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &209810317 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 209810316} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 448734452} + - {fileID: 1866494041} + m_Father: {fileID: 316946443} + 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: -220, y: 0} + m_SizeDelta: {x: 420, y: 420} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &209810318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 209810316} + 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: 000f50798e5a0bd4687f71a50c3594c9, 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 &209810319 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 209810316} + m_CullTransparentMesh: 1 +--- !u!1 &247129199 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 247129200} + - component: {fileID: 247129204} + - component: {fileID: 247129203} + - component: {fileID: 247129202} + - component: {fileID: 247129201} + m_Layer: 5 + m_Name: GifImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &247129200 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247129199} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1401565455} + 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: -25} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &247129201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247129199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c0059e5739c78f4fba4055ceead3919, type: 3} + m_Name: + m_EditorClassIdentifier: + m_originalWidth: 0 + m_originalHeight: 0 + m_fixOnUpdate: 0 +--- !u!114 &247129202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247129199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 338dace6791114f409088fc4f7904d1e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_rawImage: {fileID: 247129203} + m_imgAspectCtrl: {fileID: 247129201} + m_filterMode: 0 + m_wrapMode: 1 + m_loadOnStart: 1 + m_loadOnStartUrl: Calib_Step2.gif + m_rotateOnLoading: 0 + m_outputDebugLog: 0 +--- !u!114 &247129203 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247129199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 32e0d1b3b160e924c958888511c6148c, type: 2} + 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_Texture: {fileID: 2800000, guid: 742e0793f422a4349ad60940e735b502, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &247129204 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247129199} + m_CullTransparentMesh: 1 +--- !u!1 &264839900 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 264839901} + - component: {fileID: 264839903} + - component: {fileID: 264839902} + m_Layer: 5 + m_Name: Panel_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &264839901 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264839900} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1869362181} + - {fileID: 1080570182} + - {fileID: 736668366} + - {fileID: 895231877} + - {fileID: 1962051308} + - {fileID: 2064149966} + m_Father: {fileID: 1036834297} + 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: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &264839902 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264839900} + 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: 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 &264839903 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264839900} + m_CullTransparentMesh: 1 +--- !u!1 &298458809 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 298458810} + - component: {fileID: 298458812} + - component: {fileID: 298458811} + m_Layer: 5 + m_Name: Panel_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &298458810 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 298458809} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1352006069} + - {fileID: 1845558032} + - {fileID: 1224202251} + - {fileID: 1224803325} + - {fileID: 1781981439} + - {fileID: 1892277344} + m_Father: {fileID: 1036834297} + m_RootOrder: 6 + 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 &298458811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 298458809} + 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: 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 &298458812 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 298458809} + m_CullTransparentMesh: 1 +--- !u!1 &316946442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 316946443} + - component: {fileID: 316946445} + - component: {fileID: 316946444} + m_Layer: 5 + m_Name: Panel_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &316946443 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316946442} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2128042190} + - {fileID: 580388131} + - {fileID: 1373959052} + - {fileID: 962017630} + - {fileID: 209810317} + - {fileID: 406419128} + - {fileID: 196431709} + m_Father: {fileID: 1036834297} + m_RootOrder: 3 + 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 &316946444 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316946442} + 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: 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 &316946445 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316946442} + m_CullTransparentMesh: 1 +--- !u!1 &357619826 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 357619827} + - component: {fileID: 357619829} + - component: {fileID: 357619828} + m_Layer: 5 + m_Name: Battery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &357619827 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 357619826} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 895231877} + 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: 35, y: -70} + m_SizeDelta: {x: 19, y: 19} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &357619828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 357619826} + 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: a8c7a8368439abd478c9a587ecb635d2, 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 &357619829 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 357619826} + m_CullTransparentMesh: 1 +--- !u!1 &395447764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 395447765} + - component: {fileID: 395447767} + - component: {fileID: 395447766} + m_Layer: 5 + m_Name: CircleBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &395447765 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 395447764} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.92, y: 0.92, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 36952675} + m_Father: {fileID: 1481137393} + 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: -25} + m_SizeDelta: {x: 240, y: 240} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &395447766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 395447764} + 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: da7d54ecd780f9440b6ba7c65c4a02f2, 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 &395447767 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 395447764} + m_CullTransparentMesh: 1 +--- !u!1 &406419127 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 406419128} + - component: {fileID: 406419130} + - component: {fileID: 406419129} + m_Layer: 5 + m_Name: Pose2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &406419128 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406419127} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 994919969} + - {fileID: 812405588} + m_Father: {fileID: 316946443} + 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: 0} + m_SizeDelta: {x: 420, y: 420} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &406419129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406419127} + 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: e4fad83fb03fe8f45802361533bade6e, 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 &406419130 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406419127} + m_CullTransparentMesh: 1 +--- !u!1 &448734451 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 448734452} + - component: {fileID: 448734454} + - component: {fileID: 448734453} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &448734452 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448734451} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 209810317} + 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: -83, y: -250} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &448734453 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448734451} + 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.11372549, g: 0.2784314, b: 0.5529412, 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 &448734454 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448734451} + m_CullTransparentMesh: 1 +--- !u!1 &459017043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 459017044} + - component: {fileID: 459017046} + - component: {fileID: 459017045} + m_Layer: 5 + m_Name: DeviceName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &459017044 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459017043} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 736668366} + 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: -18.6} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &459017045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459017043} + 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.23529412, g: 0.3372549, b: 0.44705883, 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: UDSTXXX123456789 +--- !u!222 &459017046 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459017043} + m_CullTransparentMesh: 1 +--- !u!1 &580388130 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 580388131} + - component: {fileID: 580388133} + - component: {fileID: 580388132} + m_Layer: 5 + m_Name: SubTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &580388131 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580388130} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 316946443} + 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: 154} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &580388132 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580388130} + 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: 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: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u8BF7\u6234\u4E0A\u624B\u5957\u505A\u597D\u51C6\u5907\uFF0C\u6211\u4EEC\u5C06\u540C\u65F6\u8FDB\u884C\u4E24\u53EA\u624B\u7684\u52A8\u4F5C\u6807\u5B9A\u3002" +--- !u!222 &580388133 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580388130} + m_CullTransparentMesh: 1 +--- !u!1 &595255594 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 595255595} + - component: {fileID: 595255597} + - component: {fileID: 595255596} + m_Layer: 5 + m_Name: Icon Img + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &595255595 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595255594} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.5, y: 1.5, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 837937332} + 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: 205} + m_SizeDelta: {x: 201, y: 37} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &595255596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595255594} + 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: 508c61c3a7e19aa488a8cea4c5926d9a, 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 &595255597 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595255594} + m_CullTransparentMesh: 1 +--- !u!1 &608008416 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608008417} + - component: {fileID: 608008419} + - component: {fileID: 608008418} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &608008417 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608008416} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 196431709} + 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: -76.5, y: -250} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &608008418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608008416} + 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.11372549, g: 0.2784314, b: 0.5529412, 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 &608008419 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608008416} + m_CullTransparentMesh: 1 +--- !u!1 &652015717 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 652015718} + - component: {fileID: 652015720} + - component: {fileID: 652015719} + m_Layer: 5 + m_Name: HandIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &652015718 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652015717} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 895231877} + 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: 43} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &652015719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652015717} + 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: 8585700e62ffd614c9d9811a9bb30e3d, 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 &652015720 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652015717} + m_CullTransparentMesh: 1 +--- !u!1 &677257641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 677257642} + - component: {fileID: 677257644} + - component: {fileID: 677257643} + m_Layer: 5 + m_Name: Blur + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &677257642 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677257641} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1036834297} + 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 &677257643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677257641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: fbef3ac7eb26f8d4cb9a911230043e4b, type: 2} + 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 &677257644 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677257641} + m_CullTransparentMesh: 1 +--- !u!1 &685396075 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 685396076} + - component: {fileID: 685396078} + - component: {fileID: 685396077} + m_Layer: 5 + m_Name: Signal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &685396076 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685396075} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 736668366} + 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: -35, y: -70} + m_SizeDelta: {x: 19, y: 19} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &685396077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685396075} + 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: 9578dc4aa6f3772458a1b8dfd87983cf, 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 &685396078 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685396075} + m_CullTransparentMesh: 1 +--- !u!1 &736668365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 736668366} + - component: {fileID: 736668368} + - component: {fileID: 736668367} + m_Layer: 5 + m_Name: LeftHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &736668366 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736668365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1516159683} + - {fileID: 459017044} + - {fileID: 685396076} + - {fileID: 1960879329} + - {fileID: 29888884} + m_Father: {fileID: 264839901} + 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: -110, y: 0} + m_SizeDelta: {x: 174, y: 226} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &736668367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736668365} + 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.7169812, g: 0.7169812, b: 0.7169812, 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: ca2306eaf537341468c9f72e52e869a0, 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 &736668368 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736668365} + m_CullTransparentMesh: 1 +--- !u!1 &786981898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 786981899} + - component: {fileID: 786981901} + - component: {fileID: 786981900} + m_Layer: 5 + m_Name: Signal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &786981899 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786981898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 895231877} + 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: -35, y: -70} + m_SizeDelta: {x: 19, y: 19} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &786981900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786981898} + 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: 9578dc4aa6f3772458a1b8dfd87983cf, 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 &786981901 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786981898} + m_CullTransparentMesh: 1 +--- !u!1 &802949882 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 802949884} + - component: {fileID: 802949883} + 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 &802949883 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802949882} + 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: 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 &802949884 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802949882} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &811795209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 811795210} + - component: {fileID: 811795212} + - component: {fileID: 811795211} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &811795210 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811795209} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1401565455} + 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: -18, y: 199} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &811795211 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811795209} + 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: 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: 25 + 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: "2 \u4E94\u6307\u5E76\u62E2" +--- !u!222 &811795212 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811795209} + m_CullTransparentMesh: 1 +--- !u!1 &812405587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 812405588} + - component: {fileID: 812405590} + - component: {fileID: 812405589} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &812405588 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 812405587} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 406419128} + 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: -5.5, y: -250} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &812405589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 812405587} + 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: 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: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: "2 \u4E94\u6307\u5E76\u62E2" +--- !u!222 &812405590 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 812405587} + m_CullTransparentMesh: 1 +--- !u!1 &817583765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 817583766} + - component: {fileID: 817583768} + - component: {fileID: 817583767} + m_Layer: 5 + m_Name: Line + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &817583766 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 817583765} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 895231877} + 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: -70} + m_SizeDelta: {x: 1, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &817583767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 817583765} + 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.23529412, g: 0.3372549, b: 0.44705883, 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 &817583768 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 817583765} + m_CullTransparentMesh: 1 +--- !u!1 &837937331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 837937332} + - component: {fileID: 837937334} + - component: {fileID: 837937333} + m_Layer: 5 + m_Name: Panel_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &837937332 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 837937331} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 595255595} + - {fileID: 1867415015} + - {fileID: 1848152986} + - {fileID: 1723766003} + - {fileID: 1160902265} + m_Father: {fileID: 1036834297} + 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} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &837937333 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 837937331} + 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: 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 &837937334 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 837937331} + m_CullTransparentMesh: 1 +--- !u!1 &844217040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 844217041} + - component: {fileID: 844217043} + - component: {fileID: 844217042} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &844217041 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844217040} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1481137393} + 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: -79, y: 199} + m_SizeDelta: {x: 40, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &844217042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844217040} + 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.11372549, g: 0.2784314, b: 0.5529412, 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 &844217043 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844217040} + m_CullTransparentMesh: 1 +--- !u!1 &895231876 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 895231877} + - component: {fileID: 895231879} + - component: {fileID: 895231878} + m_Layer: 5 + m_Name: RightHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &895231877 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 895231876} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 652015718} + - {fileID: 1287192730} + - {fileID: 786981899} + - {fileID: 357619827} + - {fileID: 817583766} + m_Father: {fileID: 264839901} + 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: 110, y: 0} + m_SizeDelta: {x: 174, y: 226} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &895231878 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 895231876} + 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.7169812, g: 0.7169812, b: 0.7169812, 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: ca2306eaf537341468c9f72e52e869a0, 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 &895231879 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 895231876} + m_CullTransparentMesh: 1 +--- !u!1 &962017629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 962017630} + - component: {fileID: 962017633} + - component: {fileID: 962017632} + - component: {fileID: 962017631} + m_Layer: 5 + m_Name: BackBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &962017630 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962017629} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.8, y: 0.8, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1582188118} + m_Father: {fileID: 316946443} + 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: -429, y: 234} + m_SizeDelta: {x: 160, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &962017631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962017629} + 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: 2 + 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.105882354, g: 0.19607843, b: 0.28627452, 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: 21300000, guid: c3c009733ada58046bb17d41343b58c6, type: 3} + 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: 962017632} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &962017632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962017629} + 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: c002c6999ff14504b9c7c67c76774664, 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 &962017633 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962017629} + m_CullTransparentMesh: 1 +--- !u!1 &994919968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 994919969} + - component: {fileID: 994919971} + - component: {fileID: 994919970} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &994919969 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 994919968} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 406419128} + 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: -82, y: -250} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &994919970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 994919968} + 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.11372549, g: 0.2784314, b: 0.5529412, 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 &994919971 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 994919968} + m_CullTransparentMesh: 1 +--- !u!1 &997158735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 997158736} + - component: {fileID: 997158738} + - component: {fileID: 997158737} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &997158736 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997158735} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1160902265} + 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: 14.9, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &997158737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997158735} + 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: 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: 18 + 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: "\u9000\u51FA\u6E38\u620F" +--- !u!222 &997158738 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997158735} + m_CullTransparentMesh: 1 +--- !u!1 &1036834296 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1036834297} + - component: {fileID: 1036834299} + - component: {fileID: 1036834298} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1036834297 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036834296} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 677257642} + - {fileID: 837937332} + - {fileID: 264839901} + - {fileID: 316946443} + - {fileID: 1481137393} + - {fileID: 1401565455} + - {fileID: 298458810} + m_Father: {fileID: 1377488998} + 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 &1036834298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036834296} + 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: ed8e10304fe4e7f47a1dad18cc91bb94, 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 &1036834299 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036834296} + m_CullTransparentMesh: 1 +--- !u!1 &1080570181 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1080570182} + - component: {fileID: 1080570184} + - component: {fileID: 1080570183} + m_Layer: 5 + m_Name: SubTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1080570182 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080570181} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 264839901} + 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: 154} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1080570183 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080570181} + 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: 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: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u8BF7\u6234\u4E0A\u624B\u5957\u5E76\u5F00\u542F\u7535\u6E90\uFF0C\u6B63\u5728\u8FDB\u884C\u84DD\u7259\u8FDE\u63A5" +--- !u!222 &1080570184 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080570181} + m_CullTransparentMesh: 1 +--- !u!1 &1143555129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1143555130} + - component: {fileID: 1143555132} + - component: {fileID: 1143555131} + m_Layer: 5 + m_Name: SubTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1143555130 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1143555129} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1481137393} + 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: 154} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1143555131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1143555129} + 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: 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: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u56DB\u6307\u5408\u62E2\u5E76\u5145\u5206\u5F2F\u66F2\uFF0C\u5927\u62C7\u6307\u5F2F\u66F2\u9760\u5728\u524D\u4FA7\u3002" +--- !u!222 &1143555132 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1143555129} + m_CullTransparentMesh: 1 +--- !u!1 &1160902264 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1160902265} + - component: {fileID: 1160902268} + - component: {fileID: 1160902267} + - component: {fileID: 1160902266} + m_Layer: 5 + m_Name: ExitBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1160902265 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160902264} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.8, y: 0.8, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 997158736} + m_Father: {fileID: 837937332} + 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: -107.7} + m_SizeDelta: {x: 160, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1160902266 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160902264} + 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: 2 + 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.105882354, g: 0.19607843, b: 0.28627452, 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: 21300000, guid: 518b31526be913d4ba214d58f6da6ae3, type: 3} + 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: 1160902267} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1160902267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160902264} + 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: 344b0f09bb7e9854b9a69b91e5e44965, 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 &1160902268 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160902264} + m_CullTransparentMesh: 1 +--- !u!1 &1199860616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199860617} + - component: {fileID: 1199860619} + - component: {fileID: 1199860618} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1199860617 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199860616} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 196431709} + 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: -250} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1199860618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199860616} + 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: 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: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: "3 \u4E94\u6307\u5206\u5F00" +--- !u!222 &1199860619 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199860616} + m_CullTransparentMesh: 1 +--- !u!1 &1224202250 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1224202251} + - component: {fileID: 1224202253} + - component: {fileID: 1224202252} + m_Layer: 5 + m_Name: SubTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1224202251 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224202250} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 298458810} + 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: 154} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1224202252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224202250} + 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: 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: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u4E94\u4E2A\u624B\u6307\u5173\u8282\u4F38\u76F4\uFF0C\u5E76\u7528\u529B\u5145\u5206\u5F20\u5F00\u3002" +--- !u!222 &1224202253 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224202250} + m_CullTransparentMesh: 1 +--- !u!1 &1224803324 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1224803325} + - component: {fileID: 1224803329} + - component: {fileID: 1224803328} + - component: {fileID: 1224803327} + - component: {fileID: 1224803326} + m_Layer: 5 + m_Name: GifImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1224803325 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224803324} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 298458810} + 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: -25} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1224803326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224803324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c0059e5739c78f4fba4055ceead3919, type: 3} + m_Name: + m_EditorClassIdentifier: + m_originalWidth: 0 + m_originalHeight: 0 + m_fixOnUpdate: 0 +--- !u!114 &1224803327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224803324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 338dace6791114f409088fc4f7904d1e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_rawImage: {fileID: 1224803328} + m_imgAspectCtrl: {fileID: 1224803326} + m_filterMode: 0 + m_wrapMode: 1 + m_loadOnStart: 1 + m_loadOnStartUrl: Calib_Step3.gif + m_rotateOnLoading: 0 + m_outputDebugLog: 0 +--- !u!114 &1224803328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224803324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 32e0d1b3b160e924c958888511c6148c, type: 2} + 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_Texture: {fileID: 2800000, guid: fed40015d14e05442aa3f546ecf8ea9a, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &1224803329 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224803324} + m_CullTransparentMesh: 1 +--- !u!1 &1234735313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1234735314} + - component: {fileID: 1234735315} + m_Layer: 0 + m_Name: UI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1234735314 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234735313} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1377488998} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1234735315 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1234735313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fad0a64d009a5414fb5ae87d3fee0855, type: 3} + m_Name: + m_EditorClassIdentifier: + Panels: + - {fileID: 837937331} + - {fileID: 264839900} + - {fileID: 316946442} + - {fileID: 1481137392} + - {fileID: 1401565454} + - {fileID: 298458809} + StartBtn: + - {fileID: 1723766004} + - {fileID: 1962051309} + - {fileID: 1373959053} + ContinueBtns: [] + ExitBtn: {fileID: 0} + BackBtn: + - {fileID: 2064149967} + - {fileID: 962017631} + Hands: + - {fileID: 736668365} + - {fileID: 895231876} + HandsIconsSet: + - {fileID: 21300000, guid: 38bcc8ff402e1c54cae7d6ab64532fb1, type: 3} + - {fileID: 21300000, guid: 3e3a4cf81099d7b4c9e98c7fd5e5c795, type: 3} + - {fileID: 21300000, guid: 8585700e62ffd614c9d9811a9bb30e3d, type: 3} + - {fileID: 21300000, guid: d7f0c3254aa86ff499afd0f29154c077, type: 3} + HandsSignalSet: + - {fileID: 21300000, guid: 9578dc4aa6f3772458a1b8dfd87983cf, type: 3} + - {fileID: 21300000, guid: 83ee19fec453b8c44aad9b79c46b38f3, type: 3} + HandsBatterySet: + - {fileID: 21300000, guid: a8c7a8368439abd478c9a587ecb635d2, type: 3} + - {fileID: 21300000, guid: 565472ff6ed0f064cb3100091127dda7, type: 3} + ConnectColor: {r: 0.15686275, g: 0.26666668, b: 0.38431373, a: 1} + DisconnectColor: {r: 0.23529412, g: 0.3372549, b: 0.44705883, a: 1} + LoadBar: + - {fileID: 36952676} + - {fileID: 1739058340} + - {fileID: 1725496248} + Msg: + - {fileID: 1630583416} + - {fileID: 1728819972} + - {fileID: 1892277345} +--- !u!1 &1287192729 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1287192730} + - component: {fileID: 1287192732} + - component: {fileID: 1287192731} + m_Layer: 5 + m_Name: DeviceName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1287192730 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1287192729} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 895231877} + 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: -18.6} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1287192731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1287192729} + 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.23529412, g: 0.3372549, b: 0.44705883, 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: UDSTXXX123456789 +--- !u!222 &1287192732 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1287192729} + m_CullTransparentMesh: 1 +--- !u!1 &1352006068 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1352006069} + - component: {fileID: 1352006071} + - component: {fileID: 1352006070} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1352006069 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1352006068} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 298458810} + 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: -79, y: 199} + m_SizeDelta: {x: 40, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1352006070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1352006068} + 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.11372549, g: 0.2784314, b: 0.5529412, 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 &1352006071 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1352006068} + m_CullTransparentMesh: 1 +--- !u!1 &1373959051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1373959052} + - component: {fileID: 1373959055} + - component: {fileID: 1373959054} + - component: {fileID: 1373959053} + m_Layer: 5 + m_Name: ContinueBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1373959052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373959051} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.8, y: 0.8, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1823517760} + m_Father: {fileID: 316946443} + 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: -208.1} + m_SizeDelta: {x: 160, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1373959053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373959051} + 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: 2 + m_Colors: + m_NormalColor: {r: 0.105882354, g: 0.19607843, b: 0.28627452, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.105882354, g: 0.19607843, b: 0.28627452, 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: 21300000, guid: 0d51ae807a3b41049898e71fdcbde6bb, type: 3} + 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: 1373959054} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1373959054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373959051} + 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: 3a4ea47bcb1e069488383d2f732a7782, 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 &1373959055 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373959051} + m_CullTransparentMesh: 1 +--- !u!1 &1377488997 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1377488998} + - component: {fileID: 1377489001} + - component: {fileID: 1377489000} + - component: {fileID: 1377488999} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1377488998 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377488997} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1036834297} + m_Father: {fileID: 1234735314} + 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 &1377488999 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377488997} + 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 &1377489000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377488997} + 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 &1377489001 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377488997} + 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!1 &1401565454 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1401565455} + - component: {fileID: 1401565457} + - component: {fileID: 1401565456} + m_Layer: 5 + m_Name: Panel_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1401565455 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401565454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 181020069} + - {fileID: 811795210} + - {fileID: 1906173014} + - {fileID: 247129200} + - {fileID: 1858929109} + - {fileID: 1728819971} + m_Father: {fileID: 1036834297} + m_RootOrder: 5 + 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 &1401565456 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401565454} + 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: 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 &1401565457 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401565454} + m_CullTransparentMesh: 1 +--- !u!1 &1456395084 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1456395085} + - component: {fileID: 1456395087} + - component: {fileID: 1456395090} + - component: {fileID: 1456395089} + - component: {fileID: 1456395088} + m_Layer: 5 + m_Name: GifImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1456395085 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456395084} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1481137393} + 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: -25} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1456395087 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456395084} + m_CullTransparentMesh: 1 +--- !u!114 &1456395088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456395084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c0059e5739c78f4fba4055ceead3919, type: 3} + m_Name: + m_EditorClassIdentifier: + m_originalWidth: 0 + m_originalHeight: 0 + m_fixOnUpdate: 0 +--- !u!114 &1456395089 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456395084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 338dace6791114f409088fc4f7904d1e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_rawImage: {fileID: 1456395090} + m_imgAspectCtrl: {fileID: 1456395088} + m_filterMode: 0 + m_wrapMode: 1 + m_loadOnStart: 1 + m_loadOnStartUrl: Calib_Step1.gif + m_rotateOnLoading: 0 + m_outputDebugLog: 0 +--- !u!114 &1456395090 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456395084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 32e0d1b3b160e924c958888511c6148c, type: 2} + 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_Texture: {fileID: 2800000, guid: a80de2a87682b984aa906a9235c6dfdc, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1 &1481137392 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1481137393} + - component: {fileID: 1481137395} + - component: {fileID: 1481137394} + m_Layer: 5 + m_Name: Panel_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1481137393 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1481137392} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 844217041} + - {fileID: 104765800} + - {fileID: 1143555130} + - {fileID: 1456395085} + - {fileID: 395447765} + - {fileID: 1630583415} + m_Father: {fileID: 1036834297} + m_RootOrder: 4 + 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 &1481137394 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1481137392} + 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: 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 &1481137395 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1481137392} + m_CullTransparentMesh: 1 +--- !u!1 &1516159682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1516159683} + - component: {fileID: 1516159685} + - component: {fileID: 1516159684} + m_Layer: 5 + m_Name: HandIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1516159683 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516159682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 736668366} + 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: 43} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1516159684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516159682} + 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: 38bcc8ff402e1c54cae7d6ab64532fb1, 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 &1516159685 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516159682} + m_CullTransparentMesh: 1 +--- !u!1 &1531817825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1531817828} + - component: {fileID: 1531817827} + - component: {fileID: 1531817826} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1531817826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1531817825} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1531817827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1531817825} + 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 &1531817828 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1531817825} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1555171660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1555171661} + - component: {fileID: 1555171663} + - component: {fileID: 1555171662} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1555171661 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555171660} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1723766003} + 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: 14.900001, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1555171662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555171660} + 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: 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: 18 + 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: "\u5F00\u59CB\u6E38\u620F" +--- !u!222 &1555171663 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555171660} + m_CullTransparentMesh: 1 +--- !u!1 &1582188117 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1582188118} + - component: {fileID: 1582188120} + - component: {fileID: 1582188119} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1582188118 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582188117} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 962017630} + 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: 14.9, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1582188119 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582188117} + 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: 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: 20 + 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: "\u8FD4\u56DE" +--- !u!222 &1582188120 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582188117} + m_CullTransparentMesh: 1 +--- !u!1 &1630583414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630583415} + - component: {fileID: 1630583417} + - component: {fileID: 1630583416} + m_Layer: 5 + m_Name: Msg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1630583415 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630583414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1481137393} + 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: -200} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1630583416 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630583414} + 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: 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: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u51C6\u5907\u9636\u6BB5\u5012\u6570" +--- !u!222 &1630583417 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630583414} + m_CullTransparentMesh: 1 +--- !u!1 &1723766002 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1723766003} + - component: {fileID: 1723766006} + - component: {fileID: 1723766005} + - component: {fileID: 1723766004} + m_Layer: 5 + m_Name: StartBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1723766003 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723766002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.8, y: 0.8, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1555171661} + m_Father: {fileID: 837937332} + 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: 0} + m_SizeDelta: {x: 160, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1723766004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723766002} + 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: 2 + 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.105882354, g: 0.19607843, b: 0.28627452, 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: 21300000, guid: 7edaa1bd50d189845a3bfed19c49af34, type: 3} + 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: 1723766005} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1723766005 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723766002} + 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: f9c2702ddf357274fae2883b479440ba, 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 &1723766006 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723766002} + m_CullTransparentMesh: 1 +--- !u!1 &1725496246 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1725496247} + - component: {fileID: 1725496249} + - component: {fileID: 1725496248} + m_Layer: 5 + m_Name: load + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1725496247 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725496246} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1781981439} + 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: 240, y: 240} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1725496248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725496246} + 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: f28939b0192af8948a5cdd4646e29d39, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 0 + m_FillClockwise: 1 + m_FillOrigin: 2 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1725496249 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725496246} + m_CullTransparentMesh: 1 +--- !u!1 &1728819970 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1728819971} + - component: {fileID: 1728819973} + - component: {fileID: 1728819972} + m_Layer: 5 + m_Name: Msg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1728819971 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1728819970} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1401565455} + 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: -200} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1728819972 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1728819970} + 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: 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: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u51C6\u5907\u9636\u6BB5\u5012\u6570" +--- !u!222 &1728819973 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1728819970} + m_CullTransparentMesh: 1 +--- !u!1 &1738607810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1738607813} + - component: {fileID: 1738607812} + - component: {fileID: 1738607811} + 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 &1738607811 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738607810} + m_Enabled: 1 +--- !u!20 &1738607812 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738607810} + 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 &1738607813 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738607810} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -609} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1739058338 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1739058339} + - component: {fileID: 1739058341} + - component: {fileID: 1739058340} + m_Layer: 5 + m_Name: load + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1739058339 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739058338} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1858929109} + 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: 240, y: 240} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1739058340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739058338} + 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: f28939b0192af8948a5cdd4646e29d39, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 0 + m_FillClockwise: 1 + m_FillOrigin: 2 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1739058341 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739058338} + m_CullTransparentMesh: 1 +--- !u!1 &1781981438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1781981439} + - component: {fileID: 1781981441} + - component: {fileID: 1781981440} + m_Layer: 5 + m_Name: CircleBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1781981439 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1781981438} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.91999996, y: 0.91999996, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1725496247} + m_Father: {fileID: 298458810} + 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: -25} + m_SizeDelta: {x: 240, y: 240} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1781981440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1781981438} + 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: da7d54ecd780f9440b6ba7c65c4a02f2, 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 &1781981441 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1781981438} + m_CullTransparentMesh: 1 +--- !u!1 &1823517759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1823517760} + - component: {fileID: 1823517762} + - component: {fileID: 1823517761} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1823517760 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823517759} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1373959052} + 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 &1823517761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823517759} + 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: 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: 22 + 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: "\u5F00\u59CB\u6807\u5B9A" +--- !u!222 &1823517762 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823517759} + m_CullTransparentMesh: 1 +--- !u!1 &1845558031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1845558032} + - component: {fileID: 1845558034} + - component: {fileID: 1845558033} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1845558032 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1845558031} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 298458810} + 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: -18, y: 199} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1845558033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1845558031} + 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: 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: 25 + 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: "3 \u4E94\u6307\u5206\u5F00" +--- !u!222 &1845558034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1845558031} + m_CullTransparentMesh: 1 +--- !u!1 &1848152985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1848152986} + - component: {fileID: 1848152988} + - component: {fileID: 1848152987} + m_Layer: 5 + m_Name: Version + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1848152986 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1848152985} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 837937332} + 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: 489, y: 270} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1848152987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1848152985} + 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: 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: V0.0.1 +--- !u!222 &1848152988 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1848152985} + m_CullTransparentMesh: 1 +--- !u!1 &1858929108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1858929109} + - component: {fileID: 1858929111} + - component: {fileID: 1858929110} + m_Layer: 5 + m_Name: CircleBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1858929109 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858929108} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.91999996, y: 0.91999996, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1739058339} + m_Father: {fileID: 1401565455} + 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: -25} + m_SizeDelta: {x: 240, y: 240} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1858929110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858929108} + 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: da7d54ecd780f9440b6ba7c65c4a02f2, 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 &1858929111 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858929108} + m_CullTransparentMesh: 1 +--- !u!1 &1866494040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1866494041} + - component: {fileID: 1866494043} + - component: {fileID: 1866494042} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1866494041 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866494040} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 209810317} + 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: -6, y: -250} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1866494042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866494040} + 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: 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: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: "1 \u8F7B\u63E1\u62F3\u5934" +--- !u!222 &1866494043 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866494040} + m_CullTransparentMesh: 1 +--- !u!1 &1867415014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1867415015} + - component: {fileID: 1867415017} + - component: {fileID: 1867415016} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1867415015 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867415014} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 837937332} + 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: 158.4} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1867415016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867415014} + 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: 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: 18 + 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: "\u5B87\u53E0\u79D1\u6280DEMO" +--- !u!222 &1867415017 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867415014} + m_CullTransparentMesh: 1 +--- !u!1 &1869362180 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1869362181} + - component: {fileID: 1869362183} + - component: {fileID: 1869362182} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1869362181 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1869362180} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 264839901} + 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: 199} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1869362182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1869362180} + 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: 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: 25 + 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: "\u8FDE\u63A5\u8BBE\u5907" +--- !u!222 &1869362183 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1869362180} + m_CullTransparentMesh: 1 +--- !u!1 &1892277343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1892277344} + - component: {fileID: 1892277346} + - component: {fileID: 1892277345} + m_Layer: 5 + m_Name: Msg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1892277344 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892277343} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 298458810} + 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: -200} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1892277345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892277343} + 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: 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: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u51C6\u5907\u9636\u6BB5\u5012\u6570" +--- !u!222 &1892277346 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892277343} + m_CullTransparentMesh: 1 +--- !u!1 &1906173013 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1906173014} + - component: {fileID: 1906173016} + - component: {fileID: 1906173015} + m_Layer: 5 + m_Name: SubTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1906173014 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906173013} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1401565455} + 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: 154} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1906173015 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906173013} + 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: 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: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u56DB\u6307\u5408\u62E2\u5E76\u5145\u5206\u4F38\u76F4\uFF0C\u5927\u62C7\u6307\u4F38\u76F4\u8D34\u7D27\u624B\u638C\u3002" +--- !u!222 &1906173016 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906173013} + m_CullTransparentMesh: 1 +--- !u!1 &1920244914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1920244915} + - component: {fileID: 1920244917} + - component: {fileID: 1920244916} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1920244915 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1920244914} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2064149966} + 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: 14.9, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1920244916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1920244914} + 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: 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: 20 + 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: "\u8FD4\u56DE" +--- !u!222 &1920244917 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1920244914} + m_CullTransparentMesh: 1 +--- !u!1 &1960879328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1960879329} + - component: {fileID: 1960879331} + - component: {fileID: 1960879330} + m_Layer: 5 + m_Name: Battery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1960879329 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960879328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 736668366} + 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: 35, y: -70} + m_SizeDelta: {x: 19, y: 19} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1960879330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960879328} + 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: a8c7a8368439abd478c9a587ecb635d2, 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 &1960879331 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960879328} + m_CullTransparentMesh: 1 +--- !u!1 &1962051307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1962051308} + - component: {fileID: 1962051311} + - component: {fileID: 1962051310} + - component: {fileID: 1962051309} + m_Layer: 5 + m_Name: ContinueBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1962051308 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962051307} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.8, y: 0.8, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2890287} + m_Father: {fileID: 264839901} + 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: -208.1} + m_SizeDelta: {x: 160, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1962051309 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962051307} + 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: 2 + m_Colors: + m_NormalColor: {r: 0.105882354, g: 0.19607843, b: 0.28627452, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.105882354, g: 0.19607843, b: 0.28627452, 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: 21300000, guid: 0d51ae807a3b41049898e71fdcbde6bb, type: 3} + 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: 1962051310} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1962051310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962051307} + 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: 3a4ea47bcb1e069488383d2f732a7782, 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 &1962051311 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962051307} + m_CullTransparentMesh: 1 +--- !u!1 &2064149965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2064149966} + - component: {fileID: 2064149969} + - component: {fileID: 2064149968} + - component: {fileID: 2064149967} + m_Layer: 5 + m_Name: BackBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2064149966 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064149965} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.8, y: 0.8, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1920244915} + m_Father: {fileID: 264839901} + 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: -429, y: 234} + m_SizeDelta: {x: 160, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2064149967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064149965} + 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: 2 + 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.105882354, g: 0.19607843, b: 0.28627452, 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: 21300000, guid: c3c009733ada58046bb17d41343b58c6, type: 3} + 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: 2064149968} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &2064149968 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064149965} + 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: c002c6999ff14504b9c7c67c76774664, 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 &2064149969 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064149965} + m_CullTransparentMesh: 1 +--- !u!1 &2128042189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2128042190} + - component: {fileID: 2128042192} + - component: {fileID: 2128042191} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2128042190 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128042189} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 316946443} + 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: 199} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2128042191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128042189} + 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: 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: 25 + 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: "\u52A8\u4F5C\u6807\u5B9A" +--- !u!222 &2128042192 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128042189} + m_CullTransparentMesh: 1 diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Calibration.unity.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Calibration.unity.meta new file mode 100644 index 0000000..b2319dd --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Calibration.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cf161539dcd772249910b53fa509d0af +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts.meta new file mode 100644 index 0000000..0f174c4 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ff874edd618b354999b04089cfeab6c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UIManager.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UIManager.cs new file mode 100644 index 0000000..57310ef --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UIManager.cs @@ -0,0 +1,257 @@ +using UnityEngine; +using UnityEngine.UI; +using UDE_HAND_INTERACTION; +using Unity.XR.CoreUtils; + +public class UIManager : MonoBehaviour +{ + public static readonly string CurrentSDKVersion = "1.5"; + public XROrigin XR_Origin; + public GameObject[] Panels; + public GameObject ChoosePanel; + public GameObject JoyRangeCalibPanel; + + public FingerPressController ConfirmChoose; + public FingerPressController FinRangeCalib; + private GameObject OriginPanel; + private int PanelIndex = 0; + + private BleManager bleManager; + + public FingerPressController[] ContinueBtns; + public FingerPressController ExitBtn; + public FingerPressController[] BackBtns; + public FingerPressController[] HeightSwitch; + public GameObject SkipCalibration; + + public GameObject[] Hands; + public Sprite[] HandsIconsSet; + public Sprite[] HandsSignalSet; + public Sprite[] HandsBatterySet; + + private Image[] HandsIcons = new Image[2]; + private Text[] DeviceNames = new Text[2]; + private Image[] HandSignals = new Image[2]; + private Image[] HandsBattery = new Image[2]; + private Image[] SeparateLine = new Image[2]; + + public Color ConnectColor; + public Color DisconnectColor; + private Color DefaultColor; + + public Image[] LoadBar; + public Text[] Msg; + private bool EnterCalibrationPanel = false; + private float TimeCnt = 3; + + private void Awake() + { + bleManager = GetComponent(); + if (bleManager.handDrivers[0].UsingAndroidService || bleManager.handDrivers[1].UsingAndroidService) + { + Panels = new GameObject[1] { Panels[0] }; + bleManager.UsingAndroidService = true; + } + } + + void Start() + { + Panels[PanelIndex].SetActive(true); + Panels[0].transform.Find("Version").GetComponent().text = CurrentSDKVersion; + ExitBtn.OnSelect.AddListener(() => { Application.Quit(); }); + + foreach (var btn in ContinueBtns) + { + btn.OnSelect.AddListener(() => + { + if(Panels.Length > 1) + { + Panels[PanelIndex++].SetActive(false); + Panels[PanelIndex].SetActive(true); + EnterCalibrationPanel = true; + TimeCnt = 3; + if(PanelIndex == 3) + { + bleManager.Calibration(0); + } + } + else + { + transform.GetChild(0).gameObject.SetActive(false); + } + }); + } + foreach (var btn in BackBtns) + { + btn.OnSelect.AddListener(() => + { + if(ChoosePanel.activeInHierarchy && PanelIndex == 1) + { + ChoosePanel.SetActive(false); + } + Panels[PanelIndex--].SetActive(false); + Panels[PanelIndex].SetActive(true); + }); + } + DefaultColor = Hands[0].GetComponent().color; + for (int i = 0; i < 2; ++i) + { + HandsIcons[i] = Hands[i].transform.GetChild(0).GetComponent(); + DeviceNames[i] = Hands[i].transform.GetChild(1).GetComponent(); + HandSignals[i] = Hands[i].transform.GetChild(2).GetComponent(); + HandsBattery[i] = Hands[i].transform.GetChild(3).GetComponent(); + SeparateLine[i] = Hands[i].transform.GetChild(4).GetComponent(); + } + ConfirmChoose.OnSelect.AddListener(() => + { + bleManager.LeftSpecificConnect = ChoosePanel.GetComponent().LeftChoice; + bleManager.RightSpecificConnect = ChoosePanel.GetComponent().RightChoice; + OriginPanel.SetActive(true); + ChoosePanel.SetActive(false); + }); + if(HeightSwitch.Length > 0) + { + HeightSwitch[0].OnSelect.AddListener(() => + { + transform.root.position = new Vector3(0, 1.2f, 0.5f); + XR_Origin.transform.Find("Camera Offset").position = new Vector3(0, 1.2f, 0); + XR_Origin.transform.Find("WorldOffset").position = new Vector3(0, 1.2f, 0); + }); + HeightSwitch[1].OnSelect.AddListener(() => + { + transform.root.position = new Vector3(0, 1.6f, 0.5f); + XR_Origin.transform.Find("Camera Offset").position = new Vector3(0, 1.6f, 0); + XR_Origin.transform.Find("WorldOffset").position = new Vector3(0, 1.6f, 0); + }); + } + + FinRangeCalib.OnSelect.AddListener(() => + { + bleManager.JoyRangeCalibration(false); + transform.GetChild(0).gameObject.SetActive(false); + }); + } + + void Update() + { + if(bleManager.NeedChooseConnect && string.IsNullOrEmpty(bleManager.LeftSpecificConnect) && string.IsNullOrEmpty(bleManager.RightSpecificConnect)) + { + OriginPanel = Panels[1]; + if (PanelIndex == 1) + { + Panels[1].SetActive(false); + ChoosePanel.SetActive(true); + } + var Layouts = ChoosePanel.transform.GetComponentsInChildren(); + int[] Indexs = new int[2] { 0, 0 }; + foreach (var device in bleManager.DevicesList) + { + if (device[^1] == 'L') + { + var SpecificDevice = Layouts[0].transform.GetChild(Indexs[0]).gameObject; + SpecificDevice.SetActive(true); + SpecificDevice.transform.GetChild(0).Find("DeviceName").GetComponent().text = device; + Indexs[0]++; + } + else if(device[^1] == 'R') + { + var SpecificDevice = Layouts[1].transform.GetChild(Indexs[1]).gameObject; + SpecificDevice.SetActive(true); + SpecificDevice.transform.GetChild(0).Find("DeviceName").GetComponent().text = device; + Indexs[1]++; + } + } + } + else if(OriginPanel != null) + { + ChoosePanel.SetActive(false); + if (PanelIndex == 1) + { + Panels[1].SetActive(true); + } + } + + if(!string.IsNullOrEmpty(ChoosePanel.GetComponent().LeftChoice) && !string.IsNullOrEmpty(ChoosePanel.GetComponent().RightChoice)) + { + ConfirmChoose.transform.parent.gameObject.SetActive(true); + } + + if (bleManager.LeftConnectState) + { + Hands[0].GetComponent().color = Color.white; + HandsIcons[0].sprite = HandsIconsSet[1]; + DeviceNames[0].color = Color.white; + DeviceNames[0].text = bleManager.LeftDeviceName; + HandSignals[0].sprite = HandsSignalSet[1]; + HandsBattery[0].sprite = HandsBatterySet[1]; + SeparateLine[0].color = ConnectColor; + } + else + { + Hands[0].GetComponent().color = DefaultColor; + HandsIcons[0].sprite = HandsIconsSet[0]; + DeviceNames[0].color = DisconnectColor; + DeviceNames[0].text = "..."; + HandSignals[0].sprite = HandsSignalSet[0]; + HandsBattery[0].sprite = HandsBatterySet[0]; + SeparateLine[0].color = DisconnectColor; + } + + if(bleManager.RightConnectState) + { + Hands[1].GetComponent().color = Color.white; + HandsIcons[1].sprite = HandsIconsSet[3]; + DeviceNames[1].color = Color.white; + DeviceNames[1].text = bleManager.RightDeviceName; + HandSignals[1].sprite = HandsSignalSet[1]; + HandsBattery[1].sprite = HandsBatterySet[1]; + SeparateLine[1].color = ConnectColor; + } + else + { + Hands[1].GetComponent().color = DefaultColor; + HandsIcons[1].sprite = HandsIconsSet[2]; + DeviceNames[1].color = DisconnectColor; + DeviceNames[1].text = "..."; + HandSignals[1].sprite = HandsSignalSet[0]; + HandsBattery[1].sprite = HandsBatterySet[0]; + SeparateLine[1].color = DisconnectColor; + } + + ContinueBtns[1].transform.parent.gameObject.SetActive(bleManager.LeftConnectState && bleManager.RightConnectState); + SkipCalibration?.SetActive(PlayerPrefs.GetInt(bleManager.LeftDeviceName) == 1 && PlayerPrefs.GetInt(bleManager.RightDeviceName) == 1); + + if (PanelIndex > 2 && EnterCalibrationPanel) + { + TimeCnt -= Time.deltaTime; + if(TimeCnt >= 0) + { + + LoadBar[PanelIndex - 3].fillAmount = 1 - (TimeCnt / 3); + Msg[PanelIndex - 3].text = "Preparation phase " + (int)(TimeCnt + 1) + "s"; + } + else if(TimeCnt > -1) + { + LoadBar[PanelIndex - 3].fillAmount = -TimeCnt; + Msg[PanelIndex - 3].text = "Calibrating£¬Hold your pose"; + } + else + { + LoadBar[PanelIndex - 3].fillAmount = 1; + bleManager.Calibration(PanelIndex - 2); + if (PanelIndex == 5) + { + EnterCalibrationPanel = false; + Panels[PanelIndex].SetActive(false); + JoyRangeCalibPanel.SetActive(true); + bleManager.JoyRangeCalibration(true); + return; + } + Panels[PanelIndex++].SetActive(false); + Panels[PanelIndex].SetActive(true); + TimeCnt = 3; + } + } + } + +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UIManager.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UIManager.cs.meta new file mode 100644 index 0000000..e38d5d7 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UIManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fad0a64d009a5414fb5ae87d3fee0855 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGif.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGif.cs new file mode 100644 index 0000000..882d552 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGif.cs @@ -0,0 +1,72 @@ +/* +UniGif +Copyright (c) 2015 WestHillApps (Hironari Nishioka) +This software is released under the MIT License. +http://opensource.org/licenses/mit-license.php +*/ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public static partial class UniGif +{ + /// + /// Get GIF texture list Coroutine + /// + /// GIF file byte data + /// Callback method(param is GIF texture list, Animation loop count, GIF image width (px), GIF image height (px)) + /// Textures filter mode + /// Textures wrap mode + /// Debug Log Flag + /// IEnumerator + public static IEnumerator GetTextureListCoroutine( + byte[] bytes, + Action, int, int, int> callback, + FilterMode filterMode = FilterMode.Bilinear, + TextureWrapMode wrapMode = TextureWrapMode.Clamp, + bool debugLog = false) + { + int loopCount = -1; + int width = 0; + int height = 0; + + // Set GIF data + var gifData = new GifData(); + if (SetGifData(bytes, ref gifData, debugLog) == false) + { + Debug.LogError("GIF file data set error."); + if (callback != null) + { + callback(null, loopCount, width, height); + } + yield break; + } + + // Decode to textures from GIF data + List gifTexList = null; + yield return DecodeTextureCoroutine(gifData, result => gifTexList = result, filterMode, wrapMode); + + if (gifTexList == null || gifTexList.Count <= 0) + { + Debug.LogError("GIF texture decode error."); + if (callback != null) + { + callback(null, loopCount, width, height); + } + yield break; + } + + loopCount = gifData.m_appEx.loopCount; + width = gifData.m_logicalScreenWidth; + height = gifData.m_logicalScreenHeight; + + if (callback != null) + { + callback(gifTexList, loopCount, width, height); + } + + yield break; + } +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGif.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGif.cs.meta new file mode 100644 index 0000000..aac1c46 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGif.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d840adb74b4d7747acf6f7fd75f71c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifConst.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifConst.cs new file mode 100644 index 0000000..0c67421 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifConst.cs @@ -0,0 +1,275 @@ +/* +UniGif +Copyright (c) 2015 WestHillApps (Hironari Nishioka) +This software is released under the MIT License. +http://opensource.org/licenses/mit-license.php +*/ + +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; + +public static partial class UniGif +{ + /// + /// Gif Texture + /// + public class GifTexture + { + // Texture + public Texture2D m_texture2d; + // Delay time until the next texture. + public float m_delaySec; + + public GifTexture(Texture2D texture2d, float delaySec) + { + m_texture2d = texture2d; + m_delaySec = delaySec; + } + } + + /// + /// GIF Data Format + /// + private struct GifData + { + // Signature + public byte m_sig0, m_sig1, m_sig2; + // Version + public byte m_ver0, m_ver1, m_ver2; + // Logical Screen Width + public ushort m_logicalScreenWidth; + // Logical Screen Height + public ushort m_logicalScreenHeight; + // Global Color Table Flag + public bool m_globalColorTableFlag; + // Color Resolution + public int m_colorResolution; + // Sort Flag + public bool m_sortFlag; + // Size of Global Color Table + public int m_sizeOfGlobalColorTable; + // Background Color Index + public byte m_bgColorIndex; + // Pixel Aspect Ratio + public byte m_pixelAspectRatio; + // Global Color Table + public List m_globalColorTable; + // ImageBlock + public List m_imageBlockList; + // GraphicControlExtension + public List m_graphicCtrlExList; + // Comment Extension + public List m_commentExList; + // Plain Text Extension + public List m_plainTextExList; + // Application Extension + public ApplicationExtension m_appEx; + // Trailer + public byte m_trailer; + + public string signature + { + get + { + char[] c = { (char)m_sig0, (char)m_sig1, (char)m_sig2 }; + return new string(c); + } + } + + public string version + { + get + { + char[] c = { (char)m_ver0, (char)m_ver1, (char)m_ver2 }; + return new string(c); + } + } + + public void Dump() + { + Debug.Log("GIF Type: " + signature + "-" + version); + Debug.Log("Image Size: " + m_logicalScreenWidth + "x" + m_logicalScreenHeight); + Debug.Log("Animation Image Count: " + m_imageBlockList.Count); + Debug.Log("Animation Loop Count (0 is infinite): " + m_appEx.loopCount); + if (m_graphicCtrlExList != null && m_graphicCtrlExList.Count > 0) + { + var sb = new StringBuilder("Animation Delay Time (1/100sec)"); + for (int i = 0; i < m_graphicCtrlExList.Count; i++) + { + sb.Append(", "); + sb.Append(m_graphicCtrlExList[i].m_delayTime); + } + Debug.Log(sb.ToString()); + } + Debug.Log("Application Identifier: " + m_appEx.applicationIdentifier); + Debug.Log("Application Authentication Code: " + m_appEx.applicationAuthenticationCode); + } + } + + /// + /// Image Block + /// + private struct ImageBlock + { + // Image Separator + public byte m_imageSeparator; + // Image Left Position + public ushort m_imageLeftPosition; + // Image Top Position + public ushort m_imageTopPosition; + // Image Width + public ushort m_imageWidth; + // Image Height + public ushort m_imageHeight; + // Local Color Table Flag + public bool m_localColorTableFlag; + // Interlace Flag + public bool m_interlaceFlag; + // Sort Flag + public bool m_sortFlag; + // Size of Local Color Table + public int m_sizeOfLocalColorTable; + // Local Color Table + public List m_localColorTable; + // LZW Minimum Code Size + public byte m_lzwMinimumCodeSize; + // Block Size & Image Data List + public List m_imageDataList; + + public struct ImageDataBlock + { + // Block Size + public byte m_blockSize; + // Image Data + public byte[] m_imageData; + } + } + + /// + /// Graphic Control Extension + /// + private struct GraphicControlExtension + { + // Extension Introducer + public byte m_extensionIntroducer; + // Graphic Control Label + public byte m_graphicControlLabel; + // Block Size + public byte m_blockSize; + // Disposal Mothod + public ushort m_disposalMethod; + // Transparent Color Flag + public bool m_transparentColorFlag; + // Delay Time + public ushort m_delayTime; + // Transparent Color Index + public byte m_transparentColorIndex; + // Block Terminator + public byte m_blockTerminator; + } + + /// + /// Comment Extension + /// + private struct CommentExtension + { + // Extension Introducer + public byte m_extensionIntroducer; + // Comment Label + public byte m_commentLabel; + // Block Size & Comment Data List + public List m_commentDataList; + + public struct CommentDataBlock + { + // Block Size + public byte m_blockSize; + // Image Data + public byte[] m_commentData; + } + } + + /// + /// Plain Text Extension + /// + private struct PlainTextExtension + { + // Extension Introducer + public byte m_extensionIntroducer; + // Plain Text Label + public byte m_plainTextLabel; + // Block Size + public byte m_blockSize; + // Block Size & Plain Text Data List + public List m_plainTextDataList; + + public struct PlainTextDataBlock + { + // Block Size + public byte m_blockSize; + // Plain Text Data + public byte[] m_plainTextData; + } + } + + /// + /// Application Extension + /// + private struct ApplicationExtension + { + // Extension Introducer + public byte m_extensionIntroducer; + // Extension Label + public byte m_extensionLabel; + // Block Size + public byte m_blockSize; + // Application Identifier + public byte m_appId1, m_appId2, m_appId3, m_appId4, m_appId5, m_appId6, m_appId7, m_appId8; + // Application Authentication Code + public byte m_appAuthCode1, m_appAuthCode2, m_appAuthCode3; + // Block Size & Application Data List + public List m_appDataList; + + public struct ApplicationDataBlock + { + // Block Size + public byte m_blockSize; + // Application Data + public byte[] m_applicationData; + } + + public string applicationIdentifier + { + get + { + char[] c = { (char)m_appId1, (char)m_appId2, (char)m_appId3, (char)m_appId4, (char)m_appId5, (char)m_appId6, (char)m_appId7, (char)m_appId8 }; + return new string(c); + } + } + + public string applicationAuthenticationCode + { + get + { + char[] c = { (char)m_appAuthCode1, (char)m_appAuthCode2, (char)m_appAuthCode3 }; + return new string(c); + } + } + + public int loopCount + { + get + { + if (m_appDataList == null || m_appDataList.Count < 1 || + m_appDataList[0].m_applicationData.Length < 3 || + m_appDataList[0].m_applicationData[0] != 0x01) + { + return 0; + } + return BitConverter.ToUInt16(m_appDataList[0].m_applicationData, 1); + } + } + } +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifConst.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifConst.cs.meta new file mode 100644 index 0000000..904fcd9 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98d26016259867047a7174f120b6e7bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifDecoder.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifDecoder.cs new file mode 100644 index 0000000..64eeca3 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifDecoder.cs @@ -0,0 +1,579 @@ +/* +UniGif +Copyright (c) 2015 WestHillApps (Hironari Nishioka) +This software is released under the MIT License. +http://opensource.org/licenses/mit-license.php +*/ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; + +public static partial class UniGif +{ + /// + /// Decode to textures from GIF data + /// + /// GIF data + /// Callback method(param is GIF texture list) + /// Textures filter mode + /// Textures wrap mode + /// IEnumerator + private static IEnumerator DecodeTextureCoroutine(GifData gifData, Action> callback, FilterMode filterMode, TextureWrapMode wrapMode) + { + if (gifData.m_imageBlockList == null || gifData.m_imageBlockList.Count < 1) + { + yield break; + } + + List gifTexList = new List(gifData.m_imageBlockList.Count); + List disposalMethodList = new List(gifData.m_imageBlockList.Count); + + int imgIndex = 0; + + for (int i = 0; i < gifData.m_imageBlockList.Count; i++) + { + byte[] decodedData = GetDecodedData(gifData.m_imageBlockList[i]); + + GraphicControlExtension? graphicCtrlEx = GetGraphicCtrlExt(gifData, imgIndex); + + int transparentIndex = GetTransparentIndex(graphicCtrlEx); + + disposalMethodList.Add(GetDisposalMethod(graphicCtrlEx)); + + Color32 bgColor; + List colorTable = GetColorTableAndSetBgColor(gifData, gifData.m_imageBlockList[i], transparentIndex, out bgColor); + + yield return 0; + + bool filledTexture; + Texture2D tex = CreateTexture2D(gifData, gifTexList, imgIndex, disposalMethodList, bgColor, filterMode, wrapMode, out filledTexture); + + yield return 0; + + // Set pixel data + int dataIndex = 0; + // Reverse set pixels. because GIF data starts from the top left. + for (int y = tex.height - 1; y >= 0; y--) + { + SetTexturePixelRow(tex, y, gifData.m_imageBlockList[i], decodedData, ref dataIndex, colorTable, bgColor, transparentIndex, filledTexture); + } + tex.Apply(); + + yield return 0; + + float delaySec = GetDelaySec(graphicCtrlEx); + + // Add to GIF texture list + gifTexList.Add(new GifTexture(tex, delaySec)); + + imgIndex++; + } + + if (callback != null) + { + callback(gifTexList); + } + + yield break; + } + + #region Call from DecodeTexture methods + + /// + /// Get decoded image data from ImageBlock + /// + private static byte[] GetDecodedData(ImageBlock imgBlock) + { + // Combine LZW compressed data + List lzwData = new List(); + for (int i = 0; i < imgBlock.m_imageDataList.Count; i++) + { + for (int k = 0; k < imgBlock.m_imageDataList[i].m_imageData.Length; k++) + { + lzwData.Add(imgBlock.m_imageDataList[i].m_imageData[k]); + } + } + + // LZW decode + int needDataSize = imgBlock.m_imageHeight * imgBlock.m_imageWidth; + byte[] decodedData = DecodeGifLZW(lzwData, imgBlock.m_lzwMinimumCodeSize, needDataSize); + + // Sort interlace GIF + if (imgBlock.m_interlaceFlag) + { + decodedData = SortInterlaceGifData(decodedData, imgBlock.m_imageWidth); + } + return decodedData; + } + + /// + /// Get color table and set background color (local or global) + /// + private static List GetColorTableAndSetBgColor(GifData gifData, ImageBlock imgBlock, int transparentIndex, out Color32 bgColor) + { + List colorTable = imgBlock.m_localColorTableFlag ? imgBlock.m_localColorTable : gifData.m_globalColorTableFlag ? gifData.m_globalColorTable : null; + + if (colorTable != null) + { + // Set background color from color table + byte[] bgRgb = colorTable[gifData.m_bgColorIndex]; + bgColor = new Color32(bgRgb[0], bgRgb[1], bgRgb[2], (byte)(transparentIndex == gifData.m_bgColorIndex ? 0 : 255)); + } + else + { + bgColor = Color.black; + } + + return colorTable; + } + + /// + /// Get GraphicControlExtension from GifData + /// + private static GraphicControlExtension? GetGraphicCtrlExt(GifData gifData, int imgBlockIndex) + { + if (gifData.m_graphicCtrlExList != null && gifData.m_graphicCtrlExList.Count > imgBlockIndex) + { + return gifData.m_graphicCtrlExList[imgBlockIndex]; + } + return null; + } + + /// + /// Get transparent color index from GraphicControlExtension + /// + private static int GetTransparentIndex(GraphicControlExtension? graphicCtrlEx) + { + int transparentIndex = -1; + if (graphicCtrlEx != null && graphicCtrlEx.Value.m_transparentColorFlag) + { + transparentIndex = graphicCtrlEx.Value.m_transparentColorIndex; + } + return transparentIndex; + } + + /// + /// Get delay seconds from GraphicControlExtension + /// + private static float GetDelaySec(GraphicControlExtension? graphicCtrlEx) + { + // Get delay sec from GraphicControlExtension + float delaySec = graphicCtrlEx != null ? graphicCtrlEx.Value.m_delayTime / 100f : (1f / 60f); + if (delaySec <= 0f) + { + delaySec = 0.1f; + } + return delaySec; + } + + /// + /// Get disposal method from GraphicControlExtension + /// + private static ushort GetDisposalMethod(GraphicControlExtension? graphicCtrlEx) + { + return graphicCtrlEx != null ? graphicCtrlEx.Value.m_disposalMethod : (ushort)2; + } + + /// + /// Create Texture2D object and initial settings + /// + private static Texture2D CreateTexture2D(GifData gifData, List gifTexList, int imgIndex, List disposalMethodList, Color32 bgColor, FilterMode filterMode, TextureWrapMode wrapMode, out bool filledTexture) + { + filledTexture = false; + + // Create texture + Texture2D tex = new Texture2D(gifData.m_logicalScreenWidth, gifData.m_logicalScreenHeight, TextureFormat.ARGB32, false); + tex.filterMode = filterMode; + tex.wrapMode = wrapMode; + + // Check dispose + ushort disposalMethod = imgIndex > 0 ? disposalMethodList[imgIndex - 1] : (ushort)2; + int useBeforeIndex = -1; + if (disposalMethod == 0) + { + // 0 (No disposal specified) + } + else if (disposalMethod == 1) + { + // 1 (Do not dispose) + useBeforeIndex = imgIndex - 1; + } + else if (disposalMethod == 2) + { + // 2 (Restore to background color) + filledTexture = true; + Color32[] pix = new Color32[tex.width * tex.height]; + for (int i = 0; i < pix.Length; i++) + { + pix[i] = bgColor; + } + tex.SetPixels32(pix); + tex.Apply(); + } + else if (disposalMethod == 3) + { + // 3 (Restore to previous) + for (int i = imgIndex - 1; i >= 0; i--) + { + if (disposalMethodList[i] == 0 || disposalMethodList[i] == 1) + { + useBeforeIndex = i; + break; + } + } + } + + if (useBeforeIndex >= 0) + { + filledTexture = true; + Color32[] pix = gifTexList[useBeforeIndex].m_texture2d.GetPixels32(); + tex.SetPixels32(pix); + tex.Apply(); + } + + return tex; + } + + /// + /// Set texture pixel row + /// + private static void SetTexturePixelRow(Texture2D tex, int y, ImageBlock imgBlock, byte[] decodedData, ref int dataIndex, List colorTable, Color32 bgColor, int transparentIndex, bool filledTexture) + { + // Row no (0~) + int row = tex.height - 1 - y; + + for (int x = 0; x < tex.width; x++) + { + // Line no (0~) + int line = x; + + // Out of image blocks + if (row < imgBlock.m_imageTopPosition || + row >= imgBlock.m_imageTopPosition + imgBlock.m_imageHeight || + line < imgBlock.m_imageLeftPosition || + line >= imgBlock.m_imageLeftPosition + imgBlock.m_imageWidth) + { + // Get pixel color from bg color + if (filledTexture == false) + { + tex.SetPixel(x, y, bgColor); + } + continue; + } + + // Out of decoded data + if (dataIndex >= decodedData.Length) + { + if (filledTexture == false) + { + tex.SetPixel(x, y, bgColor); + if (dataIndex == decodedData.Length) + { + Debug.LogError("dataIndex exceeded the size of decodedData. dataIndex:" + dataIndex + " decodedData.Length:" + decodedData.Length + " y:" + y + " x:" + x); + } + } + dataIndex++; + continue; + } + + // Get pixel color from color table + { + byte colorIndex = decodedData[dataIndex]; + if (colorTable == null || colorTable.Count <= colorIndex) + { + if (filledTexture == false) + { + tex.SetPixel(x, y, bgColor); + if (colorTable == null) + { + Debug.LogError("colorIndex exceeded the size of colorTable. colorTable is null. colorIndex:" + colorIndex); + } + else + { + Debug.LogError("colorIndex exceeded the size of colorTable. colorTable.Count:" + colorTable.Count + " colorIndex:" + colorIndex); + } + } + dataIndex++; + continue; + } + byte[] rgb = colorTable[colorIndex]; + + // Set alpha + byte alpha = transparentIndex >= 0 && transparentIndex == colorIndex ? (byte)0 : (byte)255; + + if (filledTexture == false || alpha != 0) + { + // Set color + Color32 col = new Color32(rgb[0], rgb[1], rgb[2], alpha); + tex.SetPixel(x, y, col); + } + } + + dataIndex++; + } + } + + #endregion + + #region Decode LZW & Sort interrace methods + + /// + /// GIF LZW decode + /// + /// LZW compressed data + /// LZW minimum code size + /// Need decoded data size + /// Decoded data array + private static byte[] DecodeGifLZW(List compData, int lzwMinimumCodeSize, int needDataSize) + { + int clearCode = 0; + int finishCode = 0; + + // Initialize dictionary + Dictionary dic = new Dictionary(); + int lzwCodeSize = 0; + InitDictionary(dic, lzwMinimumCodeSize, out lzwCodeSize, out clearCode, out finishCode); + + // Convert to bit array + byte[] compDataArr = compData.ToArray(); + var bitData = new BitArray(compDataArr); + + byte[] output = new byte[needDataSize]; + int outputAddIndex = 0; + + string prevEntry = null; + + bool dicInitFlag = false; + + int bitDataIndex = 0; + + // LZW decode loop + while (bitDataIndex < bitData.Length) + { + if (dicInitFlag) + { + InitDictionary(dic, lzwMinimumCodeSize, out lzwCodeSize, out clearCode, out finishCode); + dicInitFlag = false; + } + + int key = bitData.GetNumeral(bitDataIndex, lzwCodeSize); + + string entry = null; + + if (key == clearCode) + { + // Clear (Initialize dictionary) + dicInitFlag = true; + bitDataIndex += lzwCodeSize; + prevEntry = null; + continue; + } + else if (key == finishCode) + { + // Exit + Debug.LogWarning("early stop code. bitDataIndex:" + bitDataIndex + " lzwCodeSize:" + lzwCodeSize + " key:" + key + " dic.Count:" + dic.Count); + break; + } + else if (dic.ContainsKey(key)) + { + // Output from dictionary + entry = dic[key]; + } + else if (key >= dic.Count) + { + if (prevEntry != null) + { + // Output from estimation + entry = prevEntry + prevEntry[0]; + } + else + { + Debug.LogWarning("It is strange that come here. bitDataIndex:" + bitDataIndex + " lzwCodeSize:" + lzwCodeSize + " key:" + key + " dic.Count:" + dic.Count); + bitDataIndex += lzwCodeSize; + continue; + } + } + else + { + Debug.LogWarning("It is strange that come here. bitDataIndex:" + bitDataIndex + " lzwCodeSize:" + lzwCodeSize + " key:" + key + " dic.Count:" + dic.Count); + bitDataIndex += lzwCodeSize; + continue; + } + + // Output + // Take out 8 bits from the string. + byte[] temp = Encoding.Unicode.GetBytes(entry); + for (int i = 0; i < temp.Length; i++) + { + if (i % 2 == 0) + { + output[outputAddIndex] = temp[i]; + outputAddIndex++; + } + } + + if (outputAddIndex >= needDataSize) + { + // Exit + break; + } + + if (prevEntry != null) + { + // Add to dictionary + dic.Add(dic.Count, prevEntry + entry[0]); + } + + prevEntry = entry; + + bitDataIndex += lzwCodeSize; + + if (lzwCodeSize == 3 && dic.Count >= 8) + { + lzwCodeSize = 4; + } + else if (lzwCodeSize == 4 && dic.Count >= 16) + { + lzwCodeSize = 5; + } + else if (lzwCodeSize == 5 && dic.Count >= 32) + { + lzwCodeSize = 6; + } + else if (lzwCodeSize == 6 && dic.Count >= 64) + { + lzwCodeSize = 7; + } + else if (lzwCodeSize == 7 && dic.Count >= 128) + { + lzwCodeSize = 8; + } + else if (lzwCodeSize == 8 && dic.Count >= 256) + { + lzwCodeSize = 9; + } + else if (lzwCodeSize == 9 && dic.Count >= 512) + { + lzwCodeSize = 10; + } + else if (lzwCodeSize == 10 && dic.Count >= 1024) + { + lzwCodeSize = 11; + } + else if (lzwCodeSize == 11 && dic.Count >= 2048) + { + lzwCodeSize = 12; + } + else if (lzwCodeSize == 12 && dic.Count >= 4096) + { + int nextKey = bitData.GetNumeral(bitDataIndex, lzwCodeSize); + if (nextKey != clearCode) + { + dicInitFlag = true; + } + } + } + + return output; + } + + /// + /// Initialize dictionary + /// + /// Dictionary + /// LZW minimum code size + /// out LZW code size + /// out Clear code + /// out Finish code + private static void InitDictionary(Dictionary dic, int lzwMinimumCodeSize, out int lzwCodeSize, out int clearCode, out int finishCode) + { + int dicLength = (int)Math.Pow(2, lzwMinimumCodeSize); + + clearCode = dicLength; + finishCode = clearCode + 1; + + dic.Clear(); + + for (int i = 0; i < dicLength + 2; i++) + { + dic.Add(i, ((char)i).ToString()); + } + + lzwCodeSize = lzwMinimumCodeSize + 1; + } + + /// + /// Sort interlace GIF data + /// + /// Decoded GIF data + /// Pixel number of horizontal row + /// Sorted data + private static byte[] SortInterlaceGifData(byte[] decodedData, int xNum) + { + int rowNo = 0; + int dataIndex = 0; + var newArr = new byte[decodedData.Length]; + // Every 8th. row, starting with row 0. + for (int i = 0; i < newArr.Length; i++) + { + if (rowNo % 8 == 0) + { + newArr[i] = decodedData[dataIndex]; + dataIndex++; + } + if (i != 0 && i % xNum == 0) + { + rowNo++; + } + } + rowNo = 0; + // Every 8th. row, starting with row 4. + for (int i = 0; i < newArr.Length; i++) + { + if (rowNo % 8 == 4) + { + newArr[i] = decodedData[dataIndex]; + dataIndex++; + } + if (i != 0 && i % xNum == 0) + { + rowNo++; + } + } + rowNo = 0; + // Every 4th. row, starting with row 2. + for (int i = 0; i < newArr.Length; i++) + { + if (rowNo % 4 == 2) + { + newArr[i] = decodedData[dataIndex]; + dataIndex++; + } + if (i != 0 && i % xNum == 0) + { + rowNo++; + } + } + rowNo = 0; + // Every 2nd. row, starting with row 1. + for (int i = 0; i < newArr.Length; i++) + { + if (rowNo % 8 != 0 && rowNo % 8 != 4 && rowNo % 4 != 2) + { + newArr[i] = decodedData[dataIndex]; + dataIndex++; + } + if (i != 0 && i % xNum == 0) + { + rowNo++; + } + } + + return newArr; + } + + #endregion +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifDecoder.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifDecoder.cs.meta new file mode 100644 index 0000000..0349ac5 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifDecoder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 372bd5e26098bb5438e9ba7b33c61e08 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifExtension.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifExtension.cs new file mode 100644 index 0000000..03e8626 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifExtension.cs @@ -0,0 +1,56 @@ +using UnityEngine; +using System.Collections; + +/// +/// Extension methods class +/// +public static class UniGifExtension +{ + /// + /// Convert BitArray to int (Specifies the start index and bit length) + /// + /// Start index + /// Bit length + /// Converted int + public static int GetNumeral(this BitArray array, int startIndex, int bitLength) + { + var newArray = new BitArray(bitLength); + + for (int i = 0; i < bitLength; i++) + { + if (array.Length <= startIndex + i) + { + newArray[i] = false; + } + else + { + bool bit = array.Get(startIndex + i); + newArray[i] = bit; + } + } + + return newArray.ToNumeral(); + } + + /// + /// Convert BitArray to int + /// + /// Converted int + public static int ToNumeral(this BitArray array) + { + if (array == null) + { + Debug.LogError("array is nothing."); + return 0; + } + if (array.Length > 32) + { + Debug.LogError("must be at most 32 bits long."); + return 0; + } + + var result = new int[1]; + array.CopyTo(result, 0); + return result[0]; + } +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifExtension.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifExtension.cs.meta new file mode 100644 index 0000000..ffce3c3 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 771965cf1b39b294b9c67813fc553d1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifFormatter.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifFormatter.cs new file mode 100644 index 0000000..11c3960 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifFormatter.cs @@ -0,0 +1,603 @@ +/* +UniGif +Copyright (c) 2015 WestHillApps (Hironari Nishioka) +This software is released under the MIT License. +http://opensource.org/licenses/mit-license.php +*/ + +using System; +using System.Collections.Generic; +using UnityEngine; + +public static partial class UniGif +{ + /// + /// Set GIF data + /// + /// GIF byte data + /// ref GIF data + /// Debug log flag + /// Result + private static bool SetGifData(byte[] gifBytes, ref GifData gifData, bool debugLog) + { + if (debugLog) + { + Debug.Log("SetGifData Start."); + } + + if (gifBytes == null || gifBytes.Length <= 0) + { + Debug.LogError("bytes is nothing."); + return false; + } + + int byteIndex = 0; + + if (SetGifHeader(gifBytes, ref byteIndex, ref gifData) == false) + { + Debug.LogError("GIF header set error."); + return false; + } + + if (SetGifBlock(gifBytes, ref byteIndex, ref gifData) == false) + { + Debug.LogError("GIF block set error."); + return false; + } + + if (debugLog) + { + gifData.Dump(); + Debug.Log("SetGifData Finish."); + } + return true; + } + + private static bool SetGifHeader(byte[] gifBytes, ref int byteIndex, ref GifData gifData) + { + // Signature(3 Bytes) + // 0x47 0x49 0x46 (GIF) + if (gifBytes[0] != 'G' || gifBytes[1] != 'I' || gifBytes[2] != 'F') + { + Debug.LogError("This is not GIF image."); + return false; + } + gifData.m_sig0 = gifBytes[0]; + gifData.m_sig1 = gifBytes[1]; + gifData.m_sig2 = gifBytes[2]; + + // Version(3 Bytes) + // 0x38 0x37 0x61 (87a) or 0x38 0x39 0x61 (89a) + if ((gifBytes[3] != '8' || gifBytes[4] != '7' || gifBytes[5] != 'a') && + (gifBytes[3] != '8' || gifBytes[4] != '9' || gifBytes[5] != 'a')) + { + Debug.LogError("GIF version error.\nSupported only GIF87a or GIF89a."); + return false; + } + gifData.m_ver0 = gifBytes[3]; + gifData.m_ver1 = gifBytes[4]; + gifData.m_ver2 = gifBytes[5]; + + // Logical Screen Width(2 Bytes) + gifData.m_logicalScreenWidth = BitConverter.ToUInt16(gifBytes, 6); + + // Logical Screen Height(2 Bytes) + gifData.m_logicalScreenHeight = BitConverter.ToUInt16(gifBytes, 8); + + // 1 Byte + { + // Global Color Table Flag(1 Bit) + gifData.m_globalColorTableFlag = (gifBytes[10] & 128) == 128; // 0b10000000 + + // Color Resolution(3 Bits) + switch (gifBytes[10] & 112) + { + case 112: // 0b01110000 + gifData.m_colorResolution = 8; + break; + case 96: // 0b01100000 + gifData.m_colorResolution = 7; + break; + case 80: // 0b01010000 + gifData.m_colorResolution = 6; + break; + case 64: // 0b01000000 + gifData.m_colorResolution = 5; + break; + case 48: // 0b00110000 + gifData.m_colorResolution = 4; + break; + case 32: // 0b00100000 + gifData.m_colorResolution = 3; + break; + case 16: // 0b00010000 + gifData.m_colorResolution = 2; + break; + default: + gifData.m_colorResolution = 1; + break; + } + + // Sort Flag(1 Bit) + gifData.m_sortFlag = (gifBytes[10] & 8) == 8; // 0b00001000 + + // Size of Global Color Table(3 Bits) + int val = (gifBytes[10] & 7) + 1; + gifData.m_sizeOfGlobalColorTable = (int)Math.Pow(2, val); + } + + // Background Color Index(1 Byte) + gifData.m_bgColorIndex = gifBytes[11]; + + // Pixel Aspect Ratio(1 Byte) + gifData.m_pixelAspectRatio = gifBytes[12]; + + byteIndex = 13; + if (gifData.m_globalColorTableFlag) + { + // Global Color Table(0~255×3 Bytes) + gifData.m_globalColorTable = new List(); + for (int i = byteIndex; i < byteIndex + (gifData.m_sizeOfGlobalColorTable * 3); i += 3) + { + gifData.m_globalColorTable.Add(new byte[] { gifBytes[i], gifBytes[i + 1], gifBytes[i + 2] }); + } + byteIndex = byteIndex + (gifData.m_sizeOfGlobalColorTable * 3); + } + + return true; + } + + private static bool SetGifBlock(byte[] gifBytes, ref int byteIndex, ref GifData gifData) + { + try + { + int lastIndex = 0; + while (true) + { + int nowIndex = byteIndex; + + if (gifBytes[nowIndex] == 0x2c) + { + // Image Block(0x2c) + SetImageBlock(gifBytes, ref byteIndex, ref gifData); + + } + else if (gifBytes[nowIndex] == 0x21) + { + // Extension + switch (gifBytes[nowIndex + 1]) + { + case 0xf9: + // Graphic Control Extension(0x21 0xf9) + SetGraphicControlExtension(gifBytes, ref byteIndex, ref gifData); + break; + case 0xfe: + // Comment Extension(0x21 0xfe) + SetCommentExtension(gifBytes, ref byteIndex, ref gifData); + break; + case 0x01: + // Plain Text Extension(0x21 0x01) + SetPlainTextExtension(gifBytes, ref byteIndex, ref gifData); + break; + case 0xff: + // Application Extension(0x21 0xff) + SetApplicationExtension(gifBytes, ref byteIndex, ref gifData); + break; + default: + break; + } + } + else if (gifBytes[nowIndex] == 0x3b) + { + // Trailer(1 Byte) + gifData.m_trailer = gifBytes[byteIndex]; + byteIndex++; + break; + } + + if (lastIndex == nowIndex) + { + Debug.LogError("Infinite loop error."); + return false; + } + + lastIndex = nowIndex; + } + } + catch (Exception ex) + { + Debug.LogError(ex.Message); + return false; + } + + return true; + } + + private static void SetImageBlock(byte[] gifBytes, ref int byteIndex, ref GifData gifData) + { + ImageBlock ib = new ImageBlock(); + + // Image Separator(1 Byte) + // 0x2c + ib.m_imageSeparator = gifBytes[byteIndex]; + byteIndex++; + + // Image Left Position(2 Bytes) + ib.m_imageLeftPosition = BitConverter.ToUInt16(gifBytes, byteIndex); + byteIndex += 2; + + // Image Top Position(2 Bytes) + ib.m_imageTopPosition = BitConverter.ToUInt16(gifBytes, byteIndex); + byteIndex += 2; + + // Image Width(2 Bytes) + ib.m_imageWidth = BitConverter.ToUInt16(gifBytes, byteIndex); + byteIndex += 2; + + // Image Height(2 Bytes) + ib.m_imageHeight = BitConverter.ToUInt16(gifBytes, byteIndex); + byteIndex += 2; + + // 1 Byte + { + // Local Color Table Flag(1 Bit) + ib.m_localColorTableFlag = (gifBytes[byteIndex] & 128) == 128; // 0b10000000 + + // Interlace Flag(1 Bit) + ib.m_interlaceFlag = (gifBytes[byteIndex] & 64) == 64; // 0b01000000 + + // Sort Flag(1 Bit) + ib.m_sortFlag = (gifBytes[byteIndex] & 32) == 32; // 0b00100000 + + // Reserved(2 Bits) + // Unused + + // Size of Local Color Table(3 Bits) + int val = (gifBytes[byteIndex] & 7) + 1; + ib.m_sizeOfLocalColorTable = (int)Math.Pow(2, val); + + byteIndex++; + } + + if (ib.m_localColorTableFlag) + { + // Local Color Table(0~255×3 Bytes) + ib.m_localColorTable = new List(); + for (int i = byteIndex; i < byteIndex + (ib.m_sizeOfLocalColorTable * 3); i += 3) + { + ib.m_localColorTable.Add(new byte[] { gifBytes[i], gifBytes[i + 1], gifBytes[i + 2] }); + } + byteIndex = byteIndex + (ib.m_sizeOfLocalColorTable * 3); + } + + // LZW Minimum Code Size(1 Byte) + ib.m_lzwMinimumCodeSize = gifBytes[byteIndex]; + byteIndex++; + + // Block Size & Image Data List + while (true) + { + // Block Size(1 Byte) + byte blockSize = gifBytes[byteIndex]; + byteIndex++; + + if (blockSize == 0x00) + { + // Block Terminator(1 Byte) + break; + } + + var imageDataBlock = new ImageBlock.ImageDataBlock(); + imageDataBlock.m_blockSize = blockSize; + + // Image Data(? Bytes) + imageDataBlock.m_imageData = new byte[imageDataBlock.m_blockSize]; + for (int i = 0; i < imageDataBlock.m_imageData.Length; i++) + { + imageDataBlock.m_imageData[i] = gifBytes[byteIndex]; + byteIndex++; + } + + if (ib.m_imageDataList == null) + { + ib.m_imageDataList = new List(); + } + ib.m_imageDataList.Add(imageDataBlock); + } + + if (gifData.m_imageBlockList == null) + { + gifData.m_imageBlockList = new List(); + } + gifData.m_imageBlockList.Add(ib); + } + + private static void SetGraphicControlExtension(byte[] gifBytes, ref int byteIndex, ref GifData gifData) + { + GraphicControlExtension gcEx = new GraphicControlExtension(); + + // Extension Introducer(1 Byte) + // 0x21 + gcEx.m_extensionIntroducer = gifBytes[byteIndex]; + byteIndex++; + + // Graphic Control Label(1 Byte) + // 0xf9 + gcEx.m_graphicControlLabel = gifBytes[byteIndex]; + byteIndex++; + + // Block Size(1 Byte) + // 0x04 + gcEx.m_blockSize = gifBytes[byteIndex]; + byteIndex++; + + // 1 Byte + { + // Reserved(3 Bits) + // Unused + + // Disposal Mothod(3 Bits) + // 0 (No disposal specified) + // 1 (Do not dispose) + // 2 (Restore to background color) + // 3 (Restore to previous) + switch (gifBytes[byteIndex] & 28) + { // 0b00011100 + case 4: // 0b00000100 + gcEx.m_disposalMethod = 1; + break; + case 8: // 0b00001000 + gcEx.m_disposalMethod = 2; + break; + case 12: // 0b00001100 + gcEx.m_disposalMethod = 3; + break; + default: + gcEx.m_disposalMethod = 0; + break; + } + + // User Input Flag(1 Bit) + // Unknown + + // Transparent Color Flag(1 Bit) + gcEx.m_transparentColorFlag = (gifBytes[byteIndex] & 1) == 1; // 0b00000001 + + byteIndex++; + } + + // Delay Time(2 Bytes) + gcEx.m_delayTime = BitConverter.ToUInt16(gifBytes, byteIndex); + byteIndex += 2; + + // Transparent Color Index(1 Byte) + gcEx.m_transparentColorIndex = gifBytes[byteIndex]; + byteIndex++; + + // Block Terminator(1 Byte) + gcEx.m_blockTerminator = gifBytes[byteIndex]; + byteIndex++; + + if (gifData.m_graphicCtrlExList == null) + { + gifData.m_graphicCtrlExList = new List(); + } + gifData.m_graphicCtrlExList.Add(gcEx); + } + + private static void SetCommentExtension(byte[] gifBytes, ref int byteIndex, ref GifData gifData) + { + CommentExtension commentEx = new CommentExtension(); + + // Extension Introducer(1 Byte) + // 0x21 + commentEx.m_extensionIntroducer = gifBytes[byteIndex]; + byteIndex++; + + // Comment Label(1 Byte) + // 0xfe + commentEx.m_commentLabel = gifBytes[byteIndex]; + byteIndex++; + + // Block Size & Comment Data List + while (true) + { + // Block Size(1 Byte) + byte blockSize = gifBytes[byteIndex]; + byteIndex++; + + if (blockSize == 0x00) + { + // Block Terminator(1 Byte) + break; + } + + var commentDataBlock = new CommentExtension.CommentDataBlock(); + commentDataBlock.m_blockSize = blockSize; + + // Comment Data(n Byte) + commentDataBlock.m_commentData = new byte[commentDataBlock.m_blockSize]; + for (int i = 0; i < commentDataBlock.m_commentData.Length; i++) + { + commentDataBlock.m_commentData[i] = gifBytes[byteIndex]; + byteIndex++; + } + + if (commentEx.m_commentDataList == null) + { + commentEx.m_commentDataList = new List(); + } + commentEx.m_commentDataList.Add(commentDataBlock); + } + + if (gifData.m_commentExList == null) + { + gifData.m_commentExList = new List(); + } + gifData.m_commentExList.Add(commentEx); + } + + private static void SetPlainTextExtension(byte[] gifBytes, ref int byteIndex, ref GifData gifData) + { + PlainTextExtension plainTxtEx = new PlainTextExtension(); + + // Extension Introducer(1 Byte) + // 0x21 + plainTxtEx.m_extensionIntroducer = gifBytes[byteIndex]; + byteIndex++; + + // Plain Text Label(1 Byte) + // 0x01 + plainTxtEx.m_plainTextLabel = gifBytes[byteIndex]; + byteIndex++; + + // Block Size(1 Byte) + // 0x0c + plainTxtEx.m_blockSize = gifBytes[byteIndex]; + byteIndex++; + + // Text Grid Left Position(2 Bytes) + // Not supported + byteIndex += 2; + + // Text Grid Top Position(2 Bytes) + // Not supported + byteIndex += 2; + + // Text Grid Width(2 Bytes) + // Not supported + byteIndex += 2; + + // Text Grid Height(2 Bytes) + // Not supported + byteIndex += 2; + + // Character Cell Width(1 Bytes) + // Not supported + byteIndex++; + + // Character Cell Height(1 Bytes) + // Not supported + byteIndex++; + + // Text Foreground Color Index(1 Bytes) + // Not supported + byteIndex++; + + // Text Background Color Index(1 Bytes) + // Not supported + byteIndex++; + + // Block Size & Plain Text Data List + while (true) + { + // Block Size(1 Byte) + byte blockSize = gifBytes[byteIndex]; + byteIndex++; + + if (blockSize == 0x00) + { + // Block Terminator(1 Byte) + break; + } + + var plainTextDataBlock = new PlainTextExtension.PlainTextDataBlock(); + plainTextDataBlock.m_blockSize = blockSize; + + // Plain Text Data(n Byte) + plainTextDataBlock.m_plainTextData = new byte[plainTextDataBlock.m_blockSize]; + for (int i = 0; i < plainTextDataBlock.m_plainTextData.Length; i++) + { + plainTextDataBlock.m_plainTextData[i] = gifBytes[byteIndex]; + byteIndex++; + } + + if (plainTxtEx.m_plainTextDataList == null) + { + plainTxtEx.m_plainTextDataList = new List(); + } + plainTxtEx.m_plainTextDataList.Add(plainTextDataBlock); + } + + if (gifData.m_plainTextExList == null) + { + gifData.m_plainTextExList = new List(); + } + gifData.m_plainTextExList.Add(plainTxtEx); + } + + private static void SetApplicationExtension(byte[] gifBytes, ref int byteIndex, ref GifData gifData) + { + // Extension Introducer(1 Byte) + // 0x21 + gifData.m_appEx.m_extensionIntroducer = gifBytes[byteIndex]; + byteIndex++; + + // Extension Label(1 Byte) + // 0xff + gifData.m_appEx.m_extensionLabel = gifBytes[byteIndex]; + byteIndex++; + + // Block Size(1 Byte) + // 0x0b + gifData.m_appEx.m_blockSize = gifBytes[byteIndex]; + byteIndex++; + + // Application Identifier(8 Bytes) + gifData.m_appEx.m_appId1 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appId2 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appId3 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appId4 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appId5 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appId6 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appId7 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appId8 = gifBytes[byteIndex]; + byteIndex++; + + // Application Authentication Code(3 Bytes) + gifData.m_appEx.m_appAuthCode1 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appAuthCode2 = gifBytes[byteIndex]; + byteIndex++; + gifData.m_appEx.m_appAuthCode3 = gifBytes[byteIndex]; + byteIndex++; + + // Block Size & Application Data List + while (true) + { + // Block Size (1 Byte) + byte blockSize = gifBytes[byteIndex]; + byteIndex++; + + if (blockSize == 0x00) + { + // Block Terminator(1 Byte) + break; + } + + var appDataBlock = new ApplicationExtension.ApplicationDataBlock(); + appDataBlock.m_blockSize = blockSize; + + // Application Data(n Byte) + appDataBlock.m_applicationData = new byte[appDataBlock.m_blockSize]; + for (int i = 0; i < appDataBlock.m_applicationData.Length; i++) + { + appDataBlock.m_applicationData[i] = gifBytes[byteIndex]; + byteIndex++; + } + + if (gifData.m_appEx.m_appDataList == null) + { + gifData.m_appEx.m_appDataList = new List(); + } + gifData.m_appEx.m_appDataList.Add(appDataBlock); + } + } +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifFormatter.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifFormatter.cs.meta new file mode 100644 index 0000000..f6f2d4a --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifFormatter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b8cfaf0d6a5ce74986ea45d5f539353 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImage.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImage.cs new file mode 100644 index 0000000..d8b1635 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImage.cs @@ -0,0 +1,388 @@ +/* +UniGif +Copyright (c) 2015 WestHillApps (Hironari Nishioka) +This software is released under the MIT License. +http://opensource.org/licenses/mit-license.php +*/ + +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEngine.UI; + +/// +/// Texture Animation from GIF image +/// +public class UniGifImage : MonoBehaviour +{ + /// + /// This component state + /// + public enum State + { + None, + Loading, + Ready, + Playing, + Pause, + } + + // Target row image + [SerializeField] + private RawImage m_rawImage; + // Image Aspect Controller + [SerializeField] + private UniGifImageAspectController m_imgAspectCtrl; + // Textures filter mode + [SerializeField] + private FilterMode m_filterMode = FilterMode.Point; + // Textures wrap mode + [SerializeField] + private TextureWrapMode m_wrapMode = TextureWrapMode.Clamp; + // Load from url on start + [SerializeField] + private bool m_loadOnStart; + // GIF image url (WEB or StreamingAssets path) + [SerializeField] + private string m_loadOnStartUrl; + // Rotating on loading + [SerializeField] + private bool m_rotateOnLoading; + // Debug log flag + [SerializeField] + private bool m_outputDebugLog; + + // Decoded GIF texture list + private List m_gifTextureList; + // Delay time + private float m_delayTime; + // Texture index + private int m_gifTextureIndex; + // loop counter + private int m_nowLoopCount; + + /// + /// Now state + /// + public State nowState + { + get; + private set; + } + + /// + /// Animation loop count (0 is infinite) + /// + public int loopCount + { + get; + private set; + } + + /// + /// Texture width (px) + /// + public int width + { + get; + private set; + } + + /// + /// Texture height (px) + /// + public int height + { + get; + private set; + } + + private void Awake() + { + if (m_rawImage == null) + { + m_rawImage = GetComponent(); + } + if (m_loadOnStart) + { + SetGifFromUrl(m_loadOnStartUrl); + } + } + + private void Start() + { + //if (m_rawImage == null) + //{ + // m_rawImage = GetComponent(); + //} + //if (m_loadOnStart) + //{ + // SetGifFromUrl(m_loadOnStartUrl); + //} + } + + private void OnDestroy() + { + Clear(); + } + + public void ResetGif() + { + m_rawImage.texture = m_gifTextureList[0].m_texture2d; + m_delayTime = Time.time + m_gifTextureList[0].m_delaySec; + } + + float time = 0; + + private void Update() + { + switch (nowState) + { + case State.None: + break; + + case State.Loading: + if (m_rotateOnLoading) + { + transform.Rotate(0f, 0f, 30f * Time.deltaTime, Space.Self); + } + break; + + case State.Ready: + break; + + case State.Playing: + if (m_rawImage == null || m_gifTextureList == null || m_gifTextureList.Count <= 0) + { + return; + } + if (m_delayTime > Time.time) + { + return; + } + + time += Time.deltaTime; + // Change texture + if (time >= 0.022f) + { + m_gifTextureIndex++; + time -= 0.022f; + } + if (m_gifTextureIndex >= m_gifTextureList.Count) + { + Stop(); + m_gifTextureIndex = 0; + return; + + if (loopCount > 0) + { + m_nowLoopCount++; + if (m_nowLoopCount >= loopCount) + { + Stop(); + return; + } + } + } + + m_rawImage.texture = m_gifTextureList[m_gifTextureIndex].m_texture2d; + m_delayTime = Time.time + m_gifTextureList[m_gifTextureIndex].m_delaySec; + break; + + case State.Pause: + break; + + default: + break; + } + } + + public void Replay() + { + SetGifFromUrl(m_loadOnStartUrl); + } + + /// + /// Set GIF texture from url + /// + /// GIF image url (WEB or StreamingAssets path) + /// Auto play after decode + public void SetGifFromUrl(string url, bool autoPlay = true) + { + StartCoroutine(SetGifFromUrlCoroutine(url, autoPlay)); + } + + /// + /// Set GIF texture from url + /// + /// GIF image url (WEB or StreamingAssets path) + /// Auto play after decode + /// IEnumerator + public IEnumerator SetGifFromUrlCoroutine(string url, bool autoPlay = true) + { + if (string.IsNullOrEmpty(url)) + { + Debug.LogError("URL is nothing."); + yield break; + } + + if (nowState == State.Loading) + { + Debug.LogWarning("Already loading."); + yield break; + } + nowState = State.Loading; + + string path; + if (url.StartsWith("http")) + { + // from WEB + path = url; + } + else + { + // from StreamingAssets + path = Path.Combine(Application.streamingAssetsPath, url); + } + + // Load file + using (WWW www = new WWW(path)) + { + yield return www; + + if (string.IsNullOrEmpty(www.error) == false) + { + Debug.LogError("File load error.\n" + www.error); + nowState = State.None; + yield break; + } + + //Clear(); + nowState = State.Loading; + + // Get GIF textures + yield return StartCoroutine(UniGif.GetTextureListCoroutine(www.bytes, (gifTexList, loopCount, width, height) => + { + if (gifTexList != null) + { + m_gifTextureList = gifTexList; + this.loopCount = loopCount; + this.width = width; + this.height = height; + nowState = State.Ready; + + m_imgAspectCtrl.FixAspectRatio(width, height); + + if (m_rotateOnLoading) + { + transform.localEulerAngles = Vector3.zero; + } + + if (autoPlay) + { + Play(); + } + } + else + { + Debug.LogError("Gif texture get error."); + nowState = State.None; + } + }, + m_filterMode, m_wrapMode, m_outputDebugLog)); + } + } + + /// + /// Clear GIF texture + /// + public void Clear() + { + if (m_rawImage != null) + { + m_rawImage.texture = null; + } + + if (m_gifTextureList != null) + { + for (int i = 0; i < m_gifTextureList.Count; i++) + { + if (m_gifTextureList[i] != null) + { + if (m_gifTextureList[i].m_texture2d != null) + { + Destroy(m_gifTextureList[i].m_texture2d); + m_gifTextureList[i].m_texture2d = null; + } + m_gifTextureList[i] = null; + } + } + m_gifTextureList.Clear(); + m_gifTextureList = null; + } + + nowState = State.None; + } + + /// + /// Play GIF animation + /// + public void Play() + { + if (nowState != State.Ready) + { + Debug.LogWarning("State is not READY."); + return; + } + if (m_rawImage == null || m_gifTextureList == null || m_gifTextureList.Count <= 0) + { + Debug.LogError("Raw Image or GIF Texture is nothing."); + return; + } + nowState = State.Playing; + m_rawImage.texture = m_gifTextureList[0].m_texture2d; + m_delayTime = Time.time + m_gifTextureList[0].m_delaySec; + m_gifTextureIndex = 0; + m_nowLoopCount = 0; + } + + /// + /// Stop GIF animation + /// + public void Stop() + { + if (nowState != State.Playing && nowState != State.Pause) + { + Debug.LogWarning("State is not Playing and Pause."); + return; + } + nowState = State.Ready; + } + + /// + /// Pause GIF animation + /// + public void Pause() + { + if (nowState != State.Playing) + { + Debug.LogWarning("State is not Playing."); + return; + } + nowState = State.Pause; + } + + /// + /// Resume GIF animation + /// + public void Resume() + { + if (nowState != State.Pause) + { + Debug.LogWarning("State is not Pause."); + return; + } + nowState = State.Playing; + } +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImage.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImage.cs.meta new file mode 100644 index 0000000..5cab346 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 338dace6791114f409088fc4f7904d1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImageAspectController.cs b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImageAspectController.cs new file mode 100644 index 0000000..eb47d80 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImageAspectController.cs @@ -0,0 +1,89 @@ +/* +UniGif +Copyright (c) 2015 WestHillApps (Hironari Nishioka) +This software is released under the MIT License. +http://opensource.org/licenses/mit-license.php +*/ + +using UnityEngine; + +[ExecuteInEditMode] +public class UniGifImageAspectController : MonoBehaviour +{ + public int m_originalWidth; + public int m_originalHeight; + + public bool m_fixOnUpdate; + + private Vector2 m_lastSize = Vector2.zero; + private Vector2 m_newSize = Vector2.zero; + + private RectTransform m_rectTransform; + + public RectTransform rectTransform + { + get + { + return m_rectTransform != null ? m_rectTransform : (m_rectTransform = GetComponent()); + } + } + + private void Update() + { +#if UNITY_EDITOR + if (Application.isPlaying == false) + { + FixAspectRatio(); + return; + } +#endif + + if (m_fixOnUpdate) + { + FixAspectRatio(); + } + } + + public void FixAspectRatio(int originalWidth = -1, int originalHeight = -1) + { + bool forceUpdate = false; + if (originalWidth > 0 && originalHeight > 0) + { + m_originalWidth = originalWidth; + m_originalHeight = originalHeight; + forceUpdate = true; + } + if (m_originalWidth <= 0 || m_originalHeight <= 0) + { + return; + } + + bool changeX; + if (forceUpdate || m_lastSize.x != rectTransform.sizeDelta.x) + { + changeX = true; + } + else if (m_lastSize.y != rectTransform.sizeDelta.y) + { + changeX = false; + } + else + { + return; + } + + if (changeX) + { + float ratio = rectTransform.sizeDelta.x / m_originalWidth; + m_newSize.Set(rectTransform.sizeDelta.x, m_originalHeight * ratio); + } + else + { + float ratio = rectTransform.sizeDelta.y / m_originalHeight; + m_newSize.Set(m_originalWidth * ratio, rectTransform.sizeDelta.y); + } + rectTransform.sizeDelta = m_newSize; + + m_lastSize = rectTransform.sizeDelta; + } +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImageAspectController.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImageAspectController.cs.meta new file mode 100644 index 0000000..a1f90f0 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/Scripts/UniGifImageAspectController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c0059e5739c78f4fba4055ceead3919 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI.meta new file mode 100644 index 0000000..a8c8f5a --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b713d1120e7a3b4b80560fdcf2addf2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery-icon-defualt-19_19@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery-icon-defualt-19_19@1x.png new file mode 100644 index 0000000..9f216ac Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery-icon-defualt-19_19@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery-icon-defualt-19_19@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery-icon-defualt-19_19@1x.png.meta new file mode 100644 index 0000000..6d4de3a --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery-icon-defualt-19_19@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: a8c7a8368439abd478c9a587ecb635d2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery100-icon-active-19_19@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery100-icon-active-19_19@1x.png new file mode 100644 index 0000000..381286c Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery100-icon-active-19_19@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery100-icon-active-19_19@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery100-icon-active-19_19@1x.png.meta new file mode 100644 index 0000000..1ea9a27 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Battery100-icon-active-19_19@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 565472ff6ed0f064cb3100091127dda7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Blur.shader b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Blur.shader new file mode 100644 index 0000000..ee5ee18 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Blur.shader @@ -0,0 +1,209 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + +Shader "Custom/NewSurfaceShader" +{ + Properties { + _Color ("Main Color", Color) = (1,1,1,1) + _BumpAmt ("Distortion", Range (0,128)) = 10 + _MainTex ("Tint Color (RGB)", 2D) = "white" {} + _BumpMap ("Normalmap", 2D) = "bump" {} + _Size ("Size", Range(0, 20)) = 1 + } + + Category { + + // We must be transparent, so other objects are drawn before this one. + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Opaque" } + + + SubShader { + + // Horizontal blur + GrabPass { + Tags { "LightMode" = "Always" } + } + Pass { + Tags { "LightMode" = "Always" } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord: TEXCOORD0; + }; + + struct v2f { + float4 vertex : POSITION; + float4 uvgrab : TEXCOORD0; + }; + + v2f vert (appdata_t v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + #if UNITY_UV_STARTS_AT_TOP + float scale = -1.0; + #else + float scale = 1.0; + #endif + o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5; + o.uvgrab.zw = o.vertex.zw; + return o; + } + + sampler2D _GrabTexture; + float4 _GrabTexture_TexelSize; + float _Size; + + half4 frag( v2f i ) : COLOR { +// half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab)); +// return col; + + half4 sum = half4(0,0,0,0); + #define GRABPIXEL(weight,kernelx) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x + _GrabTexture_TexelSize.x * kernelx*_Size, i.uvgrab.y, i.uvgrab.z, i.uvgrab.w))) * weight + sum += GRABPIXEL(0.05, -4.0); + sum += GRABPIXEL(0.09, -3.0); + sum += GRABPIXEL(0.12, -2.0); + sum += GRABPIXEL(0.15, -1.0); + sum += GRABPIXEL(0.18, 0.0); + sum += GRABPIXEL(0.15, +1.0); + sum += GRABPIXEL(0.12, +2.0); + sum += GRABPIXEL(0.09, +3.0); + sum += GRABPIXEL(0.05, +4.0); + + return sum; + } + ENDCG + } + // Vertical blur + GrabPass { + Tags { "LightMode" = "Always" } + } + Pass { + Tags { "LightMode" = "Always" } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord: TEXCOORD0; + }; + + struct v2f { + float4 vertex : POSITION; + float4 uvgrab : TEXCOORD0; + }; + + v2f vert (appdata_t v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + #if UNITY_UV_STARTS_AT_TOP + float scale = -1.0; + #else + float scale = 1.0; + #endif + o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5; + o.uvgrab.zw = o.vertex.zw; + return o; + } + + sampler2D _GrabTexture; + float4 _GrabTexture_TexelSize; + float _Size; + + half4 frag( v2f i ) : COLOR { +// half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab)); +// return col; + + half4 sum = half4(0,0,0,0); + #define GRABPIXEL(weight,kernely) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x, i.uvgrab.y + _GrabTexture_TexelSize.y * kernely*_Size, i.uvgrab.z, i.uvgrab.w))) * weight + //G(X) = (1/(sqrt(2*PI*deviation*deviation))) * exp(-(x*x / (2*deviation*deviation))) + + sum += GRABPIXEL(0.05, -4.0); + sum += GRABPIXEL(0.09, -3.0); + sum += GRABPIXEL(0.12, -2.0); + sum += GRABPIXEL(0.15, -1.0); + sum += GRABPIXEL(0.18, 0.0); + sum += GRABPIXEL(0.15, +1.0); + sum += GRABPIXEL(0.12, +2.0); + sum += GRABPIXEL(0.09, +3.0); + sum += GRABPIXEL(0.05, +4.0); + + return sum; + } + ENDCG + } + + // Distortion + GrabPass { + Tags { "LightMode" = "Always" } + } + Pass { + Tags { "LightMode" = "Always" } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord: TEXCOORD0; + }; + + struct v2f { + float4 vertex : POSITION; + float4 uvgrab : TEXCOORD0; + float2 uvbump : TEXCOORD1; + float2 uvmain : TEXCOORD2; + }; + + float _BumpAmt; + float4 _BumpMap_ST; + float4 _MainTex_ST; + + v2f vert (appdata_t v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + #if UNITY_UV_STARTS_AT_TOP + float scale = -1.0; + #else + float scale = 1.0; + #endif + o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5; + o.uvgrab.zw = o.vertex.zw; + o.uvbump = TRANSFORM_TEX( v.texcoord, _BumpMap ); + o.uvmain = TRANSFORM_TEX( v.texcoord, _MainTex ); + return o; + } + + fixed4 _Color; + sampler2D _GrabTexture; + float4 _GrabTexture_TexelSize; + sampler2D _BumpMap; + sampler2D _MainTex; + + half4 frag( v2f i ) : COLOR { + // calculate perturbed coordinates + half2 bump = UnpackNormal(tex2D( _BumpMap, i.uvbump )).rg; // we could optimize this by just reading the x y without reconstructing the Z + float2 offset = bump * _BumpAmt * _GrabTexture_TexelSize.xy; + i.uvgrab.xy = offset * i.uvgrab.z + i.uvgrab.xy; + + half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab)); + half4 tint = tex2D( _MainTex, i.uvmain ) * _Color; + + return col * tint; + } + ENDCG + } + } + } +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Blur.shader.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Blur.shader.meta new file mode 100644 index 0000000..cb47dbd --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Blur.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b9c587f0193711f40918f70de6e56dc7 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/BlurMaterial.mat b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/BlurMaterial.mat new file mode 100644 index 0000000..3895f72 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/BlurMaterial.mat @@ -0,0 +1,147 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BlurMaterial + m_Shader: {fileID: 4800000, guid: b9c587f0193711f40918f70de6e56dc7, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: + - _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BackTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DownTex: + 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} + - _FrontTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LeftTex: + 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} + - _RightTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _UpTex: + 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_Ints: [] + m_Floats: + - _Amplitude: 1 + - _BumpAmt: 10 + - _BumpScale: 1 + - _ColorMask: 15 + - _Cutoff: 0.5 + - _Depthpower: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _Emission: 2 + - _Frequency: 10 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Intensity: 2.93 + - _MainTexMMBias: 0 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Opacity: 1 + - _Parallax: 0.02 + - _Pow: 1.85 + - _QueueControl: -1 + - _QueueOffset: 0 + - _Size: 1 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _StartFrequency: 4 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UVSec: 0 + - _UseUIAlphaClip: 0 + - _Useblack: 0 + - _Usedepth: 0 + - _ZWrite: 0 + - _blurSizeXY: 4 + - _d: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GlowColor: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/BlurMaterial.mat.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/BlurMaterial.mat.meta new file mode 100644 index 0000000..5e894b1 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/BlurMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fbef3ac7eb26f8d4cb9a911230043e4b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib1.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib1.png new file mode 100644 index 0000000..85fa7da Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib1.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib1.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib1.png.meta new file mode 100644 index 0000000..bd1b034 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib1.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 000f50798e5a0bd4687f71a50c3594c9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib2.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib2.png new file mode 100644 index 0000000..18a60d6 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib2.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib2.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib2.png.meta new file mode 100644 index 0000000..25f5486 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib2.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: e4fad83fb03fe8f45802361533bade6e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib3.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib3.png new file mode 100644 index 0000000..b8ef6c6 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib3.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib3.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib3.png.meta new file mode 100644 index 0000000..b188ced --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib3.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: eeff450c75f719240bebd0eab7fda9b6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step1.gif b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step1.gif new file mode 100644 index 0000000..b8db187 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step1.gif differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step1.gif.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step1.gif.meta new file mode 100644 index 0000000..48303cb --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step1.gif.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: a80de2a87682b984aa906a9235c6dfdc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step2.gif b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step2.gif new file mode 100644 index 0000000..cca412e Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step2.gif differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step2.gif.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step2.gif.meta new file mode 100644 index 0000000..8100e75 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step2.gif.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 742e0793f422a4349ad60940e735b502 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step3.gif b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step3.gif new file mode 100644 index 0000000..cece358 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step3.gif differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step3.gif.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step3.gif.meta new file mode 100644 index 0000000..20fa3a9 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Calib_Step3.gif.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: fed40015d14e05442aa3f546ecf8ea9a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.mat b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.mat new file mode 100644 index 0000000..6d366d5 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.mat @@ -0,0 +1,88 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CircleCulling + m_Shader: {fileID: 4800000, guid: 0e5fef5088132ad44a5918e2ef2f84b8, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + 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_Ints: [] + m_Floats: + - _BumpScale: 1 + - _ColorMask: 15 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Radius: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UVSec: 0 + - _UseUIAlphaClip: 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/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.mat.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.mat.meta new file mode 100644 index 0000000..38359ae --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32e0d1b3b160e924c958888511c6148c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.shader b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.shader new file mode 100644 index 0000000..86ef00a --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.shader @@ -0,0 +1,122 @@ +Shader "Custom/CircleCulling" +{ + Properties + { + [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} + _Color("Tint", Color) = (1,1,1,1) + + _StencilComp("Stencil Comparison", Float) = 8 + _Stencil("Stencil ID", Float) = 0 + _StencilOp("Stencil Operation", Float) = 0 + _StencilWriteMask("Stencil Write Mask", Float) = 255 + _StencilReadMask("Stencil Read Mask", Float) = 255 + _ColorMask("Color Mask", Float) = 15 + + //my member + _Radius("Circle Radius",Range(0,0.5)) = 0.3 + + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0 + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "IgnoreProjector" = "True" + "RenderType" = "Transparent" + "PreviewType" = "Plane" + "CanUseSpriteAtlas" = "True" + } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + Cull Off + Lighting Off + ZWrite Off + ZTest[unity_GUIZTestMode] + Blend SrcAlpha OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass + { + Name "Default" + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + + #pragma multi_compile __ UNITY_UI_ALPHACLIP + #define PI 3.1415926 + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + float4 worldPosition : TEXCOORD1; + UNITY_VERTEX_OUTPUT_STEREO + }; + + fixed4 _Color; + fixed4 _TextureSampleAdd; + float4 _ClipRect; + float _Radius; + + v2f vert(appdata_t IN) + { + v2f OUT; + UNITY_SETUP_INSTANCE_ID(IN); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); + OUT.worldPosition = IN.vertex; + OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); + + OUT.texcoord = IN.texcoord; + + OUT.color = IN.color * _Color; + return OUT; + } + + sampler2D _MainTex; + + fixed4 frag(v2f IN) : SV_Target + { + float2 uv = IN.texcoord.xy; + float4 col = IN.color; + + float2 nor =float2(0.5,0.5)-uv; + if (length(nor)>_Radius) + col.a = 0; + + clip(col.w-0.01); + half4 color = (tex2D(_MainTex,uv) + _TextureSampleAdd) * col; + color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); + + #ifdef UNITY_UI_ALPHACLIP + clip(color.a - 0.001); + #endif + + return color; + } + ENDCG + } + } +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.shader.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.shader.meta new file mode 100644 index 0000000..6f14748 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/CircleCulling.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0e5fef5088132ad44a5918e2ef2f84b8 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-active-70_70@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-active-70_70@1x.png new file mode 100644 index 0000000..518b9b0 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-active-70_70@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-active-70_70@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-active-70_70@1x.png.meta new file mode 100644 index 0000000..d6cf417 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-active-70_70@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 3e3a4cf81099d7b4c9e98c7fd5e5c795 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-defualt-70_70@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-defualt-70_70@1x.png new file mode 100644 index 0000000..a4fa606 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-defualt-70_70@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-defualt-70_70@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-defualt-70_70@1x.png.meta new file mode 100644 index 0000000..86d4a28 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Lglover-icon-defualt-70_70@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 38bcc8ff402e1c54cae7d6ab64532fb1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBar.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBar.png new file mode 100644 index 0000000..ae1a24a Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBar.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBar.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBar.png.meta new file mode 100644 index 0000000..b9f1d6f --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBar.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: f28939b0192af8948a5cdd4646e29d39 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBarDefault.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBarDefault.png new file mode 100644 index 0000000..a157a43 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBarDefault.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBarDefault.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBarDefault.png.meta new file mode 100644 index 0000000..c5010f7 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/LoadBarDefault.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: da7d54ecd780f9440b6ba7c65c4a02f2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-active-70_70@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-active-70_70@1x.png new file mode 100644 index 0000000..5ada33a Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-active-70_70@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-active-70_70@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-active-70_70@1x.png.meta new file mode 100644 index 0000000..92ae833 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-active-70_70@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: d7f0c3254aa86ff499afd0f29154c077 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-defualt-70_70@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-defualt-70_70@1x.png new file mode 100644 index 0000000..3baff9a Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-defualt-70_70@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-defualt-70_70@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-defualt-70_70@1x.png.meta new file mode 100644 index 0000000..b88c7b6 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Rglover-icon-defualt-70_70@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 8585700e62ffd614c9d9811a9bb30e3d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-active-19_19@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-active-19_19@1x.png new file mode 100644 index 0000000..1a3a83e Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-active-19_19@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-active-19_19@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-active-19_19@1x.png.meta new file mode 100644 index 0000000..02a8794 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-active-19_19@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 83ee19fec453b8c44aad9b79c46b38f3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-defualt-19_19@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-defualt-19_19@1x.png new file mode 100644 index 0000000..3728eb8 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-defualt-19_19@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-defualt-19_19@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-defualt-19_19@1x.png.meta new file mode 100644 index 0000000..c288cb8 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/Signa-icon-defualt-19_19@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 9578dc4aa6f3772458a1b8dfd87983cf +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-active-118_46@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-active-118_46@1x.png new file mode 100644 index 0000000..278fb76 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-active-118_46@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-active-118_46@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-active-118_46@1x.png.meta new file mode 100644 index 0000000..94291e4 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-active-118_46@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: c3c009733ada58046bb17d41343b58c6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-defualt-118_46@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-defualt-118_46@1x.png new file mode 100644 index 0000000..852539d Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-defualt-118_46@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-defualt-118_46@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-defualt-118_46@1x.png.meta new file mode 100644 index 0000000..cb263bc --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/back-icon-defualt-118_46@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: c002c6999ff14504b9c7c67c76774664 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/bg-1080_607.5@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/bg-1080_607.5@1x.png new file mode 100644 index 0000000..eb363c3 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/bg-1080_607.5@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/bg-1080_607.5@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/bg-1080_607.5@1x.png.meta new file mode 100644 index 0000000..72747a7 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/bg-1080_607.5@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: ed8e10304fe4e7f47a1dad18cc91bb94 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/cardbg-174_226@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/cardbg-174_226@1x.png new file mode 100644 index 0000000..48a5fe9 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/cardbg-174_226@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/cardbg-174_226@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/cardbg-174_226@1x.png.meta new file mode 100644 index 0000000..8fa7401 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/cardbg-174_226@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: ca2306eaf537341468c9f72e52e869a0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-active-118_46@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-active-118_46@1x.png new file mode 100644 index 0000000..d54f916 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-active-118_46@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-active-118_46@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-active-118_46@1x.png.meta new file mode 100644 index 0000000..d01f032 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-active-118_46@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 0d51ae807a3b41049898e71fdcbde6bb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-defualt-118_46@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-defualt-118_46@1x.png new file mode 100644 index 0000000..7df81da Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-defualt-118_46@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-defualt-118_46@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-defualt-118_46@1x.png.meta new file mode 100644 index 0000000..2c1b836 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/icon-defualt-118_46@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 3a4ea47bcb1e069488383d2f732a7782 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/joystick-img-step2-175x175.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/joystick-img-step2-175x175.png new file mode 100644 index 0000000..1e4ee5f Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/joystick-img-step2-175x175.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/joystick-img-step2-175x175.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/joystick-img-step2-175x175.png.meta new file mode 100644 index 0000000..f76c255 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/joystick-img-step2-175x175.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: ad70a822a14754f40910ec836f222144 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/logo-Text-white.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/logo-Text-white.png new file mode 100644 index 0000000..44e0258 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/logo-Text-white.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/logo-Text-white.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/logo-Text-white.png.meta new file mode 100644 index 0000000..efe42b3 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/logo-Text-white.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 508c61c3a7e19aa488a8cea4c5926d9a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/mainbut-defualt-120x38.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/mainbut-defualt-120x38.png new file mode 100644 index 0000000..d5f0c94 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/mainbut-defualt-120x38.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/mainbut-defualt-120x38.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/mainbut-defualt-120x38.png.meta new file mode 100644 index 0000000..7b62506 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/mainbut-defualt-120x38.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 856db57569423ab48b84471d9e845206 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x-2.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x-2.png new file mode 100644 index 0000000..5963a10 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x-2.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x-2.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x-2.png.meta new file mode 100644 index 0000000..5222728 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x-2.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 344b0f09bb7e9854b9a69b91e5e44965 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x.png new file mode 100644 index 0000000..9707566 Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x.png.meta new file mode 100644 index 0000000..2ce652c --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/quit-icon-defualt-166_60@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 518b31526be913d4ba214d58f6da6ae3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon- default-166_60@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon- default-166_60@1x.png new file mode 100644 index 0000000..492e79b Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon- default-166_60@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon- default-166_60@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon- default-166_60@1x.png.meta new file mode 100644 index 0000000..a133590 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon- default-166_60@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: f9c2702ddf357274fae2883b479440ba +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon-active-166_60@1x.png b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon-active-166_60@1x.png new file mode 100644 index 0000000..5b841fa Binary files /dev/null and b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon-active-166_60@1x.png differ diff --git a/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon-active-166_60@1x.png.meta b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon-active-166_60@1x.png.meta new file mode 100644 index 0000000..3e2c30c --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Calibration UI/UI/start-icon-active-166_60@1x.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 7edaa1bd50d189845a3bfed19c49af34 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 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 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts.meta new file mode 100644 index 0000000..df44597 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a8e85962969665645ad86f1ea0ff1dfc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Auto_Cali.cs b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Auto_Cali.cs new file mode 100644 index 0000000..456baef --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Auto_Cali.cs @@ -0,0 +1,34 @@ +namespace Auto_Calibration +{ + public class Auto_Cali + { + public static double[] AutoCali(double[] f, double[] n, double[] h, float nn) + { + double[] array = new double[12]; + for (int i = 0; i < 12; i++) + { + //if (f[i] < n[i]) + //{ + // h[i] = h[i] - f[i] + n[i]; + // n[i] = f[i]; + //} + + //if (f[i] > h[i]) + //{ + // n[i] = n[i] + f[i] - h[i]; + // h[i] = f[i]; + //} + + if (h[i] <= n[i]) + { + array[i] = 0; + continue; + } + array[i] = (f[i] - n[i]) / (h[i] - n[i]) * (double)nn; + + } + + return array; + } + } +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Auto_Cali.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Auto_Cali.cs.meta new file mode 100644 index 0000000..ee17e3a --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Auto_Cali.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 035f3468081166f45854ee501919b8b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/BleHandDriver.cs b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/BleHandDriver.cs new file mode 100644 index 0000000..8c97748 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/BleHandDriver.cs @@ -0,0 +1,997 @@ +using Auto_Calibration; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +public class BleHandDriver : MonoBehaviour +{ + private AndroidJavaClass AR1_linear_AA; + private AndroidJavaClass AR1_linear_AD; + private AndroidJavaClass AR1_linear_AE; + private AndroidJavaClass AR1_linear_AG; + + private string Version; + + public BleHandDriver(string _DeviceName) + { + DeviceName = _DeviceName; + + if (PlayerPrefs.GetFloat($"{DeviceName}_X_Center") != 0) + { + x_center_data = PlayerPrefs.GetFloat($"{DeviceName}_X_Center"); + } + if (PlayerPrefs.GetFloat($"{DeviceName}_Y_Center") != 0) + { + y_center_data = PlayerPrefs.GetFloat($"{DeviceName}_Y_Center"); + } + if (PlayerPrefs.GetFloat($"{DeviceName}_X_MAX") != 0) + { + x_max_data = PlayerPrefs.GetFloat($"{DeviceName}_X_MAX"); + } + + if (PlayerPrefs.GetFloat($"{DeviceName}_Y_MAX") != 0) + { + y_max_data = PlayerPrefs.GetFloat($"{DeviceName}_Y_MAX"); + } + + if (PlayerPrefs.GetFloat($"{DeviceName}_X_MIN") != 0) + { + x_min_data = PlayerPrefs.GetFloat($"{DeviceName}_X_MIN"); + } + + if (PlayerPrefs.GetFloat($"{DeviceName}_Y_MIN") != 0) + { + y_min_data = PlayerPrefs.GetFloat($"{DeviceName}_Y_MIN"); + } + + if (PlayerPrefs.GetFloat($"{DeviceName}_DeadZone") != 0) + { + dead_zone = PlayerPrefs.GetFloat($"{DeviceName}_DeadZone"); + } + + if (PlayerPrefs.GetFloat($"{DeviceName}_TriggerValue") != 0) + { + trigger_value = PlayerPrefs.GetFloat($"{DeviceName}_TriggerValue"); + } + + if (PlayerPrefs.GetFloat($"{DeviceName}_GrabValue") != 0) + { + grab_value = PlayerPrefs.GetFloat($"{DeviceName}_GrabValue"); + } + + if (PlayerPrefs.GetFloat($"{DeviceName}_TrackpadValue") != 0) + { + trackpad_value = PlayerPrefs.GetFloat($"{DeviceName}_TrackpadValue"); + } + + AR1_linear_AA = new("com.example.ar1_linear1.AR1_linear_AA"); + AR1_linear_AD = new("com.example.ar1_linear1.AR1_linear_AD"); + AR1_linear_AE = new("com.example.ar1_linear1.AR1_linear_AE"); + AR1_linear_AG = new("com.example.ar1_linear1.AR1_linear_AG"); + } + + public enum HandType + { + Left, + Right + } + + public enum Axis + { + x = -3, + y = -2, + z = -1, + x_n, + y_n, + z_n + } + + public enum CalibrationType + { + AdductFin = -2, + FistFin = -1, + None, //δ±ê¶¨ + Fist, //ÎÕÈ­ + Adduct, //²¢Â£ + Stretch, //ÕÅ¿ª + Completed //Íê³É + } + + + private float f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18; + + private float a4 = 0, + a5 = 0, + a6 = 0, + a7 = 0, + a8 = 0, + a9 = 0, + a10 = 0, + a11, + a12 = 0, + a13 = 0, + a14 = 0, + a15; + + private float n1 = 0, + n2 = 0, + n3 = 0, + n4 = 0, + n5 = 0, + n6 = 0, + n7 = 0, + n8 = 0, + n9 = 0, + n10 = 0, + n11 = 0, + n12 = 0, + n13 = 0, + n14 = 0, + n15 = 0; + + private float h4 = 0, + h5 = 0, + h6 = 0, + h7 = 0, + h8 = 0, + h9 = 0, + h10 = 0, + h11 = 0, + h12 = 0, + h13 = 0, + h14 = 0, + h15 = 0, + h16 = 0, + h17 = 0; + + private float m4 = 0, + m5 = 0, + m6 = 0, + m7 = 0, + m8 = 0, + m9 = 0, + m10 = 0, + m11 = 0, + m12 = 0, + m13 = 0, + m14 = 0, + m15 = 0; + + private float dot4 = 0, + dot5 = 0, + dot6 = 0, + dot7 = 0, + dot8 = 0, + dot9 = 0, + dot10 = 0, + dot11 = 0, + dot12 = 0, + dot13 = 0, + dot14 = 0, + dot15 = 0; + + private Queue f4Queue = new Queue(); + private Queue f5Queue = new Queue(); + private Queue f6Queue = new Queue(); + private Queue f7Queue = new Queue(); + private Queue f8Queue = new Queue(); + private Queue f9Queue = new Queue(); + private Queue f10Queue = new Queue(); + private Queue f11Queue = new Queue(); + private Queue f12Queue = new Queue(); + private Queue f13Queue = new Queue(); + private Queue f14Queue = new Queue(); + private Queue f15Queue = new Queue(); + private const int QUEUE_MAX_SIZE = 10; + + public int HandDeviceIndex = 1; + public HandType Hand; + + public Transform Wrist; + + [Header("×ø±êϵƫ²î")] + public Axis Pitch = Axis.z; + + public Axis Roll = Axis.x_n; + + public Axis Yaw = Axis.y_n; + + [Header("IMU¿ª¹Ø")] public bool HasIMU = false; + + [Header("Ä´Ö¸¸ù½ÚµãϵÊý")][Range(0, 1)] public float coefficient = 0.6f; + + [Header("Ä´Ö¸¸ù½ÚµãÆ«²î")] public Vector3 Thumb1Offset; + + public string DeviceName; + + public float time; + + string line; + + private CalibrationType mCalibrationType = CalibrationType.None; + + private double[] pre_sensor_data; + + private List angle_data = new(); + private List raw_data = new(); + + bool isCalibration = false; + + private float x_center_data = 1850; + private float y_center_data = 1850; + + private float x_max_data = 3750; + private float x_min_data = 620; + private float y_min_data = 620; + private float y_max_data = 3750; + + private bool centerCalib = false; + private bool rangeCalib = false; + + private float dead_zone = 0.15f; + + private float trackpad_value = 0.3f; + + private float trigger_value = 0.5f; + + private float grab_value = 0.5f; + + private InputData input; + + private bool SaveCalibrationDataPermission = false; + private bool ReadControllerSavedData = true; + + private int _curCalibTimes = 0; + + public void Method_update() + { + if (time < 0) + { + time = 5; + } + else + { + time -= Time.deltaTime; + } + + line = UDE_API.GetDeviceDataByName(DeviceName); + if (string.IsNullOrEmpty(line)) + { + return; + } + //Debug.Log("Line " + line); + var data = line.Split(','); + + raw_data = new(); + foreach (string str in data) + { + raw_data.Add(Convert.ToDouble(str)); + } + + f4 = Convert.ToSingle(data[0]); + f5 = Convert.ToSingle(data[1]); + f6 = Convert.ToSingle(data[2]); + f7 = Convert.ToSingle(data[3]); + f8 = Convert.ToSingle(data[4]); + f9 = Convert.ToSingle(data[5]); + f10 = Convert.ToSingle(data[6]); + f11 = Convert.ToSingle(data[7]); + f12 = Convert.ToSingle(data[8]); + f13 = Convert.ToSingle(data[9]); + f14 = Convert.ToSingle(data[10]); + f15 = Convert.ToSingle(data[11]); + if (data.Length > 12 && data.Length <= 16) + { + f16 = Convert.ToSingle(data[12]); + f17 = Convert.ToSingle(data[13]); + f18 = Convert.ToSingle(data[14]); + } + else if (data.Length > 16) + { + f16 = Convert.ToSingle(data[16]); + f17 = Convert.ToSingle(data[17]); + f18 = Convert.ToSingle(data[18]); + } + + if (ReadControllerSavedData) + { + ReadControllerSavedData = false; + var x_temp = PlayerPrefs.GetFloat(DeviceName + "_X_Center"); + if (x_temp != 0) + { + x_center_data = x_temp; + y_center_data = PlayerPrefs.GetFloat(DeviceName + "_Y_Center"); + } + + var max_temp = PlayerPrefs.GetFloat(DeviceName + "_X_Max"); + if (max_temp != 0) + { + x_max_data = max_temp; + x_min_data = PlayerPrefs.GetFloat(DeviceName + "_X_Min"); + y_max_data = PlayerPrefs.GetFloat(DeviceName + "_Y_Max"); + y_min_data = PlayerPrefs.GetFloat(DeviceName + "_Y_Min"); + } + } + + float f25 = (f16 - x_center_data) / ((x_max_data - x_min_data) / 2); + float f26 = (f17 - y_center_data) / ((y_max_data - y_min_data) / 2); + + if (f25 > 1) + { + f25 = 1; + } + + if (f25 < -1) + { + f25 = -1; + } + + if (f26 > 1) + { + f26 = 1; + } + + if (f26 < -1) + { + f26 = -1; + } + + if (f25 <= dead_zone && f25 >= -dead_zone) + { + f25 = 0; + } + + if (f26 <= dead_zone && f26 >= -dead_zone) + { + f26 = 0; + } + + input = new InputData(); + input.joyX = f25; + input.joyY = f26; + + switch (f18) + { + case 1: + input.bButton = true; + break; + case 2: + input.aButton = true; + break; + case 3: + input.menu = true; + break; + case 4: + input.joyButton = true; + break; + case 5: + break; + case 6: + break; + case 7: + break; + } + + if (centerCalib) + { + x_center_data = f16; + y_center_data = f17; + centerCalib = false; + + PlayerPrefs.SetFloat(DeviceName + "_X_Center", f16); + PlayerPrefs.SetFloat(DeviceName + "_Y_Center", f17); + } + + if (rangeCalib) + { + + if (f16 > 600) + { + x_min_data = Math.Min(x_min_data, f16); + } + + if (f16 < 3800) + { + x_max_data = Math.Max(x_max_data, f16); + } + + + if (f17 > 600) + { + y_min_data = Math.Min(y_min_data, f17); + } + if (f17 < 3800) + { + y_max_data = Math.Max(y_max_data, f17); + } + } + + if (mCalibrationType == CalibrationType.None && PlayerPrefs.GetInt(DeviceName) == 1) + { + string[] CalibSavedData = PlayerPrefs.GetString(DeviceName + "_CalibDT").Split(","); + int index = 0; + + n4 = float.Parse(CalibSavedData[index++]); + n5 = float.Parse(CalibSavedData[index++]); + n6 = float.Parse(CalibSavedData[index++]); + n7 = float.Parse(CalibSavedData[index++]); + n8 = float.Parse(CalibSavedData[index++]); + n9 = float.Parse(CalibSavedData[index++]); + n10 = float.Parse(CalibSavedData[index++]); + n11 = float.Parse(CalibSavedData[index++]); + n12 = float.Parse(CalibSavedData[index++]); + n13 = float.Parse(CalibSavedData[index++]); + n14 = float.Parse(CalibSavedData[index++]); + n15 = float.Parse(CalibSavedData[index++]); + + h4 = float.Parse(CalibSavedData[index++]); + h5 = float.Parse(CalibSavedData[index++]); + h6 = float.Parse(CalibSavedData[index++]); + h7 = float.Parse(CalibSavedData[index++]); + h8 = float.Parse(CalibSavedData[index++]); + h9 = float.Parse(CalibSavedData[index++]); + h10 = float.Parse(CalibSavedData[index++]); + h11 = float.Parse(CalibSavedData[index++]); + h12 = float.Parse(CalibSavedData[index++]); + h13 = float.Parse(CalibSavedData[index++]); + h14 = float.Parse(CalibSavedData[index++]); + h15 = float.Parse(CalibSavedData[index]); + + mCalibrationType = CalibrationType.Completed; + } + + #region Dynamic Calibration + //if (_curCalibTimes < 1000) + //{ + // if (m4 < f4) + // { + // m4 = f4; + // if (m4 < h4) + // { + // m4 = h4; + // } + // } + // if (m5 < f5) + // { + // m5 = f5; + // if (m5 < h5) + // { + // m5 = h5; + // } + // } + // if (m6 < f6) + // { + // m6 = f6; + // if (m6 < h6) + // { + // m6 = h6; + // } + // } + // if (m7 < f7) + // { + // m7 = f7; + // if (m7 < h7) + // { + // m7 = h7; + // } + // } + // if (m9 < f9) + // { + // m9 = f9; + // if (m9 < h9) + // { + // m9 = h9; + // } + // } + // if (m10 < f10) + // { + // m10 = f10; + // if (m10 < h10) + // { + // m10 = h10; + // } + // } + // if (m12 < f12) + // { + // m12 = f12; + // if (m12 < h12) + // { + // m12 = h12; + // } + // } + // if (m13 < f13) + // { + // m13 = f13; + // if (m13 < h13) + // { + // m13 = h13; + // } + // } + // if (m15 < f15) + // { + // m15 = f15; + // if (m15 < h15) + // { + // m15 = h15; + // } + // } + // _curCalibTimes++; + + //} + //else + //{ + // //Debug.LogError("¶¯Ì¬±ê¶¨Íê³É"); + // //Debug.LogError($"{_deviceName}:{m4},{m5},{m6},{m7},{m8},{m9},{m10},{m11},{m12},{m13},{m14},{m15}"); + // // f4´¦Àí + // if (m4 < f4) + // { + // UpdateQueue(f4Queue, f4); + // if (f4Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f4Queue) < 10) + // { + // dot4 = f4 - m4; + // m4 = f4; + // n4 += dot4; + // h4 += dot4; + // } + // } + // // f5´¦Àí + // if (m5 < f5) + // { + // UpdateQueue(f5Queue, f5); + // if (f5Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f5Queue) < 10) + // { + // dot5 = f5 - m5; + // m5 = f5; + // n5 += dot5; + // h5 += dot5; + // } + // } + // // f6´¦Àí + // if (m6 < f6) + // { + // UpdateQueue(f6Queue, f6); + // if (f6Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f6Queue) < 10) + // { + // dot6 = f6 - m6; + // m6 = f6; + // n6 += dot6; + // h6 += dot6; + // } + // } + + // // f7´¦Àí + // if (m7 < f7) + // { + // UpdateQueue(f7Queue, f7); + // if (f7Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f7Queue) < 10) + // { + // dot7 = f7 - m7; + // m7 = f7; + // n7 += dot7; + // h7 += dot7; + // } + // } + // // f9´¦Àí + // if (m9 < f9) + // { + // UpdateQueue(f9Queue, f9); + // if (f9Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f9Queue) < 10) + // { + // dot9 = f9 - m9; + // m9 = f9; + // n9 += dot9; + // h9 += dot9; + // } + // } + // // f10´¦Àí + // if (m10 < f10) + // { + // UpdateQueue(f10Queue, f10); + // if (f10Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f10Queue) < 10) + // { + // dot10 = f10 - m10; + // m10 = f10; + // n10 += dot10; + // h10 += dot10; + // } + // } + // // f12´¦Àí + // if (m12 < f12) + // { + // UpdateQueue(f12Queue, f12); + // if (f12Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f12Queue) < 10) + // { + // dot12 = f12 - m12; + // m12 = f12; + // n12 += dot12; + // h12 += dot12; + // } + // } + // // f13´¦Àí + // if (m13 < f13) + // { + // UpdateQueue(f13Queue, f13); + // if (f13Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f13Queue) < 10) + // { + // dot13 = f13 - m13; + // m13 = f13; + // n13 += dot13; + // h13 += dot13; + // } + // } + // // f15´¦Àí + // if (m15 < f15) + // { + // UpdateQueue(f15Queue, f15); + // if (f15Queue.Count == QUEUE_MAX_SIZE && CalculateVariance(f15Queue) < 10) + // { + // dot15 = f15 - m15; + // m15 = f15; + // n15 += dot15; + // h15 += dot15; + // } + // } + //} + #endregion + + if (mCalibrationType == CalibrationType.Completed) + { + if (SaveCalibrationDataPermission) + { + //±ê¶¨¼Ç¼µ¥´Î±ê¶¨ºó½ö¼Ç¼һ´Î + SaveCalibrationDataPermission = false; + PlayerPrefs.SetInt(DeviceName, 1); + + string DataSet = n4 + "," + n5 + "," + n6 + "," + n7 + "," + n8 + "," + n9 + "," + n10 + "," + n11 + "," + n12 + "," + n13 + "," + n14 + "," + n15 + ","; + DataSet += h4 + "," + h5 + "," + h6 + "," + h7 + "," + h8 + "," + h9 + "," + h10 + "," + h11 + "," + h12 + "," + h13 + "," + h14 + "," + h15; + + PlayerPrefs.SetString(DeviceName + "_CalibDT", DataSet); + //Debug.Log("ÒѼǼб궨Êý¾Ý"); + } + + double[] org_f = new double[12] { f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15 }; + double[] org_n = new double[12] { n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15 }; + double[] org_h = new double[12] { h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, h14, h15 }; + float nn = 100; + double[] org_a = Auto_Cali.AutoCali(org_f, org_n, org_h, nn); + + a4 = Convert.ToSingle(org_a[0]); + a5 = Convert.ToSingle(org_a[1]); + a6 = Convert.ToSingle(org_a[2]); + a7 = Convert.ToSingle(org_a[3]); + a8 = Convert.ToSingle(org_a[4]); + a9 = Convert.ToSingle(org_a[5]); + a10 = Convert.ToSingle(org_a[6]); + a11 = Convert.ToSingle(org_a[7]); + a12 = Convert.ToSingle(org_a[8]); + a13 = Convert.ToSingle(org_a[9]); + a14 = Convert.ToSingle(org_a[10]); + a15 = Convert.ToSingle(org_a[11]); + + double[][] Y = new double[12][]; + for (int i = 0; i < 12; i++) + { + Y[i] = new double[1]; + } + + Y[0][0] = Convert.ToDouble(a4); + Y[1][0] = Convert.ToDouble(a5); + Y[2][0] = Convert.ToDouble(a6); + Y[3][0] = Convert.ToDouble(a7); + Y[4][0] = Convert.ToDouble(a8); + Y[5][0] = Convert.ToDouble(a9); + Y[6][0] = Convert.ToDouble(a10); + Y[7][0] = Convert.ToDouble(a11); + Y[8][0] = Convert.ToDouble(a12); + Y[9][0] = Convert.ToDouble(a13); + Y[10][0] = Convert.ToDouble(a14); + Y[11][0] = Convert.ToDouble(a15); + double[] b = new double[12]; + b[0] = Convert.ToDouble(a4); + b[1] = Convert.ToDouble(a5); + b[2] = Convert.ToDouble(a6); + b[3] = Convert.ToDouble(a7); + b[4] = Convert.ToDouble(a8); + b[5] = Convert.ToDouble(a9); + b[6] = Convert.ToDouble(a10); + b[7] = Convert.ToDouble(a11); + b[8] = Convert.ToDouble(a12); + b[9] = Convert.ToDouble(a13); + b[10] = Convert.ToDouble(a14); + b[11] = Convert.ToDouble(a15); + if (pre_sensor_data == null) + { + pre_sensor_data = new double[12]; + pre_sensor_data[0] = Convert.ToDouble(a4); + pre_sensor_data[1] = Convert.ToDouble(a5); + pre_sensor_data[2] = Convert.ToDouble(a6); + pre_sensor_data[3] = Convert.ToDouble(a7); + pre_sensor_data[4] = Convert.ToDouble(a8); + pre_sensor_data[5] = Convert.ToDouble(a9); + pre_sensor_data[6] = Convert.ToDouble(a10); + pre_sensor_data[7] = Convert.ToDouble(a11); + pre_sensor_data[8] = Convert.ToDouble(a12); + pre_sensor_data[9] = Convert.ToDouble(a13); + pre_sensor_data[10] = Convert.ToDouble(a14); + pre_sensor_data[11] = Convert.ToDouble(a15); + return; + } + + double[] result = new double[26]; + + if (string.IsNullOrEmpty(DeviceName)) + { + result = AR1_linear_AE.CallStatic("Senser2Angle", b, pre_sensor_data); + Version = AR1_linear_AE.GetStatic("Version"); + } + else if (DeviceName[5] == 'A') + { + result = AR1_linear_AA.CallStatic("Senser2Angle", b, pre_sensor_data); + Version = AR1_linear_AA.GetStatic("Version"); + } + else if (DeviceName[5] == 'B') + { + result = AR1_linear_AD.CallStatic("Senser2Angle", b, pre_sensor_data); + Version = AR1_linear_AD.GetStatic("Version"); + } + else if (DeviceName[5] == 'C' || DeviceName[5] == 'D') + { + result = AR1_linear_AE.CallStatic("Senser2Angle", b, pre_sensor_data); + Version = AR1_linear_AE.GetStatic("Version"); + } + else if (DeviceName[5] == 'E' || DeviceName[5] == 'F') + { + result = AR1_linear_AG.CallStatic("Senser2Angle", b, pre_sensor_data); + Version = AR1_linear_AG.GetStatic("Version"); + } + + if (DeviceName.Contains('L')) + { + string str = string.Empty; + for (int i = 0; i < result.Length; i++) + { + str += result[i] + ","; + } + Debug.LogError("Left Res: " + str); + } + Array.Copy(b, pre_sensor_data, pre_sensor_data.Length); + angle_data = new List(result); + //Debug.Log("Debug " + angle_data.ToArray().ToString()); + + if (Math.Abs(result[5]) >= trigger_value * 100) + { + input.trgButton = true; + + input.trgValue = (float)((Math.Abs(result[5]) - trigger_value * 100) / 65); + } + + if (Math.Abs(result[9]) >= grab_value * 100 && Math.Abs(result[13]) >= grab_value * 100) + input.grab = true; + + if (Math.Abs(result[0]) >= trackpad_value * 60) + { + input.trackpad_touch = true; + } + } + } + + private float CalculateVariance(Queue queue) + { + if (queue.Count == 0) return 0; + float mean = queue.Average(); + return queue.Sum(x => (x - mean) * (x - mean)) / queue.Count; + } + + void UpdateQueue(Queue queue, float value) + { + if (queue.Count >= QUEUE_MAX_SIZE) + { + queue.Dequeue(); + } + queue.Enqueue(value); + } + + public bool StartCalibration(CalibrationType calibrationType) + { + if (isCalibration) + { + return false; + } + isCalibration = true; + mCalibrationType = calibrationType; + return true; + } + + public bool StopCalibration(CalibrationType calibrationType) + { + + //line = UDE_API.GetDeviceDataByName(DeviceName); + if (string.IsNullOrEmpty(line)) + { + return false; + } + if (!isCalibration) + { + return false; + } + //Debug.Log(line); + //var data = line.Split(','); + + //f4 = Convert.ToSingle(data[0]); + //f5 = Convert.ToSingle(data[1]); + //f6 = Convert.ToSingle(data[2]); + //f7 = Convert.ToSingle(data[3]); + //f8 = Convert.ToSingle(data[4]); + //f9 = Convert.ToSingle(data[5]); + //f10 = Convert.ToSingle(data[6]); + //f11 = Convert.ToSingle(data[7]); + //f12 = Convert.ToSingle(data[8]); + //f13 = Convert.ToSingle(data[9]); + //f14 = Convert.ToSingle(data[10]); + //f15 = Convert.ToSingle(data[11]); + //if (data.Length > 12 && data.Length <= 16) + //{ + // f16 = Convert.ToSingle(data[12]); + // f17 = Convert.ToSingle(data[13]); + // f18 = Convert.ToSingle(data[14]); + //} + //else if (data.Length > 16) + //{ + // f16 = Convert.ToSingle(data[16]); + // f17 = Convert.ToSingle(data[17]); + // f18 = Convert.ToSingle(data[18]); + //} + + switch (calibrationType) + { + case CalibrationType.Fist: + h4 = f4; + h5 = f5; + h6 = f6; + h7 = f7; + + h9 = f9; + h10 = f10; + h12 = f12; + h13 = f13; + h15 = f15; + isCalibration = false; + mCalibrationType = CalibrationType.FistFin; + SaveCalibrationDataPermission = true; + break; + case CalibrationType.Adduct: + + n4 = f4; + n5 = f5; + n6 = f6; + n7 = f7; + n8 = f8; + n9 = f9; + n10 = f10; + n11 = f11; + n12 = f12; + n13 = f13; + n14 = f14; + n15 = f15; + isCalibration = false; + mCalibrationType = CalibrationType.AdductFin; + + break; + case CalibrationType.Stretch: + + h8 = f8; + h11 = f11; + h14 = f14; + isCalibration = false; + mCalibrationType = CalibrationType.Completed; + break; + } + return true; + } + + public CalibrationType GetCalibrationType() + { + return mCalibrationType; + } + + public List GetAngleData() + { + return angle_data; + } + + public List GetRawData() + { + return raw_data; + } + + public void CalibrationCenterData() + { + centerCalib = true; + ReadControllerSavedData = true; + } + + public void StartCalibrationRangeData() + { + rangeCalib = true; + } + + public void StopCalibrationRangeData() + { + PlayerPrefs.SetFloat($"{DeviceName}_X_MAX", x_max_data); + PlayerPrefs.SetFloat($"{DeviceName}_X_MIN", x_min_data); + PlayerPrefs.SetFloat($"{DeviceName}_Y_MAX", y_max_data); + PlayerPrefs.SetFloat($"{DeviceName}_Y_MIN", y_min_data); + ReadControllerSavedData = true; + rangeCalib = false; + } + + public InputData GetInputData() + { + return input; + } + + public void SetDeadZone(float dead_zone) + { + this.dead_zone = dead_zone; + PlayerPrefs.SetFloat($"{DeviceName}_DeadZone", dead_zone); + } + + public float GetDeadZone() + { + return dead_zone; + } + + public void SetTriggerValue(float trigger_value) + { + this.trigger_value = trigger_value; + PlayerPrefs.SetFloat($"{DeviceName}_TriggerValue", trigger_value); + } + + public float GetTriggerValue() + { + return trigger_value; + } + + public void SetGrabValue(float grab_value) + { + this.grab_value = grab_value; + PlayerPrefs.SetFloat($"{DeviceName}_GrabValue", grab_value); + } + + public float GetGrabValue() + { + return grab_value; + } + + public void SetTrackpadValue(float trackpad_value) + { + this.trackpad_value = trackpad_value; + PlayerPrefs.SetFloat($"{DeviceName}_TrackpadValue", trackpad_value); + } + + public float GetTrackpadValue() + { + return trackpad_value; + } + + public double[] GetCalibrationInfoOffset() + { + double[] calibration_info = new double[12]; + double[] org_n = new double[12] { n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15 }; + double[] org_h = new double[12] { h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, h14, h15 }; + for (int i = 0; i < 12; i++) + { + calibration_info[i] = Mathf.Abs((float)(org_n[i] - org_h[i])); + } + + return calibration_info; + } + + public string GetAlgorithmVerName() + { + return Version; + } + +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/BleHandDriver.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/BleHandDriver.cs.meta new file mode 100644 index 0000000..da5e1c7 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/BleHandDriver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a8b325d93d9ba94ebba4418ec987a5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/DeviceManager.cs b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/DeviceManager.cs new file mode 100644 index 0000000..299db8d --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/DeviceManager.cs @@ -0,0 +1,68 @@ +using System.Collections; +using System.Collections.Generic; +using Unity.VisualScripting; +using UnityEngine; + +public class DeviceManager : MonoBehaviour +{ + + // Start is called before the first frame update + void Start() + { + devices = new List(); + UDE_API.UDE_Init(); + + UDE_API.StartEnumDevices(); + } + + private float time = 3; + + private List devices; + + // Update is called once per frame + void Update() + { + if (time < 0) + { + if (devices.Count < 2) + { + devices = UDE_API.GetDeviceList(); + return; + } + UDE_API.StopEnumDevices(); + //if (string.IsNullOrEmpty(Com_L.DeviceName)) + //{ + // if (devices[0].Contains("L")) + // { + // Com_L.DeviceName = devices[0]; + // } + // else + // { + // Com_L.DeviceName = devices[1]; + // } + // time = 3; + // return; + //} + + //if (string.IsNullOrEmpty(Com_R.DeviceName)) + //{ + // if (devices[0].Contains("R")) + // { + // Com_R.DeviceName = devices[0]; + // } + // else + // { + // Com_R.DeviceName = devices[1]; + // } + // time = 4; + //} + } + + if (time > 3) + { + return; + } + + time -= Time.deltaTime; + } +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/DeviceManager.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/DeviceManager.cs.meta new file mode 100644 index 0000000..64a37f3 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/DeviceManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d987bb43fcb068146b8f14e085d1e897 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Mcu2PcProto.cs b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Mcu2PcProto.cs new file mode 100644 index 0000000..bd33d65 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Mcu2PcProto.cs @@ -0,0 +1,11 @@ +public class Mcu2PcProto +{ + public byte DeviceID = Pc2McuProto.DeviceID.MCU; + public byte Address = Pc2McuProto.HumanAddress.LeftArm; + public byte CommandType = Pc2McuProto.CommandType.ADC_IMU_16; + public byte DataType = Pc2McuProto.DataType.AngleAndAbduceData; + public byte DataLength = 60; + public short[] AngleDatas = null; + public short[] AbduceDatas = null; + public byte crc = 0; +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Mcu2PcProto.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Mcu2PcProto.cs.meta new file mode 100644 index 0000000..27f8a38 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Mcu2PcProto.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2e05399a8566a848b8f0037a00258b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Pc2McuProto.cs b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Pc2McuProto.cs new file mode 100644 index 0000000..9e39a8c --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Pc2McuProto.cs @@ -0,0 +1,86 @@ +using System; + +[Serializable] +public static class Pc2McuProto +{ + public struct DeviceID + { + public const byte PC = 0xA0; + public const byte MCU = 0x0A; + } + public struct HumanAddress + { + public const byte LeftPalm = 0x01;//×óÊÖÊÖÕÆ + public const byte RightPalm = 0x02;//ÓÒÊÖÊÖÕÆ + public const byte LeftArm = 0x03;//×óÊÖÊÖ±Û + public const byte RightArm = 0x04;//ÓÒÊÖÊÖ±Û + public const byte LeftShoulder = 0x05;//×óÊÖ¼ç°ò + public const byte RightShoulder = 0x06;//ÓÒÊÖ¼ç°ò + public const byte LeftChest = 0x07;//×ó±ßÐØ²¿ + public const byte RightChest = 0x08;//ÓÒ±ßÐØ²¿ + //... + public const byte OtherAddress = 0xFF;//ÆäËûµØÖ· + } + + public struct CommandType + { + public const byte ADC_IMU_16 = 0x01; + public const byte CalibrationState1 = 0x02; + public const byte CalibrationState2 = 0x03; + public const byte SHAKE_CONTROLLER_COMMAND = 0x04; + public const byte BATTERY_VOLTAGE_DATA = 0x05; + public const byte CalibrationState5 = 0x06; + public const byte LINK_STATUS = 0x07; + public const byte CalibrationState7 = 0x08; + public const byte CalibrationState8 = 0x09; + public const byte CalibrationState9 = 0x0A; + //... + public const byte StateTransStop = 0xC8; + public const byte DebugAngle1 = 0xC9; + public const byte DebugAngle2 = 0xCA; + public const byte DebugAngle3 = 0xCB; + public const byte DebugAngle4 = 0xCC; + public const byte DebugAngle5 = 0xCD; + public const byte DebugAngle6 = 0xCE; + public const byte DebugAngle7 = 0xCF; + public const byte DebugAngle8 = 0xD0; + public const byte DebugAngle9 = 0xD1; + public const byte DebugAngle10 = 0xD2; + public const byte DebugAngle11 = 0xD3; + public const byte DebugAngle12 = 0xD4; + public const byte DebugAbduce1 = 0xD5; + public const byte DebugAbduce2 = 0xD6; + public const byte DebugAbduce3 = 0xD7; + + public const byte HeartBeat = 0x68; + + public const byte StopDataReceive = 0xA0;//Í£Ö¹½ÓÊÕÊý¾Ý + + } + + public struct DataType + { + public const byte AngleAndAbduceData = 0x01;//·ù¶È½Ç+Çã½ÇÊý¾Ý + public const byte AngleData = 0x02;//·ù¶È½ÇÊý¾Ý + public const byte IMUData = 0x03;//IMUÊý¾Ý + public const byte AbduceData = 0x04;//Çã½ÇÊý¾Ý + public const byte AccelerationData = 0x05;//¼ÓËÙ¶ÈÊý¾Ý + public const byte GyroData = 0x06;//ÍÓÂÝÒÇÊý¾Ý + public const byte OffsetData = 0x07;//Î»ÒÆÊý¾Ý + //... + public const byte AllData = 0xC8;//·ù¶ÈÊý¾Ý+Çã½ÇÊý¾Ý+ÖØÁ¦ËÙ¶È(È«Êý¾ÝÖ÷ÒªÓÃÓÚµ÷ÊÔ) + //... + public const byte OtherData = 0xFF;//ÆäËûÊý¾Ý + } + + + public static byte check_num(byte[] buffer, int size) + { + byte cr = 0; + for (int i = 2; i < size - 1; i++) + { + cr += buffer[i]; + } + return cr; + } +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Pc2McuProto.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Pc2McuProto.cs.meta new file mode 100644 index 0000000..e9155ee --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/Pc2McuProto.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2445ac89ff59a4c448d425be3ec80086 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_API.cs b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_API.cs new file mode 100644 index 0000000..8ea8725 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_API.cs @@ -0,0 +1,862 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using static Pc2McuProto; + +public static class UDE_API +{ + private const string package_name = "cn.wch.ch9140lib"; + + static AndroidJavaClass UnityPlayer; + static AndroidJavaObject CurrentActivity; + static AndroidJavaObject App; + static AndroidJavaClass CH9140BluetoothManager; + static AndroidJavaObject ManagerInstance; + + static ConcurrentDictionary DeviceMacDir; //çº¿ç¨‹ä¿æŠ¤çš„å­—å…¸,key是è“牙å,value是macåœ°å€ + + static ConcurrentDictionary DeviceDir; + + private static bool isSearchVaild = true; //是å¦å‡†è®¸æœç´¢è®¾å¤‡ + + static ConcurrentDictionary DeviceConnectState; + + + /// + /// åˆå§‹åŒ– + /// + public static void UDE_Init() + { + DeviceConnectState = new ConcurrentDictionary(); + DeviceMacDir = new ConcurrentDictionary(); + DeviceDir = new ConcurrentDictionary(); + + // UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + // CurrentActivity = UnityPlayer.GetStatic("currentActivity"); + // App = CurrentActivity.Call("getApplication"); + // + // CH9140BluetoothManager = new AndroidJavaClass(package_name + ".CH9140BluetoothManager"); + // ManagerInstance = CH9140BluetoothManager.CallStatic("getInstance"); + // + // ManagerInstance.Call("init", App); + BluetoothLEHardwareInterface.Initialize(true, false, () => { }, + (error) => { Debug.LogError($"UDE Init Faild ,{error}"); }); + //registerSerialModemNotify(); + Debug.Log("UDE:" + "Init Success!!"); + } + + + /// + /// å¯åЍæœç´¢è®¾å¤‡ + /// + public static void StartEnumDevices() + { + DeviceDir.Clear(); + BluetoothLEHardwareInterface.ScanForPeripheralsWithServices(null, (address, name) => + { + if (name.Contains("UDST")) + { + Debug.Log("UDE:" + $"Enum Result {name}"); + + if (string.IsNullOrEmpty(address)) + { + Debug.Log("UDE:" + "Device is Invalid!ï¼"); + //LogUtil.d("è¯¥è®¾å¤‡ä¸æ˜¯åˆæ³•设备"); + return; + } + + RegisterDevice(name, address); + } + }, null); + // EnumResult enumResult = new EnumResult();//创建一个回调对象 + // Debug.Log("UDE:" + "Start Enum Devices!!"); + // ManagerInstance.Call("startEnumDevices", enumResult); + // Debug.Log("UDE:" + "Start Enum Devices Success!!"); + } + + /// + /// åœæ­¢æœç´¢è®¾å¤‡ + /// + public static void StopEnumDevices() + { + BluetoothLEHardwareInterface.StopScan(); + Debug.Log("UDE:" + "Stop Enum Deivces!!"); + } + + /// + /// 注册设备 + /// + /// 设备å + /// åœ°å€ + private static void RegisterDevice(string name, string mac) + { + if (DeviceMacDir.ContainsKey(name)) + { + DeviceMacDir[name] = mac; + return; + } + + DeviceMacDir.TryAdd(name, mac); + UDE_Device device = new UDE_Device(); + DeviceDir.TryAdd(mac, device); + } + + /// + /// å–æ¶ˆæ³¨å†Œè®¾å¤‡ + /// + /// 需è¦å–消的设备å + /// + public static bool UnRegisterDevice(string name) + { + string mac = DeviceMacDir[name]; + bool result = DeviceDir.TryRemove(mac, out UDE_Device _); + result &= DeviceMacDir.TryRemove(name, out string _); + return result; + } + + /// + /// 获å–设备åçš„é›†åˆ + /// + /// + public static List GetDeviceList() + { + return DeviceMacDir.Keys.ToList(); + } + + /// + /// 按照åå­—å¼€å¯è®¾å¤‡ + /// + /// + public static bool OpenDeviceByName(string name, Action action = null) + { + if (!DeviceMacDir.ContainsKey(name)) + { + return false; + } + + string mac = DeviceMacDir[name]; + + DeviceDir[mac].OpenDevice(mac, action); + SetConnectByMac(mac, false); + return true; + } + + /// + /// 按照å字关闭设备 + /// + /// + public static bool CloseDeviceByName(string name) + { + if (!DeviceMacDir.ContainsKey(name)) + { + return false; + } + + string mac = DeviceMacDir[name]; + DeviceDir[mac].CloseDevice(mac, true); + return true; + } + + public static string GetDeviceDataByName(string name) + { + if (DeviceMacDir == null || !DeviceMacDir.ContainsKey(name)) + { + return null; + } + + string mac = DeviceMacDir[name]; + Debug.Log($"name :{name},mac:{mac}"); + return DeviceDir[mac].GetDeviceData(); + } + + public static int GetDeviceBatteryByName(string name) + { + if (DeviceMacDir == null || !DeviceMacDir.ContainsKey(name)) + { + return 0; + } + + string mac = DeviceMacDir[name]; + Debug.Log($"name :{name},mac:{mac}"); + return DeviceDir[mac].GetBatteryType(); + } + + /// + /// å¼€å¯æŽ¥æ”¶è“ç‰™æ•°æ® + /// + public static void Pc2Mcu_StartReceive(string name) + { + if (name == null) + { + return; + } + + if (!DeviceMacDir.ContainsKey(name)) + { + return; + } + + string mac = DeviceMacDir[name]; + + DeviceDir[mac].Pc2Mcu_StartReceive(mac); + } + + /// + /// åœæ­¢æŽ¥æ”¶è“ç‰™æ•°æ® + /// + public static void Pc2Mcu_StopReceive(string name) + { + if (!DeviceMacDir.ContainsKey(name)) + { + return; + } + + string mac = DeviceMacDir[name]; + DeviceDir[mac].Pc2Mcu_StopReceive(mac); + } + + /// + /// + /// + public static void Pc2Mcu_StringData(string name) + { + if (!DeviceMacDir.ContainsKey(name)) + { + return; + } + + string mac = DeviceMacDir[name]; + DeviceDir[mac].Pc2Mcu_StringData(mac); + } + + /// + /// å‘逿Œ¯åЍå馈 + /// + public static void Pc2Mcu_SendVibration(string name, byte address, byte time, byte stren) + { + if (!DeviceMacDir.ContainsKey(name)) + { + return; + } + string mac = DeviceMacDir[name]; + DeviceDir[mac].Pc2Mcu_SendVibration(mac, address, time, stren); + } + + /// + /// å¯åŠ¨å¿ƒè·³ + /// + public static void OnHeartBeat(string name) + { + if (name == null) + { + return; + } + + if (!DeviceMacDir.ContainsKey(name)) + { + return; + } + + string mac = DeviceMacDir[name]; + DeviceDir[mac].OnHeartBeat(mac); + Debug.Log($"[HeartBeat] in {DateTime.Now.ToString("G")}"); + } + + /// + /// 是å¦è¿žæŽ¥ + /// + /// + public static bool IsCon() + { + bool result = false; + + foreach (var item in DeviceConnectState.Values) + { + //Debug.Log("---iscon---" + item.ToString() + "//" + item.Value.IsCon); + result |= item; + } + + return result; + } + + public static void SetMTU(string name, int mtu) + { + if (!DeviceMacDir.ContainsKey(name)) + { + return; + } + + string mac = DeviceMacDir[name]; + DeviceDir[mac].SetMtu(mac, mtu); + } + + public static void SetMTUByMac(string mac, int mtu) + { + if (!DeviceDir.ContainsKey(mac)) + { + return; + } + + DeviceDir[mac].SetMtu(mac, mtu); + } + + /// + /// èŽ·å–æœ€å¤§ä¼ è¾“å•å…ƒ + /// + /// + public static int GetMTUByMac(string mac) + { + if (!DeviceDir.ContainsKey(mac)) + { + return -1; + } + + return DeviceDir[mac].GetMTU(mac); + } + + + public static bool SetSerialBaudByMac(string mac) + { + if (!DeviceMacDir.ContainsKey(mac)) + { + return false; + } + + return DeviceDir[mac].SetSerialBaud(mac); + } + + /// + /// 设置串行调制解调器 + /// + /// + public static bool SetSerialModemByMac(string mac) + { + if (!DeviceMacDir.ContainsKey(mac)) + { + return false; + } + + return DeviceDir[mac].SetSerialModem(mac); + } + + public static void SetSearchVaild(bool flag) + { + isSearchVaild = flag; + } + + public static bool IsSupportedFirmware() + { + return ManagerInstance.Call("isSupportedFirmware"); + } + + public static bool IsSearchVaild() + { + return isSearchVaild; + } + + public static bool CheckConnectByName(string Device_name) + { + if (Device_name == string.Empty || !DeviceMacDir.ContainsKey(Device_name)) + { + return false; + } + + string mac = DeviceMacDir[Device_name]; + if (!DeviceDir.ContainsKey(mac)) + { + return false; + } + + return DeviceDir[mac].IsConnect; + } + + public static void SetConnectByMac(string mac, bool connect) + { + DeviceConnectState[mac] = connect; + } + + + public static int GetTransferFrequency(string name) + { + if (!DeviceMacDir.ContainsKey(name)) + { + return 0; + } + string mac = DeviceMacDir[name]; + return DeviceDir[mac].Transfer_freq; + } + + /// + /// 开坿œç´¢çš„回调 + /// + public class EnumResult : AndroidJavaProxy + { + public EnumResult() : base("cn.wch.ch9140lib.callback.EnumResult") + { + } + + public void onResult(AndroidJavaObject device, int var2, byte[] var3) + { + Debug.Log("UDE:" + $"onResult!!"); + + string name = device.Call("getName"); + + string mac = device.Call("getAddress"); + Debug.Log("UDE:" + $"Enum Result {name}"); + + if (string.IsNullOrEmpty(mac)) + { + Debug.Log("UDE:" + "Device is Invalid!ï¼"); + //LogUtil.d("è¯¥è®¾å¤‡ä¸æ˜¯åˆæ³•设备"); + return; + } + + RegisterDevice(name, mac); + //UDE_API.StopEnumDevices(); + //UDE_API.OpenDevice(mac); + } + } +} + +public class UDE_Device +{ + ConcurrentDictionary DeviceDir; //çº¿ç¨‹ä¿æŠ¤çš„å­—å…¸,key是è“牙å,value是macåœ°å€ + + private string data_s; + + private readonly string serivce_uuid = "8653000a-43e6-47b7-9cb0-5fc21d4ae340"; + private readonly string write_character_uuid = "8653000c-43e6-47b7-9cb0-5fc21d4ae340"; + private readonly string read_character_uuid = "8653000b-43e6-47b7-9cb0-5fc21d4ae340"; + + + int index = 0; + + List one_buff = new List(); + private int buff_len = int.MaxValue; + + + private int count = 0; + + public int Transfer_freq; + + private DateTime last_time; + public bool IsConnect = false; + public Action ConnectListener; + + private int last_battery = 0; + + private int _batteryType = 0; + + public int BatteryType + { + get => _batteryType; + set + { + _batteryType = value; + } + } + + /// + /// å¼€å¯è®¾å¤‡ + /// + /// è®¾å¤‡åœ°å€ + public void OpenDevice(string mac, Action action = null) + { + ConnectListener = action; + Debug.Log("UDE:" + $"Start Open Device {mac} !!"); + BluetoothLEHardwareInterface.ConnectToPeripheral(mac, (address) => { }, null, + (address, service, characteristic) => + { + Debug.Log("UDE:" + $"{address} Connect Success!!!"); + IsConnect = true; + Pc2Mcu_StartReceive(mac); + ConnectListener?.Invoke(address, IsConnect); + }); + UDE_API.SetSearchVaild(false); + } + + /// + /// è“ç‰™è¯»å–æ•°æ®è§£æž + /// + /// è“牙数æ®é“¾è¡¨ + private void ReadBuffAnalysis(List read_buff_list) + { + + byte[] read_buff = read_buff_list.ToArray(); + StringBuilder msg = new StringBuilder(); + Mcu2PcProto mcu2PcProto = new Mcu2PcProto(); + mcu2PcProto.crc = read_buff[read_buff.Length - 1]; + if (mcu2PcProto.crc != Pc2McuProto.check_num(read_buff, read_buff.Length)) + { + return; + } + + if (read_buff[0] != 0xAA) + { + return; + } + + if (read_buff[1] != 0x55) + { + return; + } + + + mcu2PcProto.Address = read_buff[2]; + mcu2PcProto.CommandType = read_buff[3]; + mcu2PcProto.DataType = read_buff[4]; + mcu2PcProto.DataLength = read_buff[5]; + byte[] decrypt_data = new byte[mcu2PcProto.DataLength]; + Array.Copy(read_buff, 6, decrypt_data, 0, decrypt_data.Length); + + decrypt(decrypt_data, (short)decrypt_data.Length); + + if (mcu2PcProto.CommandType == CommandType.BATTERY_VOLTAGE_DATA) + { + short[] int16arry = new short[1]; + ConvertByte2Int16Aarry(decrypt_data, 0, 1, out int16arry); + short battery = int16arry[0]; + + int battery_type; + if (battery <= 2180) + { + battery_type = 1; + } + else if (battery <= 2290) + { + battery_type = 2; + } + else if (battery <= 2350) + { + battery_type = 3; + } + else if (battery <= 2500) + { + battery_type = 4; + } + else + { + battery_type = 5; + } + + if (battery_type > last_battery) + { + if (battery <= 2200) + { + battery_type = 1; + } + else if (battery <= 2310) + { + battery_type = 2; + } + else if (battery <= 2370) + { + battery_type = 3; + } + else if (battery <= 2520) + { + battery_type = 4; + } + else + { + battery_type = 5; + } + } + + last_battery = battery_type; + _batteryType = battery_type; + + return; + } + + if (mcu2PcProto.CommandType == CommandType.ADC_IMU_16) + { + + ConvertByte2Int16Aarry(decrypt_data, 0, mcu2PcProto.DataLength / 2, out mcu2PcProto.AngleDatas); + + for (int i = 0; i < mcu2PcProto.AngleDatas.Length; i++) + { + msg.Append(mcu2PcProto.AngleDatas[i]); + if (i != mcu2PcProto.AngleDatas.Length - 1) + { + msg.Append(","); + } + } + + if (last_time == null) + { + last_time = DateTime.Now; + } + data_s = msg.ToString(); + count++; + if (DateTime.Now - last_time > TimeSpan.FromSeconds(1)) + { + Transfer_freq = count; + count = 0; + last_time = DateTime.Now; + } + } + + } + + /// + /// 解密算法 è§£å¯†å¾—åŽŸå§‹æ•°æ® + /// + void decrypt(byte[] arr, short len) + { + for (int i = 0; i < len; i++) + { + arr[i] ^= 0x01; + arr[i] ^= 0x80; + } + } + + /// + /// å°†Byte类型数æ®è½¬æ¢ä¸ºIniç±»åž‹æ•°æ® + /// + public void ConvertByte2Int16Aarry(byte[] buff, int byte_index, int int_length, out short[] data) + { + data = new short[int_length]; + for (int i = 0; i < int_length; i++) + { + Array.Reverse(buff, byte_index, 2); + data[i] = BitConverter.ToInt16(buff, byte_index); + byte_index += 2; + } + } + + + /// + /// 关闭设备 + /// + public void CloseDevice(string mac, bool force) + { + BluetoothLEHardwareInterface.DisconnectPeripheral(mac, + (address) => { Debug.Log("UDE:" + $"Close Device {address}"); + IsConnect = false; + ConnectListener?.Invoke(address, IsConnect); + }); + } + + /// + /// 设置传递数æ®çš„宽度 + /// + /// + private void SetMTU(string mac, int mtu) + { + BluetoothLEHardwareInterface.RequestMtu(mac, mtu, + (address, mtu1) => { Debug.Log("UDE:" + $"Set MTU Success {mtu1}!!"); }); + // ManagerInstance.Call("setMTU", mac,mtu, mtu_callback); + } + + public void SetMtu(string mac, int mtu) + { + SetMTU(mac, mtu); + } + + /// + /// èŽ·å–æœ€å¤§ä¼ è¾“å•å…ƒ + /// + /// + public int GetMTU(string mac) + { + return 200; + } + + /// + /// å‘é€ç»™ä¸‹ä½æœºçš„实际方法 + /// + /// + /// + /// + private int Write(string mac, byte[] data, int length) + { + int len = 0; + BluetoothLEHardwareInterface.WriteCharacteristic(mac, serivce_uuid, write_character_uuid, data, length, true, + (address) => + { + UDE_API.SetConnectByMac(address, true); + UDE_API.SetSearchVaild(true); + Debug.Log("å¼€å¯äº†è“牙:" + $"当å‰è¿žæŽ¥çжæ€{true}"); + SetMTU(address, 200); + + Debug.Log("UDE:" + $"Write Success {mac} {address}!!"); + BluetoothLEHardwareInterface.SubscribeCharacteristic(mac, serivce_uuid, read_character_uuid, + (characteristic) => { }, (characteristic, bytes) => + { + try + { + for (int i = 0; i < bytes.Length; i++) + { + if (index == 0) + { + if (bytes[i] != 0xAA) + { + continue; + } + } + + if (index == 1) + { + if (bytes[i] != 0x55) + { + one_buff.Clear(); + index = 0; + continue; + } + } + + one_buff.Add(bytes[i]); + + if (index == 5) + { + buff_len = bytes[i]; + } + + + if (index >= buff_len + 6 && buff_len != Int32.MaxValue) + { + ReadBuffAnalysis(one_buff); + one_buff.Clear(); + index = 0; + buff_len = int.MaxValue; + } + else + { + index++; + } + } + } + catch (Exception) + { + throw; + } + }); + //mac = address; + }); + //Debug.Log("UDE:" + $"Write Data Length {length}"); + return len; + } + + /// + /// 设置串行波特率 + /// + /// + public bool SetSerialBaud(string mac) + { + Debug.Log("UDE:" + " Set Serial Baud!!"); + return false; + } + + /// + /// 设置串行调制解调器 + /// + /// + public bool SetSerialModem(string mac) + { + Debug.Log("UDE:" + "Set Serial Modem!!"); + return false; + } + + private void registerSerialModemNotify() + { + //ModemStatus modemStatus = new ModemStatus(); + //ManagerInstance.Call("registerSerialModemNotify", modemStatus); + Debug.Log("UDE:" + "registerSerialModemNotify Success!!"); + } + + /// + /// 获å–è§£æžå‡ºçš„æ•°æ®å­—符串 + /// + /// + public string GetDeviceData() + { + return data_s; + } + + /// + /// 获å–ç”µé‡ + /// + /// + public int GetBatteryType() + { + return BatteryType; + } + + /// + /// å¼€å¯æŽ¥æ”¶è“ç‰™æ•°æ® + /// + public void Pc2Mcu_StartReceive(string mac) + { + SendMessage(mac, Pc2McuProto.HumanAddress.LeftPalm, Pc2McuProto.CommandType.ADC_IMU_16, + new byte[] { 0x02, 0x43, 0x56 }); + } + + /// + /// åœæ­¢æŽ¥æ”¶è“ç‰™æ•°æ® + /// + public void Pc2Mcu_StopReceive(string mac) + { + SendMessage(mac, Pc2McuProto.HumanAddress.LeftPalm, Pc2McuProto.CommandType.StopDataReceive, + new byte[] { 0x01 }); + } + + /// + /// æŽ¥æ”¶å­—ç¬¦ä¸²æ•°æ® + /// + public void Pc2Mcu_StringData(string mac) + { + SendMessage(mac, Pc2McuProto.HumanAddress.LeftPalm, 0xD0, + new byte[] { 0x01 }); + } + + /// + /// å‘逿Œ¯åЍå馈 + /// + public void Pc2Mcu_SendVibration(string mac, byte address, byte time, byte stren) + { + SendMessage(mac, Pc2McuProto.HumanAddress.LeftPalm, Pc2McuProto.CommandType.SHAKE_CONTROLLER_COMMAND, + new byte[] { address, 0x00,time, stren }); + } + + /// + /// å¯åŠ¨å¿ƒè·³ + /// + public void OnHeartBeat(string mac) + { + SendMessage(mac, Pc2McuProto.HumanAddress.LeftPalm, Pc2McuProto.CommandType.HeartBeat, new byte[] { 0x42 }); + Debug.Log($"[HeartBeat] in {DateTime.Now.ToString("G")}"); + } + + + private void SendMessage(string mac, byte humanAddress, byte commandType, byte[] data) + { + byte[] message = new byte[6 + data.Length]; + message[0] = 0x55; + message[1] = 0xAA; + message[2] = humanAddress; + message[3] = commandType; + message[4] = (byte)data.Length; + for (int i = 0; i < data.Length; i++) + { + message[5 + i] = data[i]; + } + + byte crc = Pc2McuProto.check_num(message, message.Length); + int crc_index = message.Length - 1; + message[crc_index] = crc; + + try + { + int result = Write(mac, message, message.Length); + Debug.Log($"UDE: Write Result---{mac} {message.Length}"); + } + catch (Exception e) + { + Debug.LogError(e); + } + } +} \ No newline at end of file diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_API.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_API.cs.meta new file mode 100644 index 0000000..f7e60db --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_API.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aef9c31cbb5665247a4d7963765f6853 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_SDK.cs b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_SDK.cs new file mode 100644 index 0000000..2489ec6 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_SDK.cs @@ -0,0 +1,733 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Unity.XR.PXR; +using UnityEngine; + + +namespace UDESDK +{ + public class UDE_SDK + { + private bool IsInitialized = false; + private Dictionary bleHandDriver = new(); + + /// + /// Bluetooth Initial. + /// + public void UDE_BleInit() + { + UDE_API.UDE_Init(); + IsInitialized = true; + } + + /// + /// Start Searching Device. + /// + /// + public bool UDE_BleStartSearching() + { + if(!IsInitialized) + { + return false; + } + UDE_API.StartEnumDevices(); + return true; + } + + /// + /// Stop Searching Device. + /// + /// + public bool UDE_BleStopSearching() + { + if (!IsInitialized) + { + return false; + } + UDE_API.StopEnumDevices(); + return true; + } + + /// + /// Get Bluetooth Devices List. + /// + /// + public List UDE_GetBleDeviceList() + { + if (!IsInitialized) + { + return new List(); + } + return UDE_API.GetDeviceList(); + } + + /// + /// Connecting a Device by Name. + /// + /// Device Name + public bool UDE_ConnectCertainDevice(string DeviceName, Action action = null) + { + if(string.IsNullOrEmpty(DeviceName) || !IsInitialized) + { + return false; + } + + if (UDE_API.OpenDeviceByName(DeviceName, action)) + { + bleHandDriver.Add(DeviceName, new BleHandDriver(DeviceName)); + return true; + } + + return false; + } + + /// + /// Get Connection State of a Device. + /// + /// + /// + public bool UDE_CheckDeviceIsConnect(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !IsInitialized) + { + return false; + } + + return UDE_API.CheckConnectByName(DeviceName); + } + + /// + /// Disconnect a Device. + /// + /// + /// + public bool UDE_DisconnectDevice(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !IsInitialized) + { + return false; + } + + return UDE_API.CloseDeviceByName(DeviceName); + } + + /// + /// Get Device Current Battery Level (1~5) + /// + /// + /// + public int UDE_GetDeviceBatteryLevel(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !IsInitialized) + { + return 0; + } + + return UDE_API.GetDeviceBatteryByName(DeviceName); + } + + /// + /// Data Update. + /// + /// + /// + public bool UDE_RunningDataUpdate(string DeviceName) + { + if(string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + bleHandDriver[DeviceName].Method_update(); + return true; + } + + private int CalibrationStepIndex = 1; + public enum CalibrationType + { + AdductFin = -2, + FistFin = -1, + None, //δ±ê¶¨ + Fist, //ÎÕÈ­ + Adduct, //²¢Â£ + Stretch, //ÕÅ¿ª + Completed //Íê³É + } + /// + /// Start First Calibration Motion. + /// + /// + public bool UDE_CalibrationMotionController(string DeviceName, CalibrationType calibrationType, bool IsStart) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + if ((int)calibrationType < 1) // || (int)calibrationType > 3 ÔÊÐíÖØ¸´±ê¶¨ + { + return false; + } + + BleHandDriver.CalibrationType type = (BleHandDriver.CalibrationType)calibrationType; + + if (IsStart) + { + CalibrationStepIndex = (int)calibrationType; + return bleHandDriver[DeviceName].StartCalibration(type); + } + else + { + CalibrationStepIndex++; + if (CalibrationStepIndex == 4) CalibrationStepIndex = 1; + return bleHandDriver[DeviceName].StopCalibration(type); + } + + } + + /// + /// Get Calibration State, return None if invalid. + /// + /// + /// + public CalibrationType UDE_GetCalibrationType(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return 0; + } + + return (CalibrationType)bleHandDriver[DeviceName].GetCalibrationType(); + } + + /// + /// Get Raw Angle Data, return empty list if invalid. + /// + /// + /// + public List UDE_GetRawAngleData(string DeviceName, bool Raw = false) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return new List(); + } + + if(Raw) + return bleHandDriver[DeviceName].GetRawData(); + else + return bleHandDriver[DeviceName].GetAngleData(); + } + + /// + /// Get calibrate offset value, which shows calibration quaility. + /// + /// + /// + public double[] UDE_GetCalibrationInfoOffset(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return new double[0]; + } + + return bleHandDriver[DeviceName].GetCalibrationInfoOffset(); + } + + /// + /// Get Bluetooth device data transfer frame rate. + /// + /// + /// + public int UDE_GetDeviceTransferFPS(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return 0; + } + + return UDE_API.GetTransferFrequency(DeviceName); + } + + public enum FingerJointType + { + Thumb1, Thumb2, Thumb3, + Index1, Index2, Index3, + Middle1, Middle2, Middle3, + Ring1, Ring2, Ring3, + Pinky1, Pinky2, Pinky3 + } + + /// + /// Get Rotation Transfer Of Each Finger, Return null if invalid. + /// + /// + /// + public Dictionary UDE_GetFingerRotations(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return null; + } + + Vector3 AddRotationTrans(float angle, Axis angleType) + { + float angleX = 0; + float angleY = 0; + float angleZ = 0; + + switch (angleType) + { + case Axis.x_n: + angleX = -angle; + break; + case Axis.y_n: + angleY = -angle; + break; + case Axis.z_n: + angleZ = -angle; + break; + case Axis.x: + angleX = angle; + break; + case Axis.y: + angleY = angle; + break; + case Axis.z: + angleZ = angle; + break; + } + + return new Vector3(angleX, angleY, angleZ); + } + + var Driver = bleHandDriver[DeviceName]; + var Data = Driver.GetAngleData(); + if(Data.Count == 0) + { + return null; + } + + return new Dictionary + { + { FingerJointType.Thumb3, AddRotationTrans((float)Data[0], (Axis)Driver.Pitch) }, + { FingerJointType.Thumb2, AddRotationTrans((float)Data[1], (Axis)Driver.Pitch) }, + { FingerJointType.Thumb1, AddRotationTrans((float)Data[2] * Driver.coefficient + Driver.Thumb1Offset.z, (Axis)Driver.Pitch) + + AddRotationTrans((float)Data[3] + Driver.Thumb1Offset.y, Axis.y) + + AddRotationTrans((float)Data[20] + Driver.Thumb1Offset.x, Axis.x) + }, + + { FingerJointType.Index3, AddRotationTrans((float)Data[4], (Axis)Driver.Pitch) }, + { FingerJointType.Index2, AddRotationTrans((float)Data[5], (Axis)Driver.Pitch) }, + { FingerJointType.Index1, AddRotationTrans((float)Data[6], (Axis)Driver.Pitch) + + AddRotationTrans((float)Data[7], Axis.y) + + AddRotationTrans((float)Data[21], (Axis)Driver.Roll) + }, + + { FingerJointType.Middle3, AddRotationTrans((float)Data[8],(Axis)Driver.Pitch) }, + { FingerJointType.Middle2, AddRotationTrans((float)Data[9],(Axis)Driver.Pitch) }, + { FingerJointType.Middle1, AddRotationTrans((float)Data[10], (Axis)Driver.Pitch) + + AddRotationTrans((float)Data[11], Axis.y) + }, + + { FingerJointType.Ring3, AddRotationTrans((float)Data[12], (Axis)Driver.Pitch) }, + { FingerJointType.Ring2, AddRotationTrans((float)Data[13], (Axis)Driver.Pitch) }, + { FingerJointType.Ring1, AddRotationTrans((float)Data[14], (Axis)Driver.Pitch) + + AddRotationTrans(-(float)Data[15], (Axis)Driver.Yaw) + }, + + { FingerJointType.Pinky3, AddRotationTrans((float)Data[16], (Axis)Driver.Pitch) }, + { FingerJointType.Pinky2, AddRotationTrans((float)Data[17], (Axis)Driver.Pitch) }, + { FingerJointType.Pinky1, AddRotationTrans((float)Data[18], (Axis)Driver.Pitch) + + AddRotationTrans(-(float)Data[19], (Axis)Driver.Yaw) + + AddRotationTrans(-(float)Data[22], (Axis)Driver.Roll) + }, + }; + } + + public string UDE_GetAlgorithmVersionName(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return ""; + } + + return bleHandDriver[DeviceName].GetAlgorithmVerName(); + } + + public enum Axis + { + x = -3, + y = -2, + z = -1, + x_n, + y_n, + z_n + } + + /// + /// Rotate Joint in Specific Order + /// + /// + /// + public void UDE_FingerRotate(Transform Joint, Vector3 Angle) + { + Joint.Rotate(0,0,Angle.z); + Joint.Rotate(0,Angle.y,0); + Joint.Rotate(Angle.x,0,0); + } + + /// + /// Get Three Axis Index order:Pitch, Roll, Yaw. + /// Return null if invalid. + /// + /// + /// + public Axis[] UDE_GetThreeAxis(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return null; + } + + var Driver = bleHandDriver[DeviceName]; + return new Axis[3] { (Axis)Driver.Pitch, (Axis)Driver.Roll, (Axis)Driver.Yaw }; + } + + /// + /// Set Three Axis Index order:Pitch, Roll, Yaw. + /// + /// + /// + public bool UDE_SetThreeAxis(string DeviceName, Axis[] axes) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.Pitch = (BleHandDriver.Axis)axes[0]; + Driver.Roll = (BleHandDriver.Axis)axes[1]; + Driver.Yaw = (BleHandDriver.Axis)axes[2]; + return true; + } + + /// + /// Get Thumb Coefficient Value, return -1 if invalid. + /// + /// + /// + public float UDE_GetThumbCoefficient(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return -1; + } + + var Driver = bleHandDriver[DeviceName]; + return Driver.coefficient; + } + + /// + /// Set Thumb Coefficient Value, Range[0,1]. + /// + /// + /// + public bool UDE_SetThumbCoefficient(string DeviceName, float value) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + if(value < 0 || value > 1) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.coefficient = value; + return true; + } + + /// + /// Get Thumb First Joint Offset Value, return Zero Vector3 if invalid. + /// + /// + /// + public Vector3 UDE_GetThumbFirstJointOffset(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return Vector3.zero; + } + + var Driver = bleHandDriver[DeviceName]; + return Driver.Thumb1Offset; + + } + + /// + /// Set Thumb First Joint Offset Value. + /// + /// + /// + /// + public bool UDE_SetThumbFirstJointOffset(string DeviceName, Vector3 value) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.Thumb1Offset = value; + return true; + } + + /// + /// Get Data Of Extra Connected Device (Button, Joystick) + /// + /// + /// + public InputData UDE_GetInputDeviceData(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return new InputData(); + } + + var Driver = bleHandDriver[DeviceName]; + return Driver.GetInputData(); + } + + /// + /// Make Jostick Reset to Zero center point + /// + /// + /// + public bool UDE_JoystickCenterCalibration(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.CalibrationCenterData(); + return true; + } + + /// + /// Get the Maximum Range Value of Joystick and Make Calibration + /// + /// + /// true is start, false is end + /// + public bool UDE_JoystickRangeCalibration(string DeviceName, bool IsStart) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + if(IsStart) + { + Driver.StartCalibrationRangeData(); + } + else + { + Driver.StopCalibrationRangeData(); + } + + return true; + } + + /// + /// Get Joystick Dead Zone Value, range[0,1], return -1 if invalid. + /// + /// + /// + public float UDE_GetJoystickDeadZone(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return -1; + } + + var Driver = bleHandDriver[DeviceName]; + return Driver.GetDeadZone(); + } + + /// + /// Set Joystick Dead Zone Value, range[0,1], return false if invalid. + /// + /// + /// + /// + public bool UDE_SetJoystickDeadZone(string DeviceName, float value) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + if(value < 0 || value > 1) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.SetDeadZone(value); + return true; + } + + /// + /// Get Trigger Button Active Value, range[0,1], return -1 if invalid. + /// + /// + /// + public float UDE_GetTriggerActiveValue(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return -1; + } + + var Driver = bleHandDriver[DeviceName]; + return Driver.GetTriggerValue(); + } + + /// + /// Set Trigger Button Active Value, range[0,1], return false if invalid. + /// + /// + /// + /// + public bool UDE_SetTriggerActiveValue(string DeviceName, float value) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + if (value < 0 || value > 1) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.SetTriggerValue(value); + return true; + } + + /// + /// Get Grip Button Active Value, range[0,1], return -1 if invalid. + /// + /// + /// + public float UDE_GetGripActiveValue(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return -1; + } + + var Driver = bleHandDriver[DeviceName]; + return Driver.GetGrabValue(); + } + + /// + /// Set Grip Button Active Value, range[0,1], return false if invalid. + /// + /// + /// + /// + public bool UDE_SetGripActiveValue(string DeviceName, float value) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + if (value < 0 || value > 1) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.SetGrabValue(value); + return true; + } + + /// + /// Get Grip Button Active Value, range[0,1], return -1 if invalid. + /// + /// + /// + public float UDE_GetTrackpadActiveValue(string DeviceName) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return -1; + } + + var Driver = bleHandDriver[DeviceName]; + return Driver.GetTrackpadValue(); + } + + /// + /// Set Grip Button Active Value, range[0,1], return false if invalid. + /// + /// + /// + /// + public bool UDE_SetTrackpadActiveValue(string DeviceName, float value) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + if (value < 0 || value > 1) + { + return false; + } + + var Driver = bleHandDriver[DeviceName]; + Driver.SetTrackpadValue(value); + return true; + } + + /// + /// Control the Vibration of extra device, return false if setting value is invlid + /// + /// + /// only available with 1 or 2 + /// default minimum is 4 + /// default minimum is 1, range[1,7] + /// + public bool UDE_ControlVibration(string DeviceName, int PlaceIndex, int SustainedTenMillionsecond = 4, int Strength = 1) + { + if (string.IsNullOrEmpty(DeviceName) || !bleHandDriver.ContainsKey(DeviceName)) + { + return false; + } + + if(PlaceIndex != 2 && PlaceIndex != 1) + { + return false; + } + + SustainedTenMillionsecond = SustainedTenMillionsecond < 4 ? 4 : SustainedTenMillionsecond; + Strength = Strength < 1 ? 1 : Strength; + Strength = Strength > 7 ? 7 : Strength; + + UDE_API.Pc2Mcu_SendVibration(DeviceName, (byte)PlaceIndex, (byte)SustainedTenMillionsecond, (byte)(Strength + 3)); + return true; + } + } + +} diff --git a/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_SDK.cs.meta b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_SDK.cs.meta new file mode 100644 index 0000000..a3d3d45 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/CoreScripts/UDE_SDK.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a79df1f4afd2aec4da5bc8caa6127b55 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0b09374c5d8c3464e9f29b2e29f8982c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Materials.meta b/HandDriver/SDK/Android Bluetooth SDK/Materials.meta new file mode 100644 index 0000000..c8c689f --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 190e4558d6fc8664c8f7626834aeb1ae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Materials/New Render Texture.renderTexture b/HandDriver/SDK/Android Bluetooth SDK/Materials/New Render Texture.renderTexture new file mode 100644 index 0000000..66bcebf --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Materials/New Render Texture.renderTexture @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Render Texture + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 5 + m_Width: 2048 + m_Height: 2048 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthStencilFormat: 94 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_EnableRandomWrite: 0 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 + m_ShadowSamplingMode: 2 diff --git a/HandDriver/SDK/Android Bluetooth SDK/Materials/New Render Texture.renderTexture.meta b/HandDriver/SDK/Android Bluetooth SDK/Materials/New Render Texture.renderTexture.meta new file mode 100644 index 0000000..ecd82dd --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Materials/New Render Texture.renderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a41eeb3053ae5314cb3a264e6267d0af +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Sample.meta b/HandDriver/SDK/Android Bluetooth SDK/Sample.meta new file mode 100644 index 0000000..c5e706e --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Sample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd59ca252abd94443a8c788f5a32027b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/HandDriver/SDK/Android Bluetooth SDK/Sample/BleDevice.cs b/HandDriver/SDK/Android Bluetooth SDK/Sample/BleDevice.cs new file mode 100644 index 0000000..29da945 --- /dev/null +++ b/HandDriver/SDK/Android Bluetooth SDK/Sample/BleDevice.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections; +using System.Security.Cryptography; +using System.Threading; +using UnityEngine; +using UnityEngine.UI; +using static UDESDK.UDE_SDK; + +public class BleDevice : MonoBehaviour +{ + //[HideInInspector] + public string DeviceName; + [HideInInspector] + public bool IsConnected; + public string Msg; + + private Text DeviceNameTxt; + private Text ConnectStateTxt; + private Action DeviceListener; + + private Button ConnectBtn; + private Button DisconnectBtn; + + private Button StartABtn; + private Button StartBBtn; + private Button StartCBtn; + private Button StopABtn; + private Button StopBBtn; + private Button StopCBtn; + + public void CreateBleDevice(GameObject go, string deviceName, string msg, Action action) + { + DeviceName = deviceName; + IsConnected = Sample._SDK.UDE_CheckDeviceIsConnect(deviceName); + Msg = msg; + DeviceListener = action; + ConnectBtn = go.transform.Find("ConnectBtn").GetComponent