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